Arena Memory
Arena blocks create a scoped memory region where all allocations are freed in bulk when the block exits. Faster than GC for hot paths - deterministic, zero overhead cleanup.
Integers, floats, and booleans live on the stack. Structs, strings, and arrays are heap-allocated. Arenas manage the heap side - when the block exits, all structs, strings, and arrays created inside are freed in one shot. Stack values are unaffected. |
|
Without arenas, a loop that allocates on every iteration relies on the GC to reclaim memory. Arenas are faster - bulk free on exit, no marking, no sweeping. |
|
Imagine handling 10,000 HTTP requests. Each one allocates a struct with strings. Without arenas, all of that stays in memory forever. With an arena, everything allocated inside the block is freed in bulk when the block exits. One fast free per iteration instead of tracking thousands of objects. |
|
This is the model for server memory in pyr: one arena per request. Handle the request, build the response, then free everything at once. |
|
Arenas can nest. Each level frees independently. |
|
$ pyr run arena.pyr /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users /users inner outer |