1111101011010101111011001011101001111000001000110001001010101101011000110011011000110110111001100110101001010001000101000010000110101000100000000110101000100110011011000101011101010100101101101100010001110011110101001100111010000001110100000011111001000111000110010111000110011111011100001110001010100111001011010101110010100110011010100011111110100010010010000011100110100011100111010010000111110110 0000011010100000110100110101010110111000111001000000010110110001001101011100010111101010010101111010000010110000010100000100001001001000101111110100001010011110101111001011101111111110110011100110000010100100001010111011100011001100010100100011100100011000111000100010100110000111101101011110100000100100000100000101100110000011001101101001110101010011011011111010100111010010010000110001000010111010 0111110000001111100000000110110010111010001010011110010100001010101110001010101100110010101111011101010100110000010111100100010001100101011101001100101101000111010011000001001010101111100011101100110110101011111111010101110111011011001001101111001000111100011011011101001011000001010001110101011101000111011011001001010011001101011110110100101100011000011111100010111111000101001101101111110001111100 1110111011000100100010101101100000011101111101000011001011101010001111111010000000101010111001001100111001011010111100010111111010100010111100010000100011111111010010100101011100000011001111100101011111001101000000110011101110110010110101111100101000111010010111111010100011111101100010001011110110100011001101011011001100101000010000000011111001010000110111100011111110101010011001111001001111110111 0000101011011111100110011110000000110110100111111010111010101000111010000101000110111011100101010111001111011101000110110010100111001110101000000110001111000000110011101001000110110100011000111100111111011010110111100000111100111010101101000011001010111010111110110100001100110111100001101000110111010111101010010001001101101010110000011111101000000011010111111001100001000010111100110000111110111111 1000011101110101110101000011100000001101011001001100000001100100000110110010111001011001001001110110100010001011111011000010100110100011100101100010000001110111011001111110111111000110011110011110111110000101101000001101111010000001100010110011010010011011001010100000101111100011001100010000110011011111100001000111011110101010100100001011001110001111100111110101110000111001110011001101101010010110 1010110001110011100000010001110000010100011100011000101011001011001011001010101110010110100101110101010100110011010011011010011000000101000111000101111010111001100011011111000001011101111010000101101001100001000111001001000000010110000001100011010100011100100011001110000111010000101010100111010100101111111100001111110110010011001110110001011100011010001000010000101011001111001100100001000000010011 0100100111000111011110001111101110011010001001011001101000001000111100110001010010011110111010100111110110011101011011010101010001110101001100010001000000001010010001111101111101101100111000000100001110011110000000110101000001000011011010100011100110000011100010010110011100000001010001001001100011010001001000100100001111101100100101110011100111010000001111010111110000010110101000111101101000001110 0011001000100011101110110111001100011001100110000000000011011101100001010000101101010010010010101011100000100100011001100100011111111000011000110001011000111111011010010000110110101001110101100110101101111101100100100110011100110001110011110001110000110011111001011010101011010101111010001101000011100001001001001110001011110010001100111000111110101011010111111000101011101101011110110010111110000011 1001010011100110100001101010110100101101110010111011101111011010010111000100111111100100111111010110100110000100000000111100000011010100001101101011101110110010001100111100011111111011100101101001010110000100011011111010111001000000100000101110000000011111011111000010111010000001001000010110111011100101011011100101011000010111100111000011110000001010111110011111001100000100100101001101101011110100 1100001010110111100010110001010010011001010101100101111011010101011100110100111100100001000101001010101000101100000011000101111010010111001110110011010100110111010100001000010010000100100110000101111001101011010001011001111001101011010011111110001100010001011000000100100100001001100011111100000001101100111100000000110000011100100010001010101101101001010000111011001110000010110111001001010110010010 1010101111001111001011111111010010100001000010011101110000001100011010001100010010111100010111010001000101001111011110101010010011000101101010011110011000011110111111100000001000011001000011011101100000111110011101011000001000000101111000111000100001110101110111111111000010000010101010001101011100011011001100010000101111101011111110000111010101111110101000010011010000110000011111101110101100100100 0100000010110001111100001000110010101000010110100011110110010101101110011100100101101100001111001000000001111000001001001111101101000010101010100111100111110100011110011000100011011010101100110011011000001100101100000011000000001110100101010000001101011001011001001011101001000010100111110110111000001000000001111010100100101010011010101000110000011010110110010000000000001011010011110101011010110000 0100011010101111010111011111001100000000110000101111001001100100011000111010001011011011010000100100100101110101001011101001101010011010011011110011001011110101111110010000000011011101111010001001010001110110011001100011100100110111001111011011110001011011110100000010011101001101100000100001111100110011010010100010000001000101100101111101000101011110010101100000001101000101010011111101000011010100 1100101001111110000110111101011111000111010000100011101101111001111001110011100111100010010111001110110011010100001111010110001001111000011011110110010100010101100100100011100000011001000111101101000110011100001010011110000011001101100001000101010011010101000101110100100001010010000110000110111111010101000000000001101011101010101001110011111011110110011001110011101000001100010100111011100100000100 1100010000101000011001000111010011111011111111011001010000000000011110000000101000100000001110000001000011010100001100001101011110010101000110100101110001111111110111111101001010011111011000010100010110010110001000000100100110101000111111100000111101001000111000011111100001010101101010001110100011011111111000000000110101010000110011011000000001110111100001110001001010110110010101001100100010011100 1010001001011010011011110101100110000010100111110001010100011101101110001000010001010010010011010001111000101101101011101100010100101101111110011100001001110111101101010111111010000000001110101100100001000110001101001010101101111100110110100101111011010010100101100011000000100010110010100010100010111010011100111100101110110111101011100100010100000000010000101101101100110110111100111111111100110110 1000100101011110101010011000001001001110101001100001000110111011000100001001000011000101100001010010010100011010011111000110001000100010001001100001010101010111001100010000010001100001010011000100101111110010001111110110101101000101111010011111010110110010010001101110001101111101010100111010011010001111101111010010011101010111000101011000110101110001110000010011000110110010011011101000010100110000 1111010010001110010000000111100110010011000011010100110111010011110000000100001010010101101111101110001001101111001000101000000110100011101011000101011001000011011110111101011010100110101010101000000100010001011110011101100001000011011000111000110001000010100010011010110101111001100001011101000011100111011111101110001010011111000011111011110100001011000010001001000011101011110010010011101010111111 0000001010010111011000010010111111001101101000001111111101010010110101101110010110100101111110000001011000100000100111111101010111110010111011110101111111101001011000010001010011011110001010010010111011000110100110100111011111001110010111001001001001000011101001101111111111000110111000000111011100111101101101001111010100110001110010001110011010001111111110010001101110111110110110110101111110010111 0001000000101001101000010101101111111011101100111000101001011111110111110000011010011110100110100110001111000111010010111010000010011010101001111110111001000110010011001000001001011101110001101111100100000011011001010101101011110000011101011001101010010001100111100011011010000111110101110001111110001011111110011011001011110010100000001101110001011001011101010011110110011000101000000110100001010111 1000101011100010000011000011100111101001010001100100101011010010111110101101010000011000010011001011011111101000110001110111011000010010000001111001100001111000101110001011010011111111111100111110101111011110101000100110100010101111110001010101101001001000101011001000101010111100100011110000010101111011100011100010011111100100000001001110010010110010010010101101111111010001010011110111001001011101 0101111011110001111110010111011011110010001001001001101000101010011000100100010010001110101100001100011100101100100001111101101000010001000001010111111010111001011101110101011111011011111111010010001000110001100011111111001100011101010011010001110101101001111100011000011011000111111001110110100011101110011001010011000001110011001001111100100110011001101011011000111010110010010101000100111010111010 1100110000011011001111111111110011110000110010000110011001001000010010110111010100001011110000011101100010110111001011101001101100011001001001011111010100001001001010101001111001111011001100000110000101011001110111000110001111000110100101100111010101001101111001100100000101111000101000010100011010011101011000010111000110000010001101111001011011011101101010010010000010000001000011001011011010101010 0110101010010101100001011100010101110011010111101001001101100000100000001011110000000110011101101000010110011011101100110101000111101001100001000110001111110010001110000000010100011011100000001111000001110101000001110011000001101110011101000011110100111000011010001110000010100001101100111011010111100001011110100010101110000111110000100001100011101111010000100111100000010110110101111011111001110100 1000110101011010001010101110000111011110111100110100111000110010001000110110101110101000000011101001001011111111011011010101011101000011010101101110101110110100000001101010111111111011010000001000100000000000110001110000100110111100101001011100101101000001111000001011100111001101110000101001111100100111100100011011111010011011100011100110010000011010100000110111010100110010001110101010100100101100 1100111010000111110010000000111111110101110101001110011101101110010001000100101111011101111000111010011101011010101000011111001110111111001111011000101001111101110011011000000010000001100000101010000100000100010001101010000001010111111000001010100000110110000011011010011001010011100000010110101010001010110111100001001011010101111111000000111110111110101110100111011011111101101100011101110010011010 1011111011000110111011101001000010011101000110110000011000010010011001110001001101101001010101001011010101111110010101011111101110110010000101000111000101011010001111111010111100000000101101110100010111000100001101010110110110000000110101110111101001000010011100100000101100100011011010001010011111010000110110110101001101011100101100011110011010100100010100001010111101010000001101011101111101011011 1010101101000111000100001101111100000001110000110101100101001010011100010111001101110011011011010110100100011111110000101100000110011111111000000011001110011000110100110010100110101111110111001010101110111001011110111010001100011001100011101110000000100010000110000001010000110001111100011110101111001011101110101001101000100001011110110010110111000101010100011111001110100011010010111001111000000011 1110010110101011001100010011011101101101000111010110001001010011101000010110100110010101011001001010000100011101011000111111011101011001100010010100100101011011110000001101100100011100011010010010100100011010100010000100110100011111001100101010110100000000111110100100110010100101100001111000110110111111011101110011011000001001100101011010100101010101000110100010011111010010000100000111101100110000 0110010000100111100000001000001110001110000111011100110010000101011011001001001011010110110111110111101000001000010101010000001011001111010010001110000101110011101110110101111010101011001110101100101011000000011000110001000110111001001111100101000001100111011100111100001011101010111110010000111001010001111010111000001111110000001010110100111101010110001000001111000100110001101111100000110011010000 0010111001101001100101101010000101000001011110100001001111111111010101001100101001101101010101000111111111001010000111011010100010110000110001111000101100010100111101101000101100010011000110111100111101101101100010111000111000110000101110001111100001100110001100100100100011110100111110011111111101100111000111100000110100000010011100011001110001000001100111101101110010011110010000000101010111101100 1000000011101000100101001111110001000011110111100011100110111110000010000010100010010000101010011001100010100010010110000010110001001001110101000110110100000001100000010101011110111101001010001111111100010001111001011110101011010110010001111011010101111100010110000011110011101100110110001100111001101010011111011101010110100011011111010010110000101101100001110111000010100101000000111010111101001111 1000110011100110111001011011001010101110010101010101010000111000011100100111011000110010010111110100001000001111010001110111100101010111100001101001010001111101111010000110000010000000000100100011111111011110001000101101000011001111110000100111111101101100010100100100100101101011101000110001011111001111100110100111100010011101010100111100100100011110001101111000110000111001001111001100010000001110 0111001110011101001100111000001100101111111100011101110000010001111111100011001000111100011101100000011110100001000111110101011000101100010100100010111010011010001100110110110110101011110001010011001011001000111101100100011101000111001101111000101010100101101111110010011100010100011110110001010000110000011011101010111101011011111010101000010000100100001101111101010100100001101110001100011101010100 1110011111101101000011000001101000101111100001010111000010001100111111111000011000010111011011100001011011111000000111000101011110010100001000100000000001100110000100001100001000000011101101010100000110110100011100001000001110001111010011000010101001001001101101000010010100101101110000101100010100010111000110010100111011100100111000011010011111011111101100000011001010110000001001000001101111000101 1110101010001000110100110110100011110100001100111000111111111101101100110110111110110010101000111110100110010101110010001110000100011001111001101001011000111011001101011110011111011000110100000111110011100011010010001011101010100010100101111011001010001001011001001001011101011110110001010011110101110001110111110010100111111110000101101001110000011000101110101101101010110101000100010101000111100110 1111100101011111010011100001111000011010111110010011100001100101110110100111000011111000001101010100011000010110011000011110010001001100110001101100110101110011000010011101101111010010111010010011100000010001100000100100010000101001101001010110100100101011100000101110100110010010011010000111011100111110010110100010000001001111110100010111011011000000101100001001110011001110000101100001101110110000 1010001000101010000110111100100000011101101111100110111000011100000100110101000000110000001001110001001101000100100010111010111001000010000011110111101110011011100110100010010111010001110111100001100010110011000011100011000000110000011001000101111001101000101000011010001101111000011010000111100101000000011010000101001010111111100100100001011101011000111000001010100001111000111000011010100000101011 0001011111101010111010100100100111100000110011011101001001011100001111001000101111010111111110001101111111001110001111000111011111111111111010000100011111011100011110011111111110000010110100001000110100010001000111010101101110111101000001011010000110101010001001110101011000100000001111111001000100100010101011101011101011111000011110001100001000100110011010100011000000111011010110100100101010011000 1101110111101001111010011011001000100110010001100110100001101001110111100110110100110011001100011001011110111110110110000001111101001111000111011000011111011010011111101111001000111001110101100110001000011110001111111001110101000011110100001001010100011010100001100010111101110100111001000101010010111101011000110101001000010011110000000010111010000111011001111101010000110001010001011110111010010001 0000101010010010111011010001110001010101010100111001001110110001101111110010000111101100001110111001010001011110100000100000111100011101010001011111110111001110100111110011010001100111101111000111110001110001110111100001000000011101001001101010111010100011010100001011101011010100011100101100111111000100001001011001010100101001011111010011101111011110000110011011001110000100000010111100010000000100 1010000001000000100111110011001111101101011110100000000000110110111011111001011100000110101111001110110001110110111011100111010001011110101011110110110001110001100101001011111101010111001000001111111101000001000101001010100001100000011000101010010110101011010110110011001011001100111011111010110001110001111000110010011000010000100010001011100110010100111100101011100000110011010011101101010111110011 0111010100000111001100111101110001010011001111000011101001111101101101011111010110101100101101011100010111101101010010110011100111101000110001110111011101110001000111110111010000001001000111010010101101100111110001101001011100001100011101001110101100101110100000110000011111010111101010011101110000000010010001000100010110001100001111011011100011110110101010101001011000000101010111010111010001011000 0001101110111111101101000011000011101011100000101101100100001010100101100101100101100001100001101100011001110101110001101011110101010001001010011000100110110010100101110001110101111111010100101111101101111001011111001101001011110100011011010001011101111010010010111101010100010110011010110110101000010101111011100110001100110000100010110110110111000010101111011101001011100101111111011000111010011100 0111010010111000001001001000100000001110001001011000001001000101110100011000000010001010001101100101001101000111111110110101110010001001000010011001001111110101110100110010010100010111101111000010011010110000111100000100110111110111110111100100111110000101000110010101100100111000100111011010110000001010100100000001111010110001001100110110101111010011001001101100100010000011001001110011001101011110 0111110111110000111100011011101001100001101100101011100001001010110010101011011101100010001110010011011100001101000100101010110110010101111010001101001000010100110010110100111010101000000100011010000110111000111001100101010110011000100011010100001011001110001011111010000010111110110100101100101110111010101100100000111111111000000000011110010011010011100010111101010010101001010001000010010111101100 1100110110010011100101100010111011000010000101010000101111000011110101100000110111011011111101001010010101111110110011101010000111000110111111011111111101000010100010111100100000100101000110110110100011011101011101011110001100011010110000000110001110001100011001001011101111111001001101001000101001110101100110001101110001011100000111111011001111010011000101110100111001000000001011001000110110000110 0111011100110101010001010011110110101101100111100011011011010111000011110001101001110101001100111011010010110110001100111110101010110010100010000101111010110011101001011111010010010010000010111110000011001010000101100111110011100110001110010110111101111110101010111011101010011000101101000011111111111000101101111010001100001110000100111100001010010010100000001110100110000011100010001111010101110011 0000001110000100000100111110100101111101110011110101010110110011011100101101011010111011000111110001110100010101111010100110010110001001111101100110110111000000000000110100000111001001001111101000110100100010000010010011000000011101111000110101001100010011001000010001011010010010100011111110011010001010001100100110101100100111001111100000110010011001101101011001101111101001010101111010010010101000 1011100100010100110001100001001000000100010001100001110001010011111001101010110001010001010001001011001001001101100001001100010000010011111000110110101000000000001010110011111110001111011010111001000001000100000111011111001001101110010000001000111010100110011100011110101101100010010001010111101000001010000010001011111110010100001000001000010111101000111101101101011100011101101111001000010011010011 0110100010000010000000111100101000111010011011111001101101100100000011100011101000100111100011110001101100010000100010110111000100000101011101011001001011000100101001001111010001001010010000100101010011101010011011111010101101010101101000001110101010110111100010111011100110101100111100000101011000011011100001000001111000100111001001011111111001010101101100001001100110001101010010010100010000000111 1011111100011001001001000011001110101011100011011101100101111000011110010111110011111100111111000110101100101010010001100010101111111101100001001000101010100101111101110110101110111000011100010010001010101011010101100111100010010101001000100110101111111011110000110100011111000100111110010111001011101001010001011001110001110001111100100010101100001010001011001111111100000010010001101110100101110111 1101000101010101011000100010100000001011101111011111101100111011101111111001000110110010000000111101000011110100100110111110101001000110100011010001100000010010010110110100101001011110011111100001000010101011010001011011010100011011101100110110111011101111011110111000101001011111111011111011100001000110110011001111000111110101001110011000000101011000000010110011001111100111110010110100111110001110 0000101100110111110000000010011111001101111111010000111010011010100100011100100101000100011001111101111110111101000011100111100111111110000100010111110000010001000011010011011110010110100110100101010110011000010000001010001111111011010010001111110001001111001101101000011000101011001001101011110001000001100100100100000001000011010111010110101000111000100011001101110111000110100001101110110101001101 1110010101010111101111101110101011000010010001001100000110000101110110110011110001000110111010110001111011101011010111011100101000101100011001111011111011100010011100011110110111110111100001100111000011001001010000101011111010011110111011111000010010101000011111101100110000010011010110100010011111101011101001100101111111110100110001011101010111101010110101011010000001011001101100111000010101100101 0001111001011111101010110100011001110101111110101010100011010101100110111000111000111110111100001111110111001101010000011100000110000000001101111001111010010011111010001111100111001010010110110100011100101110000101110011000010000000010011101011100100011101000000010101111011101111111100011010100010111101110001000010110010100001100100010011111001010011110000100000101000000000101100010111111100000111 0100110000000110100111111011001100010001010010111101111110000011110011011100010010001000011110110000110011011110111000011110110110110100010000010100101010111011111010111101111001010011110011111000000100110010010111001101111001101011000101010101100110101111110010100011101010011010110110111000000110001011110101110010111110010010010011100011101010001010001110010101000101111101111111000000110011100111 0101111111111110000001100011110100101110111010011000100010101101101110000110010111010000010001010001101111101110100000011001100001110010011111111110100011011110100010000001101000010001000010100101110001110001010001010111110011110011111101011010010001011011011000101000010011101110100111000011101010001010110011001000000110000001100010010111100100111111010110001101011101100001110011110110111111111101 0011011111010001010010011010001111100001110000100010000101100000100111010111111110101100111010111000010110001011001001000011101001010001110011111000100000111001001110110110101101100100010111110001000100001111100001100010011111011000111111001010011011010010111011110110111000110001000010011110111111010110000101101011001101111110101000110000101111110011011111011000000100001110010110111100011111100000 1100001101110001010000100010101101101010000110011100010101011001110111100110111101000101011101010111011101101111010111000101001111100011111110101001001011001011110000010010000101111001100101101010100011101001011101000001010001010010000100011011001111110000011111101100100101111011001001111110001111101011011101000000101101001100011000100001101001110100011111000001010001011100011110000001011010111001 1010011000110100110100000110111010010101101111001101000010100101100000100110000011011010001110000011101010111010101110001111000111110100000111000011001001111000110100101000000100010010011110110010011111111110011011111111000111111001101111010111111011010111000010011101101001011101011111010101111011000001000110111100110001110000110110010110100101000001000010001000001110010000011110110000011000111011 1110100011110111100011100100111000000110110110111010110010011111001100111111100011011001101001001010001111110110111100010101000010011011100100000101111011110110001100111101111110110010101101111100001110111001010110001110111100000001101101100000000001110000111110110111011010100111100110011101001110111100110100110001110111000110111010110001101100100101011111011110010010100001011001010000001000001111 0011000001001011010001010010100101111100011100101001011011000101001011111000001100110100111001011100101100000010100011001111111011111101111011111111100010000101011000000110011100110110100001010001100000111111111111101011101111101001000001110101000111101111111000100110111100000111010001110101010000010001101100011010101110111100011110101100101111010110011111101110000100011010100010101100101111110001 1010111011010111101010010001111001000011101001010110111111000000100101100011101111100101110010100110001000010010100010000011001010110111101111111000101010011101101001110000001010100100001000111101111101101000011111100011000010100000010000011010000010111011001010100110111010110000001001010011111000011110011111111110000111101011010010000011011000000001101100110001101000000100010110100111100101010101 1111010000011100100101000111101111111101001101100110100100111100011001000111001101010000000100111010110001000100111010001001110101110101100000100010101101010101000011100111011100111100001010111011011111011011111111111001001010001101010001011001010001100110001110101111001101010110011001100100000000011110001010100000010101010001000011011101100100111010100010011001001000011111010101011101110011101110 1001000100111101100110110001000011100010100011001000101000110111100000101011001000100010110110000100100101100111001111010111110000000010011001010101010111011100100001010000110001111110111100011110000101010100101111110011101000001101101100000001000000100001011110110011010010010010100001000000001100100000101010010000000010010001110000001011010110001001010111011100100000000100010111000111001001110100 1000110111001100111111000101001100000101010110110010111110010111100101111100111001111100100011000000111001010110100000101011100111111100111011101101100000000000100100100101010000110110011000110000000110100011011011001001010010111010000100011001101101001110001001010110111110100001011110001010110001000001000101010100010110000000111110111110001110110011111111011000000101100101101111100110000011110001 0011100100000111010111000111010001110000101010010011011111001001110011101110100111001010001011010111100000110000101111101110100011111001111100111100000100101011101011111100101001000011001111111101100000101101010111100011000100001001101011010111110000001011111011101111011011010111010100110101111111010100001010001110000110101001001000010110000001010001010111110111110110000110110000001111100101100000 0011101100100100011100110110000000100111000110001101001011001000101010111010110101011000001011010011011010000100110111011000101001000111010010010010111101111001111101000110110011010000111110000100110000110000101001001001000010100010000110111110011001000000011011101111011100011111001000010101111100110100110010100001011111011101101001100100100100110010010101010001000001111001100011000011011001111101 0111100110110011101100101011110011111000101100111011001111110010010010111101100111100100110001101001100101001011000100000000000001001010011000111100011101101111110010101000111010000000001000100100101111111101010111100001000000000010000010110011111100110001110000001011110110101111001011001100010111101111000111010001011111000101001001100111011010000101110000110010011010010001100111100010011101010111 1011101010001111100010011001111010111100001001011110000000100111110011111001110101001101111111010000011100111101101010100110010001101001111111010000110011010011110011001111011101011010000100111101000001111111101101100010111001110000101010011010111100000101001001010010001111100011101000001110000011010011100011101011111011001111001101101000111110110111011010001000100101100011100011111101110111111010 0001101110110011001110011010110110100001010001010010010001100100010110010011100110011110011001101111010100110001001110100011001101010101000110000011100000011111101110010101100001011000100110000001100100101011000000101111000010110000111111110000010110101100111011111100010100001111111100000001010111011010111010111010101011000101001000101100110101101011010101101001000111111001110010011101011110001111 1100000010001111100110110010111001111011101000100011001111100101101100100100110000011110000011000010100010100110101000100001100110100000110011011001111100001000111111000000101001110011010000100011100111111101100000001100100011001000000100101111110100000010011001001001001010000111001101011101101110110100100010010011001001011001100101111110110111011000011110000111011011101101100000001011000101001111 0100100111101001110000100100111110000011101011111010100010100011100010011011000011010010111100100110011001000111000011010100011011101100011101000010101100000100111001110001011101110010111101000001101100000100011000000000010110101001101100011110010000011011110010100100011111110100011001001001000111001111011101101010000010101111000101001111001111000100100110111011010000111011110100011110101011101110 0000000011110110011101000101000000110000111010011111011110000000010010101110001111101010111110100011100000111111000010100100100001110111011101010101010101000011000110111001100110000000011001111101111100000100111110000010010101000001110010001000110100010100001001110110000000111010100011110001011010111111001010011010000100001001001011111110001111011010111001110010000001011010111101001000000101110001 1011111101111111110100010111101010000000110111001101001110001100110101101011001111001000100111010100110100000110111001100100001000110000011010111100000100111101001110101011010011110111010101111011011100101111100010110001001011101011111101011110100111111001111000010110110000110111000000110001100100101011111110111100100100010100010011101110011101101110011010110000111110101101111000110111110100101100 0010010001111100010010100111101000111110010001001001001000110011011111101100100101100110110110110000011111111000010011010100001001011100111000000010111011101011101101010111111011101110101101111110011001011011011000110001110101011101111010101000111001000110110001100000111111110001101101100101010101111011001100000111110000100011101000101101010111100111101100111001110010000001010110000110010110011100 0100010000010110100000001100111110111111101101111101101001000101010010100100111111110100100000001011110101000100011011111001110111010000100110000010000001111010011000100001001101000101000110100100101001010011011000111000111011111010101000101111101100111000010010111110100000111100111010011001110000010011100011101111101011010111000001110110011001100001000001101101101101010010110001001000000110101001 0110000110011000110111111000110101101011111011011111011101010111001101011110001010100111111111010110000111000100100101111110000101000100001100101011011010010111001001010011110001110000110001110011010101001000110010010000100010000010001011001000011110110001011101010101101110101110000100000010110100011000000011101010110100110011001011100101010101101000010011110001100110111001010000000101100011001100 0111001111100111011101101101011011110111010000110011101101111011101010000110110000110011001101000110111101100011001011000100111111000000101011100111001001000111010011101000000010101101101001001100110111101001111000101000101111111100101110111010000001110000110101100001010011100101011010100000100000100100010000010001000001101011101000011001111010111110110011001111101000100000011111011110111111011011 1011101101000000010000100011100110000111101100101110001111000001111001111000010100111100100110110001001011011101000111101001110000111110110110100010001110001011000101001110000000001100100110111001111000001101010111010101010111101101111011100001110000110110010111110110110101010111000001001011101000000100010001010111110010010101010101000000111011010011001001010110100011111101000101101111111011010110 1101110010111101011000010010011011010010100101001000000111001101111110110110110111101101101001001010111000010111101110111101100110101100110010001110001101111001011010000000110011011110000111110100010101001011010001111011111111100111111100100001001100101111110001100001100011101001010011100001001001011000111000110100101010000100001101111010001011110010110000010000111101110010010001001110111100110101 1101111101111010101010101101111010001001011111000100110000000110010110010011100100111101001101100001111001101000101000101100100111001101111010110100010111100001111110011000100101001101111110010110000011000001001111100110100010001010101100011111101101000111001001000110001110000001110110010100010000110100000011100000100011111010001111111001101011100111001000001111011000100001100101110001110000100101 1011001101110000100000001101100010011001110000111000100101000001111000000001110110011111101101100010010101010110101100100001011100010101001111110011100010001111111001110000111010000110100100100110110110001111111011011010101100100111000001111110011000000011000110000010111101100111101100110101110111101000111101011100010111111010110010111010010001010001001011001100100011011110101100010010011101000100 1101001100011101100110010000110110010110010101001001001110010010101100010100001000010011100100101010100100011111100001100000010001110111110000100101010111011010010111001101100110100010001100001111110111101110110001101100011001110110011011000110010110001011011010000000111010111010110010100101010111001000110011010010011110001101110100011011010010001100110101001101101000101100011001100000111001101001 1011111101100100010001010101011111001001010010110100101111100100010010000101101101011011011001101011110100000101011010110001110010001100001111001100101011010101011100001000011010110010111111010011100111110101111000100011100100111101001010001011001100010101001111100100000010000010010101001101110001110001100001010101001001100000000001010011010110001001011101001111011010000001110001101111101011000010 1100110101010110001011011001100111011101011101111011000110101001001100101011111111000010000010010010001101001101011001111011001101101011011010100011010000011001000111101111001111111100011010100010000010010001110111010010000000011001001000001000110010111001110111100110111100101111011000101000100101001100011001111110111101100101001010011100011111010000101011111111010111110000111011000000111001011001 1111111011001100000110011111101101011001110000011100100100110000101100101010010001001011110010100110010100000100100101010110110010101000110100100010101011101110101101100011000001010001101100110010000100000110110101111101101000111001000101000000000110001101110000111001000101101101101111001111111110110011000101101010011100100000111111011011101111111101100111011110010010100110111000010110100101100000 1011001111101111100011000000101011110100100100110001100101011100010011101011010110101011111010100000101001011111101000101001000000011101100011011001100100101111010101000001101110100110100010001000101101010100101000100010001001001100010001001101111110110001101110110100010100000100100100010100101011110100000010100101111101001010001111000111100100000100010000111001101010011110100010110011000011001110 1001010011011101111010100001001010000110111010010110001111001111110001101110111001000100100001100000001010110110000100001001111101011001000000011000110110111101000001111110000100101111100110100110000010101001110101011110011100000000001101111100100011000011100101011101110000010010100100101011101001100100011110011011110001001001100101000101010101000010111001101101000111100101001010111100001011000110 0011011011111110000101001101100001000101110111010011111111101010011000100101011111001110010111001011010101011000000010110000010100101100111011111001100011110111111010001100111011101101000110000000100011111000010001101110000000111100100000111100101101101101011001011010100110111001011010001110111101111101111101001100110001000110100101100111000101101011001100001000000111110000011000001000000011011111 0100001111010100110001100010111100110110111001110101000011001010001111111001001001101000001000010100100111010000101011000000000000101000111100111101100001100011111110011100100110001101011000010101110100010110001010110001001110001101001100101000101111000011011000100100111100000100001101111110000111110101101011100011010000011100010011100000001111101101011111101001110110001101100000100001111011101010 0100110100011100011001010100101000100111000010010011110100111010000100000001100111111011110011001100100001111110100100111011011011100000100000000111100110000100100010000011101110001010101010100000010010100100100000110110010101101100010000010111001010000011101110000110100011110001001001001111001010101111110011101100000100000011110010110011101001011010100100010101011001000001101001101101101111110001 1011000111010111010110001110000110000001110111001010000000111001111010100001101100100011011100010110010000110000110100110011001010100010011010001000111010111000010110101011100010101011011010001001000000000010011110001100111110101110100011111011101001111110111111101101110101110011010110010110101101110010011011011101011111100100010101000000110011100011010001000001100000111100110011010001101011111010 0011100111000011111101011111110101110111000111000111011000101001110111001100011010011000011000010111111111011001011110111100001000010101110111010111000110001111011101101101110011111010101011000111001101010010110100000111111010010011001111000001001111101111010010010011110110101100111010011100101101000110001100010100101001000001011010000010011110000000101110011110100101011011111001010001100100101011 1101001101000111010101101011000001000010000110111110110110110000011001011000100111010001011001111111110000110011101111000010010101010001010100000111110101001011010001100101111101111110100100111010000010111110011011110101110011110100010001100000100101110111010101111010000001001011110101110001100011111100110100110001010010010001001010110111001101011110110110111001110110001011110100111001010001111001 1000111011100011000000111011011100111111010100001000011011111100001001011111110000101000100011111010010000010011110011011010000101000100010001011100001000011000100101110101111111001100101101000001010010100100101110000100101100101000110011110010000101000101010111011010100000010010101110001001001010111100010011111001101000100001111001001100111101001011011000001110010000001011111100011001001111000011 1011111011110101011111110011011110001001101010101000010011010100101101111110110000101001100000110110000110100001100000101000011101001011110000101110110001111000000110101000011001011010101000011010101000110110110000111010000000010100110110110110101101000011101100101111111010110111000000000010001100111011110101001101111010001001010001010010101101110101100001001011001110101010000110111011110111110111 1011010110111110000000011010000100110100110001110010000011000110010111001000001110111001001111110001000110011010101111000111001000100001001110101001000010011110110010000101000111101000111110100010011110011010001010011000110110011101101001100000110011110100111000100011101101011010001101001011000000110001001001100010011011010100010000010101101111001001001000101011110011011011101111100111011011110110
cTrader Algo

