cn/r part 1 of 2.

This commit is contained in:
XMRig 2019-09-03 14:36:27 +07:00
parent 9b6ab55936
commit b9e15389ca
16 changed files with 1484 additions and 734 deletions

View file

@ -488,8 +488,7 @@ __kernel void cn1(__global ulong *input, __global uint4 *Scratchpad, __global ul
uint sqrt_result = as_uint2(states[13]).s0;
#pragma unroll CN_UNROLL
for(int i = 0; i < ITERATIONS; ++i)
{
for (int i = 0; i < ITERATIONS; ++i) {
# ifdef __NV_CL_C_VERSION
uint idx = a[0] & 0x1FFFC0;
uint idx1 = a[0] & 0x30;

File diff suppressed because it is too large Load diff

View file

@ -1,175 +1,144 @@
R"===(
__attribute__((reqd_work_group_size(WORKSIZE, 1, 1)))
__kernel void cn1_cryptonight_r_N(__global uint4 *Scratchpad, __global ulong *states, uint variant, __global ulong *input, uint Threads)
__kernel void KERNEL_NAME(__global ulong *input, __global uint4 *Scratchpad, __global ulong *states, uint Threads)
{
ulong a[2], b[4];
__local uint AES0[256], AES1[256], AES2[256], AES3[256];
ulong a[2], b[4];
__local uint AES0[256], AES1[256], AES2[256], AES3[256];
const ulong gIdx = get_global_id(0) - get_global_offset(0);
const ulong gIdx = get_global_id(0) - get_global_offset(0);
for(int i = get_local_id(0); i < 256; i += WORKSIZE)
{
const uint tmp = AES0_C[i];
AES0[i] = tmp;
AES1[i] = rotate(tmp, 8U);
AES2[i] = rotate(tmp, 16U);
AES3[i] = rotate(tmp, 24U);
}
for(int i = get_local_id(0); i < 256; i += WORKSIZE) {
const uint tmp = AES0_C[i];
AES0[i] = tmp;
AES1[i] = rotate(tmp, 8U);
AES2[i] = rotate(tmp, 16U);
AES3[i] = rotate(tmp, 24U);
}
barrier(CLK_LOCAL_MEM_FENCE);
barrier(CLK_LOCAL_MEM_FENCE);
# if (COMP_MODE == 1)
// do not use early return here
if (gIdx < Threads)
{
states += 25 * gIdx;
# if defined(__NV_CL_C_VERSION)
Scratchpad += gIdx * (ITERATIONS >> 2);
# else
# if (STRIDED_INDEX == 0)
Scratchpad += gIdx * (MEMORY >> 4);
# elif (STRIDED_INDEX == 1)
Scratchpad += gIdx;
# elif (STRIDED_INDEX == 2)
Scratchpad += get_group_id(0) * (MEMORY >> 4) * WORKSIZE + MEM_CHUNK * get_local_id(0);
# endif
# endif
a[0] = states[0] ^ states[4];
a[1] = states[1] ^ states[5];
b[0] = states[2] ^ states[6];
b[1] = states[3] ^ states[7];
b[2] = states[8] ^ states[10];
b[3] = states[9] ^ states[11];
}
ulong2 bx0 = ((ulong2 *)b)[0];
ulong2 bx1 = ((ulong2 *)b)[1];
mem_fence(CLK_LOCAL_MEM_FENCE);
# ifdef __NV_CL_C_VERSION
__local uint16 scratchpad_line_buf[WORKSIZE];
__local uint16* scratchpad_line = scratchpad_line_buf + get_local_id(0);
# endif
{
states += 25 * gIdx;
# if defined(__NV_CL_C_VERSION)
Scratchpad += gIdx * (ITERATIONS >> 2);
# else
# if (STRIDED_INDEX == 0)
Scratchpad += gIdx * (MEMORY >> 4);
# elif (STRIDED_INDEX == 1)
Scratchpad += gIdx;
# elif (STRIDED_INDEX == 2)
Scratchpad += get_group_id(0) * (MEMORY >> 4) * WORKSIZE + MEM_CHUNK * get_local_id(0);
# endif
# endif
{
uint r0 = as_uint2(states[12]).s0;
uint r1 = as_uint2(states[12]).s1;
uint r2 = as_uint2(states[13]).s0;
uint r3 = as_uint2(states[13]).s1;
a[0] = states[0] ^ states[4];
a[1] = states[1] ^ states[5];
#pragma unroll CN_UNROLL
for (int i = 0; i < ITERATIONS; ++i) {
# ifdef __NV_CL_C_VERSION
uint idx = a[0] & 0x1FFFC0;
uint idx1 = a[0] & 0x30;
b[0] = states[2] ^ states[6];
b[1] = states[3] ^ states[7];
b[2] = states[8] ^ states[10];
b[3] = states[9] ^ states[11];
}
*scratchpad_line = *(__global uint16*)((__global uchar*)(Scratchpad) + idx);
# else
uint idx = a[0] & MASK;
# endif
ulong2 bx0 = ((ulong2 *)b)[0];
ulong2 bx1 = ((ulong2 *)b)[1];
uint4 c = SCRATCHPAD_CHUNK(0);
c = AES_Round(AES0, AES1, AES2, AES3, c, ((uint4 *)a)[0]);
mem_fence(CLK_LOCAL_MEM_FENCE);
{
const ulong2 chunk1 = as_ulong2(SCRATCHPAD_CHUNK(1));
const ulong2 chunk2 = as_ulong2(SCRATCHPAD_CHUNK(2));
const ulong2 chunk3 = as_ulong2(SCRATCHPAD_CHUNK(3));
# ifdef __NV_CL_C_VERSION
__local uint16 scratchpad_line_buf[WORKSIZE];
__local uint16* scratchpad_line = scratchpad_line_buf + get_local_id(0);
# endif
c ^= as_uint4(chunk1) ^ as_uint4(chunk2) ^ as_uint4(chunk3);
# if (COMP_MODE == 1)
// do not use early return here
if (gIdx < Threads)
# endif
{
uint r0 = as_uint2(states[12]).s0;
uint r1 = as_uint2(states[12]).s1;
uint r2 = as_uint2(states[13]).s0;
uint r3 = as_uint2(states[13]).s1;
SCRATCHPAD_CHUNK(1) = as_uint4(chunk3 + bx1);
SCRATCHPAD_CHUNK(2) = as_uint4(chunk1 + bx0);
SCRATCHPAD_CHUNK(3) = as_uint4(chunk2 + ((ulong2 *)a)[0]);
}
#pragma unroll CN_UNROLL
for(int i = 0; i < ITERATIONS; ++i)
{
# ifdef __NV_CL_C_VERSION
uint idx = a[0] & 0x1FFFC0;
uint idx1 = a[0] & 0x30;
SCRATCHPAD_CHUNK(0) = as_uint4(bx0) ^ c;
*scratchpad_line = *(__global uint16*)((__global uchar*)(Scratchpad) + idx);
# else
uint idx = a[0] & MASK;
# endif
# ifdef __NV_CL_C_VERSION
*(__global uint16*)((__global uchar*)(Scratchpad) + idx) = *scratchpad_line;
uint4 c = SCRATCHPAD_CHUNK(0);
c = AES_Round(AES0, AES1, AES2, AES3, c, ((uint4 *)a)[0]);
idx = as_ulong2(c).s0 & 0x1FFFC0;
idx1 = as_ulong2(c).s0 & 0x30;
{
const ulong2 chunk1 = as_ulong2(SCRATCHPAD_CHUNK(1));
const ulong2 chunk2 = as_ulong2(SCRATCHPAD_CHUNK(2));
const ulong2 chunk3 = as_ulong2(SCRATCHPAD_CHUNK(3));
*scratchpad_line = *(__global uint16*)((__global uchar*)(Scratchpad) + idx);
# else
idx = as_ulong2(c).s0 & MASK;
# endif
#if (VARIANT == VARIANT_4)
c ^= as_uint4(chunk1) ^ as_uint4(chunk2) ^ as_uint4(chunk3);
#endif
uint4 tmp = SCRATCHPAD_CHUNK(0);
SCRATCHPAD_CHUNK(1) = as_uint4(chunk3 + bx1);
SCRATCHPAD_CHUNK(2) = as_uint4(chunk1 + bx0);
SCRATCHPAD_CHUNK(3) = as_uint4(chunk2 + ((ulong2 *)a)[0]);
}
tmp.s0 ^= r0 + r1;
tmp.s1 ^= r2 + r3;
const uint r4 = as_uint2(a[0]).s0;
const uint r5 = as_uint2(a[1]).s0;
const uint r6 = as_uint4(bx0).s0;
const uint r7 = as_uint4(bx1).s0;
const uint r8 = as_uint4(bx1).s2;
SCRATCHPAD_CHUNK(0) = as_uint4(bx0) ^ c;
XMRIG_INCLUDE_RANDOM_MATH
# ifdef __NV_CL_C_VERSION
*(__global uint16*)((__global uchar*)(Scratchpad) + idx) = *scratchpad_line;
const uint2 al = (uint2)(as_uint2(a[0]).s0 ^ r2, as_uint2(a[0]).s1 ^ r3);
const uint2 ah = (uint2)(as_uint2(a[1]).s0 ^ r0, as_uint2(a[1]).s1 ^ r1);
idx = as_ulong2(c).s0 & 0x1FFFC0;
idx1 = as_ulong2(c).s0 & 0x30;
ulong2 t;
t.s0 = mul_hi(as_ulong2(c).s0, as_ulong2(tmp).s0);
t.s1 = as_ulong2(c).s0 * as_ulong2(tmp).s0;
{
const ulong2 chunk1 = as_ulong2(SCRATCHPAD_CHUNK(1));
const ulong2 chunk2 = as_ulong2(SCRATCHPAD_CHUNK(2));
const ulong2 chunk3 = as_ulong2(SCRATCHPAD_CHUNK(3));
*scratchpad_line = *(__global uint16*)((__global uchar*)(Scratchpad) + idx);
# else
idx = as_ulong2(c).s0 & MASK;
# endif
c ^= as_uint4(chunk1) ^ as_uint4(chunk2) ^ as_uint4(chunk3);
uint4 tmp = SCRATCHPAD_CHUNK(0);
SCRATCHPAD_CHUNK(1) = as_uint4(chunk3 + bx1);
SCRATCHPAD_CHUNK(2) = as_uint4(chunk1 + bx0);
SCRATCHPAD_CHUNK(3) = as_uint4(chunk2 + ((ulong2 *)a)[0]);
}
tmp.s0 ^= r0 + r1;
tmp.s1 ^= r2 + r3;
const uint r4 = as_uint2(a[0]).s0;
const uint r5 = as_uint2(a[1]).s0;
const uint r6 = as_uint4(bx0).s0;
const uint r7 = as_uint4(bx1).s0;
#if (VARIANT == VARIANT_4)
const uint r8 = as_uint4(bx1).s2;
#endif
a[1] = as_ulong(ah) + t.s1;
a[0] = as_ulong(al) + t.s0;
XMRIG_INCLUDE_RANDOM_MATH
SCRATCHPAD_CHUNK(0) = ((uint4 *)a)[0];
#if (VARIANT == VARIANT_4)
const uint2 al = (uint2)(as_uint2(a[0]).s0 ^ r2, as_uint2(a[0]).s1 ^ r3);
const uint2 ah = (uint2)(as_uint2(a[1]).s0 ^ r0, as_uint2(a[1]).s1 ^ r1);
#endif
# ifdef __NV_CL_C_VERSION
*(__global uint16*)((__global uchar*)(Scratchpad) + idx) = *scratchpad_line;
# endif
ulong2 t;
t.s0 = mul_hi(as_ulong2(c).s0, as_ulong2(tmp).s0);
t.s1 = as_ulong2(c).s0 * as_ulong2(tmp).s0;
{
const ulong2 chunk1 = as_ulong2(SCRATCHPAD_CHUNK(1))
#if (VARIANT == VARIANT_WOW)
^ t
#endif
;
const ulong2 chunk2 = as_ulong2(SCRATCHPAD_CHUNK(2));
#if (VARIANT == VARIANT_WOW)
t ^= chunk2;
#endif
const ulong2 chunk3 = as_ulong2(SCRATCHPAD_CHUNK(3));
((uint4 *)a)[0] ^= tmp;
bx1 = bx0;
bx0 = as_ulong2(c);
}
}
#if (VARIANT == VARIANT_4)
c ^= as_uint4(chunk1) ^ as_uint4(chunk2) ^ as_uint4(chunk3);
#endif
SCRATCHPAD_CHUNK(1) = as_uint4(chunk3 + bx1);
SCRATCHPAD_CHUNK(2) = as_uint4(chunk1 + bx0);
SCRATCHPAD_CHUNK(3) = as_uint4(chunk2 + ((ulong2 *)a)[0]);
}
#if (VARIANT == VARIANT_4)
a[1] = as_ulong(ah) + t.s1;
a[0] = as_ulong(al) + t.s0;
#else
a[1] += t.s1;
a[0] += t.s0;
#endif
SCRATCHPAD_CHUNK(0) = ((uint4 *)a)[0];
# ifdef __NV_CL_C_VERSION
*(__global uint16*)((__global uchar*)(Scratchpad) + idx) = *scratchpad_line;
# endif
((uint4 *)a)[0] ^= tmp;
bx1 = bx0;
bx0 = as_ulong2(c);
}
}
mem_fence(CLK_GLOBAL_MEM_FENCE);
mem_fence(CLK_GLOBAL_MEM_FENCE);
}
)==="

View file

@ -0,0 +1,484 @@
#pragma once
namespace xmrig {
static char cryptonight_r_defines_cl[10253] = {
0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x5f,0x5f,0x4e,0x56,0x5f,0x43,0x4c,0x5f,0x43,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x0a,0x23,0x09,0x64,0x65,0x66,0x69,0x6e,
0x65,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x4e,0x29,0x20,0x28,0x2a,0x28,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,
0x20,0x75,0x69,0x6e,0x74,0x34,0x2a,0x29,0x28,0x28,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x63,0x68,0x61,0x72,0x2a,0x29,0x28,0x73,0x63,0x72,0x61,0x74,0x63,
0x68,0x70,0x61,0x64,0x5f,0x6c,0x69,0x6e,0x65,0x29,0x20,0x2b,0x20,0x28,0x69,0x64,0x78,0x31,0x20,0x5e,0x20,0x28,0x4e,0x20,0x3c,0x3c,0x20,0x34,0x29,0x29,0x29,0x29,
0x0a,0x23,0x65,0x6c,0x73,0x65,0x0a,0x23,0x09,0x69,0x66,0x20,0x28,0x53,0x54,0x52,0x49,0x44,0x45,0x44,0x5f,0x49,0x4e,0x44,0x45,0x58,0x20,0x3d,0x3d,0x20,0x30,0x29,
0x0a,0x23,0x09,0x09,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x4e,0x29,0x20,0x28,
0x2a,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x34,0x2a,0x29,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x63,0x68,
0x61,0x72,0x2a,0x29,0x28,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x29,0x20,0x2b,0x20,0x28,0x69,0x64,0x78,0x20,0x5e,0x20,0x28,0x4e,0x20,0x3c,0x3c,0x20,
0x34,0x29,0x29,0x29,0x29,0x0a,0x23,0x09,0x65,0x6c,0x69,0x66,0x20,0x28,0x53,0x54,0x52,0x49,0x44,0x45,0x44,0x5f,0x49,0x4e,0x44,0x45,0x58,0x20,0x3d,0x3d,0x20,0x31,
0x29,0x0a,0x23,0x09,0x09,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x4e,0x29,0x20,
0x28,0x2a,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x34,0x2a,0x29,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x63,
0x68,0x61,0x72,0x2a,0x29,0x28,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x29,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x61,0x73,0x5f,0x75,0x69,0x6e,
0x74,0x28,0x69,0x64,0x78,0x20,0x5e,0x20,0x28,0x4e,0x20,0x3c,0x3c,0x20,0x34,0x29,0x29,0x2c,0x20,0x54,0x68,0x72,0x65,0x61,0x64,0x73,0x29,0x29,0x29,0x0a,0x23,0x09,
0x65,0x6c,0x69,0x66,0x20,0x28,0x53,0x54,0x52,0x49,0x44,0x45,0x44,0x5f,0x49,0x4e,0x44,0x45,0x58,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x23,0x09,0x09,0x64,0x65,0x66,
0x69,0x6e,0x65,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x4e,0x29,0x20,0x28,0x2a,0x28,0x5f,0x5f,0x67,0x6c,0x6f,
0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x34,0x2a,0x29,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x63,0x68,0x61,0x72,0x2a,0x29,0x28,0x53,0x63,
0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x69,0x64,0x78,0x20,0x5e,0x20,0x28,0x4e,0x20,0x3c,0x3c,0x20,0x34,0x29,0x29,0x20,0x25,
0x20,0x28,0x4d,0x45,0x4d,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x20,0x3c,0x3c,0x20,0x34,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x69,0x64,0x78,0x20,0x5e,0x20,0x28,0x4e,0x20,
0x3c,0x3c,0x20,0x34,0x29,0x29,0x20,0x2f,0x20,0x28,0x4d,0x45,0x4d,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x20,0x3c,0x3c,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x57,0x4f,0x52,
0x4b,0x53,0x49,0x5a,0x45,0x20,0x2a,0x20,0x28,0x4d,0x45,0x4d,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x20,0x3c,0x3c,0x20,0x34,0x29,0x29,0x29,0x29,0x0a,0x23,0x09,0x65,0x6e,
0x64,0x69,0x66,0x0a,0x23,0x65,0x6e,0x64,0x69,0x66,0x0a,0x0a,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x52,0x4f,0x54,0x5f,0x42,0x49,0x54,0x53,0x20,0x33,0x32,0x0a,
0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x4d,0x45,0x4d,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x20,0x28,0x31,0x20,0x3c,0x3c,0x20,0x4d,0x45,0x4d,0x5f,0x43,0x48,0x55,0x4e,
0x4b,0x5f,0x45,0x58,0x50,0x4f,0x4e,0x45,0x4e,0x54,0x29,0x0a,0x0a,0x23,0x69,0x66,0x6e,0x64,0x65,0x66,0x20,0x57,0x4f,0x4c,0x46,0x5f,0x41,0x45,0x53,0x5f,0x43,0x4c,
0x0a,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x57,0x4f,0x4c,0x46,0x5f,0x41,0x45,0x53,0x5f,0x43,0x4c,0x0a,0x0a,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x63,0x6c,0x5f,
0x61,0x6d,0x64,0x5f,0x6d,0x65,0x64,0x69,0x61,0x5f,0x6f,0x70,0x73,0x32,0x0a,0x23,0x20,0x20,0x20,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,
0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x61,0x6d,0x64,0x5f,0x6d,0x65,0x64,0x69,0x61,0x5f,0x6f,0x70,0x73,0x32,0x20,0x3a,0x20,0x65,
0x6e,0x61,0x62,0x6c,0x65,0x0a,0x0a,0x23,0x20,0x20,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x78,0x6d,0x72,0x69,0x67,0x5f,0x61,0x6d,0x64,0x5f,0x62,0x66,0x65,0x28,
0x73,0x72,0x63,0x30,0x2c,0x20,0x73,0x72,0x63,0x31,0x2c,0x20,0x73,0x72,0x63,0x32,0x29,0x20,0x61,0x6d,0x64,0x5f,0x62,0x66,0x65,0x28,0x73,0x72,0x63,0x30,0x2c,0x20,
0x73,0x72,0x63,0x31,0x2c,0x20,0x73,0x72,0x63,0x32,0x29,0x0a,0x23,0x65,0x6c,0x73,0x65,0x0a,0x2f,0x2a,0x20,0x74,0x61,0x6b,0x65,0x6e,0x20,0x66,0x72,0x6f,0x6d,0x3a,
0x20,0x68,0x74,0x74,0x70,0x73,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x6b,0x68,0x72,0x6f,0x6e,0x6f,0x73,0x2e,0x6f,0x72,0x67,0x2f,0x72,0x65,0x67,0x69,0x73,0x74,0x72,
0x79,0x2f,0x4f,0x70,0x65,0x6e,0x43,0x4c,0x2f,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0x2f,0x61,0x6d,0x64,0x2f,0x63,0x6c,0x5f,0x61,0x6d,0x64,0x5f,0x6d,
0x65,0x64,0x69,0x61,0x5f,0x6f,0x70,0x73,0x32,0x2e,0x74,0x78,0x74,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x42,0x75,0x69,0x6c,0x74,0x2d,0x69,0x6e,0x20,0x46,0x75,
0x6e,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x6e,0x20,0x61,0x6d,0x64,0x5f,0x62,0x66,0x65,0x20,0x28,0x75,0x69,
0x6e,0x74,0x6e,0x20,0x73,0x72,0x63,0x30,0x2c,0x20,0x75,0x69,0x6e,0x74,0x6e,0x20,0x73,0x72,0x63,0x31,0x2c,0x20,0x75,0x69,0x6e,0x74,0x6e,0x20,0x73,0x72,0x63,0x32,
0x29,0x0a,0x20,0x2a,0x20,0x20,0x20,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x4e,0x4f,0x54,0x45,0x3a,0x20,
0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x3e,0x3e,0x20,0x62,0x65,0x6c,0x6f,0x77,0x20,0x72,0x65,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x20,0x6c,0x6f,0x67,0x69,
0x63,0x61,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x20,0x73,0x68,0x69,0x66,0x74,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,
0x73,0x72,0x63,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x33,0x31,0x3b,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x72,0x63,
0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x33,0x31,0x3b,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x30,0x0a,0x20,
0x2a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x2e,0x73,0x30,0x20,0x3d,0x20,0x30,0x3b,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,
0x65,0x20,0x69,0x66,0x20,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x20,0x33,0x32,0x0a,0x20,0x2a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x30,0x2e,0x73,0x30,0x20,0x3c,0x3c,0x20,0x28,0x33,0x32,0x20,0x2d,
0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2d,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x29,0x20,0x3e,0x3e,0x20,0x28,0x33,0x32,0x20,0x2d,0x20,0x77,0x69,0x64,0x74,0x68,
0x29,0x3b,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x2e,0x73,0x30,
0x20,0x3d,0x20,0x73,0x72,0x63,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0x0a,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x73,0x69,0x6d,
0x69,0x6c,0x61,0x72,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x20,0x61,0x70,0x70,0x6c,0x69,0x65,0x64,0x20,0x74,0x6f,0x20,0x6f,0x74,0x68,0x65,0x72,0x20,
0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x76,0x65,0x63,0x74,0x6f,0x72,0x73,0x0a,0x20,0x2a,0x2f,0x0a,0x69,0x6e,
0x6c,0x69,0x6e,0x65,0x20,0x69,0x6e,0x74,0x20,0x78,0x6d,0x72,0x69,0x67,0x5f,0x61,0x6d,0x64,0x5f,0x62,0x66,0x65,0x28,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,
0x74,0x20,0x73,0x72,0x63,0x30,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,
0x20,0x75,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x2f,0x2a,0x20,0x63,0x61,0x73,0x74,0x73,0x20,0x61,0x72,0x65,0x20,
0x72,0x65,0x6d,0x6f,0x76,0x65,0x64,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x77,0x65,0x20,0x63,0x61,0x6e,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
0x20,0x65,0x76,0x65,0x72,0x79,0x74,0x68,0x69,0x6e,0x67,0x20,0x61,0x73,0x20,0x75,0x69,0x6e,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x69,0x6e,0x74,0x20,0x6f,
0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,
0x20,0x73,0x72,0x63,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x20,0x63,0x68,0x65,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20,0x65,
0x64,0x67,0x65,0x20,0x63,0x61,0x73,0x65,0x2c,0x20,0x74,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x61,0x6c,0x77,0x61,0x79,
0x73,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x0a,0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x60,0x77,0x69,0x64,0x74,0x68,0x3d,0x3d,0x38,0x60,0x0a,
0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x40,0x63,0x6f,0x64,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x20,0x77,0x69,0x64,0x74,0x68,
0x20,0x3d,0x3d,0x20,0x30,0x20,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x30,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x2a,0x20,0x40,0x65,0x6e,0x64,0x63,0x6f,0x64,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x2a,0x2f,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x6f,
0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x20,0x33,0x32,0x75,0x29,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x73,0x72,0x63,0x30,0x20,0x3c,0x3c,0x20,0x28,0x33,0x32,0x75,0x20,0x2d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2d,0x20,
0x77,0x69,0x64,0x74,0x68,0x29,0x29,0x20,0x3e,0x3e,0x20,0x28,0x33,0x32,0x75,0x20,0x2d,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,
0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x72,0x63,0x30,0x20,0x3e,0x3e,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0x0a,0x7d,0x0a,0x23,0x65,
0x6e,0x64,0x69,0x66,0x0a,0x0a,0x0a,0x2f,0x2f,0x20,0x41,0x45,0x53,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x2d,0x20,0x74,0x68,0x65,0x20,0x6f,0x74,0x68,0x65,0x72,0x20,
0x74,0x68,0x72,0x65,0x65,0x20,0x61,0x72,0x65,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x66,0x6c,0x79,0x0a,0x0a,
0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x41,0x45,0x53,
0x30,0x5f,0x43,0x5b,0x32,0x35,0x36,0x5d,0x20,0x3d,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x41,0x35,0x36,0x33,0x36,0x33,0x43,0x36,0x55,0x2c,0x20,0x30,0x78,
0x38,0x34,0x37,0x43,0x37,0x43,0x46,0x38,0x55,0x2c,0x20,0x30,0x78,0x39,0x39,0x37,0x37,0x37,0x37,0x45,0x45,0x55,0x2c,0x20,0x30,0x78,0x38,0x44,0x37,0x42,0x37,0x42,
0x46,0x36,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x30,0x44,0x46,0x32,0x46,0x32,0x46,0x46,0x55,0x2c,0x20,0x30,0x78,0x42,0x44,0x36,0x42,0x36,0x42,0x44,0x36,
0x55,0x2c,0x20,0x30,0x78,0x42,0x31,0x36,0x46,0x36,0x46,0x44,0x45,0x55,0x2c,0x20,0x30,0x78,0x35,0x34,0x43,0x35,0x43,0x35,0x39,0x31,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x35,0x30,0x33,0x30,0x33,0x30,0x36,0x30,0x55,0x2c,0x20,0x30,0x78,0x30,0x33,0x30,0x31,0x30,0x31,0x30,0x32,0x55,0x2c,0x20,0x30,0x78,0x41,0x39,0x36,
0x37,0x36,0x37,0x43,0x45,0x55,0x2c,0x20,0x30,0x78,0x37,0x44,0x32,0x42,0x32,0x42,0x35,0x36,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x31,0x39,0x46,0x45,0x46,
0x45,0x45,0x37,0x55,0x2c,0x20,0x30,0x78,0x36,0x32,0x44,0x37,0x44,0x37,0x42,0x35,0x55,0x2c,0x20,0x30,0x78,0x45,0x36,0x41,0x42,0x41,0x42,0x34,0x44,0x55,0x2c,0x20,
0x30,0x78,0x39,0x41,0x37,0x36,0x37,0x36,0x45,0x43,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x34,0x35,0x43,0x41,0x43,0x41,0x38,0x46,0x55,0x2c,0x20,0x30,0x78,
0x39,0x44,0x38,0x32,0x38,0x32,0x31,0x46,0x55,0x2c,0x20,0x30,0x78,0x34,0x30,0x43,0x39,0x43,0x39,0x38,0x39,0x55,0x2c,0x20,0x30,0x78,0x38,0x37,0x37,0x44,0x37,0x44,
0x46,0x41,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x31,0x35,0x46,0x41,0x46,0x41,0x45,0x46,0x55,0x2c,0x20,0x30,0x78,0x45,0x42,0x35,0x39,0x35,0x39,0x42,0x32,
0x55,0x2c,0x20,0x30,0x78,0x43,0x39,0x34,0x37,0x34,0x37,0x38,0x45,0x55,0x2c,0x20,0x30,0x78,0x30,0x42,0x46,0x30,0x46,0x30,0x46,0x42,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x45,0x43,0x41,0x44,0x41,0x44,0x34,0x31,0x55,0x2c,0x20,0x30,0x78,0x36,0x37,0x44,0x34,0x44,0x34,0x42,0x33,0x55,0x2c,0x20,0x30,0x78,0x46,0x44,0x41,
0x32,0x41,0x32,0x35,0x46,0x55,0x2c,0x20,0x30,0x78,0x45,0x41,0x41,0x46,0x41,0x46,0x34,0x35,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x42,0x46,0x39,0x43,0x39,
0x43,0x32,0x33,0x55,0x2c,0x20,0x30,0x78,0x46,0x37,0x41,0x34,0x41,0x34,0x35,0x33,0x55,0x2c,0x20,0x30,0x78,0x39,0x36,0x37,0x32,0x37,0x32,0x45,0x34,0x55,0x2c,0x20,
0x30,0x78,0x35,0x42,0x43,0x30,0x43,0x30,0x39,0x42,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x43,0x32,0x42,0x37,0x42,0x37,0x37,0x35,0x55,0x2c,0x20,0x30,0x78,
0x31,0x43,0x46,0x44,0x46,0x44,0x45,0x31,0x55,0x2c,0x20,0x30,0x78,0x41,0x45,0x39,0x33,0x39,0x33,0x33,0x44,0x55,0x2c,0x20,0x30,0x78,0x36,0x41,0x32,0x36,0x32,0x36,
0x34,0x43,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x35,0x41,0x33,0x36,0x33,0x36,0x36,0x43,0x55,0x2c,0x20,0x30,0x78,0x34,0x31,0x33,0x46,0x33,0x46,0x37,0x45,
0x55,0x2c,0x20,0x30,0x78,0x30,0x32,0x46,0x37,0x46,0x37,0x46,0x35,0x55,0x2c,0x20,0x30,0x78,0x34,0x46,0x43,0x43,0x43,0x43,0x38,0x33,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x35,0x43,0x33,0x34,0x33,0x34,0x36,0x38,0x55,0x2c,0x20,0x30,0x78,0x46,0x34,0x41,0x35,0x41,0x35,0x35,0x31,0x55,0x2c,0x20,0x30,0x78,0x33,0x34,0x45,
0x35,0x45,0x35,0x44,0x31,0x55,0x2c,0x20,0x30,0x78,0x30,0x38,0x46,0x31,0x46,0x31,0x46,0x39,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x39,0x33,0x37,0x31,0x37,
0x31,0x45,0x32,0x55,0x2c,0x20,0x30,0x78,0x37,0x33,0x44,0x38,0x44,0x38,0x41,0x42,0x55,0x2c,0x20,0x30,0x78,0x35,0x33,0x33,0x31,0x33,0x31,0x36,0x32,0x55,0x2c,0x20,
0x30,0x78,0x33,0x46,0x31,0x35,0x31,0x35,0x32,0x41,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x30,0x43,0x30,0x34,0x30,0x34,0x30,0x38,0x55,0x2c,0x20,0x30,0x78,
0x35,0x32,0x43,0x37,0x43,0x37,0x39,0x35,0x55,0x2c,0x20,0x30,0x78,0x36,0x35,0x32,0x33,0x32,0x33,0x34,0x36,0x55,0x2c,0x20,0x30,0x78,0x35,0x45,0x43,0x33,0x43,0x33,
0x39,0x44,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x32,0x38,0x31,0x38,0x31,0x38,0x33,0x30,0x55,0x2c,0x20,0x30,0x78,0x41,0x31,0x39,0x36,0x39,0x36,0x33,0x37,
0x55,0x2c,0x20,0x30,0x78,0x30,0x46,0x30,0x35,0x30,0x35,0x30,0x41,0x55,0x2c,0x20,0x30,0x78,0x42,0x35,0x39,0x41,0x39,0x41,0x32,0x46,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x30,0x39,0x30,0x37,0x30,0x37,0x30,0x45,0x55,0x2c,0x20,0x30,0x78,0x33,0x36,0x31,0x32,0x31,0x32,0x32,0x34,0x55,0x2c,0x20,0x30,0x78,0x39,0x42,0x38,
0x30,0x38,0x30,0x31,0x42,0x55,0x2c,0x20,0x30,0x78,0x33,0x44,0x45,0x32,0x45,0x32,0x44,0x46,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x32,0x36,0x45,0x42,0x45,
0x42,0x43,0x44,0x55,0x2c,0x20,0x30,0x78,0x36,0x39,0x32,0x37,0x32,0x37,0x34,0x45,0x55,0x2c,0x20,0x30,0x78,0x43,0x44,0x42,0x32,0x42,0x32,0x37,0x46,0x55,0x2c,0x20,
0x30,0x78,0x39,0x46,0x37,0x35,0x37,0x35,0x45,0x41,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x31,0x42,0x30,0x39,0x30,0x39,0x31,0x32,0x55,0x2c,0x20,0x30,0x78,
0x39,0x45,0x38,0x33,0x38,0x33,0x31,0x44,0x55,0x2c,0x20,0x30,0x78,0x37,0x34,0x32,0x43,0x32,0x43,0x35,0x38,0x55,0x2c,0x20,0x30,0x78,0x32,0x45,0x31,0x41,0x31,0x41,
0x33,0x34,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x32,0x44,0x31,0x42,0x31,0x42,0x33,0x36,0x55,0x2c,0x20,0x30,0x78,0x42,0x32,0x36,0x45,0x36,0x45,0x44,0x43,
0x55,0x2c,0x20,0x30,0x78,0x45,0x45,0x35,0x41,0x35,0x41,0x42,0x34,0x55,0x2c,0x20,0x30,0x78,0x46,0x42,0x41,0x30,0x41,0x30,0x35,0x42,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x46,0x36,0x35,0x32,0x35,0x32,0x41,0x34,0x55,0x2c,0x20,0x30,0x78,0x34,0x44,0x33,0x42,0x33,0x42,0x37,0x36,0x55,0x2c,0x20,0x30,0x78,0x36,0x31,0x44,
0x36,0x44,0x36,0x42,0x37,0x55,0x2c,0x20,0x30,0x78,0x43,0x45,0x42,0x33,0x42,0x33,0x37,0x44,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x37,0x42,0x32,0x39,0x32,
0x39,0x35,0x32,0x55,0x2c,0x20,0x30,0x78,0x33,0x45,0x45,0x33,0x45,0x33,0x44,0x44,0x55,0x2c,0x20,0x30,0x78,0x37,0x31,0x32,0x46,0x32,0x46,0x35,0x45,0x55,0x2c,0x20,
0x30,0x78,0x39,0x37,0x38,0x34,0x38,0x34,0x31,0x33,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x46,0x35,0x35,0x33,0x35,0x33,0x41,0x36,0x55,0x2c,0x20,0x30,0x78,
0x36,0x38,0x44,0x31,0x44,0x31,0x42,0x39,0x55,0x2c,0x20,0x30,0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x55,0x2c,0x20,0x30,0x78,0x32,0x43,0x45,0x44,0x45,0x44,
0x43,0x31,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x36,0x30,0x32,0x30,0x32,0x30,0x34,0x30,0x55,0x2c,0x20,0x30,0x78,0x31,0x46,0x46,0x43,0x46,0x43,0x45,0x33,
0x55,0x2c,0x20,0x30,0x78,0x43,0x38,0x42,0x31,0x42,0x31,0x37,0x39,0x55,0x2c,0x20,0x30,0x78,0x45,0x44,0x35,0x42,0x35,0x42,0x42,0x36,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x42,0x45,0x36,0x41,0x36,0x41,0x44,0x34,0x55,0x2c,0x20,0x30,0x78,0x34,0x36,0x43,0x42,0x43,0x42,0x38,0x44,0x55,0x2c,0x20,0x30,0x78,0x44,0x39,0x42,
0x45,0x42,0x45,0x36,0x37,0x55,0x2c,0x20,0x30,0x78,0x34,0x42,0x33,0x39,0x33,0x39,0x37,0x32,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x44,0x45,0x34,0x41,0x34,
0x41,0x39,0x34,0x55,0x2c,0x20,0x30,0x78,0x44,0x34,0x34,0x43,0x34,0x43,0x39,0x38,0x55,0x2c,0x20,0x30,0x78,0x45,0x38,0x35,0x38,0x35,0x38,0x42,0x30,0x55,0x2c,0x20,
0x30,0x78,0x34,0x41,0x43,0x46,0x43,0x46,0x38,0x35,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x36,0x42,0x44,0x30,0x44,0x30,0x42,0x42,0x55,0x2c,0x20,0x30,0x78,
0x32,0x41,0x45,0x46,0x45,0x46,0x43,0x35,0x55,0x2c,0x20,0x30,0x78,0x45,0x35,0x41,0x41,0x41,0x41,0x34,0x46,0x55,0x2c,0x20,0x30,0x78,0x31,0x36,0x46,0x42,0x46,0x42,
0x45,0x44,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x43,0x35,0x34,0x33,0x34,0x33,0x38,0x36,0x55,0x2c,0x20,0x30,0x78,0x44,0x37,0x34,0x44,0x34,0x44,0x39,0x41,
0x55,0x2c,0x20,0x30,0x78,0x35,0x35,0x33,0x33,0x33,0x33,0x36,0x36,0x55,0x2c,0x20,0x30,0x78,0x39,0x34,0x38,0x35,0x38,0x35,0x31,0x31,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x43,0x46,0x34,0x35,0x34,0x35,0x38,0x41,0x55,0x2c,0x20,0x30,0x78,0x31,0x30,0x46,0x39,0x46,0x39,0x45,0x39,0x55,0x2c,0x20,0x30,0x78,0x30,0x36,0x30,
0x32,0x30,0x32,0x30,0x34,0x55,0x2c,0x20,0x30,0x78,0x38,0x31,0x37,0x46,0x37,0x46,0x46,0x45,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x46,0x30,0x35,0x30,0x35,
0x30,0x41,0x30,0x55,0x2c,0x20,0x30,0x78,0x34,0x34,0x33,0x43,0x33,0x43,0x37,0x38,0x55,0x2c,0x20,0x30,0x78,0x42,0x41,0x39,0x46,0x39,0x46,0x32,0x35,0x55,0x2c,0x20,
0x30,0x78,0x45,0x33,0x41,0x38,0x41,0x38,0x34,0x42,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x46,0x33,0x35,0x31,0x35,0x31,0x41,0x32,0x55,0x2c,0x20,0x30,0x78,
0x46,0x45,0x41,0x33,0x41,0x33,0x35,0x44,0x55,0x2c,0x20,0x30,0x78,0x43,0x30,0x34,0x30,0x34,0x30,0x38,0x30,0x55,0x2c,0x20,0x30,0x78,0x38,0x41,0x38,0x46,0x38,0x46,
0x30,0x35,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x41,0x44,0x39,0x32,0x39,0x32,0x33,0x46,0x55,0x2c,0x20,0x30,0x78,0x42,0x43,0x39,0x44,0x39,0x44,0x32,0x31,
0x55,0x2c,0x20,0x30,0x78,0x34,0x38,0x33,0x38,0x33,0x38,0x37,0x30,0x55,0x2c,0x20,0x30,0x78,0x30,0x34,0x46,0x35,0x46,0x35,0x46,0x31,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x44,0x46,0x42,0x43,0x42,0x43,0x36,0x33,0x55,0x2c,0x20,0x30,0x78,0x43,0x31,0x42,0x36,0x42,0x36,0x37,0x37,0x55,0x2c,0x20,0x30,0x78,0x37,0x35,0x44,
0x41,0x44,0x41,0x41,0x46,0x55,0x2c,0x20,0x30,0x78,0x36,0x33,0x32,0x31,0x32,0x31,0x34,0x32,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x33,0x30,0x31,0x30,0x31,
0x30,0x32,0x30,0x55,0x2c,0x20,0x30,0x78,0x31,0x41,0x46,0x46,0x46,0x46,0x45,0x35,0x55,0x2c,0x20,0x30,0x78,0x30,0x45,0x46,0x33,0x46,0x33,0x46,0x44,0x55,0x2c,0x20,
0x30,0x78,0x36,0x44,0x44,0x32,0x44,0x32,0x42,0x46,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x34,0x43,0x43,0x44,0x43,0x44,0x38,0x31,0x55,0x2c,0x20,0x30,0x78,
0x31,0x34,0x30,0x43,0x30,0x43,0x31,0x38,0x55,0x2c,0x20,0x30,0x78,0x33,0x35,0x31,0x33,0x31,0x33,0x32,0x36,0x55,0x2c,0x20,0x30,0x78,0x32,0x46,0x45,0x43,0x45,0x43,
0x43,0x33,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x45,0x31,0x35,0x46,0x35,0x46,0x42,0x45,0x55,0x2c,0x20,0x30,0x78,0x41,0x32,0x39,0x37,0x39,0x37,0x33,0x35,
0x55,0x2c,0x20,0x30,0x78,0x43,0x43,0x34,0x34,0x34,0x34,0x38,0x38,0x55,0x2c,0x20,0x30,0x78,0x33,0x39,0x31,0x37,0x31,0x37,0x32,0x45,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x35,0x37,0x43,0x34,0x43,0x34,0x39,0x33,0x55,0x2c,0x20,0x30,0x78,0x46,0x32,0x41,0x37,0x41,0x37,0x35,0x35,0x55,0x2c,0x20,0x30,0x78,0x38,0x32,0x37,
0x45,0x37,0x45,0x46,0x43,0x55,0x2c,0x20,0x30,0x78,0x34,0x37,0x33,0x44,0x33,0x44,0x37,0x41,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x41,0x43,0x36,0x34,0x36,
0x34,0x43,0x38,0x55,0x2c,0x20,0x30,0x78,0x45,0x37,0x35,0x44,0x35,0x44,0x42,0x41,0x55,0x2c,0x20,0x30,0x78,0x32,0x42,0x31,0x39,0x31,0x39,0x33,0x32,0x55,0x2c,0x20,
0x30,0x78,0x39,0x35,0x37,0x33,0x37,0x33,0x45,0x36,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x41,0x30,0x36,0x30,0x36,0x30,0x43,0x30,0x55,0x2c,0x20,0x30,0x78,
0x39,0x38,0x38,0x31,0x38,0x31,0x31,0x39,0x55,0x2c,0x20,0x30,0x78,0x44,0x31,0x34,0x46,0x34,0x46,0x39,0x45,0x55,0x2c,0x20,0x30,0x78,0x37,0x46,0x44,0x43,0x44,0x43,
0x41,0x33,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x36,0x36,0x32,0x32,0x32,0x32,0x34,0x34,0x55,0x2c,0x20,0x30,0x78,0x37,0x45,0x32,0x41,0x32,0x41,0x35,0x34,
0x55,0x2c,0x20,0x30,0x78,0x41,0x42,0x39,0x30,0x39,0x30,0x33,0x42,0x55,0x2c,0x20,0x30,0x78,0x38,0x33,0x38,0x38,0x38,0x38,0x30,0x42,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x43,0x41,0x34,0x36,0x34,0x36,0x38,0x43,0x55,0x2c,0x20,0x30,0x78,0x32,0x39,0x45,0x45,0x45,0x45,0x43,0x37,0x55,0x2c,0x20,0x30,0x78,0x44,0x33,0x42,
0x38,0x42,0x38,0x36,0x42,0x55,0x2c,0x20,0x30,0x78,0x33,0x43,0x31,0x34,0x31,0x34,0x32,0x38,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x37,0x39,0x44,0x45,0x44,
0x45,0x41,0x37,0x55,0x2c,0x20,0x30,0x78,0x45,0x32,0x35,0x45,0x35,0x45,0x42,0x43,0x55,0x2c,0x20,0x30,0x78,0x31,0x44,0x30,0x42,0x30,0x42,0x31,0x36,0x55,0x2c,0x20,
0x30,0x78,0x37,0x36,0x44,0x42,0x44,0x42,0x41,0x44,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x33,0x42,0x45,0x30,0x45,0x30,0x44,0x42,0x55,0x2c,0x20,0x30,0x78,
0x35,0x36,0x33,0x32,0x33,0x32,0x36,0x34,0x55,0x2c,0x20,0x30,0x78,0x34,0x45,0x33,0x41,0x33,0x41,0x37,0x34,0x55,0x2c,0x20,0x30,0x78,0x31,0x45,0x30,0x41,0x30,0x41,
0x31,0x34,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x44,0x42,0x34,0x39,0x34,0x39,0x39,0x32,0x55,0x2c,0x20,0x30,0x78,0x30,0x41,0x30,0x36,0x30,0x36,0x30,0x43,
0x55,0x2c,0x20,0x30,0x78,0x36,0x43,0x32,0x34,0x32,0x34,0x34,0x38,0x55,0x2c,0x20,0x30,0x78,0x45,0x34,0x35,0x43,0x35,0x43,0x42,0x38,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x35,0x44,0x43,0x32,0x43,0x32,0x39,0x46,0x55,0x2c,0x20,0x30,0x78,0x36,0x45,0x44,0x33,0x44,0x33,0x42,0x44,0x55,0x2c,0x20,0x30,0x78,0x45,0x46,0x41,
0x43,0x41,0x43,0x34,0x33,0x55,0x2c,0x20,0x30,0x78,0x41,0x36,0x36,0x32,0x36,0x32,0x43,0x34,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x41,0x38,0x39,0x31,0x39,
0x31,0x33,0x39,0x55,0x2c,0x20,0x30,0x78,0x41,0x34,0x39,0x35,0x39,0x35,0x33,0x31,0x55,0x2c,0x20,0x30,0x78,0x33,0x37,0x45,0x34,0x45,0x34,0x44,0x33,0x55,0x2c,0x20,
0x30,0x78,0x38,0x42,0x37,0x39,0x37,0x39,0x46,0x32,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x33,0x32,0x45,0x37,0x45,0x37,0x44,0x35,0x55,0x2c,0x20,0x30,0x78,
0x34,0x33,0x43,0x38,0x43,0x38,0x38,0x42,0x55,0x2c,0x20,0x30,0x78,0x35,0x39,0x33,0x37,0x33,0x37,0x36,0x45,0x55,0x2c,0x20,0x30,0x78,0x42,0x37,0x36,0x44,0x36,0x44,
0x44,0x41,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x38,0x43,0x38,0x44,0x38,0x44,0x30,0x31,0x55,0x2c,0x20,0x30,0x78,0x36,0x34,0x44,0x35,0x44,0x35,0x42,0x31,
0x55,0x2c,0x20,0x30,0x78,0x44,0x32,0x34,0x45,0x34,0x45,0x39,0x43,0x55,0x2c,0x20,0x30,0x78,0x45,0x30,0x41,0x39,0x41,0x39,0x34,0x39,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x42,0x34,0x36,0x43,0x36,0x43,0x44,0x38,0x55,0x2c,0x20,0x30,0x78,0x46,0x41,0x35,0x36,0x35,0x36,0x41,0x43,0x55,0x2c,0x20,0x30,0x78,0x30,0x37,0x46,
0x34,0x46,0x34,0x46,0x33,0x55,0x2c,0x20,0x30,0x78,0x32,0x35,0x45,0x41,0x45,0x41,0x43,0x46,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x41,0x46,0x36,0x35,0x36,
0x35,0x43,0x41,0x55,0x2c,0x20,0x30,0x78,0x38,0x45,0x37,0x41,0x37,0x41,0x46,0x34,0x55,0x2c,0x20,0x30,0x78,0x45,0x39,0x41,0x45,0x41,0x45,0x34,0x37,0x55,0x2c,0x20,
0x30,0x78,0x31,0x38,0x30,0x38,0x30,0x38,0x31,0x30,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x44,0x35,0x42,0x41,0x42,0x41,0x36,0x46,0x55,0x2c,0x20,0x30,0x78,
0x38,0x38,0x37,0x38,0x37,0x38,0x46,0x30,0x55,0x2c,0x20,0x30,0x78,0x36,0x46,0x32,0x35,0x32,0x35,0x34,0x41,0x55,0x2c,0x20,0x30,0x78,0x37,0x32,0x32,0x45,0x32,0x45,
0x35,0x43,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x32,0x34,0x31,0x43,0x31,0x43,0x33,0x38,0x55,0x2c,0x20,0x30,0x78,0x46,0x31,0x41,0x36,0x41,0x36,0x35,0x37,
0x55,0x2c,0x20,0x30,0x78,0x43,0x37,0x42,0x34,0x42,0x34,0x37,0x33,0x55,0x2c,0x20,0x30,0x78,0x35,0x31,0x43,0x36,0x43,0x36,0x39,0x37,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x32,0x33,0x45,0x38,0x45,0x38,0x43,0x42,0x55,0x2c,0x20,0x30,0x78,0x37,0x43,0x44,0x44,0x44,0x44,0x41,0x31,0x55,0x2c,0x20,0x30,0x78,0x39,0x43,0x37,
0x34,0x37,0x34,0x45,0x38,0x55,0x2c,0x20,0x30,0x78,0x32,0x31,0x31,0x46,0x31,0x46,0x33,0x45,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x44,0x44,0x34,0x42,0x34,
0x42,0x39,0x36,0x55,0x2c,0x20,0x30,0x78,0x44,0x43,0x42,0x44,0x42,0x44,0x36,0x31,0x55,0x2c,0x20,0x30,0x78,0x38,0x36,0x38,0x42,0x38,0x42,0x30,0x44,0x55,0x2c,0x20,
0x30,0x78,0x38,0x35,0x38,0x41,0x38,0x41,0x30,0x46,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x39,0x30,0x37,0x30,0x37,0x30,0x45,0x30,0x55,0x2c,0x20,0x30,0x78,
0x34,0x32,0x33,0x45,0x33,0x45,0x37,0x43,0x55,0x2c,0x20,0x30,0x78,0x43,0x34,0x42,0x35,0x42,0x35,0x37,0x31,0x55,0x2c,0x20,0x30,0x78,0x41,0x41,0x36,0x36,0x36,0x36,
0x43,0x43,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x44,0x38,0x34,0x38,0x34,0x38,0x39,0x30,0x55,0x2c,0x20,0x30,0x78,0x30,0x35,0x30,0x33,0x30,0x33,0x30,0x36,
0x55,0x2c,0x20,0x30,0x78,0x30,0x31,0x46,0x36,0x46,0x36,0x46,0x37,0x55,0x2c,0x20,0x30,0x78,0x31,0x32,0x30,0x45,0x30,0x45,0x31,0x43,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x41,0x33,0x36,0x31,0x36,0x31,0x43,0x32,0x55,0x2c,0x20,0x30,0x78,0x35,0x46,0x33,0x35,0x33,0x35,0x36,0x41,0x55,0x2c,0x20,0x30,0x78,0x46,0x39,0x35,
0x37,0x35,0x37,0x41,0x45,0x55,0x2c,0x20,0x30,0x78,0x44,0x30,0x42,0x39,0x42,0x39,0x36,0x39,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x39,0x31,0x38,0x36,0x38,
0x36,0x31,0x37,0x55,0x2c,0x20,0x30,0x78,0x35,0x38,0x43,0x31,0x43,0x31,0x39,0x39,0x55,0x2c,0x20,0x30,0x78,0x32,0x37,0x31,0x44,0x31,0x44,0x33,0x41,0x55,0x2c,0x20,
0x30,0x78,0x42,0x39,0x39,0x45,0x39,0x45,0x32,0x37,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x33,0x38,0x45,0x31,0x45,0x31,0x44,0x39,0x55,0x2c,0x20,0x30,0x78,
0x31,0x33,0x46,0x38,0x46,0x38,0x45,0x42,0x55,0x2c,0x20,0x30,0x78,0x42,0x33,0x39,0x38,0x39,0x38,0x32,0x42,0x55,0x2c,0x20,0x30,0x78,0x33,0x33,0x31,0x31,0x31,0x31,
0x32,0x32,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x42,0x42,0x36,0x39,0x36,0x39,0x44,0x32,0x55,0x2c,0x20,0x30,0x78,0x37,0x30,0x44,0x39,0x44,0x39,0x41,0x39,
0x55,0x2c,0x20,0x30,0x78,0x38,0x39,0x38,0x45,0x38,0x45,0x30,0x37,0x55,0x2c,0x20,0x30,0x78,0x41,0x37,0x39,0x34,0x39,0x34,0x33,0x33,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x42,0x36,0x39,0x42,0x39,0x42,0x32,0x44,0x55,0x2c,0x20,0x30,0x78,0x32,0x32,0x31,0x45,0x31,0x45,0x33,0x43,0x55,0x2c,0x20,0x30,0x78,0x39,0x32,0x38,
0x37,0x38,0x37,0x31,0x35,0x55,0x2c,0x20,0x30,0x78,0x32,0x30,0x45,0x39,0x45,0x39,0x43,0x39,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x34,0x39,0x43,0x45,0x43,
0x45,0x38,0x37,0x55,0x2c,0x20,0x30,0x78,0x46,0x46,0x35,0x35,0x35,0x35,0x41,0x41,0x55,0x2c,0x20,0x30,0x78,0x37,0x38,0x32,0x38,0x32,0x38,0x35,0x30,0x55,0x2c,0x20,
0x30,0x78,0x37,0x41,0x44,0x46,0x44,0x46,0x41,0x35,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x38,0x46,0x38,0x43,0x38,0x43,0x30,0x33,0x55,0x2c,0x20,0x30,0x78,
0x46,0x38,0x41,0x31,0x41,0x31,0x35,0x39,0x55,0x2c,0x20,0x30,0x78,0x38,0x30,0x38,0x39,0x38,0x39,0x30,0x39,0x55,0x2c,0x20,0x30,0x78,0x31,0x37,0x30,0x44,0x30,0x44,
0x31,0x41,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x44,0x41,0x42,0x46,0x42,0x46,0x36,0x35,0x55,0x2c,0x20,0x30,0x78,0x33,0x31,0x45,0x36,0x45,0x36,0x44,0x37,
0x55,0x2c,0x20,0x30,0x78,0x43,0x36,0x34,0x32,0x34,0x32,0x38,0x34,0x55,0x2c,0x20,0x30,0x78,0x42,0x38,0x36,0x38,0x36,0x38,0x44,0x30,0x55,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x43,0x33,0x34,0x31,0x34,0x31,0x38,0x32,0x55,0x2c,0x20,0x30,0x78,0x42,0x30,0x39,0x39,0x39,0x39,0x32,0x39,0x55,0x2c,0x20,0x30,0x78,0x37,0x37,0x32,
0x44,0x32,0x44,0x35,0x41,0x55,0x2c,0x20,0x30,0x78,0x31,0x31,0x30,0x46,0x30,0x46,0x31,0x45,0x55,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x43,0x42,0x42,0x30,0x42,
0x30,0x37,0x42,0x55,0x2c,0x20,0x30,0x78,0x46,0x43,0x35,0x34,0x35,0x34,0x41,0x38,0x55,0x2c,0x20,0x30,0x78,0x44,0x36,0x42,0x42,0x42,0x42,0x36,0x44,0x55,0x2c,0x20,
0x30,0x78,0x33,0x41,0x31,0x36,0x31,0x36,0x32,0x43,0x55,0x0a,0x7d,0x3b,0x0a,0x0a,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x42,0x59,0x54,0x45,0x28,0x78,0x2c,0x20,
0x79,0x29,0x20,0x28,0x78,0x6d,0x72,0x69,0x67,0x5f,0x61,0x6d,0x64,0x5f,0x62,0x66,0x65,0x28,0x28,0x78,0x29,0x2c,0x20,0x28,0x79,0x29,0x20,0x3c,0x3c,0x20,0x33,0x55,
0x2c,0x20,0x38,0x55,0x29,0x29,0x0a,0x0a,0x23,0x69,0x66,0x20,0x28,0x41,0x4c,0x47,0x4f,0x20,0x3d,0x3d,0x20,0x41,0x4c,0x47,0x4f,0x5f,0x43,0x4e,0x5f,0x48,0x45,0x41,
0x56,0x59,0x5f,0x54,0x55,0x42,0x45,0x29,0x0a,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x75,0x69,0x6e,0x74,0x34,0x20,0x41,0x45,0x53,0x5f,0x52,0x6f,0x75,0x6e,0x64,0x5f,
0x62,0x69,0x74,0x74,0x75,0x62,0x65,0x32,0x28,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x20,0x2a,0x41,0x45,0x53,
0x30,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x20,0x2a,0x41,0x45,0x53,0x31,0x2c,0x20,0x75,0x69,0x6e,
0x74,0x34,0x20,0x78,0x2c,0x20,0x75,0x69,0x6e,0x74,0x34,0x20,0x6b,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x78,0x20,0x3d,0x20,0x7e,0x78,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x6b,0x2e,0x73,0x30,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x30,0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,0x20,0x41,
0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x31,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,0x41,0x45,0x53,0x30,
0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x32,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x33,
0x2c,0x20,0x33,0x29,0x5d,0x2c,0x20,0x31,0x36,0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x78,0x2e,0x73,0x30,0x20,0x5e,0x3d,0x20,0x6b,0x2e,0x73,0x30,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x6b,0x2e,0x73,0x31,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x31,0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,
0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x32,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,0x41,0x45,
0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x33,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,
0x73,0x30,0x2c,0x20,0x33,0x29,0x5d,0x2c,0x20,0x31,0x36,0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x78,0x2e,0x73,0x31,0x20,0x5e,0x3d,0x20,0x6b,0x2e,0x73,0x31,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x6b,0x2e,0x73,0x32,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x32,0x2c,0x20,0x30,0x29,0x5d,
0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x33,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,
0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x30,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,
0x78,0x2e,0x73,0x31,0x2c,0x20,0x33,0x29,0x5d,0x2c,0x20,0x31,0x36,0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x78,0x2e,0x73,0x32,0x20,0x5e,0x3d,0x20,0x6b,0x2e,0x73,
0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x2e,0x73,0x33,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x33,0x2c,0x20,0x30,
0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x30,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x72,0x6f,0x74,0x61,0x74,
0x65,0x28,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x78,0x2e,0x73,0x31,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,
0x45,0x28,0x78,0x2e,0x73,0x32,0x2c,0x20,0x33,0x29,0x5d,0x2c,0x20,0x31,0x36,0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x3b,
0x0a,0x7d,0x0a,0x23,0x65,0x6e,0x64,0x69,0x66,0x0a,0x0a,0x75,0x69,0x6e,0x74,0x34,0x20,0x41,0x45,0x53,0x5f,0x52,0x6f,0x75,0x6e,0x64,0x28,0x63,0x6f,0x6e,0x73,0x74,
0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x20,0x2a,0x41,0x45,0x53,0x30,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x6c,0x6f,0x63,
0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x20,0x2a,0x41,0x45,0x53,0x31,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,
0x74,0x20,0x2a,0x41,0x45,0x53,0x32,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x20,0x2a,0x41,0x45,0x53,
0x33,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x34,0x20,0x58,0x2c,0x20,0x75,0x69,0x6e,0x74,0x34,0x20,0x6b,0x65,0x79,0x29,0x0a,0x7b,0x0a,0x20,
0x20,0x20,0x20,0x6b,0x65,0x79,0x2e,0x73,0x30,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x30,0x2c,0x20,0x30,0x29,0x5d,
0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x31,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x32,0x5b,0x42,0x59,
0x54,0x45,0x28,0x58,0x2e,0x73,0x32,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x33,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x33,0x2c,0x20,0x33,
0x29,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x2e,0x73,0x31,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x31,
0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x32,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,
0x53,0x32,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x33,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x33,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,
0x73,0x30,0x2c,0x20,0x33,0x29,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x2e,0x73,0x32,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,
0x28,0x58,0x2e,0x73,0x32,0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x33,0x2c,0x20,0x31,0x29,0x5d,
0x20,0x5e,0x20,0x41,0x45,0x53,0x32,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x30,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x33,0x5b,0x42,0x59,
0x54,0x45,0x28,0x58,0x2e,0x73,0x31,0x2c,0x20,0x33,0x29,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x2e,0x73,0x33,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,
0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x33,0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x30,
0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x32,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x31,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,
0x53,0x33,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x32,0x2c,0x20,0x33,0x29,0x5d,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,
0x65,0x79,0x3b,0x0a,0x7d,0x0a,0x0a,0x75,0x69,0x6e,0x74,0x34,0x20,0x41,0x45,0x53,0x5f,0x52,0x6f,0x75,0x6e,0x64,0x5f,0x54,0x77,0x6f,0x5f,0x54,0x61,0x62,0x6c,0x65,
0x73,0x28,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x20,0x2a,0x41,0x45,0x53,0x30,0x2c,0x20,0x63,0x6f,0x6e,0x73,
0x74,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x20,0x2a,0x41,0x45,0x53,0x31,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,
0x34,0x20,0x58,0x2c,0x20,0x75,0x69,0x6e,0x74,0x34,0x20,0x6b,0x65,0x79,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x2e,0x73,0x30,0x20,0x5e,0x3d,0x20,
0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x30,0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,
0x58,0x2e,0x73,0x31,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,
0x32,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x33,0x2c,0x20,0x33,0x29,0x5d,0x2c,0x20,0x31,0x36,
0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x2e,0x73,0x31,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x31,
0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x32,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x72,0x6f,
0x74,0x61,0x74,0x65,0x28,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x33,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,
0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x30,0x2c,0x20,0x33,0x29,0x5d,0x2c,0x20,0x31,0x36,0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x2e,0x73,0x32,
0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x32,0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,
0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x33,0x2c,0x20,0x31,0x29,0x5d,0x20,0x5e,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,
0x28,0x58,0x2e,0x73,0x30,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x31,0x2c,0x20,0x33,0x29,0x5d,
0x2c,0x20,0x31,0x36,0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x2e,0x73,0x33,0x20,0x5e,0x3d,0x20,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,
0x58,0x2e,0x73,0x33,0x2c,0x20,0x30,0x29,0x5d,0x20,0x5e,0x20,0x41,0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x30,0x2c,0x20,0x31,0x29,0x5d,0x20,
0x5e,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,0x41,0x45,0x53,0x30,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x31,0x2c,0x20,0x32,0x29,0x5d,0x20,0x5e,0x20,0x41,
0x45,0x53,0x31,0x5b,0x42,0x59,0x54,0x45,0x28,0x58,0x2e,0x73,0x32,0x2c,0x20,0x33,0x29,0x5d,0x2c,0x20,0x31,0x36,0x55,0x29,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x72,
0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x65,0x79,0x3b,0x0a,0x7d,0x0a,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x63,0x6f,
0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x72,0x63,0x6f,0x6e,0x5b,0x38,0x5d,0x20,0x3d,0x20,0x7b,0x20,0x30,0x78,0x38,0x64,0x2c,0x20,0x30,
0x78,0x30,0x31,0x2c,0x20,0x30,0x78,0x30,0x32,0x2c,0x20,0x30,0x78,0x30,0x34,0x2c,0x20,0x30,0x78,0x30,0x38,0x2c,0x20,0x30,0x78,0x31,0x30,0x2c,0x20,0x30,0x78,0x32,
0x30,0x2c,0x20,0x30,0x78,0x34,0x30,0x20,0x7d,0x3b,0x0a,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x5f,0x5f,0x63,0x6f,0x6e,0x73,
0x74,0x61,0x6e,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x73,0x62,0x6f,0x78,0x5b,0x32,0x35,0x36,0x5d,0x20,0x3d,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x36,
0x33,0x2c,0x20,0x30,0x78,0x37,0x43,0x2c,0x20,0x30,0x78,0x37,0x37,0x2c,0x20,0x30,0x78,0x37,0x42,0x2c,0x20,0x30,0x78,0x46,0x32,0x2c,0x20,0x30,0x78,0x36,0x42,0x2c,
0x20,0x30,0x78,0x36,0x46,0x2c,0x20,0x30,0x78,0x43,0x35,0x2c,0x20,0x30,0x78,0x33,0x30,0x2c,0x20,0x30,0x78,0x30,0x31,0x2c,0x20,0x30,0x78,0x36,0x37,0x2c,0x20,0x30,
0x78,0x32,0x42,0x2c,0x20,0x30,0x78,0x46,0x45,0x2c,0x20,0x30,0x78,0x44,0x37,0x2c,0x20,0x30,0x78,0x41,0x42,0x2c,0x20,0x30,0x78,0x37,0x36,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x43,0x41,0x2c,0x20,0x30,0x78,0x38,0x32,0x2c,0x20,0x30,0x78,0x43,0x39,0x2c,0x20,0x30,0x78,0x37,0x44,0x2c,0x20,0x30,0x78,0x46,0x41,0x2c,0x20,0x30,
0x78,0x35,0x39,0x2c,0x20,0x30,0x78,0x34,0x37,0x2c,0x20,0x30,0x78,0x46,0x30,0x2c,0x20,0x30,0x78,0x41,0x44,0x2c,0x20,0x30,0x78,0x44,0x34,0x2c,0x20,0x30,0x78,0x41,
0x32,0x2c,0x20,0x30,0x78,0x41,0x46,0x2c,0x20,0x30,0x78,0x39,0x43,0x2c,0x20,0x30,0x78,0x41,0x34,0x2c,0x20,0x30,0x78,0x37,0x32,0x2c,0x20,0x30,0x78,0x43,0x30,0x2c,
0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x42,0x37,0x2c,0x20,0x30,0x78,0x46,0x44,0x2c,0x20,0x30,0x78,0x39,0x33,0x2c,0x20,0x30,0x78,0x32,0x36,0x2c,0x20,0x30,0x78,0x33,
0x36,0x2c,0x20,0x30,0x78,0x33,0x46,0x2c,0x20,0x30,0x78,0x46,0x37,0x2c,0x20,0x30,0x78,0x43,0x43,0x2c,0x20,0x30,0x78,0x33,0x34,0x2c,0x20,0x30,0x78,0x41,0x35,0x2c,
0x20,0x30,0x78,0x45,0x35,0x2c,0x20,0x30,0x78,0x46,0x31,0x2c,0x20,0x30,0x78,0x37,0x31,0x2c,0x20,0x30,0x78,0x44,0x38,0x2c,0x20,0x30,0x78,0x33,0x31,0x2c,0x20,0x30,
0x78,0x31,0x35,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x30,0x34,0x2c,0x20,0x30,0x78,0x43,0x37,0x2c,0x20,0x30,0x78,0x32,0x33,0x2c,0x20,0x30,0x78,0x43,0x33,0x2c,
0x20,0x30,0x78,0x31,0x38,0x2c,0x20,0x30,0x78,0x39,0x36,0x2c,0x20,0x30,0x78,0x30,0x35,0x2c,0x20,0x30,0x78,0x39,0x41,0x2c,0x20,0x30,0x78,0x30,0x37,0x2c,0x20,0x30,
0x78,0x31,0x32,0x2c,0x20,0x30,0x78,0x38,0x30,0x2c,0x20,0x30,0x78,0x45,0x32,0x2c,0x20,0x30,0x78,0x45,0x42,0x2c,0x20,0x30,0x78,0x32,0x37,0x2c,0x20,0x30,0x78,0x42,
0x32,0x2c,0x20,0x30,0x78,0x37,0x35,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x30,0x39,0x2c,0x20,0x30,0x78,0x38,0x33,0x2c,0x20,0x30,0x78,0x32,0x43,0x2c,0x20,0x30,
0x78,0x31,0x41,0x2c,0x20,0x30,0x78,0x31,0x42,0x2c,0x20,0x30,0x78,0x36,0x45,0x2c,0x20,0x30,0x78,0x35,0x41,0x2c,0x20,0x30,0x78,0x41,0x30,0x2c,0x20,0x30,0x78,0x35,
0x32,0x2c,0x20,0x30,0x78,0x33,0x42,0x2c,0x20,0x30,0x78,0x44,0x36,0x2c,0x20,0x30,0x78,0x42,0x33,0x2c,0x20,0x30,0x78,0x32,0x39,0x2c,0x20,0x30,0x78,0x45,0x33,0x2c,
0x20,0x30,0x78,0x32,0x46,0x2c,0x20,0x30,0x78,0x38,0x34,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x35,0x33,0x2c,0x20,0x30,0x78,0x44,0x31,0x2c,0x20,0x30,0x78,0x30,
0x30,0x2c,0x20,0x30,0x78,0x45,0x44,0x2c,0x20,0x30,0x78,0x32,0x30,0x2c,0x20,0x30,0x78,0x46,0x43,0x2c,0x20,0x30,0x78,0x42,0x31,0x2c,0x20,0x30,0x78,0x35,0x42,0x2c,
0x20,0x30,0x78,0x36,0x41,0x2c,0x20,0x30,0x78,0x43,0x42,0x2c,0x20,0x30,0x78,0x42,0x45,0x2c,0x20,0x30,0x78,0x33,0x39,0x2c,0x20,0x30,0x78,0x34,0x41,0x2c,0x20,0x30,
0x78,0x34,0x43,0x2c,0x20,0x30,0x78,0x35,0x38,0x2c,0x20,0x30,0x78,0x43,0x46,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x44,0x30,0x2c,0x20,0x30,0x78,0x45,0x46,0x2c,
0x20,0x30,0x78,0x41,0x41,0x2c,0x20,0x30,0x78,0x46,0x42,0x2c,0x20,0x30,0x78,0x34,0x33,0x2c,0x20,0x30,0x78,0x34,0x44,0x2c,0x20,0x30,0x78,0x33,0x33,0x2c,0x20,0x30,
0x78,0x38,0x35,0x2c,0x20,0x30,0x78,0x34,0x35,0x2c,0x20,0x30,0x78,0x46,0x39,0x2c,0x20,0x30,0x78,0x30,0x32,0x2c,0x20,0x30,0x78,0x37,0x46,0x2c,0x20,0x30,0x78,0x35,
0x30,0x2c,0x20,0x30,0x78,0x33,0x43,0x2c,0x20,0x30,0x78,0x39,0x46,0x2c,0x20,0x30,0x78,0x41,0x38,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x35,0x31,0x2c,0x20,0x30,
0x78,0x41,0x33,0x2c,0x20,0x30,0x78,0x34,0x30,0x2c,0x20,0x30,0x78,0x38,0x46,0x2c,0x20,0x30,0x78,0x39,0x32,0x2c,0x20,0x30,0x78,0x39,0x44,0x2c,0x20,0x30,0x78,0x33,
0x38,0x2c,0x20,0x30,0x78,0x46,0x35,0x2c,0x20,0x30,0x78,0x42,0x43,0x2c,0x20,0x30,0x78,0x42,0x36,0x2c,0x20,0x30,0x78,0x44,0x41,0x2c,0x20,0x30,0x78,0x32,0x31,0x2c,
0x20,0x30,0x78,0x31,0x30,0x2c,0x20,0x30,0x78,0x46,0x46,0x2c,0x20,0x30,0x78,0x46,0x33,0x2c,0x20,0x30,0x78,0x44,0x32,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x43,
0x44,0x2c,0x20,0x30,0x78,0x30,0x43,0x2c,0x20,0x30,0x78,0x31,0x33,0x2c,0x20,0x30,0x78,0x45,0x43,0x2c,0x20,0x30,0x78,0x35,0x46,0x2c,0x20,0x30,0x78,0x39,0x37,0x2c,
0x20,0x30,0x78,0x34,0x34,0x2c,0x20,0x30,0x78,0x31,0x37,0x2c,0x20,0x30,0x78,0x43,0x34,0x2c,0x20,0x30,0x78,0x41,0x37,0x2c,0x20,0x30,0x78,0x37,0x45,0x2c,0x20,0x30,
0x78,0x33,0x44,0x2c,0x20,0x30,0x78,0x36,0x34,0x2c,0x20,0x30,0x78,0x35,0x44,0x2c,0x20,0x30,0x78,0x31,0x39,0x2c,0x20,0x30,0x78,0x37,0x33,0x2c,0x0a,0x20,0x20,0x20,
0x20,0x30,0x78,0x36,0x30,0x2c,0x20,0x30,0x78,0x38,0x31,0x2c,0x20,0x30,0x78,0x34,0x46,0x2c,0x20,0x30,0x78,0x44,0x43,0x2c,0x20,0x30,0x78,0x32,0x32,0x2c,0x20,0x30,
0x78,0x32,0x41,0x2c,0x20,0x30,0x78,0x39,0x30,0x2c,0x20,0x30,0x78,0x38,0x38,0x2c,0x20,0x30,0x78,0x34,0x36,0x2c,0x20,0x30,0x78,0x45,0x45,0x2c,0x20,0x30,0x78,0x42,
0x38,0x2c,0x20,0x30,0x78,0x31,0x34,0x2c,0x20,0x30,0x78,0x44,0x45,0x2c,0x20,0x30,0x78,0x35,0x45,0x2c,0x20,0x30,0x78,0x30,0x42,0x2c,0x20,0x30,0x78,0x44,0x42,0x2c,
0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x45,0x30,0x2c,0x20,0x30,0x78,0x33,0x32,0x2c,0x20,0x30,0x78,0x33,0x41,0x2c,0x20,0x30,0x78,0x30,0x41,0x2c,0x20,0x30,0x78,0x34,
0x39,0x2c,0x20,0x30,0x78,0x30,0x36,0x2c,0x20,0x30,0x78,0x32,0x34,0x2c,0x20,0x30,0x78,0x35,0x43,0x2c,0x20,0x30,0x78,0x43,0x32,0x2c,0x20,0x30,0x78,0x44,0x33,0x2c,
0x20,0x30,0x78,0x41,0x43,0x2c,0x20,0x30,0x78,0x36,0x32,0x2c,0x20,0x30,0x78,0x39,0x31,0x2c,0x20,0x30,0x78,0x39,0x35,0x2c,0x20,0x30,0x78,0x45,0x34,0x2c,0x20,0x30,
0x78,0x37,0x39,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x45,0x37,0x2c,0x20,0x30,0x78,0x43,0x38,0x2c,0x20,0x30,0x78,0x33,0x37,0x2c,0x20,0x30,0x78,0x36,0x44,0x2c,
0x20,0x30,0x78,0x38,0x44,0x2c,0x20,0x30,0x78,0x44,0x35,0x2c,0x20,0x30,0x78,0x34,0x45,0x2c,0x20,0x30,0x78,0x41,0x39,0x2c,0x20,0x30,0x78,0x36,0x43,0x2c,0x20,0x30,
0x78,0x35,0x36,0x2c,0x20,0x30,0x78,0x46,0x34,0x2c,0x20,0x30,0x78,0x45,0x41,0x2c,0x20,0x30,0x78,0x36,0x35,0x2c,0x20,0x30,0x78,0x37,0x41,0x2c,0x20,0x30,0x78,0x41,
0x45,0x2c,0x20,0x30,0x78,0x30,0x38,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x42,0x41,0x2c,0x20,0x30,0x78,0x37,0x38,0x2c,0x20,0x30,0x78,0x32,0x35,0x2c,0x20,0x30,
0x78,0x32,0x45,0x2c,0x20,0x30,0x78,0x31,0x43,0x2c,0x20,0x30,0x78,0x41,0x36,0x2c,0x20,0x30,0x78,0x42,0x34,0x2c,0x20,0x30,0x78,0x43,0x36,0x2c,0x20,0x30,0x78,0x45,
0x38,0x2c,0x20,0x30,0x78,0x44,0x44,0x2c,0x20,0x30,0x78,0x37,0x34,0x2c,0x20,0x30,0x78,0x31,0x46,0x2c,0x20,0x30,0x78,0x34,0x42,0x2c,0x20,0x30,0x78,0x42,0x44,0x2c,
0x20,0x30,0x78,0x38,0x42,0x2c,0x20,0x30,0x78,0x38,0x41,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x37,0x30,0x2c,0x20,0x30,0x78,0x33,0x45,0x2c,0x20,0x30,0x78,0x42,
0x35,0x2c,0x20,0x30,0x78,0x36,0x36,0x2c,0x20,0x30,0x78,0x34,0x38,0x2c,0x20,0x30,0x78,0x30,0x33,0x2c,0x20,0x30,0x78,0x46,0x36,0x2c,0x20,0x30,0x78,0x30,0x45,0x2c,
0x20,0x30,0x78,0x36,0x31,0x2c,0x20,0x30,0x78,0x33,0x35,0x2c,0x20,0x30,0x78,0x35,0x37,0x2c,0x20,0x30,0x78,0x42,0x39,0x2c,0x20,0x30,0x78,0x38,0x36,0x2c,0x20,0x30,
0x78,0x43,0x31,0x2c,0x20,0x30,0x78,0x31,0x44,0x2c,0x20,0x30,0x78,0x39,0x45,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x45,0x31,0x2c,0x20,0x30,0x78,0x46,0x38,0x2c,
0x20,0x30,0x78,0x39,0x38,0x2c,0x20,0x30,0x78,0x31,0x31,0x2c,0x20,0x30,0x78,0x36,0x39,0x2c,0x20,0x30,0x78,0x44,0x39,0x2c,0x20,0x30,0x78,0x38,0x45,0x2c,0x20,0x30,
0x78,0x39,0x34,0x2c,0x20,0x30,0x78,0x39,0x42,0x2c,0x20,0x30,0x78,0x31,0x45,0x2c,0x20,0x30,0x78,0x38,0x37,0x2c,0x20,0x30,0x78,0x45,0x39,0x2c,0x20,0x30,0x78,0x43,
0x45,0x2c,0x20,0x30,0x78,0x35,0x35,0x2c,0x20,0x30,0x78,0x32,0x38,0x2c,0x20,0x30,0x78,0x44,0x46,0x2c,0x0a,0x20,0x20,0x20,0x20,0x30,0x78,0x38,0x43,0x2c,0x20,0x30,
0x78,0x41,0x31,0x2c,0x20,0x30,0x78,0x38,0x39,0x2c,0x20,0x30,0x78,0x30,0x44,0x2c,0x20,0x30,0x78,0x42,0x46,0x2c,0x20,0x30,0x78,0x45,0x36,0x2c,0x20,0x30,0x78,0x34,
0x32,0x2c,0x20,0x30,0x78,0x36,0x38,0x2c,0x20,0x30,0x78,0x34,0x31,0x2c,0x20,0x30,0x78,0x39,0x39,0x2c,0x20,0x30,0x78,0x32,0x44,0x2c,0x20,0x30,0x78,0x30,0x46,0x2c,
0x20,0x30,0x78,0x42,0x30,0x2c,0x20,0x30,0x78,0x35,0x34,0x2c,0x20,0x30,0x78,0x42,0x42,0x2c,0x20,0x30,0x78,0x31,0x36,0x0a,0x7d,0x3b,0x0a,0x0a,0x0a,0x23,0x64,0x65,
0x66,0x69,0x6e,0x65,0x20,0x53,0x75,0x62,0x57,0x6f,0x72,0x64,0x28,0x69,0x6e,0x77,0x29,0x20,0x28,0x28,0x73,0x62,0x6f,0x78,0x5b,0x42,0x59,0x54,0x45,0x28,0x69,0x6e,
0x77,0x2c,0x20,0x33,0x29,0x5d,0x20,0x3c,0x3c,0x20,0x32,0x34,0x29,0x20,0x7c,0x20,0x28,0x73,0x62,0x6f,0x78,0x5b,0x42,0x59,0x54,0x45,0x28,0x69,0x6e,0x77,0x2c,0x20,
0x32,0x29,0x5d,0x20,0x3c,0x3c,0x20,0x31,0x36,0x29,0x20,0x7c,0x20,0x28,0x73,0x62,0x6f,0x78,0x5b,0x42,0x59,0x54,0x45,0x28,0x69,0x6e,0x77,0x2c,0x20,0x31,0x29,0x5d,
0x20,0x3c,0x3c,0x20,0x38,0x29,0x20,0x7c,0x20,0x73,0x62,0x6f,0x78,0x5b,0x42,0x59,0x54,0x45,0x28,0x69,0x6e,0x77,0x2c,0x20,0x30,0x29,0x5d,0x29,0x0a,0x0a,0x0a,0x76,
0x6f,0x69,0x64,0x20,0x41,0x45,0x53,0x45,0x78,0x70,0x61,0x6e,0x64,0x4b,0x65,0x79,0x32,0x35,0x36,0x28,0x75,0x69,0x6e,0x74,0x20,0x2a,0x6b,0x65,0x79,0x62,0x75,0x66,
0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x2f,0x2f,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x75,0x6e,0x72,0x6f,0x6c,0x6c,0x20,0x34,0x0a,0x20,0x20,0x20,0x20,0x66,
0x6f,0x72,0x20,0x28,0x75,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x38,0x2c,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x63,0x20,0x3c,0x20,0x34,0x30,0x3b,0x20,0x2b,
0x2b,0x63,0x29,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x46,0x6f,0x72,0x20,0x32,0x35,0x36,0x2d,0x62,0x69,0x74,0x20,0x6b,0x65,0x79,
0x73,0x2c,0x20,0x61,0x6e,0x20,0x73,0x62,0x6f,0x78,0x20,0x70,0x65,0x72,0x6d,0x75,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x64,0x6f,0x6e,0x65,0x20,0x65,
0x76,0x65,0x72,0x79,0x20,0x6f,0x74,0x68,0x65,0x72,0x20,0x34,0x74,0x68,0x20,0x75,0x69,0x6e,0x74,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x2c,0x20,0x41,
0x4e,0x44,0x20,0x65,0x76,0x65,0x72,0x79,0x20,0x38,0x74,0x68,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x74,0x20,0x3d,0x20,0x28,0x28,
0x21,0x28,0x63,0x20,0x26,0x20,0x37,0x29,0x29,0x20,0x7c,0x7c,0x20,0x28,0x28,0x63,0x20,0x26,0x20,0x37,0x29,0x20,0x3d,0x3d,0x20,0x34,0x29,0x29,0x20,0x3f,0x20,0x53,
0x75,0x62,0x57,0x6f,0x72,0x64,0x28,0x6b,0x65,0x79,0x62,0x75,0x66,0x5b,0x63,0x20,0x2d,0x20,0x31,0x5d,0x29,0x20,0x3a,0x20,0x6b,0x65,0x79,0x62,0x75,0x66,0x5b,0x63,
0x20,0x2d,0x20,0x31,0x5d,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x69,0x6e,0x74,0x20,0x77,
0x65,0x27,0x72,0x65,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x69,0x6e,0x67,0x20,0x68,0x61,0x73,0x20,0x61,0x6e,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x74,0x68,0x61,
0x74,0x20,0x69,0x73,0x20,0x61,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x20,0x6f,0x66,0x20,0x38,0x2c,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x20,0x61,0x6e,0x64,
0x20,0x58,0x4f,0x52,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x75,0x6e,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x2c,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x74,0x68,0x65,0x6e,0x20,0x58,0x4f,0x52,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x74,0x68,0x20,0x70,0x72,0x65,0x76,
0x69,0x6f,0x75,0x73,0x6c,0x79,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x20,0x75,0x69,0x6e,0x74,0x2e,0x20,0x49,0x66,0x20,0x69,0x74,0x27,0x73,0x20,0x34,
0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x61,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x20,0x6f,0x66,0x20,0x38,0x2c,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x74,0x68,0x65,
0x20,0x73,0x62,0x6f,0x78,0x20,0x70,0x65,0x72,0x6d,0x75,0x74,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x69,0x73,0x20,
0x64,0x6f,0x6e,0x65,0x2c,0x20,0x66,0x6f,0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20,0x62,0x79,0x20,0x74,0x68,0x65,0x20,0x58,0x4f,0x52,0x2e,0x20,0x49,0x66,0x20,0x6e,0x65,
0x69,0x74,0x68,0x65,0x72,0x20,0x61,0x72,0x65,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x74,0x68,0x65,0x20,0x58,0x4f,0x52,0x20,0x77,0x69,0x74,
0x68,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x6c,0x79,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x20,0x75,0x69,0x6e,0x74,0x20,
0x69,0x73,0x20,0x64,0x6f,0x6e,0x65,0x2e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x62,0x75,0x66,0x5b,0x63,0x5d,0x20,0x3d,0x20,0x6b,0x65,0x79,
0x62,0x75,0x66,0x5b,0x63,0x20,0x2d,0x20,0x38,0x5d,0x20,0x5e,0x20,0x28,0x28,0x21,0x28,0x63,0x20,0x26,0x20,0x37,0x29,0x29,0x20,0x3f,0x20,0x72,0x6f,0x74,0x61,0x74,
0x65,0x28,0x74,0x2c,0x20,0x32,0x34,0x55,0x29,0x20,0x5e,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x28,0x28,0x75,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x72,0x63,0x6f,
0x6e,0x5b,0x69,0x2b,0x2b,0x5d,0x2c,0x20,0x30,0x55,0x2c,0x20,0x30,0x55,0x2c,0x20,0x30,0x55,0x29,0x29,0x20,0x3a,0x20,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,
0x0a,0x7d,0x0a,0x0a,0x23,0x65,0x6e,0x64,0x69,0x66,0x0a,0x0a,0x00
};
static char cryptonight_r_cl[4842] = {
0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x72,0x65,0x71,0x64,0x5f,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,
0x69,0x7a,0x65,0x28,0x57,0x4f,0x52,0x4b,0x53,0x49,0x5a,0x45,0x2c,0x20,0x31,0x2c,0x20,0x31,0x29,0x29,0x29,0x0a,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,
0x6f,0x69,0x64,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x4e,0x41,0x4d,0x45,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x20,0x2a,
0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x34,0x20,0x2a,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,
0x64,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x20,0x2a,0x73,0x74,0x61,0x74,0x65,0x73,0x2c,0x20,0x75,0x69,0x6e,0x74,0x20,
0x54,0x68,0x72,0x65,0x61,0x64,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x20,0x61,0x5b,0x32,0x5d,0x2c,0x20,0x62,0x5b,0x34,0x5d,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x20,0x41,0x45,0x53,0x30,0x5b,0x32,0x35,0x36,0x5d,0x2c,0x20,0x41,0x45,0x53,
0x31,0x5b,0x32,0x35,0x36,0x5d,0x2c,0x20,0x41,0x45,0x53,0x32,0x5b,0x32,0x35,0x36,0x5d,0x2c,0x20,0x41,0x45,0x53,0x33,0x5b,0x32,0x35,0x36,0x5d,0x3b,0x0a,0x0a,0x20,
0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x20,0x67,0x49,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,
0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x30,0x29,0x3b,0x0a,0x0a,
0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,
0x20,0x69,0x20,0x3c,0x20,0x32,0x35,0x36,0x3b,0x20,0x69,0x20,0x2b,0x3d,0x20,0x57,0x4f,0x52,0x4b,0x53,0x49,0x5a,0x45,0x29,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x74,0x6d,0x70,0x20,0x3d,0x20,0x41,0x45,0x53,0x30,0x5f,0x43,0x5b,0x69,0x5d,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x45,0x53,0x30,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x74,0x6d,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x45,
0x53,0x31,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,0x74,0x6d,0x70,0x2c,0x20,0x38,0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x41,0x45,0x53,0x32,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,0x74,0x6d,0x70,0x2c,0x20,0x31,0x36,0x55,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x41,0x45,0x53,0x33,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x72,0x6f,0x74,0x61,0x74,0x65,0x28,0x74,0x6d,0x70,0x2c,0x20,0x32,0x34,0x55,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x0a,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,
0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x20,
0x2b,0x3d,0x20,0x32,0x35,0x20,0x2a,0x20,0x67,0x49,0x64,0x78,0x3b,0x0a,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,
0x64,0x28,0x5f,0x5f,0x4e,0x56,0x5f,0x43,0x4c,0x5f,0x43,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x20,0x2b,0x3d,0x20,0x67,0x49,0x64,0x78,0x20,0x2a,0x20,0x28,0x49,0x54,0x45,0x52,0x41,0x54,0x49,0x4f,0x4e,
0x53,0x20,0x3e,0x3e,0x20,0x32,0x29,0x3b,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x69,0x66,0x20,0x28,0x53,0x54,0x52,0x49,0x44,0x45,0x44,0x5f,0x49,0x4e,0x44,0x45,0x58,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x20,0x2b,0x3d,0x20,0x67,0x49,0x64,0x78,0x20,0x2a,0x20,0x28,
0x4d,0x45,0x4d,0x4f,0x52,0x59,0x20,0x3e,0x3e,0x20,0x34,0x29,0x3b,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x69,0x66,0x20,0x28,
0x53,0x54,0x52,0x49,0x44,0x45,0x44,0x5f,0x49,0x4e,0x44,0x45,0x58,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x20,0x2b,0x3d,0x20,0x67,0x49,0x64,0x78,0x3b,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x65,0x6c,0x69,0x66,0x20,0x28,0x53,0x54,0x52,0x49,0x44,0x45,0x44,0x5f,0x49,0x4e,0x44,0x45,0x58,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x20,0x2b,0x3d,0x20,0x67,0x65,0x74,0x5f,
0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2a,0x20,0x28,0x4d,0x45,0x4d,0x4f,0x52,0x59,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2a,0x20,0x57,0x4f,
0x52,0x4b,0x53,0x49,0x5a,0x45,0x20,0x2b,0x20,0x4d,0x45,0x4d,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x20,0x2a,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,
0x64,0x28,0x30,0x29,0x3b,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x69,0x66,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x65,0x6e,0x64,0x69,0x66,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x5b,0x30,0x5d,0x20,0x3d,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x30,0x5d,0x20,
0x5e,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x5b,0x31,0x5d,0x20,0x3d,0x20,0x73,0x74,0x61,0x74,
0x65,0x73,0x5b,0x31,0x5d,0x20,0x5e,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x35,0x5d,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x5b,0x30,0x5d,
0x20,0x3d,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x32,0x5d,0x20,0x5e,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x36,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x62,0x5b,0x31,0x5d,0x20,0x3d,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x33,0x5d,0x20,0x5e,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x37,0x5d,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x5b,0x32,0x5d,0x20,0x3d,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x38,0x5d,0x20,0x5e,0x20,0x73,0x74,0x61,0x74,0x65,
0x73,0x5b,0x31,0x30,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x5b,0x33,0x5d,0x20,0x3d,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x39,0x5d,0x20,
0x5e,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x31,0x31,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x0a,0x20,0x20,0x20,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,
0x62,0x78,0x30,0x20,0x3d,0x20,0x28,0x28,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x2a,0x29,0x62,0x29,0x5b,0x30,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x6c,0x6f,0x6e,
0x67,0x32,0x20,0x62,0x78,0x31,0x20,0x3d,0x20,0x28,0x28,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x2a,0x29,0x62,0x29,0x5b,0x31,0x5d,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,
0x6d,0x65,0x6d,0x5f,0x66,0x65,0x6e,0x63,0x65,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0x0a,
0x0a,0x23,0x20,0x20,0x20,0x69,0x66,0x64,0x65,0x66,0x20,0x5f,0x5f,0x4e,0x56,0x5f,0x43,0x4c,0x5f,0x43,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x0a,0x20,0x20,0x20,
0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x20,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x5f,0x6c,0x69,0x6e,0x65,0x5f,
0x62,0x75,0x66,0x5b,0x57,0x4f,0x52,0x4b,0x53,0x49,0x5a,0x45,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x31,
0x36,0x2a,0x20,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x5f,0x6c,0x69,0x6e,0x65,0x20,0x3d,0x20,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x5f,
0x6c,0x69,0x6e,0x65,0x5f,0x62,0x75,0x66,0x20,0x2b,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x0a,0x23,0x20,0x20,0x20,
0x65,0x6e,0x64,0x69,0x66,0x0a,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x72,0x30,0x20,0x3d,0x20,0x61,
0x73,0x5f,0x75,0x69,0x6e,0x74,0x32,0x28,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x31,0x32,0x5d,0x29,0x2e,0x73,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x75,0x69,0x6e,0x74,0x20,0x72,0x31,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x32,0x28,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x31,0x32,0x5d,0x29,0x2e,0x73,
0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x72,0x32,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x32,0x28,0x73,0x74,
0x61,0x74,0x65,0x73,0x5b,0x31,0x33,0x5d,0x29,0x2e,0x73,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x72,0x33,0x20,0x3d,0x20,
0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x32,0x28,0x73,0x74,0x61,0x74,0x65,0x73,0x5b,0x31,0x33,0x5d,0x29,0x2e,0x73,0x31,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x75,0x6e,0x72,0x6f,0x6c,0x6c,0x20,0x43,0x4e,0x5f,0x55,0x4e,0x52,0x4f,0x4c,0x4c,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x49,0x54,0x45,0x52,0x41,0x54,0x49,0x4f,0x4e,
0x53,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x20,0x7b,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x64,0x65,0x66,0x20,0x5f,0x5f,0x4e,0x56,
0x5f,0x43,0x4c,0x5f,0x43,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x69,
0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x61,0x5b,0x30,0x5d,0x20,0x26,0x20,0x30,0x78,0x31,0x46,0x46,0x46,0x43,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x61,0x5b,0x30,0x5d,0x20,0x26,0x20,0x30,0x78,
0x33,0x30,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2a,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,
0x5f,0x6c,0x69,0x6e,0x65,0x20,0x3d,0x20,0x2a,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x2a,0x29,0x28,0x28,0x5f,0x5f,0x67,
0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x63,0x68,0x61,0x72,0x2a,0x29,0x28,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x29,0x20,0x2b,0x20,0x69,0x64,0x78,0x29,
0x3b,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x61,0x5b,0x30,0x5d,0x20,0x26,0x20,0x4d,0x41,0x53,0x4b,0x3b,0x0a,0x23,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x69,0x66,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x34,0x20,
0x63,0x20,0x3d,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x63,0x20,0x3d,0x20,0x41,0x45,0x53,0x5f,0x52,0x6f,0x75,0x6e,0x64,0x28,0x41,0x45,0x53,0x30,0x2c,0x20,0x41,0x45,0x53,0x31,0x2c,0x20,0x41,
0x45,0x53,0x32,0x2c,0x20,0x41,0x45,0x53,0x33,0x2c,0x20,0x63,0x2c,0x20,0x28,0x28,0x75,0x69,0x6e,0x74,0x34,0x20,0x2a,0x29,0x61,0x29,0x5b,0x30,0x5d,0x29,0x3b,0x0a,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,
0x6f,0x6e,0x73,0x74,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x63,0x68,0x75,0x6e,0x6b,0x31,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x53,
0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x31,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x63,0x68,0x75,0x6e,0x6b,0x32,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,
0x6f,0x6e,0x67,0x32,0x28,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x63,0x68,0x75,0x6e,0x6b,0x33,0x20,0x3d,
0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x33,0x29,0x29,0x3b,
0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x20,0x5e,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,
0x63,0x68,0x75,0x6e,0x6b,0x31,0x29,0x20,0x5e,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,0x6e,0x6b,0x32,0x29,0x20,0x5e,0x20,0x61,0x73,0x5f,
0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,0x6e,0x6b,0x33,0x29,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x31,0x29,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,
0x68,0x75,0x6e,0x6b,0x33,0x20,0x2b,0x20,0x62,0x78,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x43,
0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x32,0x29,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,
0x6e,0x6b,0x31,0x20,0x2b,0x20,0x62,0x78,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x43,0x52,0x41,
0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x33,0x29,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,0x6e,0x6b,
0x32,0x20,0x2b,0x20,0x28,0x28,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x2a,0x29,0x61,0x29,0x5b,0x30,0x5d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7d,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,
0x4e,0x4b,0x28,0x30,0x29,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x62,0x78,0x30,0x29,0x20,0x5e,0x20,0x63,0x3b,0x0a,0x0a,0x23,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x64,0x65,0x66,0x20,0x5f,0x5f,0x4e,0x56,0x5f,0x43,0x4c,0x5f,0x43,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2a,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x31,
0x36,0x2a,0x29,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x63,0x68,0x61,0x72,0x2a,0x29,0x28,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,
0x29,0x20,0x2b,0x20,0x69,0x64,0x78,0x29,0x20,0x3d,0x20,0x2a,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x5f,0x6c,0x69,0x6e,0x65,0x3b,0x0a,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x63,0x29,
0x2e,0x73,0x30,0x20,0x26,0x20,0x30,0x78,0x31,0x46,0x46,0x46,0x43,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x63,0x29,0x2e,0x73,0x30,0x20,0x26,0x20,0x30,0x78,0x33,0x30,0x3b,0x0a,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2a,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x5f,0x6c,0x69,0x6e,0x65,
0x20,0x3d,0x20,0x2a,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x2a,0x29,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,
0x20,0x75,0x63,0x68,0x61,0x72,0x2a,0x29,0x28,0x53,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x29,0x20,0x2b,0x20,0x69,0x64,0x78,0x29,0x3b,0x0a,0x23,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x64,
0x78,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x63,0x29,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x41,0x53,0x4b,0x3b,0x0a,0x23,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x69,0x66,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x34,
0x20,0x74,0x6d,0x70,0x20,0x3d,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x30,0x29,0x3b,0x0a,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6d,0x70,0x2e,0x73,0x30,0x20,0x5e,0x3d,0x20,0x72,0x30,0x20,0x2b,0x20,0x72,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6d,0x70,0x2e,0x73,0x31,0x20,0x5e,0x3d,0x20,0x72,0x32,0x20,0x2b,0x20,0x72,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x72,0x34,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x32,0x28,
0x61,0x5b,0x30,0x5d,0x29,0x2e,0x73,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,
0x20,0x72,0x35,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x32,0x28,0x61,0x5b,0x31,0x5d,0x29,0x2e,0x73,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x72,0x36,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x62,0x78,
0x30,0x29,0x2e,0x73,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x72,0x37,
0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x62,0x78,0x31,0x29,0x2e,0x73,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x72,0x38,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x62,0x78,0x31,0x29,0x2e,0x73,
0x32,0x3b,0x0a,0x0a,0x58,0x4d,0x52,0x49,0x47,0x5f,0x49,0x4e,0x43,0x4c,0x55,0x44,0x45,0x5f,0x52,0x41,0x4e,0x44,0x4f,0x4d,0x5f,0x4d,0x41,0x54,0x48,0x0a,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x32,0x20,0x61,0x6c,0x20,0x3d,0x20,0x28,0x75,0x69,0x6e,
0x74,0x32,0x29,0x28,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x32,0x28,0x61,0x5b,0x30,0x5d,0x29,0x2e,0x73,0x30,0x20,0x5e,0x20,0x72,0x32,0x2c,0x20,0x61,0x73,0x5f,0x75,
0x69,0x6e,0x74,0x32,0x28,0x61,0x5b,0x30,0x5d,0x29,0x2e,0x73,0x31,0x20,0x5e,0x20,0x72,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x32,0x20,0x61,0x68,0x20,0x3d,0x20,0x28,0x75,0x69,0x6e,0x74,0x32,0x29,0x28,0x61,0x73,0x5f,0x75,0x69,0x6e,
0x74,0x32,0x28,0x61,0x5b,0x31,0x5d,0x29,0x2e,0x73,0x30,0x20,0x5e,0x20,0x72,0x30,0x2c,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x32,0x28,0x61,0x5b,0x31,0x5d,0x29,
0x2e,0x73,0x31,0x20,0x5e,0x20,0x72,0x31,0x29,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x74,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x2e,0x73,0x30,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x5f,0x68,0x69,0x28,0x61,0x73,0x5f,0x75,
0x6c,0x6f,0x6e,0x67,0x32,0x28,0x63,0x29,0x2e,0x73,0x30,0x2c,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x74,0x6d,0x70,0x29,0x2e,0x73,0x30,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x2e,0x73,0x31,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x63,0x29,
0x2e,0x73,0x30,0x20,0x2a,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x74,0x6d,0x70,0x29,0x2e,0x73,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x6c,0x6f,
0x6e,0x67,0x32,0x20,0x63,0x68,0x75,0x6e,0x6b,0x31,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,
0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x31,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,
0x73,0x74,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x63,0x68,0x75,0x6e,0x6b,0x32,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x53,0x43,0x52,
0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x20,0x63,0x68,0x75,0x6e,0x6b,0x33,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,
0x67,0x32,0x28,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x33,0x29,0x29,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x20,0x5e,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,0x6e,0x6b,0x31,0x29,0x20,
0x5e,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,0x6e,0x6b,0x32,0x29,0x20,0x5e,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,
0x75,0x6e,0x6b,0x33,0x29,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,
0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x31,0x29,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,0x6e,0x6b,0x33,0x20,0x2b,0x20,
0x62,0x78,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,
0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x32,0x29,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,0x6e,0x6b,0x31,0x20,0x2b,0x20,0x62,0x78,
0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x43,0x52,0x41,0x54,0x43,0x48,0x50,0x41,0x44,0x5f,0x43,
0x48,0x55,0x4e,0x4b,0x28,0x33,0x29,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x63,0x68,0x75,0x6e,0x6b,0x32,0x20,0x2b,0x20,0x28,0x28,0x75,0x6c,
0x6f,0x6e,0x67,0x32,0x20,0x2a,0x29,0x61,0x29,0x5b,0x30,0x5d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x5b,0x31,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x28,0x61,0x68,0x29,0x20,0x2b,0x20,
0x74,0x2e,0x73,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x5b,0x30,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,
0x67,0x28,0x61,0x6c,0x29,0x20,0x2b,0x20,0x74,0x2e,0x73,0x30,0x3b,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x53,0x43,0x52,0x41,0x54,
0x43,0x48,0x50,0x41,0x44,0x5f,0x43,0x48,0x55,0x4e,0x4b,0x28,0x30,0x29,0x20,0x3d,0x20,0x28,0x28,0x75,0x69,0x6e,0x74,0x34,0x20,0x2a,0x29,0x61,0x29,0x5b,0x30,0x5d,
0x3b,0x0a,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x64,0x65,0x66,0x20,0x5f,0x5f,0x4e,0x56,0x5f,0x43,0x4c,0x5f,0x43,0x5f,0x56,
0x45,0x52,0x53,0x49,0x4f,0x4e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2a,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,
0x6c,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x2a,0x29,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x63,0x68,0x61,0x72,0x2a,0x29,0x28,0x53,0x63,0x72,
0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x29,0x20,0x2b,0x20,0x69,0x64,0x78,0x29,0x20,0x3d,0x20,0x2a,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x5f,0x6c,0x69,
0x6e,0x65,0x3b,0x0a,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x69,0x66,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x28,0x28,0x75,0x69,0x6e,0x74,0x34,0x20,0x2a,0x29,0x61,0x29,0x5b,0x30,0x5d,0x20,0x5e,0x3d,0x20,0x74,0x6d,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x78,0x31,0x20,0x3d,0x20,0x62,0x78,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x78,0x30,
0x20,0x3d,0x20,0x61,0x73,0x5f,0x75,0x6c,0x6f,0x6e,0x67,0x32,0x28,0x63,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,
0x0a,0x0a,0x20,0x20,0x20,0x20,0x6d,0x65,0x6d,0x5f,0x66,0x65,0x6e,0x63,0x65,0x28,0x43,0x4c,0x4b,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,
0x45,0x4e,0x43,0x45,0x29,0x3b,0x0a,0x7d,0x0a,0x00
};
} // namespace xmrig

View file

@ -1,4 +1,3 @@
R"===(
#ifdef __NV_CL_C_VERSION
# define SCRATCHPAD_CHUNK(N) (*(__local uint4*)((__local uchar*)(scratchpad_line) + (idx1 ^ (N << 4))))
#else
@ -12,9 +11,6 @@ R"===(
#endif
#define ROT_BITS 32
#define VARIANT_WOW 12
#define VARIANT_4 13
#define MEM_CHUNK (1 << MEM_CHUNK_EXPONENT)
)==="
#include "wolf-aes.cl"