| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * maple_tree.c: Userspace shim for maple tree test-suite |
| * Copyright (c) 2018 Liam R. Howlett <Liam.Howlett@Oracle.com> |
| * |
| * Any tests that require internal knowledge of the tree or threads and other |
| * difficult to handle in kernel tests. |
| */ |
| |
| #define CONFIG_DEBUG_MAPLE_TREE |
| #define CONFIG_MAPLE_SEARCH |
| #define MAPLE_32BIT (MAPLE_NODE_SLOTS > 31) |
| #include "test.h" |
| #include <stdlib.h> |
| #include <time.h> |
| |
| #define module_init(x) |
| #define module_exit(x) |
| #define MODULE_AUTHOR(x) |
| #define MODULE_LICENSE(x) |
| #define dump_stack() assert(0) |
| |
| #include "../../../lib/maple_tree.c" |
| #undef CONFIG_DEBUG_MAPLE_TREE |
| #include "../../../lib/test_maple_tree.c" |
| |
| #define RCU_RANGE_COUNT 1000 |
| #define RCU_MT_BUG_ON(test, y) {if (y) { test->stop = true; } MT_BUG_ON(test->mt, y); } |
| |
| struct rcu_test_struct2 { |
| struct maple_tree *mt; |
| |
| bool start; |
| bool stop; |
| unsigned int thread_count; |
| |
| unsigned int seen_toggle; |
| unsigned int seen_added; |
| unsigned int seen_modified; |
| unsigned int seen_deleted; |
| int pause; |
| |
| unsigned long index[RCU_RANGE_COUNT]; |
| unsigned long last[RCU_RANGE_COUNT]; |
| }; |
| |
| struct rcu_reader_struct { |
| unsigned int id; |
| int mod; |
| int del; |
| int flip; |
| int add; |
| int next; |
| struct rcu_test_struct2 *test; |
| }; |
| |
| /* |
| * check_new_node() - Check the creation of new nodes and error path |
| * verification. |
| */ |
| static noinline void check_new_node(struct maple_tree *mt) |
| { |
| |
| struct maple_node *mn, *mn2, *mn3; |
| struct maple_alloc *smn; |
| struct maple_node *nodes[100]; |
| int i, j, total; |
| |
| MA_STATE(mas, mt, 0, 0); |
| |
| /* Try allocating 3 nodes */ |
| mtree_lock(mt); |
| mt_set_non_kernel(0); |
| /* request 3 nodes to be allocated. */ |
| mas_node_count(&mas, 3); |
| /* Allocation request of 3. */ |
| MT_BUG_ON(mt, mas_alloc_req(&mas) != 3); |
| /* Allocate failed. */ |
| MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM)); |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| |
| MT_BUG_ON(mt, mas_allocated(&mas) != 3); |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| MT_BUG_ON(mt, mn == NULL); |
| MT_BUG_ON(mt, mas.alloc == NULL); |
| MT_BUG_ON(mt, mas.alloc->slot[0] == NULL); |
| mas_push_node(&mas, mn); |
| mas_nomem(&mas, GFP_KERNEL); /* free */ |
| mtree_unlock(mt); |
| |
| |
| /* Try allocating 1 node, then 2 more */ |
| mtree_lock(mt); |
| /* Set allocation request to 1. */ |
| mas_set_alloc_req(&mas, 1); |
| /* Check Allocation request of 1. */ |
| MT_BUG_ON(mt, mas_alloc_req(&mas) != 1); |
| mas_set_err(&mas, -ENOMEM); |
| /* Validate allocation request. */ |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| /* Eat the requested node. */ |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| MT_BUG_ON(mt, mn == NULL); |
| MT_BUG_ON(mt, mn->slot[0] != NULL); |
| MT_BUG_ON(mt, mn->slot[1] != NULL); |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| |
| ma_free_rcu(mn); |
| mas.node = MAS_START; |
| mas_nomem(&mas, GFP_KERNEL); |
| /* Allocate 3 nodes, will fail. */ |
| mas_node_count(&mas, 3); |
| /* Drop the lock and allocate 3 nodes. */ |
| mas_nomem(&mas, GFP_KERNEL); |
| /* Ensure 3 are allocated. */ |
| MT_BUG_ON(mt, mas_allocated(&mas) != 3); |
| /* Allocation request of 0. */ |
| MT_BUG_ON(mt, mas_alloc_req(&mas) != 0); |
| |
| MT_BUG_ON(mt, mas.alloc == NULL); |
| MT_BUG_ON(mt, mas.alloc->slot[0] == NULL); |
| MT_BUG_ON(mt, mas.alloc->slot[1] == NULL); |
| /* Ensure we counted 3. */ |
| MT_BUG_ON(mt, mas_allocated(&mas) != 3); |
| /* Free. */ |
| mas_nomem(&mas, GFP_KERNEL); |
| |
| /* Set allocation request to 1. */ |
| mas_set_alloc_req(&mas, 1); |
| MT_BUG_ON(mt, mas_alloc_req(&mas) != 1); |
| mas_set_err(&mas, -ENOMEM); |
| /* Validate allocation request. */ |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| MT_BUG_ON(mt, mas_allocated(&mas) != 1); |
| /* Check the node is only one node. */ |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| MT_BUG_ON(mt, mn == NULL); |
| MT_BUG_ON(mt, mn->slot[0] != NULL); |
| MT_BUG_ON(mt, mn->slot[1] != NULL); |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| mas_push_node(&mas, mn); |
| MT_BUG_ON(mt, mas_allocated(&mas) != 1); |
| MT_BUG_ON(mt, mas.alloc->node_count); |
| |
| mas_set_alloc_req(&mas, 2); /* request 2 more. */ |
| MT_BUG_ON(mt, mas_alloc_req(&mas) != 2); |
| mas_set_err(&mas, -ENOMEM); |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| MT_BUG_ON(mt, mas_allocated(&mas) != 3); |
| MT_BUG_ON(mt, mas.alloc == NULL); |
| MT_BUG_ON(mt, mas.alloc->slot[0] == NULL); |
| MT_BUG_ON(mt, mas.alloc->slot[1] == NULL); |
| for (i = 2; i >= 0; i--) { |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, mas_allocated(&mas) != i); |
| MT_BUG_ON(mt, !mn); |
| MT_BUG_ON(mt, not_empty(mn)); |
| ma_free_rcu(mn); |
| } |
| |
| total = 64; |
| mas_set_alloc_req(&mas, total); /* request 2 more. */ |
| MT_BUG_ON(mt, mas_alloc_req(&mas) != total); |
| mas_set_err(&mas, -ENOMEM); |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| for (i = total; i > 0; i--) { |
| unsigned int e = 0; /* expected node_count */ |
| |
| if (!MAPLE_32BIT) { |
| if (i >= 35) |
| e = i - 35; |
| else if (i >= 5) |
| e = i - 5; |
| else if (i >= 2) |
| e = i - 2; |
| } else { |
| if (i >= 4) |
| e = i - 4; |
| else if (i == 3) |
| e = i - 2; |
| else |
| e = 0; |
| } |
| |
| MT_BUG_ON(mt, mas.alloc->node_count != e); |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| MT_BUG_ON(mt, mas_allocated(&mas) != i - 1); |
| MT_BUG_ON(mt, !mn); |
| ma_free_rcu(mn); |
| } |
| |
| total = 100; |
| for (i = 1; i < total; i++) { |
| mas_set_alloc_req(&mas, i); |
| mas_set_err(&mas, -ENOMEM); |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| for (j = i; j > 0; j--) { |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, mas_allocated(&mas) != j - 1); |
| MT_BUG_ON(mt, !mn); |
| MT_BUG_ON(mt, not_empty(mn)); |
| mas_push_node(&mas, mn); |
| MT_BUG_ON(mt, mas_allocated(&mas) != j); |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| MT_BUG_ON(mt, mas_allocated(&mas) != j - 1); |
| ma_free_rcu(mn); |
| } |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| |
| mas_set_alloc_req(&mas, i); |
| mas_set_err(&mas, -ENOMEM); |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| for (j = 0; j <= i/2; j++) { |
| MT_BUG_ON(mt, mas_allocated(&mas) != i - j); |
| nodes[j] = mas_pop_node(&mas); |
| MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1); |
| } |
| |
| while (j) { |
| j--; |
| mas_push_node(&mas, nodes[j]); |
| MT_BUG_ON(mt, mas_allocated(&mas) != i - j); |
| } |
| MT_BUG_ON(mt, mas_allocated(&mas) != i); |
| for (j = 0; j <= i/2; j++) { |
| MT_BUG_ON(mt, mas_allocated(&mas) != i - j); |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| ma_free_rcu(mn); |
| MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1); |
| } |
| MT_BUG_ON(mt, mas_nomem(&mas, GFP_KERNEL)); |
| |
| } |
| |
| /* Set allocation request. */ |
| total = 500; |
| mas_node_count(&mas, total); |
| /* Drop the lock and allocate the nodes. */ |
| mas_nomem(&mas, GFP_KERNEL); |
| MT_BUG_ON(mt, !mas.alloc); |
| i = 1; |
| smn = mas.alloc; |
| while (i < total) { |
| for (j = 0; j < MAPLE_ALLOC_SLOTS; j++) { |
| i++; |
| MT_BUG_ON(mt, !smn->slot[j]); |
| if (i == total) |
| break; |
| } |
| smn = smn->slot[0]; /* next. */ |
| } |
| MT_BUG_ON(mt, mas_allocated(&mas) != total); |
| mas_nomem(&mas, GFP_KERNEL); /* Free. */ |
| |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| for (i = 1; i < 128; i++) { |
| mas_node_count(&mas, i); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| MT_BUG_ON(mt, mas_allocated(&mas) != i); /* check request filled */ |
| for (j = i; j > 0; j--) { /*Free the requests */ |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| MT_BUG_ON(mt, mn == NULL); |
| MT_BUG_ON(mt, not_empty(mn)); |
| ma_free_rcu(mn); |
| } |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| } |
| |
| for (i = 1; i < MAPLE_NODE_MASK + 1; i++) { |
| MA_STATE(mas2, mt, 0, 0); |
| mas_node_count(&mas, i); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| MT_BUG_ON(mt, mas_allocated(&mas) != i); /* check request filled */ |
| for (j = 1; j <= i; j++) { /* Move the allocations to mas2 */ |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| MT_BUG_ON(mt, mn == NULL); |
| MT_BUG_ON(mt, not_empty(mn)); |
| mas_push_node(&mas2, mn); |
| MT_BUG_ON(mt, mas_allocated(&mas2) != j); |
| } |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| MT_BUG_ON(mt, mas_allocated(&mas2) != i); |
| |
| for (j = i; j > 0; j--) { /*Free the requests */ |
| MT_BUG_ON(mt, mas_allocated(&mas2) != j); |
| mn = mas_pop_node(&mas2); /* get the next node. */ |
| MT_BUG_ON(mt, mn == NULL); |
| MT_BUG_ON(mt, not_empty(mn)); |
| ma_free_rcu(mn); |
| } |
| MT_BUG_ON(mt, mas_allocated(&mas2) != 0); |
| } |
| |
| |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 1); /* Request */ |
| MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM)); |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); |
| MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1); |
| |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| MT_BUG_ON(mt, mn == NULL); |
| MT_BUG_ON(mt, not_empty(mn)); |
| MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS); |
| MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 2); |
| |
| mas_push_node(&mas, mn); |
| MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); |
| MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1); |
| |
| /* Check the limit of pop/push/pop */ |
| mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 2); /* Request */ |
| MT_BUG_ON(mt, mas_alloc_req(&mas) != 1); |
| MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM)); |
| MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL)); |
| MT_BUG_ON(mt, mas_alloc_req(&mas)); |
| MT_BUG_ON(mt, mas.alloc->node_count); |
| MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2); |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1); |
| MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1); |
| mas_push_node(&mas, mn); |
| MT_BUG_ON(mt, mas.alloc->node_count); |
| MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2); |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| ma_free_rcu(mn); |
| for (i = 1; i <= MAPLE_ALLOC_SLOTS + 1; i++) { |
| mn = mas_pop_node(&mas); |
| MT_BUG_ON(mt, not_empty(mn)); |
| ma_free_rcu(mn); |
| } |
| MT_BUG_ON(mt, mas_allocated(&mas) != 0); |
| |
| |
| for (i = 3; i < MAPLE_NODE_MASK * 3; i++) { |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, i); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| mas_push_node(&mas, mn); /* put it back */ |
| mas_destroy(&mas); |
| |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, i); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| mn2 = mas_pop_node(&mas); /* get the next node. */ |
| mas_push_node(&mas, mn); /* put them back */ |
| mas_push_node(&mas, mn2); |
| mas_destroy(&mas); |
| |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, i); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| mn2 = mas_pop_node(&mas); /* get the next node. */ |
| mn3 = mas_pop_node(&mas); /* get the next node. */ |
| mas_push_node(&mas, mn); /* put them back */ |
| mas_push_node(&mas, mn2); |
| mas_push_node(&mas, mn3); |
| mas_destroy(&mas); |
| |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, i); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| ma_free_rcu(mn); |
| mas_destroy(&mas); |
| |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, i); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| ma_free_rcu(mn); |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| ma_free_rcu(mn); |
| mn = mas_pop_node(&mas); /* get the next node. */ |
| ma_free_rcu(mn); |
| mas_destroy(&mas); |
| } |
| |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, 5); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| MT_BUG_ON(mt, mas_allocated(&mas) != 5); |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, 10); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| mas.node = MAS_START; |
| MT_BUG_ON(mt, mas_allocated(&mas) != 10); |
| mas_destroy(&mas); |
| |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, MAPLE_ALLOC_SLOTS - 1); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS - 1); |
| mas.node = MA_ERROR(-ENOMEM); |
| mas_node_count(&mas, 10 + MAPLE_ALLOC_SLOTS - 1); /* Request */ |
| mas_nomem(&mas, GFP_KERNEL); /* Fill request */ |
| mas.node = MAS_START; |
| MT_BUG_ON(mt, mas_allocated(&mas) != 10 + MAPLE_ALLOC_SLOTS - 1); |
| mas_destroy(&mas); |
| |
| mtree_unlock(mt); |
| } |
| |
| /* |
| * Check erasing including RCU. |
| */ |
| static noinline void check_erase(struct maple_tree *mt, unsigned long index, |
| void *ptr) |
| { |
| MT_BUG_ON(mt, mtree_test_erase(mt, index) != ptr); |
| } |
| |
| #define erase_check_load(mt, i) check_load(mt, set[i], entry[i%2]) |
| #define erase_check_insert(mt, i) check_insert(mt, set[i], entry[i%2]) |
| #define erase_check_erase(mt, i) check_erase(mt, set[i], entry[i%2]) |
| |
| static noinline void check_erase_testset(struct maple_tree *mt) |
| { |
| unsigned long set[] = { 5015, 5014, 5017, 25, 1000, |
| 1001, 1002, 1003, 1005, 0, |
| 6003, 6002, 6008, 6012, 6015, |
| 7003, 7002, 7008, 7012, 7015, |
| 8003, 8002, 8008, 8012, 8015, |
| 9003, 9002, 9008, 9012, 9015, |
| 10003, 10002, 10008, 10012, 10015, |
| 11003, 11002, 11008, 11012, 11015, |
| 12003, 12002, 12008, 12012, 12015, |
| 13003, 13002, 13008, 13012, 13015, |
| 14003, 14002, 14008, 14012, 14015, |
| 15003, 15002, 15008, 15012, 15015, |
| }; |
| |
| |
| void *ptr = &set; |
| void *entry[2] = { ptr, mt }; |
| void *root_node; |
| |
| |
| rcu_register_thread(); |
| mt_set_in_rcu(mt); |
| for (int i = 0; i < 4; i++) |
| erase_check_insert(mt, i); |
| for (int i = 0; i < 4; i++) |
| erase_check_load(mt, i); |
| |
| mt_set_non_kernel(2); |
| erase_check_erase(mt, 1); |
| erase_check_load(mt, 0); |
| check_load(mt, set[1], NULL); |
| for (int i = 2; i < 4; i++) |
| erase_check_load(mt, i); |
| |
| |
| erase_check_erase(mt, 2); |
| erase_check_load(mt, 0); |
| check_load(mt, set[1], NULL); |
| check_load(mt, set[2], NULL); |
| |
| erase_check_insert(mt, 1); |
| erase_check_insert(mt, 2); |
| |
| for (int i = 0; i < 4; i++) |
| erase_check_load(mt, i); |
| |
| /* Check erase and load without an allocation. */ |
| erase_check_load(mt, 3); |
| erase_check_erase(mt, 1); |
| erase_check_load(mt, 0); |
| check_load(mt, set[1], NULL); |
| for (int i = 2; i < 4; i++) |
| erase_check_load(mt, i); |
| |
| /* |
| * Set the newly erased node. This will produce a different allocated |
| * node to avoid busy slots. |
| */ |
| root_node = mt->ma_root; |
| erase_check_insert(mt, 1); |
| |
| erase_check_load(mt, 0); |
| check_load(mt, 5016, NULL); |
| erase_check_load(mt, 1); |
| check_load(mt, 5013, NULL); |
| erase_check_load(mt, 2); |
| check_load(mt, 5018, NULL); |
| erase_check_load(mt, 3); |
| |
| erase_check_erase(mt, 2); /* erase 5017 to check append */ |
| erase_check_load(mt, 0); |
| check_load(mt, 5016, NULL); |
| erase_check_load(mt, 1); |
| check_load(mt, 5013, NULL); |
| check_load(mt, set[2], NULL); |
| check_load(mt, 5018, NULL); |
| |
| erase_check_load(mt, 3); |
| |
| root_node = mt->ma_root; |
| erase_check_insert(mt, 2); |
| |
| erase_check_load(mt, 0); |
| check_load(mt, 5016, NULL); |
| erase_check_load(mt, 1); |
| check_load(mt, 5013, NULL); |
| erase_check_load(mt, 2); |
| check_load(mt, 5018, NULL); |
| erase_check_load(mt, 3); |
| |
| mt_set_non_kernel(1); |
| erase_check_erase(mt, 2); /* erase 5017 to check append */ |
| erase_check_load(mt, 0); |
| check_load(mt, 5016, NULL); |
| check_load(mt, set[2], NULL); |
| erase_check_erase(mt, 0); /* erase 5015 to check append */ |
| check_load(mt, set[0], NULL); |
| check_load(mt, 5016, NULL); |
| erase_check_insert(mt, 4); /* 1000 < Should not split. */ |
| check_load(mt, set[0], NULL); |
| check_load(mt, 5016, NULL); |
| erase_check_load(mt, 1); |
| check_load(mt, 5013, NULL); |
| check_load(mt, set[2], NULL); |
| check_load(mt, 5018, NULL); |
| erase_check_load(mt, 4); |
| check_load(mt, 999, NULL); |
| check_load(mt, 1001, NULL); |
| erase_check_load(mt, 4); |
| if (mt_in_rcu(mt)) |
| MT_BUG_ON(mt, root_node == mt->ma_root); |
| else |
| MT_BUG_ON(mt, root_node != mt->ma_root); |
| |
| /* Should not have split. */ |
| MT_BUG_ON(mt, !mte_is_leaf(mt->ma_root)); |
| |
| |
| /* Coalesce testing */ |
| erase_check_insert(mt, 0); |
| erase_check_insert(mt, 2); |
| |
| for (int i = 5; i < 25; i++) { |
| erase_check_insert(mt, i); |
| for (int j = i; j >= 0; j--) |
| erase_check_load(mt, j); |
| } |
| |
| erase_check_erase(mt, 14); /*6015 */ |
| for (int i = 0; i < 25; i++) { |
| if (i == 14) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| erase_check_erase(mt, 16); /*7002 */ |
| for (int i = 0; i < 25; i++) { |
| if (i == 16 || i == 14) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| |
| mt_set_non_kernel(1); |
| erase_check_erase(mt, 13); /*6012 */ |
| for (int i = 0; i < 25; i++) { |
| if (i == 16 || i == 14 || i == 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| erase_check_erase(mt, 15); /*7003 */ |
| for (int i = 0; i < 25; i++) { |
| if (i <= 16 && i >= 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| mt_set_non_kernel(2); |
| erase_check_erase(mt, 17); /*7008 *should* cause coalesce. */ |
| for (int i = 0; i < 25; i++) { |
| if (i <= 17 && i >= 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| erase_check_erase(mt, 18); /*7012 */ |
| for (int i = 0; i < 25; i++) { |
| if (i <= 18 && i >= 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| mt_set_non_kernel(2); |
| erase_check_erase(mt, 19); /*7015 */ |
| for (int i = 0; i < 25; i++) { |
| if (i <= 19 && i >= 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| erase_check_erase(mt, 20); /*8003 */ |
| for (int i = 0; i < 25; i++) { |
| if (i <= 20 && i >= 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| erase_check_erase(mt, 21); /*8002 */ |
| for (int i = 0; i < 25; i++) { |
| if (i <= 21 && i >= 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| mt_set_non_kernel(2); |
| erase_check_erase(mt, 22); /*8008 */ |
| for (int i = 0; i < 25; i++) { |
| if (i <= 22 && i >= 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| for (int i = 23; i < 25; i++) |
| erase_check_erase(mt, i); |
| |
| for (int i = 0; i < 25; i++) { |
| if (i <= 25 && i >= 13) |
| check_load(mt, set[i], NULL); |
| else |
| erase_check_load(mt, i); |
| } |
| |
| /* Shrinking tree test. */ |
| |
| for (int i = 13; i < ARRAY_SIZE(set); i++) |
| erase_check_insert(mt, i); |
| |
| mt_set_non_kernel(99); |
| for (int i = 18; i < ARRAY_SIZE(set); i++) { |
| erase_check_erase(mt, i); |
| for (int j = 0; j < ARRAY_SIZE(set); j++) { |
| if (j < 18 || j > i) |
| erase_check_load(mt, j); |
| else |
| check_load(mt, set[j], NULL); |
| } |
| } |
| mt_set_non_kernel(35); |
| for (int i = 0; i < 18; i++) { |
| erase_check_erase(mt, i); |
| for (int j = 0; j < ARRAY_SIZE(set); j++) { |
| if (j < 18 && j > i) |
| erase_check_load(mt, j); |
| else |
| check_load(mt, set[j], NULL); |
| } |
| } |
| erase_check_insert(mt, 8); |
| erase_check_insert(mt, 9); |
| erase_check_erase(mt, 8); |
| rcu_unregister_thread(); |
| } |
| |
| /* End of erase testing */ |
| |
| /* VM Generated Crashes - uses its own tree walk for verification */ |
| #define erase_check_store_range(mt, a, i, ptr) mtree_test_store_range(mt, \ |
| a[(i)], a[(i + 1)], ptr) |
| #define STORE 1 |
| #define SNULL 2 |
| #define ERASE 3 |
| #define ec_type_str(x) \ |
| (((x) == STORE) ? \ |
| "STORE" : \ |
| (((x) == SNULL) ? \ |
| "SNULL" : "ERASE") \ |
| ) |
| #define check_erase2_debug 0 |
| |
| /* Calculate the overwritten entries. */ |
| int mas_ce2_over_count(struct ma_state *mas_start, struct ma_state *mas_end, |
| void *s_entry, unsigned long s_min, |
| void *e_entry, unsigned long e_max, |
| unsigned long *set, int i, bool null_entry) |
| { |
| int count = 0, span = 0; |
| unsigned long retry = 0; |
| void *entry; |
| struct ma_state tmp; |
| |
| |
| /* count slots */ |
| memcpy(&tmp, mas_start, sizeof(tmp)); |
| entry = mas_next(&tmp, mas_end->last); |
| while (entry) { |
| BUG_ON(retry > 50); /* stop infinite retry on testing. */ |
| if (xa_is_zero(s_entry)) { |
| retry++; |
| continue; |
| } |
| count++; |
| span++; |
| entry = mas_next(&tmp, mas_end->last); |
| } |
| |
| if (null_entry) { |
| /* Check splitting end. */ |
| if (e_entry && (e_max > mas_end->last)) |
| count--; |
| |
| /* check overwrite of entire start */ |
| if (s_entry && (s_min == mas_start->index)) |
| count++; |
| } else { /* !null_entry (store) */ |
| bool esplit = e_max > mas_end->last; |
| bool ssplit = s_min != mas_start->index; |
| |
| if (s_entry && e_entry) { |
| if (esplit && ssplit) |
| count--; |
| else if (ssplit) |
| count--; |
| else if (esplit) { |
| if (span) |
| count--; |
| } |
| } else if (s_entry && !e_entry) { |
| if (ssplit) |
| count--; |
| } else if (!s_entry && e_entry) { |
| if (esplit) |
| count--; |
| count--; |
| } else { |
| count--; |
| } |
| } |
| return count; |
| } |
| |
| /* |
| * mas_node_walk() - Walk a maple node to offset of the index. |
| * @mas: The maple state |
| * @type: The maple node type |
| * @*range_min: Pointer to store the minimum range of the offset |
| * @*range_max: Pointer to store the maximum range of the offset |
| * |
| * The offset will be stored in the maple state. |
| * |
| */ |
| static inline void mas_node_walk(struct ma_state *mas, struct maple_node *node, |
| enum maple_type type, unsigned long *range_min, |
| unsigned long *range_max) |
| |
| { |
| unsigned long *pivots; |
| unsigned char count; |
| unsigned long prev, max; |
| unsigned char offset; |
| unsigned long index; |
| |
| if (unlikely(ma_is_dense(type))) { |
| (*range_max) = (*range_min) = mas->index; |
| if (unlikely(ma_dead_node(node))) |
| return; |
| |
| mas->offset = mas->index = mas->min; |
| return; |
| } |
| |
| pivots = ma_pivots(node, type); |
| max = pivots[0]; |
| if (unlikely(ma_dead_node(node))) |
| return; |
| |
| offset = 0; |
| prev = mas->min; |
| index = mas->index; |
| if (unlikely(index <= max)) |
| goto offset_zero; |
| |
| count = mt_pivots[type]; |
| while (++offset < count) { |
| prev = max; |
| max = pivots[offset]; |
| if (unlikely(ma_dead_node(node))) |
| return; |
| |
| if (index <= max) |
| goto offset_found; |
| else if (unlikely(!max)) |
| goto mas_max; |
| } |
| |
| prev = max; |
| mas_max: |
| max = mas->max; |
| offset_found: |
| prev++; |
| offset_zero: |
| mas->offset = offset; |
| if (ma_is_leaf(type)) { |
| *range_max = max; |
| *range_min = prev; |
| } else { |
| mas->max = max; |
| mas->min = prev; |
| } |
| } |
| |
| /* |
| * mas_descend_walk(): Locates a value and sets the mas->node and slot |
| * accordingly. range_min and range_max are set to the range which the entry is |
| * valid. |
| * @mas: The maple state |
| * @*range_min: A pointer to store the minimum of the range |
| * @*range_max: A pointer to store the maximum of the range |
| * |
| * Check mas->node is still valid on return of any value. |
| * |
| * Return: true if pointing to a valid node and offset. False otherwise. |
| */ |
| static inline bool mas_descend_walk(struct ma_state *mas, |
| unsigned long *range_min, unsigned long *range_max) |
| { |
| struct maple_enode *next; |
| struct maple_node *node; |
| enum maple_type type; |
| |
| next = mas->node; |
| while (true) { |
| node = mte_to_node(next); |
| type = mte_node_type(next); |
| mas_node_walk(mas, node, type, range_min, range_max); |
| next = mas_slot(mas, ma_slots(node, type), mas->offset); |
| if (unlikely(ma_dead_node(node))) |
| return false; |
| |
| if (unlikely(ma_is_leaf(type))) |
| return true; |
| |
| /* Descend. */ |
| mas->node = next; |
| } |
| return false; |
| } |
| |
| /* |
| * mas_tree_walk() - Walk to @mas->index and set the range values. |
| * @mas: The maple state. |
| * @*range_min: The minimum range to be set. |
| * @*range_max: The maximum range to be set. |
| * |
| * Ranges are only valid if there is a valid entry at @mas->index. |
| * |
| * Return: True if a value exists, false otherwise. |
| */ |
| static inline bool mas_tree_walk(struct ma_state *mas, unsigned long *range_min, |
| unsigned long *range_max) |
| { |
| bool ret; |
| |
| retry: |
| ret = false; |
| mas_start(mas); |
| if (mas_is_none(mas)) |
| goto not_found; |
| |
| if (mas_is_ptr(mas)) { |
| *range_min = *range_max = 0; |
| if (!mas->index) |
| return true; |
| |
| goto not_found; |
| } |
| |
| ret = mas_descend_walk(mas, range_min, range_max); |
| if (unlikely(mte_dead_node(mas->node))) { |
| mas->node = MAS_START; |
| goto retry; |
| } |
| |
| return ret; |
| |
| not_found: |
| mas->offset = MAPLE_NODE_SLOTS; |
| return false; |
| } |
| |
| static inline void *mas_range_load(struct ma_state *mas, |
| unsigned long *range_min, unsigned long *range_max) |
| |
| { |
| void *entry = NULL; |
| unsigned long index = mas->index; |
| |
| if (mas_is_none(mas) || mas_is_paused(mas)) |
| mas->node = MAS_START; |
| retry: |
| if (mas_tree_walk(mas, range_min, range_max)) |
| if (unlikely(mas->node == MAS_ROOT)) |
| return mas_root(mas); |
| |
| if (likely(mas->offset != MAPLE_NODE_SLOTS)) |
| entry = mas_get_slot(mas, mas->offset); |
| |
| if (mas_dead_node(mas, index)) |
| goto retry; |
| |
| return entry; |
| } |
| |
| #if defined(CONFIG_64BIT) |
| static noinline void check_erase2_testset(struct maple_tree *mt, |
| unsigned long *set, unsigned long size) |
| { |
| int entry_count = 0; |
| int check = 0; |
| void *foo; |
| unsigned long addr = 0; |
| void *s_entry = NULL, *e_entry = NULL; |
| |
| MA_STATE(mas, mt, 0, 0); |
| |
| for (int i = 0; i < size; i += 3) { |
| unsigned long s_min, s_max; |
| unsigned long e_min, e_max; |
| void *value = NULL; |
| |
| MA_STATE(mas_start, mt, set[i+1], set[i+1]); |
| MA_STATE(mas_end, mt, set[i+2], set[i+2]); |
| mt_set_non_kernel(127); |
| #if check_erase2_debug |
| pr_err("%s: %d %s %lu - %lu\n", __func__, i, |
| ec_type_str(set[i]), |
| set[i+1], set[i+2]); |
| #endif |
| s_entry = mas_range_load(&mas_start, &s_min, &s_max); |
| e_entry = mas_range_load(&mas_end, &e_min, &e_max); |
| |
| switch (set[i]) { |
| case SNULL: |
| if ((s_min == set[i+1]) && (s_max == set[i+2])) { |
| if (s_entry) |
| entry_count--; |
| } else if ((s_min != set[i+1]) && (s_max != set[i+2])) { |
| entry_count++; |
| } else if ((mas_start.node != mas_end.node) || |
| (mas_start.offset != mas_end.offset)) { |
| entry_count -= |
| mas_ce2_over_count(&mas_start, &mas_end, |
| s_entry, s_min, |
| e_entry, e_max, set, i, |
| true); |
| } |
| |
| |
| erase_check_store_range(mt, set, i + 1, value); |
| break; |
| case STORE: |
| value = xa_mk_value(set[i + 1]); |
| if (mas_start.offset > mt_slot_count(mas_start.node)) { |
| entry_count++; /* appending an entry. */ |
| } else if ((s_min == e_min) && (s_max == e_max)) { |
| if (!entry_count) |
| entry_count++; |
| |
| else if (s_entry) { |
| if (e_max > mas_end.last) |
| entry_count++; |
| |
| if (s_min < mas_start.index) |
| entry_count++; |
| |
| } else { |
| entry_count++; |
| } |
| } else { |
| entry_count -= |
| mas_ce2_over_count(&mas_start, &mas_end, |
| s_entry, s_min, |
| e_entry, e_max, set, i, |
| false); |
| } |
| |
| erase_check_store_range(mt, set, i + 1, value); |
| break; |
| case ERASE: |
| if (!s_entry) |
| break; |
| check_erase(mt, set[i+1], xa_mk_value(set[i+1])); |
| entry_count--; |
| break; |
| } |
| mt_validate(mt); |
| if (entry_count) |
| MT_BUG_ON(mt, !mt_height(mt)); |
| #if check_erase2_debug > 1 |
| mt_dump(mt); |
| #endif |
| #if check_erase2_debug |
| pr_err("Done\n"); |
| #endif |
| |
| check = 0; |
| addr = 0; |
| mt_for_each(mt, foo, addr, ULONG_MAX) { |
| check++; |
| #if check_erase2_debug > 2 |
| pr_err("mt: %lu -> %p (%d)\n", addr+1, foo, check); |
| #endif |
| if (check > entry_count) |
| break; |
| } |
| |
| #if check_erase2_debug > 2 |
| pr_err("mt_for_each %d and count %d\n", check, entry_count); |
| #endif |
| |
| MT_BUG_ON(mt, check != entry_count); |
| |
| check = 0; |
| addr = 0; |
| mas_reset(&mas); |
| mas.index = 0; |
| rcu_read_lock(); |
| mas_for_each(&mas, foo, ULONG_MAX) { |
| if (xa_is_zero(foo)) { |
| if (addr == mas.index) { |
| mt_dump(mas.tree); |
| pr_err("retry failed %lu - %lu\n", |
| mas.index, mas.last); |
| MT_BUG_ON(mt, 1); |
| } |
| addr = mas.index; |
| continue; |
| } |
| #if check_erase2_debug > 2 |
| pr_err("mas: %lu -> %p\n", mas.index, foo); |
| #endif |
| check++; |
| if (check > entry_count) |
| break; |
| } |
| rcu_read_unlock(); |
| #if check_erase2_debug > 2 |
| pr_err("mas_for_each %d and count %d\n", check, entry_count); |
| mt_validate(mt); |
| #endif |
| |
| MT_BUG_ON(mt, check != entry_count); |
| |
| MT_BUG_ON(mt, mtree_load(mas.tree, 0) != NULL); |
| } |
| } |
| |
| |
| /* These tests were pulled from KVM tree modifications which failed. */ |
| static noinline void check_erase2_sets(struct maple_tree *mt) |
| { |
| void *entry; |
| unsigned long start = 0; |
| unsigned long set[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140721266458624, 140737488351231, |
| ERASE, 140721266458624, 140737488351231, |
| STORE, 140721266458624, 140721266462719, |
| STORE, 94735788949504, 94735789121535, |
| ERASE, 94735788949504, 94735789121535, |
| STORE, 94735788949504, 94735788965887, |
| STORE, 94735788965888, 94735789121535, |
| ERASE, 94735788965888, 94735789121535, |
| STORE, 94735788965888, 94735789068287, |
| STORE, 94735789068288, 94735789109247, |
| STORE, 94735789109248, 94735789121535, |
| STORE, 140253902692352, 140253902864383, |
| ERASE, 140253902692352, 140253902864383, |
| STORE, 140253902692352, 140253902696447, |
| STORE, 140253902696448, 140253902864383, |
| }; |
| unsigned long set2[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140735933583360, 140737488351231, |
| ERASE, 140735933583360, 140737488351231, |
| STORE, 140735933583360, 140735933587455, |
| STORE, 94811003260928, 94811003432959, |
| ERASE, 94811003260928, 94811003432959, |
| STORE, 94811003260928, 94811003277311, |
| STORE, 94811003277312, 94811003432959, |
| ERASE, 94811003277312, 94811003432959, |
| STORE, 94811003277312, 94811003379711, |
| STORE, 94811003379712, 94811003420671, |
| STORE, 94811003420672, 94811003432959, |
| STORE, 140277094653952, 140277094825983, |
| ERASE, 140277094653952, 140277094825983, |
| STORE, 140277094653952, 140277094658047, |
| STORE, 140277094658048, 140277094825983, |
| ERASE, 140277094658048, 140277094825983, |
| STORE, 140277094658048, 140277094780927, |
| STORE, 140277094780928, 140277094813695, |
| STORE, 140277094813696, 140277094821887, |
| STORE, 140277094821888, 140277094825983, |
| STORE, 140735933906944, 140735933911039, |
| }; |
| unsigned long set3[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140735790264320, 140737488351231, |
| ERASE, 140735790264320, 140737488351231, |
| STORE, 140735790264320, 140735790268415, |
| STORE, 94016597282816, 94016597454847, |
| ERASE, 94016597282816, 94016597454847, |
| STORE, 94016597282816, 94016597299199, |
| STORE, 94016597299200, 94016597454847, |
| ERASE, 94016597299200, 94016597454847, |
| STORE, 94016597299200, 94016597401599, |
| STORE, 94016597401600, 94016597442559, |
| STORE, 94016597442560, 94016597454847, |
| STORE, 140496959283200, 140496959455231, |
| ERASE, 140496959283200, 140496959455231, |
| STORE, 140496959283200, 140496959287295, |
| STORE, 140496959287296, 140496959455231, |
| ERASE, 140496959287296, 140496959455231, |
| STORE, 140496959287296, 140496959410175, |
| STORE, 140496959410176, 140496959442943, |
| STORE, 140496959442944, 140496959451135, |
| STORE, 140496959451136, 140496959455231, |
| STORE, 140735791718400, 140735791722495, |
| STORE, 140735791706112, 140735791718399, |
| STORE, 47135835713536, 47135835721727, |
| STORE, 47135835721728, 47135835729919, |
| STORE, 47135835729920, 47135835893759, |
| ERASE, 47135835729920, 47135835893759, |
| STORE, 47135835729920, 47135835742207, |
| STORE, 47135835742208, 47135835893759, |
| STORE, 47135835840512, 47135835893759, |
| STORE, 47135835742208, 47135835840511, |
| ERASE, 47135835742208, 47135835840511, |
| STORE, 47135835742208, 47135835840511, |
| STORE, 47135835885568, 47135835893759, |
| STORE, 47135835840512, 47135835885567, |
| ERASE, 47135835840512, 47135835885567, |
| STORE, 47135835840512, 47135835893759, |
| ERASE, 47135835840512, 47135835893759, |
| STORE, 47135835840512, 47135835885567, |
| STORE, 47135835885568, 47135835893759, |
| }; |
| |
| unsigned long set4[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140728251703296, 140737488351231, |
| ERASE, 140728251703296, 140737488351231, |
| STORE, 140728251703296, 140728251707391, |
| STORE, 94668429205504, 94668429377535, |
| ERASE, 94668429205504, 94668429377535, |
| STORE, 94668429205504, 94668429221887, |
| STORE, 94668429221888, 94668429377535, |
| ERASE, 94668429221888, 94668429377535, |
| STORE, 94668429221888, 94668429324287, |
| STORE, 94668429324288, 94668429365247, |
| STORE, 94668429365248, 94668429377535, |
| STORE, 47646523273216, 47646523445247, |
| ERASE, 47646523273216, 47646523445247, |
| STORE, 47646523273216, 47646523277311, |
| STORE, 47646523277312, 47646523445247, |
| ERASE, 47646523277312, 47646523445247, |
| STORE, 47646523277312, 47646523400191, |
| }; |
| |
| unsigned long set5[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140726874062848, 140737488351231, |
| ERASE, 140726874062848, 140737488351231, |
| STORE, 140726874062848, 140726874066943, |
| STORE, 94248892870656, 94248893042687, |
| ERASE, 94248892870656, 94248893042687, |
| STORE, 94248892870656, 94248892887039, |
| STORE, 94248892887040, 94248893042687, |
| ERASE, 94248892887040, 94248893042687, |
| STORE, 94248892887040, 94248892989439, |
| STORE, 94248892989440, 94248893030399, |
| STORE, 94248893030400, 94248893042687, |
| STORE, 47884786266112, 47884786438143, |
| ERASE, 47884786266112, 47884786438143, |
| STORE, 47884786266112, 47884786270207, |
| STORE, 47884786270208, 47884786438143, |
| ERASE, 47884786270208, 47884786438143, |
| STORE, 47884786270208, 47884786393087, |
| STORE, 47884786393088, 47884786425855, |
| STORE, 47884786425856, 47884786434047, |
| STORE, 47884786434048, 47884786438143, |
| STORE, 140726874513408, 140726874517503, |
| STORE, 140726874501120, 140726874513407, |
| STORE, 47884786438144, 47884786446335, |
| STORE, 47884786446336, 47884786454527, |
| STORE, 47884786454528, 47884786618367, |
| ERASE, 47884786454528, 47884786618367, |
| STORE, 47884786454528, 47884786466815, |
| STORE, 47884786466816, 47884786618367, |
| STORE, 47884786565120, 47884786618367, |
| STORE, 47884786466816, 47884786565119, |
| ERASE, 47884786466816, 47884786565119, |
| STORE, 47884786466816, 47884786565119, |
| STORE, 47884786610176, 47884786618367, |
| STORE, 47884786565120, 47884786610175, |
| ERASE, 47884786565120, 47884786610175, |
| STORE, 47884786565120, 47884786618367, |
| ERASE, 47884786565120, 47884786618367, |
| STORE, 47884786565120, 47884786610175, |
| STORE, 47884786610176, 47884786618367, |
| ERASE, 47884786610176, 47884786618367, |
| STORE, 47884786610176, 47884786618367, |
| STORE, 47884786618368, 47884789669887, |
| STORE, 47884787163136, 47884789669887, |
| STORE, 47884786618368, 47884787163135, |
| ERASE, 47884787163136, 47884789669887, |
| STORE, 47884787163136, 47884789448703, |
| STORE, 47884789448704, 47884789669887, |
| STORE, 47884788858880, 47884789448703, |
| STORE, 47884787163136, 47884788858879, |
| ERASE, 47884787163136, 47884788858879, |
| STORE, 47884787163136, 47884788858879, |
| STORE, 47884789444608, 47884789448703, |
| STORE, 47884788858880, 47884789444607, |
| ERASE, 47884788858880, 47884789444607, |
| STORE, 47884788858880, 47884789444607, |
| STORE, 47884789653504, 47884789669887, |
| STORE, 47884789448704, 47884789653503, |
| ERASE, 47884789448704, 47884789653503, |
| STORE, 47884789448704, 47884789653503, |
| ERASE, 47884789653504, 47884789669887, |
| STORE, 47884789653504, 47884789669887, |
| STORE, 47884789669888, 47884791508991, |
| STORE, 47884789809152, 47884791508991, |
| STORE, 47884789669888, 47884789809151, |
| ERASE, 47884789809152, 47884791508991, |
| STORE, 47884789809152, 47884791468031, |
| STORE, 47884791468032, 47884791508991, |
| STORE, 47884791152640, 47884791468031, |
| STORE, 47884789809152, 47884791152639, |
| ERASE, 47884789809152, 47884791152639, |
| STORE, 47884789809152, 47884791152639, |
| STORE, 47884791463936, 47884791468031, |
| STORE, 47884791152640, 47884791463935, |
| ERASE, 47884791152640, 47884791463935, |
| STORE, 47884791152640, 47884791463935, |
| STORE, 47884791492608, 47884791508991, |
| STORE, 47884791468032, 47884791492607, |
| ERASE, 47884791468032, 47884791492607, |
| STORE, 47884791468032, 47884791492607, |
| ERASE, 47884791492608, 47884791508991, |
| STORE, 47884791492608, 47884791508991, |
| STORE, 47884791508992, 47884791644159, |
| ERASE, 47884791508992, 47884791644159, |
| STORE, 47884791508992, 47884791533567, |
| STORE, 47884791533568, 47884791644159, |
| STORE, 47884791595008, 47884791644159, |
| STORE, 47884791533568, 47884791595007, |
| ERASE, 47884791533568, 47884791595007, |
| STORE, 47884791533568, 47884791595007, |
| STORE, 47884791619584, 47884791644159, |
| STORE, 47884791595008, 47884791619583, |
| ERASE, 47884791595008, 47884791619583, |
| STORE, 47884791595008, 47884791644159, |
| ERASE, 47884791595008, 47884791644159, |
| STORE, 47884791595008, 47884791619583, |
| STORE, 47884791619584, 47884791644159, |
| STORE, 47884791627776, 47884791644159, |
| STORE, 47884791619584, 47884791627775, |
| ERASE, 47884791619584, 47884791627775, |
| STORE, 47884791619584, 47884791627775, |
| ERASE, 47884791627776, 47884791644159, |
| STORE, 47884791627776, 47884791644159, |
| STORE, 47884791644160, 47884791664639, |
| ERASE, 47884791644160, 47884791664639, |
| STORE, 47884791644160, 47884791648255, |
| STORE, 47884791648256, 47884791664639, |
| STORE, 47884791652352, 47884791664639, |
| STORE, 47884791648256, 47884791652351, |
| ERASE, 47884791648256, 47884791652351, |
| STORE, 47884791648256, 47884791652351, |
| STORE, 47884791656448, 47884791664639, |
| STORE, 47884791652352, 47884791656447, |
| ERASE, 47884791652352, 47884791656447, |
| STORE, 47884791652352, 47884791664639, |
| ERASE, 47884791652352, 47884791664639, |
| STORE, 47884791652352, 47884791656447, |
| STORE, 47884791656448, 47884791664639, |
| ERASE, 47884791656448, 47884791664639, |
| STORE, 47884791656448, 47884791664639, |
| STORE, 47884791664640, 47884791672831, |
| ERASE, 47884791468032, 47884791492607, |
| STORE, 47884791468032, 47884791484415, |
| STORE, 47884791484416, 47884791492607, |
| ERASE, 47884791656448, 47884791664639, |
| STORE, 47884791656448, 47884791660543, |
| STORE, 47884791660544, 47884791664639, |
| ERASE, 47884791619584, 47884791627775, |
| STORE, 47884791619584, 47884791623679, |
| STORE, 47884791623680, 47884791627775, |
| }; |
| |
| unsigned long set6[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140722999021568, 140737488351231, |
| ERASE, 140722999021568, 140737488351231, |
| STORE, 140722999021568, 140722999025663, |
| STORE, 94901500268544, 94901500440575, |
| ERASE, 94901500268544, 94901500440575, |
| STORE, 94901500268544, 94901500284927, |
| STORE, 94901500284928, 94901500440575, |
| ERASE, 94901500284928, 94901500440575, |
| STORE, 94901500284928, 94901500387327, |
| STORE, 94901500387328, 94901500428287, |
| STORE, 94901500428288, 94901500440575, |
| STORE, 47430426660864, 47430426832895, |
| ERASE, 47430426660864, 47430426832895, |
| STORE, 47430426660864, 47430426664959, |
| STORE, 47430426664960, 47430426832895, |
| ERASE, 47430426664960, 47430426832895, |
| STORE, 47430426664960, 47430426787839, |
| STORE, 47430426787840, 47430426820607, |
| STORE, 47430426820608, 47430426828799, |
| STORE, 47430426828800, 47430426832895, |
| STORE, 140722999115776, 140722999119871, |
| STORE, 140722999103488, 140722999115775, |
| STORE, 47430426832896, 47430426841087, |
| STORE, 47430426841088, 47430426849279, |
| STORE, 47430426849280, 47430427013119, |
| ERASE, 47430426849280, 47430427013119, |
| STORE, 47430426849280, 47430426861567, |
| STORE, 47430426861568, 47430427013119, |
| STORE, 47430426959872, 47430427013119, |
| STORE, 47430426861568, 47430426959871, |
| ERASE, 47430426861568, 47430426959871, |
| STORE, 47430426861568, 47430426959871, |
| STORE, 47430427004928, 47430427013119, |
| STORE, 47430426959872, 47430427004927, |
| ERASE, 47430426959872, 47430427004927, |
| STORE, 47430426959872, 47430427013119, |
| ERASE, 47430426959872, 47430427013119, |
| STORE, 47430426959872, 47430427004927, |
| STORE, 47430427004928, 47430427013119, |
| ERASE, 47430427004928, 47430427013119, |
| STORE, 47430427004928, 47430427013119, |
| STORE, 47430427013120, 47430430064639, |
| STORE, 47430427557888, 47430430064639, |
| STORE, 47430427013120, 47430427557887, |
| ERASE, 47430427557888, 47430430064639, |
| STORE, 47430427557888, 47430429843455, |
| STORE, 47430429843456, 47430430064639, |
| STORE, 47430429253632, 47430429843455, |
| STORE, 47430427557888, 47430429253631, |
| ERASE, 47430427557888, 47430429253631, |
| STORE, 47430427557888, 47430429253631, |
| STORE, 47430429839360, 47430429843455, |
| STORE, 47430429253632, 47430429839359, |
| ERASE, 47430429253632, 47430429839359, |
| STORE, 47430429253632, 47430429839359, |
| STORE, 47430430048256, 47430430064639, |
| STORE, 47430429843456, 47430430048255, |
| ERASE, 47430429843456, 47430430048255, |
| STORE, 47430429843456, 47430430048255, |
| ERASE, 47430430048256, 47430430064639, |
| STORE, 47430430048256, 47430430064639, |
| STORE, 47430430064640, 47430431903743, |
| STORE, 47430430203904, 47430431903743, |
| STORE, 47430430064640, 47430430203903, |
| ERASE, 47430430203904, 47430431903743, |
| STORE, 47430430203904, 47430431862783, |
| STORE, 47430431862784, 47430431903743, |
| STORE, 47430431547392, 47430431862783, |
| STORE, 47430430203904, 47430431547391, |
| ERASE, 47430430203904, 47430431547391, |
| STORE, 47430430203904, 47430431547391, |
| STORE, 47430431858688, 47430431862783, |
| STORE, 47430431547392, 47430431858687, |
| ERASE, 47430431547392, 47430431858687, |
| STORE, 47430431547392, 47430431858687, |
| STORE, 47430431887360, 47430431903743, |
| STORE, 47430431862784, 47430431887359, |
| ERASE, 47430431862784, 47430431887359, |
| STORE, 47430431862784, 47430431887359, |
| ERASE, 47430431887360, 47430431903743, |
| STORE, 47430431887360, 47430431903743, |
| STORE, 47430431903744, 47430432038911, |
| ERASE, 47430431903744, 47430432038911, |
| STORE, 47430431903744, 47430431928319, |
| STORE, 47430431928320, 47430432038911, |
| STORE, 47430431989760, 47430432038911, |
| STORE, 47430431928320, 47430431989759, |
| ERASE, 47430431928320, 47430431989759, |
| STORE, 47430431928320, 47430431989759, |
| STORE, 47430432014336, 47430432038911, |
| STORE, 47430431989760, 47430432014335, |
| ERASE, 47430431989760, 47430432014335, |
| STORE, 47430431989760, 47430432038911, |
| ERASE, 47430431989760, 47430432038911, |
| STORE, 47430431989760, 47430432014335, |
| STORE, 47430432014336, 47430432038911, |
| STORE, 47430432022528, 47430432038911, |
| STORE, 47430432014336, 47430432022527, |
| ERASE, 47430432014336, 47430432022527, |
| STORE, 47430432014336, 47430432022527, |
| ERASE, 47430432022528, 47430432038911, |
| STORE, 47430432022528, 47430432038911, |
| STORE, 47430432038912, 47430432059391, |
| ERASE, 47430432038912, 47430432059391, |
| STORE, 47430432038912, 47430432043007, |
| STORE, 47430432043008, 47430432059391, |
| STORE, 47430432047104, 47430432059391, |
| STORE, 47430432043008, 47430432047103, |
| ERASE, 47430432043008, 47430432047103, |
| STORE, 47430432043008, 47430432047103, |
| STORE, 47430432051200, 47430432059391, |
| STORE, 47430432047104, 47430432051199, |
| ERASE, 47430432047104, 47430432051199, |
| STORE, 47430432047104, 47430432059391, |
| ERASE, 47430432047104, 47430432059391, |
| STORE, 47430432047104, 47430432051199, |
| STORE, 47430432051200, 47430432059391, |
| ERASE, 47430432051200, 47430432059391, |
| STORE, 47430432051200, 47430432059391, |
| STORE, 47430432059392, 47430432067583, |
| ERASE, 47430431862784, 47430431887359, |
| STORE, 47430431862784, 47430431879167, |
| STORE, 47430431879168, 47430431887359, |
| ERASE, 47430432051200, 47430432059391, |
| STORE, 47430432051200, 47430432055295, |
| STORE, 47430432055296, 47430432059391, |
| ERASE, 47430432014336, 47430432022527, |
| STORE, 47430432014336, 47430432018431, |
| STORE, 47430432018432, 47430432022527, |
| }; |
| unsigned long set7[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140729808330752, 140737488351231, |
| ERASE, 140729808330752, 140737488351231, |
| STORE, 140729808330752, 140729808334847, |
| STORE, 94629632020480, 94629632192511, |
| ERASE, 94629632020480, 94629632192511, |
| STORE, 94629632020480, 94629632036863, |
| STORE, 94629632036864, 94629632192511, |
| ERASE, 94629632036864, 94629632192511, |
| STORE, 94629632036864, 94629632139263, |
| STORE, 94629632139264, 94629632180223, |
| STORE, 94629632180224, 94629632192511, |
| STORE, 47439981776896, 47439981948927, |
| ERASE, 47439981776896, 47439981948927, |
| STORE, 47439981776896, 47439981780991, |
| STORE, 47439981780992, 47439981948927, |
| ERASE, 47439981780992, 47439981948927, |
| STORE, 47439981780992, 47439981903871, |
| STORE, 47439981903872, 47439981936639, |
| STORE, 47439981936640, 47439981944831, |
| STORE, 47439981944832, 47439981948927, |
| STORE, 140729808474112, 140729808478207, |
| STORE, 140729808461824, 140729808474111, |
| STORE, 47439981948928, 47439981957119, |
| STORE, 47439981957120, 47439981965311, |
| STORE, 47439981965312, 47439982129151, |
| ERASE, 47439981965312, 47439982129151, |
| STORE, 47439981965312, 47439981977599, |
| STORE, 47439981977600, 47439982129151, |
| STORE, 47439982075904, 47439982129151, |
| STORE, 47439981977600, 47439982075903, |
| ERASE, 47439981977600, 47439982075903, |
| STORE, 47439981977600, 47439982075903, |
| STORE, 47439982120960, 47439982129151, |
| STORE, 47439982075904, 47439982120959, |
| ERASE, 47439982075904, 47439982120959, |
| STORE, 47439982075904, 47439982129151, |
| ERASE, 47439982075904, 47439982129151, |
| STORE, 47439982075904, 47439982120959, |
| STORE, 47439982120960, 47439982129151, |
| ERASE, 47439982120960, 47439982129151, |
| STORE, 47439982120960, 47439982129151, |
| STORE, 47439982129152, 47439985180671, |
| STORE, 47439982673920, 47439985180671, |
| STORE, 47439982129152, 47439982673919, |
| ERASE, 47439982673920, 47439985180671, |
| STORE, 47439982673920, 47439984959487, |
| STORE, 47439984959488, 47439985180671, |
| STORE, 47439984369664, 47439984959487, |
| STORE, 47439982673920, 47439984369663, |
| ERASE, 47439982673920, 47439984369663, |
| STORE, 47439982673920, 47439984369663, |
| STORE, 47439984955392, 47439984959487, |
| STORE, 47439984369664, 47439984955391, |
| ERASE, 47439984369664, 47439984955391, |
| STORE, 47439984369664, 47439984955391, |
| STORE, 47439985164288, 47439985180671, |
| STORE, 47439984959488, 47439985164287, |
| ERASE, 47439984959488, 47439985164287, |
| STORE, 47439984959488, 47439985164287, |
| ERASE, 47439985164288, 47439985180671, |
| STORE, 47439985164288, 47439985180671, |
| STORE, 47439985180672, 47439987019775, |
| STORE, 47439985319936, 47439987019775, |
| STORE, 47439985180672, 47439985319935, |
| ERASE, 47439985319936, 47439987019775, |
| STORE, 47439985319936, 47439986978815, |
| STORE, 47439986978816, 47439987019775, |
| STORE, 47439986663424, 47439986978815, |
| STORE, 47439985319936, 47439986663423, |
| ERASE, 47439985319936, 47439986663423, |
| STORE, 47439985319936, 47439986663423, |
| STORE, 47439986974720, 47439986978815, |
| STORE, 47439986663424, 47439986974719, |
| ERASE, 47439986663424, 47439986974719, |
| STORE, 47439986663424, 47439986974719, |
| STORE, 47439987003392, 47439987019775, |
| STORE, 47439986978816, 47439987003391, |
| ERASE, 47439986978816, 47439987003391, |
| STORE, 47439986978816, 47439987003391, |
| ERASE, 47439987003392, 47439987019775, |
| STORE, 47439987003392, 47439987019775, |
| STORE, 47439987019776, 47439987154943, |
| ERASE, 47439987019776, 47439987154943, |
| STORE, 47439987019776, 47439987044351, |
| STORE, 47439987044352, 47439987154943, |
| STORE, 47439987105792, 47439987154943, |
| STORE, 47439987044352, 47439987105791, |
| ERASE, 47439987044352, 47439987105791, |
| STORE, 47439987044352, 47439987105791, |
| STORE, 47439987130368, 47439987154943, |
| STORE, 47439987105792, 47439987130367, |
| ERASE, 47439987105792, 47439987130367, |
| STORE, 47439987105792, 47439987154943, |
| ERASE, 47439987105792, 47439987154943, |
| STORE, 47439987105792, 47439987130367, |
| STORE, 47439987130368, 47439987154943, |
| STORE, 47439987138560, 47439987154943, |
| STORE, 47439987130368, 47439987138559, |
| ERASE, 47439987130368, 47439987138559, |
| STORE, 47439987130368, 47439987138559, |
| ERASE, 47439987138560, 47439987154943, |
| STORE, 47439987138560, 47439987154943, |
| STORE, 47439987154944, 47439987175423, |
| ERASE, 47439987154944, 47439987175423, |
| STORE, 47439987154944, 47439987159039, |
| STORE, 47439987159040, 47439987175423, |
| STORE, 47439987163136, 47439987175423, |
| STORE, 47439987159040, 47439987163135, |
| ERASE, 47439987159040, 47439987163135, |
| STORE, 47439987159040, 47439987163135, |
| STORE, 47439987167232, 47439987175423, |
| STORE, 47439987163136, 47439987167231, |
| ERASE, 47439987163136, 47439987167231, |
| STORE, 47439987163136, 47439987175423, |
| ERASE, 47439987163136, 47439987175423, |
| STORE, 47439987163136, 47439987167231, |
| STORE, 47439987167232, 47439987175423, |
| ERASE, 47439987167232, 47439987175423, |
| STORE, 47439987167232, 47439987175423, |
| STORE, 47439987175424, 47439987183615, |
| ERASE, 47439986978816, 47439987003391, |
| STORE, 47439986978816, 47439986995199, |
| STORE, 47439986995200, 47439987003391, |
| ERASE, 47439987167232, 47439987175423, |
| STORE, 47439987167232, 47439987171327, |
| STORE, 47439987171328, 47439987175423, |
| ERASE, 47439987130368, 47439987138559, |
| STORE, 47439987130368, 47439987134463, |
| STORE, 47439987134464, 47439987138559, |
| }; |
| unsigned long set8[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140722482974720, 140737488351231, |
| ERASE, 140722482974720, 140737488351231, |
| STORE, 140722482974720, 140722482978815, |
| STORE, 94121505034240, 94121505206271, |
| ERASE, 94121505034240, 94121505206271, |
| STORE, 94121505034240, 94121505050623, |
| STORE, 94121505050624, 94121505206271, |
| ERASE, 94121505050624, 94121505206271, |
| STORE, 94121505050624, 94121505153023, |
| STORE, 94121505153024, 94121505193983, |
| STORE, 94121505193984, 94121505206271, |
| STORE, 47708483284992, 47708483457023, |
| ERASE, 47708483284992, 47708483457023, |
| STORE, 47708483284992, 47708483289087, |
| STORE, 47708483289088, 47708483457023, |
| ERASE, 47708483289088, 47708483457023, |
| STORE, 47708483289088, 47708483411967, |
| STORE, 47708483411968, 47708483444735, |
| STORE, 47708483444736, 47708483452927, |
| STORE, 47708483452928, 47708483457023, |
| STORE, 140722483142656, 140722483146751, |
| STORE, 140722483130368, 140722483142655, |
| STORE, 47708483457024, 47708483465215, |
| STORE, 47708483465216, 47708483473407, |
| STORE, 47708483473408, 47708483637247, |
| ERASE, 47708483473408, 47708483637247, |
| STORE, 47708483473408, 47708483485695, |
| STORE, 47708483485696, 47708483637247, |
| STORE, 47708483584000, 47708483637247, |
| STORE, 47708483485696, 47708483583999, |
| ERASE, 47708483485696, 47708483583999, |
| STORE, 47708483485696, 47708483583999, |
| STORE, 47708483629056, 47708483637247, |
| STORE, 47708483584000, 47708483629055, |
| ERASE, 47708483584000, 47708483629055, |
| STORE, 47708483584000, 47708483637247, |
| ERASE, 47708483584000, 47708483637247, |
| STORE, 47708483584000, 47708483629055, |
| STORE, 47708483629056, 47708483637247, |
| ERASE, 47708483629056, 47708483637247, |
| STORE, 47708483629056, 47708483637247, |
| STORE, 47708483637248, 47708486688767, |
| STORE, 47708484182016, 47708486688767, |
| STORE, 47708483637248, 47708484182015, |
| ERASE, 47708484182016, 47708486688767, |
| STORE, 47708484182016, 47708486467583, |
| STORE, 47708486467584, 47708486688767, |
| STORE, 47708485877760, 47708486467583, |
| STORE, 47708484182016, 47708485877759, |
| ERASE, 47708484182016, 47708485877759, |
| STORE, 47708484182016, 47708485877759, |
| STORE, 47708486463488, 47708486467583, |
| STORE, 47708485877760, 47708486463487, |
| ERASE, 47708485877760, 47708486463487, |
| STORE, 47708485877760, 47708486463487, |
| STORE, 47708486672384, 47708486688767, |
| STORE, 47708486467584, 47708486672383, |
| ERASE, 47708486467584, 47708486672383, |
| STORE, 47708486467584, 47708486672383, |
| ERASE, 47708486672384, 47708486688767, |
| STORE, 47708486672384, 47708486688767, |
| STORE, 47708486688768, 47708488527871, |
| STORE, 47708486828032, 47708488527871, |
| STORE, 47708486688768, 47708486828031, |
| ERASE, 47708486828032, 47708488527871, |
| STORE, 47708486828032, 47708488486911, |
| STORE, 47708488486912, 47708488527871, |
| STORE, 47708488171520, 47708488486911, |
| STORE, 47708486828032, 47708488171519, |
| ERASE, 47708486828032, 47708488171519, |
| STORE, 47708486828032, 47708488171519, |
| STORE, 47708488482816, 47708488486911, |
| STORE, 47708488171520, 47708488482815, |
| ERASE, 47708488171520, 47708488482815, |
| STORE, 47708488171520, 47708488482815, |
| STORE, 47708488511488, 47708488527871, |
| STORE, 47708488486912, 47708488511487, |
| ERASE, 47708488486912, 47708488511487, |
| STORE, 47708488486912, 47708488511487, |
| ERASE, 47708488511488, 47708488527871, |
| STORE, 47708488511488, 47708488527871, |
| STORE, 47708488527872, 47708488663039, |
| ERASE, 47708488527872, 47708488663039, |
| STORE, 47708488527872, 47708488552447, |
| STORE, 47708488552448, 47708488663039, |
| STORE, 47708488613888, 47708488663039, |
| STORE, 47708488552448, 47708488613887, |
| ERASE, 47708488552448, 47708488613887, |
| STORE, 47708488552448, 47708488613887, |
| STORE, 47708488638464, 47708488663039, |
| STORE, 47708488613888, 47708488638463, |
| ERASE, 47708488613888, 47708488638463, |
| STORE, 47708488613888, 47708488663039, |
| ERASE, 47708488613888, 47708488663039, |
| STORE, 47708488613888, 47708488638463, |
| STORE, 47708488638464, 47708488663039, |
| STORE, 47708488646656, 47708488663039, |
| STORE, 47708488638464, 47708488646655, |
| ERASE, 47708488638464, 47708488646655, |
| STORE, 47708488638464, 47708488646655, |
| ERASE, 47708488646656, 47708488663039, |
| STORE, 47708488646656, 47708488663039, |
| STORE, 47708488663040, 47708488683519, |
| ERASE, 47708488663040, 47708488683519, |
| STORE, 47708488663040, 47708488667135, |
| STORE, 47708488667136, 47708488683519, |
| STORE, 47708488671232, 47708488683519, |
| STORE, 47708488667136, 47708488671231, |
| ERASE, 47708488667136, 47708488671231, |
| STORE, 47708488667136, 47708488671231, |
| STORE, 47708488675328, 47708488683519, |
| STORE, 47708488671232, 47708488675327, |
| ERASE, 47708488671232, 47708488675327, |
| STORE, 47708488671232, 47708488683519, |
| ERASE, 47708488671232, 47708488683519, |
| STORE, 47708488671232, 47708488675327, |
| STORE, 47708488675328, 47708488683519, |
| ERASE, 47708488675328, 47708488683519, |
| STORE, 47708488675328, 47708488683519, |
| STORE, 47708488683520, 47708488691711, |
| ERASE, 47708488486912, 47708488511487, |
| STORE, 47708488486912, 47708488503295, |
| STORE, 47708488503296, 47708488511487, |
| ERASE, 47708488675328, 47708488683519, |
| STORE, 47708488675328, 47708488679423, |
| STORE, 47708488679424, 47708488683519, |
| ERASE, 47708488638464, 47708488646655, |
| STORE, 47708488638464, 47708488642559, |
| STORE, 47708488642560, 47708488646655, |
| }; |
| |
| unsigned long set9[] = { |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140736427839488, 140737488351231, |
| ERASE, 140736427839488, 140736427839488, |
| STORE, 140736427839488, 140736427843583, |
| STORE, 94071213395968, 94071213567999, |
| ERASE, 94071213395968, 94071213395968, |
| STORE, 94071213395968, 94071213412351, |
| STORE, 94071213412352, 94071213567999, |
| ERASE, 94071213412352, 94071213412352, |
| STORE, 94071213412352, 94071213514751, |
| STORE, 94071213514752, 94071213555711, |
| STORE, 94071213555712, 94071213567999, |
| STORE, 139968410644480, 139968410816511, |
| ERASE, 139968410644480, 139968410644480, |
| STORE, 139968410644480, 139968410648575, |
| STORE, 139968410648576, 139968410816511, |
| ERASE, 139968410648576, 139968410648576, |
| STORE, 139968410648576, 139968410771455, |
| STORE, 139968410771456, 139968410804223, |
| STORE, 139968410804224, 139968410812415, |
| STORE, 139968410812416, 139968410816511, |
| STORE, 140736429277184, 140736429281279, |
| STORE, 140736429264896, 140736429277183, |
| STORE, 47664384352256, 47664384360447, |
| STORE, 47664384360448, 47664384368639, |
| STORE, 47664384368640, 47664384532479, |
| ERASE, 47664384368640, 47664384368640, |
| STORE, 47664384368640, 47664384380927, |
| STORE, 47664384380928, 47664384532479, |
| STORE, 47664384479232, 47664384532479, |
| STORE, 47664384380928, 47664384479231, |
| ERASE, 47664384380928, 47664384380928, |
| STORE, 47664384380928, 47664384479231, |
| STORE, 47664384524288, 47664384532479, |
| STORE, 47664384479232, 47664384524287, |
| ERASE, 47664384479232, 47664384479232, |
| STORE, 47664384479232, 47664384532479, |
| ERASE, 47664384479232, 47664384479232, |
| STORE, 47664384479232, 47664384524287, |
| STORE, 47664384524288, 47664384532479, |
| ERASE, 47664384524288, 47664384524288, |
| STORE, 47664384524288, 47664384532479, |
| STORE, 47664384532480, 47664387583999, |
| STORE, 47664385077248, 47664387583999, |
| STORE, 47664384532480, 47664385077247, |
| ERASE, 47664385077248, 47664385077248, |
| STORE, 47664385077248, 47664387362815, |
| STORE, 47664387362816, 47664387583999, |
| STORE, 47664386772992, 47664387362815, |
| STORE, 47664385077248, 47664386772991, |
| ERASE, 47664385077248, 47664385077248, |
| STORE, 47664385077248, 47664386772991, |
| STORE, 47664387358720, 47664387362815, |
| STORE, 47664386772992, 47664387358719, |
| ERASE, 47664386772992, 47664386772992, |
| STORE, 47664386772992, 47664387358719, |
| STORE, 47664387567616, 47664387583999, |
| STORE, 47664387362816, 47664387567615, |
| ERASE, 47664387362816, 47664387362816, |
| STORE, 47664387362816, 47664387567615, |
| ERASE, 47664387567616, 47664387567616, |
| STORE, 47664387567616, 47664387583999, |
| STORE, 47664387584000, 47664389423103, |
| STORE, 47664387723264, 47664389423103, |
| STORE, 47664387584000, 47664387723263, |
| ERASE, 47664387723264, 47664387723264, |
| STORE, 47664387723264, 47664389382143, |
| STORE, 47664389382144, 47664389423103, |
| STORE, 47664389066752, 47664389382143, |
| STORE, 47664387723264, 47664389066751, |
| ERASE, 47664387723264, 47664387723264, |
| STORE, 47664387723264, 47664389066751, |
| STORE, 47664389378048, 47664389382143, |
| STORE, 47664389066752, 47664389378047, |
| ERASE, 47664389066752, 47664389066752, |
| STORE, 47664389066752, 47664389378047, |
| STORE, 47664389406720, 47664389423103, |
| STORE, 47664389382144, 47664389406719, |
| ERASE, 47664389382144, 47664389382144, |
| STORE, 47664389382144, 47664389406719, |
| ERASE, 47664389406720, 47664389406720, |
| STORE, 47664389406720, 47664389423103, |
| STORE, 47664389423104, 47664389558271, |
| ERASE, 47664389423104, 47664389423104, |
| STORE, 47664389423104, 47664389447679, |
| STORE, 47664389447680, 47664389558271, |
| STORE, 47664389509120, 47664389558271, |
| STORE, 47664389447680, 47664389509119, |
| ERASE, 47664389447680, 47664389447680, |
| STORE, 47664389447680, 47664389509119, |
| STORE, 47664389533696, 47664389558271, |
| STORE, 47664389509120, 47664389533695, |
| ERASE, 47664389509120, 47664389509120, |
| STORE, 47664389509120, 47664389558271, |
| ERASE, 47664389509120, 47664389509120, |
| STORE, 47664389509120, 47664389533695, |
| STORE, 47664389533696, 47664389558271, |
| STORE, 47664389541888, 47664389558271, |
| STORE, 47664389533696, 47664389541887, |
| ERASE, 47664389533696, 47664389533696, |
| STORE, 47664389533696, 47664389541887, |
| ERASE, 47664389541888, 47664389541888, |
| STORE, 47664389541888, 47664389558271, |
| STORE, 47664389558272, 47664389578751, |
| ERASE, 47664389558272, 47664389558272, |
| STORE, 47664389558272, 47664389562367, |
| STORE, 47664389562368, 47664389578751, |
| STORE, 47664389566464, 47664389578751, |
| STORE, 47664389562368, 47664389566463, |
| ERASE, 47664389562368, 47664389562368, |
| STORE, 47664389562368, 47664389566463, |
| STORE, 47664389570560, 47664389578751, |
| STORE, 47664389566464, 47664389570559, |
| ERASE, 47664389566464, 47664389566464, |
| STORE, 47664389566464, 47664389578751, |
| ERASE, 47664389566464, 47664389566464, |
| STORE, 47664389566464, 47664389570559, |
| STORE, 47664389570560, 47664389578751, |
| ERASE, 47664389570560, 47664389570560, |
| STORE, 47664389570560, 47664389578751, |
| STORE, 47664389578752, 47664389586943, |
| ERASE, 47664389382144, 47664389382144, |
| STORE, 47664389382144, 47664389398527, |
| STORE, 47664389398528, 47664389406719, |
| ERASE, 47664389570560, 47664389570560, |
| STORE, 47664389570560, 47664389574655, |
| STORE, 47664389574656, 47664389578751, |
| ERASE, 47664389533696, 47664389533696, |
| STORE, 47664389533696, 47664389537791, |
| STORE, 47664389537792, 47664389541887, |
| ERASE, 47664387362816, 47664387362816, |
| STORE, 47664387362816, 47664387559423, |
| STORE, 47664387559424, 47664387567615, |
| ERASE, 47664384524288, 47664384524288, |
| STORE, 47664384524288, 47664384528383, |
| STORE, 47664384528384, 47664384532479, |
| ERASE, 94071213555712, 94071213555712, |
| STORE, 94071213555712, 94071213563903, |
| STORE, 94071213563904, 94071213567999, |
| ERASE, 139968410804224, 139968410804224, |
| STORE, 139968410804224, 139968410808319, |
| STORE, 139968410808320, 139968410812415, |
| ERASE, 47664384352256, 47664384352256, |
| STORE, 94071244402688, 94071244537855, |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140728271503360, 140737488351231, |
| ERASE, 140728271503360, 140728271503360, |
| STORE, 140728271503360, 140728271507455, |
| STORE, 94410361982976, 94410362155007, |
| ERASE, 94410361982976, 94410361982976, |
| STORE, 94410361982976, 94410361999359, |
| STORE, 94410361999360, 94410362155007, |
| ERASE, 94410361999360, 94410361999360, |
| STORE, 94410361999360, 94410362101759, |
| STORE, 94410362101760, 94410362142719, |
| STORE, 94410362142720, 94410362155007, |
| STORE, 140351953997824, 140351954169855, |
| ERASE, 140351953997824, 140351953997824, |
| STORE, 140351953997824, 140351954001919, |
| STORE, 140351954001920, 140351954169855, |
| ERASE, 140351954001920, 140351954001920, |
| STORE, 140351954001920, 140351954124799, |
| STORE, 140351954124800, 140351954157567, |
| STORE, 140351954157568, 140351954165759, |
| STORE, 140351954165760, 140351954169855, |
| STORE, 140728272429056, 140728272433151, |
| STORE, 140728272416768, 140728272429055, |
| STORE, 47280840998912, 47280841007103, |
| STORE, 47280841007104, 47280841015295, |
| STORE, 47280841015296, 47280841179135, |
| ERASE, 47280841015296, 47280841015296, |
| STORE, 47280841015296, 47280841027583, |
| STORE, 47280841027584, 47280841179135, |
| STORE, 47280841125888, 47280841179135, |
| STORE, 47280841027584, 47280841125887, |
| ERASE, 47280841027584, 47280841027584, |
| STORE, 47280841027584, 47280841125887, |
| STORE, 47280841170944, 47280841179135, |
| STORE, 47280841125888, 47280841170943, |
| ERASE, 47280841125888, 47280841125888, |
| STORE, 47280841125888, 47280841179135, |
| ERASE, 47280841125888, 47280841125888, |
| STORE, 47280841125888, 47280841170943, |
| STORE, 47280841170944, 47280841179135, |
| ERASE, 47280841170944, 47280841170944, |
| STORE, 47280841170944, 47280841179135, |
| STORE, 47280841179136, 47280844230655, |
| STORE, 47280841723904, 47280844230655, |
| STORE, 47280841179136, 47280841723903, |
| ERASE, 47280841723904, 47280841723904, |
| STORE, 47280841723904, 47280844009471, |
| STORE, 47280844009472, 47280844230655, |
| STORE, 47280843419648, 47280844009471, |
| STORE, 47280841723904, 47280843419647, |
| ERASE, 47280841723904, 47280841723904, |
| STORE, 47280841723904, 47280843419647, |
| STORE, 47280844005376, 47280844009471, |
| STORE, 47280843419648, 47280844005375, |
| ERASE, 47280843419648, 47280843419648, |
| STORE, 47280843419648, 47280844005375, |
| STORE, 47280844214272, 47280844230655, |
| STORE, 47280844009472, 47280844214271, |
| ERASE, 47280844009472, 47280844009472, |
| STORE, 47280844009472, 47280844214271, |
| ERASE, 47280844214272, 47280844214272, |
| STORE, 47280844214272, 47280844230655, |
| STORE, 47280844230656, 47280846069759, |
| STORE, 47280844369920, 47280846069759, |
| STORE, 47280844230656, 47280844369919, |
| ERASE, 47280844369920, 47280844369920, |
| STORE, 47280844369920, 47280846028799, |
| STORE, 47280846028800, 47280846069759, |
| STORE, 47280845713408, 47280846028799, |
| STORE, 47280844369920, 47280845713407, |
| ERASE, 47280844369920, 47280844369920, |
| STORE, 47280844369920, 47280845713407, |
| STORE, 47280846024704, 47280846028799, |
| STORE, 47280845713408, 47280846024703, |
| ERASE, 47280845713408, 47280845713408, |
| STORE, 47280845713408, 47280846024703, |
| STORE, 47280846053376, 47280846069759, |
| STORE, 47280846028800, 47280846053375, |
| ERASE, 47280846028800, 47280846028800, |
| STORE, 47280846028800, 47280846053375, |
| ERASE, 47280846053376, 47280846053376, |
| STORE, 47280846053376, 47280846069759, |
| STORE, 47280846069760, 47280846204927, |
| ERASE, 47280846069760, 47280846069760, |
| STORE, 47280846069760, 47280846094335, |
| STORE, 47280846094336, 47280846204927, |
| STORE, 47280846155776, 47280846204927, |
| STORE, 47280846094336, 47280846155775, |
| ERASE, 47280846094336, 47280846094336, |
| STORE, 47280846094336, 47280846155775, |
| STORE, 47280846180352, 47280846204927, |
| STORE, 47280846155776, 47280846180351, |
| ERASE, 47280846155776, 47280846155776, |
| STORE, 47280846155776, 47280846204927, |
| ERASE, 47280846155776, 47280846155776, |
| STORE, 47280846155776, 47280846180351, |
| STORE, 47280846180352, 47280846204927, |
| STORE, 47280846188544, 47280846204927, |
| STORE, 47280846180352, 47280846188543, |
| ERASE, 47280846180352, 47280846180352, |
| STORE, 47280846180352, 47280846188543, |
| ERASE, 47280846188544, 47280846188544, |
| STORE, 47280846188544, 47280846204927, |
| STORE, 47280846204928, 47280846225407, |
| ERASE, 47280846204928, 47280846204928, |
| STORE, 47280846204928, 47280846209023, |
| STORE, 47280846209024, 47280846225407, |
| STORE, 47280846213120, 47280846225407, |
| STORE, 47280846209024, 47280846213119, |
| ERASE, 47280846209024, 47280846209024, |
| STORE, 47280846209024, 47280846213119, |
| STORE, 47280846217216, 47280846225407, |
| STORE, 47280846213120, 47280846217215, |
| ERASE, 47280846213120, 47280846213120, |
| STORE, 47280846213120, 47280846225407, |
| ERASE, 47280846213120, 47280846213120, |
| STORE, 47280846213120, 47280846217215, |
| STORE, 47280846217216, 47280846225407, |
| ERASE, 47280846217216, 47280846217216, |
| STORE, 47280846217216, 47280846225407, |
| STORE, 47280846225408, 47280846233599, |
| ERASE, 47280846028800, 47280846028800, |
| STORE, 47280846028800, 47280846045183, |
| STORE, 47280846045184, 47280846053375, |
| ERASE, 47280846217216, 47280846217216, |
| STORE, 47280846217216, 47280846221311, |
| STORE, 47280846221312, 47280846225407, |
| ERASE, 47280846180352, 47280846180352, |
| STORE, 47280846180352, 47280846184447, |
| STORE, 47280846184448, 47280846188543, |
| ERASE, 47280844009472, 47280844009472, |
| STORE, 47280844009472, 47280844206079, |
| STORE, 47280844206080, 47280844214271, |
| ERASE, 47280841170944, 47280841170944, |
| STORE, 47280841170944, 47280841175039, |
| STORE, 47280841175040, 47280841179135, |
| ERASE, 94410362142720, 94410362142720, |
| STORE, 94410362142720, 94410362150911, |
| STORE, 94410362150912, 94410362155007, |
| ERASE, 140351954157568, 140351954157568, |
| STORE, 140351954157568, 140351954161663, |
| STORE, 140351954161664, 140351954165759, |
| ERASE, 47280840998912, 47280840998912, |
| STORE, 94410379456512, 94410379591679, |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140732946362368, 140737488351231, |
| ERASE, 140732946362368, 140732946362368, |
| STORE, 140732946362368, 140732946366463, |
| STORE, 94352937934848, 94352938106879, |
| ERASE, 94352937934848, 94352937934848, |
| STORE, 94352937934848, 94352937951231, |
| STORE, 94352937951232, 94352938106879, |
| ERASE, 94352937951232, 94352937951232, |
| STORE, 94352937951232, 94352938053631, |
| STORE, 94352938053632, 94352938094591, |
| STORE, 94352938094592, 94352938106879, |
| STORE, 140595518742528, 140595518914559, |
| ERASE, 140595518742528, 140595518742528, |
| STORE, 140595518742528, 140595518746623, |
| STORE, 140595518746624, 140595518914559, |
| ERASE, 140595518746624, 140595518746624, |
| STORE, 140595518746624, 140595518869503, |
| STORE, 140595518869504, 140595518902271, |
| STORE, 140595518902272, 140595518910463, |
| STORE, 140595518910464, 140595518914559, |
| STORE, 140732947468288, 140732947472383, |
| STORE, 140732947456000, 140732947468287, |
| STORE, 47037276254208, 47037276262399, |
| STORE, 47037276262400, 47037276270591, |
| STORE, 47037276270592, 47037276434431, |
| ERASE, 47037276270592, 47037276270592, |
| STORE, 47037276270592, 47037276282879, |
| STORE, 47037276282880, 47037276434431, |
| STORE, 47037276381184, 47037276434431, |
| STORE, 47037276282880, 47037276381183, |
| ERASE, 47037276282880, 47037276282880, |
| STORE, 47037276282880, 47037276381183, |
| STORE, 47037276426240, 47037276434431, |
| STORE, 47037276381184, 47037276426239, |
| ERASE, 47037276381184, 47037276381184, |
| STORE, 47037276381184, 47037276434431, |
| ERASE, 47037276381184, 47037276381184, |
| STORE, 47037276381184, 47037276426239, |
| STORE, 47037276426240, 47037276434431, |
| ERASE, 47037276426240, 47037276426240, |
| STORE, 47037276426240, 47037276434431, |
| STORE, 47037276434432, 47037279485951, |
| STORE, 47037276979200, 47037279485951, |
| STORE, 47037276434432, 47037276979199, |
| ERASE, 47037276979200, 47037276979200, |
| STORE, 47037276979200, 47037279264767, |
| STORE, 47037279264768, 47037279485951, |
| STORE, 47037278674944, 47037279264767, |
| STORE, 47037276979200, 47037278674943, |
| ERASE, 47037276979200, 47037276979200, |
| STORE, 47037276979200, 47037278674943, |
| STORE, 47037279260672, 47037279264767, |
| STORE, 47037278674944, 47037279260671, |
| ERASE, 47037278674944, 47037278674944, |
| STORE, 47037278674944, 47037279260671, |
| STORE, 47037279469568, 47037279485951, |
| STORE, 47037279264768, 47037279469567, |
| ERASE, 47037279264768, 47037279264768, |
| STORE, 47037279264768, 47037279469567, |
| ERASE, 47037279469568, 47037279469568, |
| STORE, 47037279469568, 47037279485951, |
| STORE, 47037279485952, 47037281325055, |
| STORE, 47037279625216, 47037281325055, |
| STORE, 47037279485952, 47037279625215, |
| ERASE, 47037279625216, 47037279625216, |
| STORE, 47037279625216, 47037281284095, |
| STORE, 47037281284096, 47037281325055, |
| STORE, 47037280968704, 47037281284095, |
| STORE, 47037279625216, 47037280968703, |
| ERASE, 47037279625216, 47037279625216, |
| STORE, 47037279625216, 47037280968703, |
| STORE, 47037281280000, 47037281284095, |
| STORE, 47037280968704, 47037281279999, |
| ERASE, 47037280968704, 47037280968704, |
| STORE, 47037280968704, 47037281279999, |
| STORE, 47037281308672, 47037281325055, |
| STORE, 47037281284096, 47037281308671, |
| ERASE, 47037281284096, 47037281284096, |
| STORE, 47037281284096, 47037281308671, |
| ERASE, 47037281308672, 47037281308672, |
| STORE, 47037281308672, 47037281325055, |
| STORE, 47037281325056, 47037281460223, |
| ERASE, 47037281325056, 47037281325056, |
| STORE, 47037281325056, 47037281349631, |
| STORE, 47037281349632, 47037281460223, |
| STORE, 47037281411072, 47037281460223, |
| STORE, 47037281349632, 47037281411071, |
| ERASE, 47037281349632, 47037281349632, |
| STORE, 47037281349632, 47037281411071, |
| STORE, 47037281435648, 47037281460223, |
| STORE, 47037281411072, 47037281435647, |
| ERASE, 47037281411072, 47037281411072, |
| STORE, 47037281411072, 47037281460223, |
| ERASE, 47037281411072, 47037281411072, |
| STORE, 47037281411072, 47037281435647, |
| STORE, 47037281435648, 47037281460223, |
| STORE, 47037281443840, 47037281460223, |
| STORE, 47037281435648, 47037281443839, |
| ERASE, 47037281435648, 47037281435648, |
| STORE, 47037281435648, 47037281443839, |
| ERASE, 47037281443840, 47037281443840, |
| STORE, 47037281443840, 47037281460223, |
| STORE, 47037281460224, 47037281480703, |
| ERASE, 47037281460224, 47037281460224, |
| STORE, 47037281460224, 47037281464319, |
| STORE, 47037281464320, 47037281480703, |
| STORE, 47037281468416, 47037281480703, |
| STORE, 47037281464320, 47037281468415, |
| ERASE, 47037281464320, 47037281464320, |
| STORE, 47037281464320, 47037281468415, |
| STORE, 47037281472512, 47037281480703, |
| STORE, 47037281468416, 47037281472511, |
| ERASE, 47037281468416, 47037281468416, |
| STORE, 47037281468416, 47037281480703, |
| ERASE, 47037281468416, 47037281468416, |
| STORE, 47037281468416, 47037281472511, |
| STORE, 47037281472512, 47037281480703, |
| ERASE, 47037281472512, 47037281472512, |
| STORE, 47037281472512, 47037281480703, |
| STORE, 47037281480704, 47037281488895, |
| ERASE, 47037281284096, 47037281284096, |
| STORE, 47037281284096, 47037281300479, |
| STORE, 47037281300480, 47037281308671, |
| ERASE, 47037281472512, 47037281472512, |
| STORE, 47037281472512, 47037281476607, |
| STORE, 47037281476608, 47037281480703, |
| ERASE, 47037281435648, 47037281435648, |
| STORE, 47037281435648, 47037281439743, |
| STORE, 47037281439744, 47037281443839, |
| ERASE, 47037279264768, 47037279264768, |
| STORE, 47037279264768, 47037279461375, |
| STORE, 47037279461376, 47037279469567, |
| ERASE, 47037276426240, 47037276426240, |
| STORE, 47037276426240, 47037276430335, |
| STORE, 47037276430336, 47037276434431, |
| ERASE, 94352938094592, 94352938094592, |
| STORE, 94352938094592, 94352938102783, |
| STORE, 94352938102784, 94352938106879, |
| ERASE, 140595518902272, 140595518902272, |
| STORE, 140595518902272, 140595518906367, |
| STORE, 140595518906368, 140595518910463, |
| ERASE, 47037276254208, 47037276254208, |
| STORE, 94352938438656, 94352938573823, |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140733506027520, 140737488351231, |
| ERASE, 140733506027520, 140733506027520, |
| STORE, 140733506027520, 140733506031615, |
| STORE, 94150123073536, 94150123245567, |
| ERASE, 94150123073536, 94150123073536, |
| STORE, 94150123073536, 94150123089919, |
| STORE, 94150123089920, 94150123245567, |
| ERASE, 94150123089920, 94150123089920, |
| STORE, 94150123089920, 94150123192319, |
| STORE, 94150123192320, 94150123233279, |
| STORE, 94150123233280, 94150123245567, |
| STORE, 140081290375168, 140081290547199, |
| ERASE, 140081290375168, 140081290375168, |
| STORE, 140081290375168, 140081290379263, |
| STORE, 140081290379264, 140081290547199, |
| ERASE, 140081290379264, 140081290379264, |
| STORE, 140081290379264, 140081290502143, |
| STORE, 140081290502144, 140081290534911, |
| STORE, 140081290534912, 140081290543103, |
| STORE, 140081290543104, 140081290547199, |
| STORE, 140733506707456, 140733506711551, |
| STORE, 140733506695168, 140733506707455, |
| STORE, 47551504621568, 47551504629759, |
| STORE, 47551504629760, 47551504637951, |
| STORE, 47551504637952, 47551504801791, |
| ERASE, 47551504637952, 47551504637952, |
| STORE, 47551504637952, 47551504650239, |
| STORE, 47551504650240, 47551504801791, |
| STORE, 47551504748544, 47551504801791, |
| STORE, 47551504650240, 47551504748543, |
| ERASE, 47551504650240, 47551504650240, |
| STORE, 47551504650240, 47551504748543, |
| STORE, 47551504793600, 47551504801791, |
| STORE, 47551504748544, 47551504793599, |
| ERASE, 47551504748544, 47551504748544, |
| STORE, 47551504748544, 47551504801791, |
| ERASE, 47551504748544, 47551504748544, |
| STORE, 47551504748544, 47551504793599, |
| STORE, 47551504793600, 47551504801791, |
| ERASE, 47551504793600, 47551504793600, |
| STORE, 47551504793600, 47551504801791, |
| STORE, 47551504801792, 47551507853311, |
| STORE, 47551505346560, 47551507853311, |
| STORE, 47551504801792, 47551505346559, |
| ERASE, 47551505346560, 47551505346560, |
| STORE, 47551505346560, 47551507632127, |
| STORE, 47551507632128, 47551507853311, |
| STORE, 47551507042304, 47551507632127, |
| STORE, 47551505346560, 47551507042303, |
| ERASE, 47551505346560, 47551505346560, |
| STORE, 47551505346560, 47551507042303, |
| STORE, 47551507628032, 47551507632127, |
| STORE, 47551507042304, 47551507628031, |
| ERASE, 47551507042304, 47551507042304, |
| STORE, 47551507042304, 47551507628031, |
| STORE, 47551507836928, 47551507853311, |
| STORE, 47551507632128, 47551507836927, |
| ERASE, 47551507632128, 47551507632128, |
| STORE, 47551507632128, 47551507836927, |
| ERASE, 47551507836928, 47551507836928, |
| STORE, 47551507836928, 47551507853311, |
| STORE, 47551507853312, 47551509692415, |
| STORE, 47551507992576, 47551509692415, |
| STORE, 47551507853312, 47551507992575, |
| ERASE, 47551507992576, 47551507992576, |
| STORE, 47551507992576, 47551509651455, |
| STORE, 47551509651456, 47551509692415, |
| STORE, 47551509336064, 47551509651455, |
| STORE, 47551507992576, 47551509336063, |
| ERASE, 47551507992576, 47551507992576, |
| STORE, 47551507992576, 47551509336063, |
| STORE, 47551509647360, 47551509651455, |
| STORE, 47551509336064, 47551509647359, |
| ERASE, 47551509336064, 47551509336064, |
| STORE, 47551509336064, 47551509647359, |
| STORE, 47551509676032, 47551509692415, |
| STORE, 47551509651456, 47551509676031, |
| ERASE, 47551509651456, 47551509651456, |
| STORE, 47551509651456, 47551509676031, |
| ERASE, 47551509676032, 47551509676032, |
| STORE, 47551509676032, 47551509692415, |
| STORE, 47551509692416, 47551509827583, |
| ERASE, 47551509692416, 47551509692416, |
| STORE, 47551509692416, 47551509716991, |
| STORE, 47551509716992, 47551509827583, |
| STORE, 47551509778432, 47551509827583, |
| STORE, 47551509716992, 47551509778431, |
| ERASE, 47551509716992, 47551509716992, |
| STORE, 47551509716992, 47551509778431, |
| STORE, 47551509803008, 47551509827583, |
| STORE, 47551509778432, 47551509803007, |
| ERASE, 47551509778432, 47551509778432, |
| STORE, 47551509778432, 47551509827583, |
| ERASE, 47551509778432, 47551509778432, |
| STORE, 47551509778432, 47551509803007, |
| STORE, 47551509803008, 47551509827583, |
| STORE, 47551509811200, 47551509827583, |
| STORE, 47551509803008, 47551509811199, |
| ERASE, 47551509803008, 47551509803008, |
| STORE, 47551509803008, 47551509811199, |
| ERASE, 47551509811200, 47551509811200, |
| STORE, 47551509811200, 47551509827583, |
| STORE, 47551509827584, 47551509848063, |
| ERASE, 47551509827584, 47551509827584, |
| STORE, 47551509827584, 47551509831679, |
| STORE, 47551509831680, 47551509848063, |
| STORE, 47551509835776, 47551509848063, |
| STORE, 47551509831680, 47551509835775, |
| ERASE, 47551509831680, 47551509831680, |
| STORE, 47551509831680, 47551509835775, |
| STORE, 47551509839872, 47551509848063, |
| STORE, 47551509835776, 47551509839871, |
| ERASE, 47551509835776, 47551509835776, |
| STORE, 47551509835776, 47551509848063, |
| ERASE, 47551509835776, 47551509835776, |
| STORE, 47551509835776, 47551509839871, |
| STORE, 47551509839872, 47551509848063, |
| ERASE, 47551509839872, 47551509839872, |
| STORE, 47551509839872, 47551509848063, |
| STORE, 47551509848064, 47551509856255, |
| ERASE, 47551509651456, 47551509651456, |
| STORE, 47551509651456, 47551509667839, |
| STORE, 47551509667840, 47551509676031, |
| ERASE, 47551509839872, 47551509839872, |
| STORE, 47551509839872, 47551509843967, |
| STORE, 47551509843968, 47551509848063, |
| ERASE, 47551509803008, 47551509803008, |
| STORE, 47551509803008, 47551509807103, |
| STORE, 47551509807104, 47551509811199, |
| ERASE, 47551507632128, 47551507632128, |
| STORE, 47551507632128, 47551507828735, |
| STORE, 47551507828736, 47551507836927, |
| ERASE, 47551504793600, 47551504793600, |
| STORE, 47551504793600, 47551504797695, |
| STORE, 47551504797696, 47551504801791, |
| ERASE, 94150123233280, 94150123233280, |
| STORE, 94150123233280, 94150123241471, |
| STORE, 94150123241472, 94150123245567, |
| ERASE, 140081290534912, 140081290534912, |
| STORE, 140081290534912, 140081290539007, |
| STORE, 140081290539008, 140081290543103, |
| ERASE, 47551504621568, 47551504621568, |
| STORE, 94150148112384, 94150148247551, |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140734389334016, 140737488351231, |
| ERASE, 140734389334016, 140734389334016, |
| STORE, 140734389334016, 140734389338111, |
| STORE, 94844636606464, 94844636778495, |
| ERASE, 94844636606464, 94844636606464, |
| STORE, 94844636606464, 94844636622847, |
| STORE, 94844636622848, 94844636778495, |
| ERASE, 94844636622848, 94844636622848, |
| STORE, 94844636622848, 94844636725247, |
| STORE, 94844636725248, 94844636766207, |
| STORE, 94844636766208, 94844636778495, |
| STORE, 139922765217792, 139922765389823, |
| ERASE, 139922765217792, 139922765217792, |
| STORE, 139922765217792, 139922765221887, |
| STORE, 139922765221888, 139922765389823, |
| ERASE, 139922765221888, 139922765221888, |
| STORE, 139922765221888, 139922765344767, |
| STORE, 139922765344768, 139922765377535, |
| STORE, 139922765377536, 139922765385727, |
| STORE, 139922765385728, 139922765389823, |
| STORE, 140734389678080, 140734389682175, |
| STORE, 140734389665792, 140734389678079, |
| STORE, 47710029778944, 47710029787135, |
| STORE, 47710029787136, 47710029795327, |
| STORE, 47710029795328, 47710029959167, |
| ERASE, 47710029795328, 47710029795328, |
| STORE, 47710029795328, 47710029807615, |
| STORE, 47710029807616, 47710029959167, |
| STORE, 47710029905920, 47710029959167, |
| STORE, 47710029807616, 47710029905919, |
| ERASE, 47710029807616, 47710029807616, |
| STORE, 47710029807616, 47710029905919, |
| STORE, 47710029950976, 47710029959167, |
| STORE, 47710029905920, 47710029950975, |
| ERASE, 47710029905920, 47710029905920, |
| STORE, 47710029905920, 47710029959167, |
| ERASE, 47710029905920, 47710029905920, |
| STORE, 47710029905920, 47710029950975, |
| STORE, 47710029950976, 47710029959167, |
| ERASE, 47710029950976, 47710029950976, |
| STORE, 47710029950976, 47710029959167, |
| STORE, 47710029959168, 47710033010687, |
| STORE, 47710030503936, 47710033010687, |
| STORE, 47710029959168, 47710030503935, |
| ERASE, 47710030503936, 47710030503936, |
| STORE, 47710030503936, 47710032789503, |
| STORE, 47710032789504, 47710033010687, |
| STORE, 47710032199680, 47710032789503, |
| STORE, 47710030503936, 47710032199679, |
| ERASE, 47710030503936, 47710030503936, |
| STORE, 47710030503936, 47710032199679, |
| STORE, 47710032785408, 47710032789503, |
| STORE, 47710032199680, 47710032785407, |
| ERASE, 47710032199680, 47710032199680, |
| STORE, 47710032199680, 47710032785407, |
| STORE, 47710032994304, 47710033010687, |
| STORE, 47710032789504, 47710032994303, |
| ERASE, 47710032789504, 47710032789504, |
| STORE, 47710032789504, 47710032994303, |
| ERASE, 47710032994304, 47710032994304, |
| STORE, 47710032994304, 47710033010687, |
| STORE, 47710033010688, 47710034849791, |
| STORE, 47710033149952, 47710034849791, |
| STORE, 47710033010688, 47710033149951, |
| ERASE, 47710033149952, 47710033149952, |
| STORE, 47710033149952, 47710034808831, |
| STORE, 47710034808832, 47710034849791, |
| STORE, 47710034493440, 47710034808831, |
| STORE, 47710033149952, 47710034493439, |
| ERASE, 47710033149952, 47710033149952, |
| STORE, 47710033149952, 47710034493439, |
| STORE, 47710034804736, 47710034808831, |
| STORE, 47710034493440, 47710034804735, |
| ERASE, 47710034493440, 47710034493440, |
| STORE, 47710034493440, 47710034804735, |
| STORE, 47710034833408, 47710034849791, |
| STORE, 47710034808832, 47710034833407, |
| ERASE, 47710034808832, 47710034808832, |
| STORE, 47710034808832, 47710034833407, |
| ERASE, 47710034833408, 47710034833408, |
| STORE, 47710034833408, 47710034849791, |
| STORE, 47710034849792, 47710034984959, |
| ERASE, 47710034849792, 47710034849792, |
| STORE, 47710034849792, 47710034874367, |
| STORE, 47710034874368, 47710034984959, |
| STORE, 47710034935808, 47710034984959, |
| STORE, 47710034874368, 47710034935807, |
| ERASE, 47710034874368, 47710034874368, |
| STORE, 47710034874368, 47710034935807, |
| STORE, 47710034960384, 47710034984959, |
| STORE, 47710034935808, 47710034960383, |
| ERASE, 47710034935808, 47710034935808, |
| STORE, 47710034935808, 47710034984959, |
| ERASE, 47710034935808, 47710034935808, |
| STORE, 47710034935808, 47710034960383, |
| STORE, 47710034960384, 47710034984959, |
| STORE, 47710034968576, 47710034984959, |
| STORE, 47710034960384, 47710034968575, |
| ERASE, 47710034960384, 47710034960384, |
| STORE, 47710034960384, 47710034968575, |
| ERASE, 47710034968576, 47710034968576, |
| STORE, 47710034968576, 47710034984959, |
| STORE, 47710034984960, 47710035005439, |
| ERASE, 47710034984960, 47710034984960, |
| STORE, 47710034984960, 47710034989055, |
| STORE, 47710034989056, 47710035005439, |
| STORE, 47710034993152, 47710035005439, |
| STORE, 47710034989056, 47710034993151, |
| ERASE, 47710034989056, 47710034989056, |
| STORE, 47710034989056, 47710034993151, |
| STORE, 47710034997248, 47710035005439, |
| STORE, 47710034993152, 47710034997247, |
| ERASE, 47710034993152, 47710034993152, |
| STORE, 47710034993152, 47710035005439, |
| ERASE, 47710034993152, 47710034993152, |
| STORE, 47710034993152, 47710034997247, |
| STORE, 47710034997248, 47710035005439, |
| ERASE, 47710034997248, 47710034997248, |
| STORE, 47710034997248, 47710035005439, |
| STORE, 47710035005440, 47710035013631, |
| ERASE, 47710034808832, 47710034808832, |
| STORE, 47710034808832, 47710034825215, |
| STORE, 47710034825216, 47710034833407, |
| ERASE, 47710034997248, 47710034997248, |
| STORE, 47710034997248, 47710035001343, |
| STORE, 47710035001344, 47710035005439, |
| ERASE, 47710034960384, 47710034960384, |
| STORE, 47710034960384, 47710034964479, |
| STORE, 47710034964480, 47710034968575, |
| ERASE, 47710032789504, 47710032789504, |
| STORE, 47710032789504, 47710032986111, |
| STORE, 47710032986112, 47710032994303, |
| ERASE, 47710029950976, 47710029950976, |
| STORE, 47710029950976, 47710029955071, |
| STORE, 47710029955072, 47710029959167, |
| ERASE, 94844636766208, 94844636766208, |
| STORE, 94844636766208, 94844636774399, |
| STORE, 94844636774400, 94844636778495, |
| ERASE, 139922765377536, 139922765377536, |
| STORE, 139922765377536, 139922765381631, |
| STORE, 139922765381632, 139922765385727, |
| ERASE, 47710029778944, 47710029778944, |
| STORE, 94844641775616, 94844641910783, |
| STORE, 140737488347136, 140737488351231, |
| STORE, 140732213886976, 140737488351231, |
| ERASE, 140732213886976, 140732213886976, |
| STORE, 140732213886976, 140732213891071, |
| STORE, 94240508887040, 94240509059071, |
| ERASE, 94240508887040, 94240508887040, |
| STORE, 94240508887040, 94240508903423, |
| STORE, 94240508903424, 94240509059071, |
| ERASE, 94240508903424, 94240508903424, |
| STORE, 94240508903424, 94240509005823, |
| STORE, 94240509005824, 94240509046783, |
| STORE, 94240509046784, 94240509059071, |
| STORE, 140275106516992, 140275106689023, |
| ERASE, 140275106516992, 140275106516992, |
| STORE, 140275106516992, 140275106521087, |
| STORE, 140275106521088, 140275106689023, |
| ERASE, 140275106521088, 140275106521088, |
| STORE, 140275106521088, 140275106643967, |
| STORE, 140275106643968, 140275106676735, |
| STORE, 140275106676736, 140275106684927, |
| STORE, 140275106684928, 140275106689023, |
| STORE, 140732213977088, 140732213981183, |
| STORE, 140732213964800, 140732213977087, |
| STORE, 47357688479744, 47357688487935, |
| STORE, 47357688487936, 47357688496127, |
| STORE, 47357688496128, 47357688659967, |
| ERASE, 47357688496128, 47357688496128, |
| STORE, 47357688496128, 47357688508415, |
| STORE, 47357688508416, 47357688659967, |
| STORE, 47357688606720, 47357688659967, |
| STORE, 47357688508416, 47357688606719, |
| ERASE, 47357688508416, 47357688508416, |
| STORE, 47357688508416, 47357688606719, |
| STORE, 47357688651776, 47357688659967, |
| STORE, 47357688606720, 47357688651775, |
| ERASE, 47357688606720, 47357688606720, |
| STORE, 47357688606720, 47357688659967, |
| ERASE, 47357688606720, 47357688606720, |
| STORE, 47357688606720, 47357688651775, |
| STORE, 47357688651776, 47357688659967, |
| ERASE, 47357688651776, 47357688651776, |
| STORE, 47357688651776, 47357688659967, |
| STORE, 47357688659968, 47357691711487, |
| STORE, 47357689204736, 47357691711487, |
| STORE, 47357688659968, 47357689204735, |
| ERASE, 47357689204736, 47357689204736, |
| STORE, 47357689204736, 47357691490303, |
| STORE, 47357691490304, 47357691711487, |
| STORE, 47357690900480, 47357691490303, |
| STORE, 47357689204736, 47357690900479, |
| ERASE, 47357689204736, 47357689204736, |
| STORE, 47357689204736, 47357690900479, |
| STORE, 47357691486208, 47357691490303, |
| STORE, 47357690900480, 47357691486207, |
| ERASE, 47357690900480, 47357690900480, |
| STORE, 47357690900480, 47357691486207, |
| STORE, 47357691695104, 47357691711487, |
| STORE, 47357691490304, 47357691695103, |
| ERASE, 47357691490304, 47357691490304, |
| STORE, 47357691490304, 47357691695103, |
| ERASE, 47357691695104, 47357691695104, |
| STORE, 47357691695104, 47357691711487, |
| STORE, 47357691711488, 47357693550591, |
| STORE, 47357691850752, 47357693550591, |
| STORE, 47357691711488, 47357691850751, |
| ERASE, 47357691850752, 47357691850752, |
| STORE, 47357691850752, 47357693509631, |
| STORE, 47357693509632, 47357693550591, |
| STORE, 47357693194240, 47357693509631, |
| STORE, 47357691850752, 47357693194239, |
| ERASE, 47357691850752, 47357691850752, |
| STORE, 47357691850752, 47357693194239, |
| STORE, 47357693505536, 47357693509631, |
| STORE, 47357693194240, 47357693505535, |
| ERASE, 47357693194240, 47357693194240, |
| STORE, 47357693194240, 47357693505535, |
| STORE, 47357693534208, 47357693550591, |
| STORE, 47357693509632, 47357693534207, |
| ERASE, 47357693509632, 47357693509632, |
| STORE, 47357693509632, 47357693534207, |
| ERASE, 47357693534208, 47357693534208, |
| STORE, 47357693534208, 47357693550591, |
| STORE, 47357693550592, 47357693685759, |
| ERASE, 47357693550592, 47357693550592, |
| STORE, 47357693550592, 47357693575167, |
| STORE, 47357693575168, 47357693685759, |
| STORE, 47357693636608, 47357693685759, |
| STORE, 47357693575168, 47357693636607, |
| ERASE, 47357693575168, 47357693575168, |
| STORE, 47357693575168, 47357693636607, |
| STORE, 47357693661184, 47357693685759, |
| STORE, 47357693636608, 47357693661183, |
| ERASE, 47357693636608, 47357693636608, |
| STORE, 47357693636608, 47357693685759, |
| ERASE, 47357693636608, 47357693636608, |
| STORE, 47357693636608, 47357693661183, |
| STORE, 47357693661184, 47357693685759, |
| STORE, 47357693669376, 47357693685759, |
| STORE, 47357693661184, 47357693669375, |
| ERASE, 47357693661184, 47357693661184, |
| STORE, 47357693661184, 47357693669375, |
| ERASE, 47357693669376, 47357693669376, |
| STORE, 47357693669376, 47357693685759, |
| STORE, 47357693685760, 47357693706239, |
| ERASE, 47357693685760, 47357693685760, |
| STORE, 47357693685760, 47357693689855, |
| STORE, 47357693689856, 47357693706239, |
| STORE, 47357693693952, 47357693706239, |
| STORE, 47357693689856, 47357693693951, |
| ERASE, 47357693689856, 47357693689856, |
| STORE, 47357693689856, 47357693693951, |
| STORE, 47357693698048, 47357693706239, |
| STORE, 47357693693952, 47357693698047, |
| ERASE, 47357693693952, 47357693693952, |
| STORE, 47357693693952, 47357693706239, |
| ERASE, 47357693693952, 47357693693952, |
| STORE, 47357693693952, 47357693698047, |
| STORE, 47357693698048, 47357693706239, |
| ERASE, 47357693698048, 47357693698048, |
| STORE, 47357693698048, 47357693706239, |
| STORE, 47357693706240, 47357693714431, |
| ERASE, 47357693509632, 47357693509632, |
| STORE, 47357693509632, 47357693526015, |
| STORE, 47357693526016, 47357693534207, |
| ERASE, 47357693698048, 47357693698048, |
| STORE, 47357693698048, 47357693702143, |
| STORE, 47357693702144, 47357693706239, |
| ERASE, 47357693661184, 47357693661184, |
| STORE, 47357693661184, 47357693665279, |
| STORE, 47357693665280, 47357693669375, |
| ERASE, 47357691490304, 47357691490304, |
| STORE, 47357691490304, 47357691686911, |
| STORE, 47357691686912, 47357691695103, |
| ERASE, 47357688651776, 47357688651776, |
| STORE, 47357688651776, 47357688655871, |
| STORE, 47357688655872, 47357688659967, |
| ERASE, 94240509046784, 94240509046784, |
| STORE, 94240509046784, 94240509054975, |
| STORE, 94240509054976, 94240509059071, |
| ERASE, 140275106676736, 140275106676736, |
| STORE, 140275106676736, 140275106680831, |
| STORE, 140275106680832, 140275106684927, |
| ERASE, 47357688479744,
|