Style【cAlgoAPI】

3/25/2021 3/29/2021

4年以上前の記事です。内容が古くなっている可能性があります。

もっと細かい見た目設定

基本的なコントロール類の見た目はそれぞれのプロパティで設定できるのはこれまで説明した通りです。

例えばButton.BackgroundColorを設定すればボタンの背景色が設定できますし、CheckBox.ForegroundColorを設定すればチェックボックスの文字色を変えることができます。

でも場合によってはボタンが押されたときだけ背景色を変えたかったり、チェックされてるときとされてないときで文字色を変えたかったりすることもあるでしょう。

そんなときにはStyleの出番です。Styleクラスを使えばもっと細かくコントロールの見た目を設定することができます。

 

 

Styleクラス

コントロールの見た目情報をすべて持つオブジェクトです。

public class Style : Object

個別のプロパティで特に設定がない場合、コントロールの持つStyleプロパティによって見た目が決まります。Styleもその他プロパティも設定されてない場合はなにも表示されません

下記でDefaultStyleが定義されてるコントロールは最初からStyleを持っているため、なにもプロパティ設定しなくても勝手に描画されます。

 

コンストラクタ
Style(Style parentStyle)

parentStyleを元に新たなスタイルオブジェクトを生成します。「もとのプロパティを一部だけ変更したい」というケースではDefaultStyleをparentStyleに指定しておきましょう。

ただし、DefaultStyleではかなり細かく設定が入ってるため、parentにしてしまうとControlStateごとに設定したい場合は余計面倒になることがありますのでその点だけご注意ください。

なお、引数なしのコンストラクタもあります。一から自分のスタイルを構築したい場合はこちらをどうぞ。この場合、自分で設定しない項目はnullになります。nullでもどうにか解釈してくれるらしくエラーにはなりません。

 

 

メソッド
(object ) Get(ControlProperty property)

指定したプロパティの値を取得します。すべてのstate。返り値object型なので適切な方にキャストして使います

(object) Get(ControlPropery property, ControlState state)

指定した状態でのプロパティの値を取得します。同上。

(void) Set(ControlProperty property, object value)

コントロールの指定したプロパティにvalue値をセットします。第二引数はobject型ですが、プロパティに合わせて適切な型を渡します。

(void) Set(ControlProperty property, object value, controlState state)

コントロールの指定した状態のプロパティにvalue値をセットします。なおstateを指定してスタイルを設定する場合は後述する通り設定順に注意が必要です

 

サンプルコード

var style = new Style();
style.Set(ControlProperty.BackgroundColor, Color.White, ControlState.DarkTheme);
style.Set(ControlProperty.BackgroundColor, Color.Gray, ControlState.Disabled);
style.Set(ControlProperty.BackgroundColor, Color.Black, ControlState.LightTheme);
style.Set(ControlProperty.BackgroundColor, Color.Pink, ControlState.Hover);
style.Set(ControlProperty.BackgroundColor, Color.Red, ControlState.Checked);
style.Set(ControlProperty.BackgroundColor, Color.Yellow, ControlState.Pressed);
style.Set(ControlProperty.Width, 50);
style.Set(ControlProperty.Height, 50);
var button = new ToggleButton { Style = style};
Chart.AddControl(button);

LightモードとDarkモードを切り替えたり、ホバーしたり、クリックしたりでコロコロ色が変わるトグルボタンです。トグルボタンに色を設定するときはチェック状態をはっきりさせるためにもStyleを使う方がいいでしょう。

 

 

DefaultStylesクラス

それぞれのコントロールのデフォルトスタイルを保持する静的クラスです。

public static sealed class DefaultStyles : Object

基本的にStyleクラスのコンストラクタに渡す用のparentStyleを提供するためのものと考えていいでしょう。

 

プロパティ
(Style) ButtonStyle

ボタンのデフォルトスタイルです。

(Style) CheckBoxStyle

チェックボックスのデフォルトスタイルです。

(Style) RadioButtonStyle

ラジオボタンのデフォルトスタイルです。

(Style) ScrollViewerStyle

スクロールビュアーのデフォルトスタイルです。

(Style) TextBoxStyle

テキストボックスのデフォルトスタイルです。

(Style) TextBlockStyle

テキストブロックのデフォルトスタイルです。

(Style) ToggleButtonStyle

トグルボタンのデフォルトスタイルです。

 

 

関連する列挙型

ControlProperty

コントロールの各プロパティを表します。

ForegroundColor
BackgroundColor 背景色
FontFamily フォント名
FontSize フォントサイズ
FontStyle フォントスタイル
FontWeight フォント太さ
BorderColor 枠線色
BorderThickness 枠線太さ
CornerRadius コーナーの丸み
TextAlignment テキスト位置
HorizontalContentAlignment コンテンツ水平位置
VerticalContentAlignment コンテンツ垂直位置
Margin 余白
Padding 内部余白
Width
Height 高さ
MaxHeight 最大高さ
MaxWidth 最大幅
MinHeight 最小高さ
MinWidth 最小幅
Opacity 不透明度
CaretColor キャレット色(テキストボックス専用)

 

 

ControlState

コントロールの各状態を表します。

Disabled 無効状態
Hover ホバー(マウスカーソルが乗ってる)状態
DarkTheme ダークテーマ
LightTheme ライトテーマ
Checked チェック状態(チェックボックス、ラジオボタン用)
Pressed 押された状態(ボタン、トグルボタン用)

Styleを各State毎に1つずつSetするときはDarkTheme,LightTheme→Hover→Checked→Pressedの順で行います。最後にDarkTheme,LightThemeを設定してしまうと、チェックされてようがホバーされてようが常にDarkTheme,LightThemeで設定した色になってしまいます。

コントロールは複数の状態を持っています。例えばダークテーマでチェックボックスにはチェックされていて、しかもマウスが乗っていたら、そのコントロールはDarkTheme+Checked+Hoverという状態です。このときにどの設定が適用されるかというと、一番後に設定されたものが優先となるようなんです。

なお、ControlStateはFlags属性を持っているため、複数の状態を指定して個別に設定することもできます。例えばダークテーマとライトテーマで背景色変えるなら、ホバー時だって別にしたいですよね。そんなときはこう。

            style.Set(ControlProperty.BackgroundColor, colorForDarkHover, ControlState.Hover | ControlState.DarkTheme);
            style.Set(ControlProperty.BackgroundColor,  colorForLightHOver, ControlState.Hover | ControlState.LightTheme);

面倒ではありますが、こだわりたいときは細かく設定できるのはいいですね。

 

 


まだコメントはありません

新しいコメント

コメントは承認後に公開されます。承認まで次のコメントは投稿できません。

cTrader's Life

© 2025 ajinori