Write self-validating code Write code that takes a string as input, and outputs a truthy or falsey value depending on whether or not the string follows these rules:

If you stack each character on top of each other, convert to binary and sums each column, then all the sums should be identical. You may assume the input string contains only printable ASCII-characters (code points 32 - 126).

As an example:

The input O5vy_+~ should return a truthy value, since its binary representation is:

1001111  | O
0110101  | 5
1110110  | v
1111001  | y
1011111  | _
0101011  | +
1111110  | ~
-------
5555555  &lt;- Sum of bits in each column. Should give a truthy value.


The input PPCG should return a falsey value, since its binary representation is:

1010000  | P
1010000  | P
1000011  | C
1000111  | G
-------
4020122  &lt;- Should give a falsey value




The twist is: Your code should return a truthy value if it's used as input to your function / program. I.e. the code must adhere to the same rules as above (your code can contain characters that are not ASCII 32-126).

Your program/function only needs to handle printable ASCII as input. If your code contains something else, 8 bit, 16 bit encoding, Unicode, a custom made character set (or something else), then the binary representation of it should adhere to the same rules, but your code doesn't need to handle it as input. 

This is code-golf, so standard rules apply.
JavaScript (ES6), 123 122 120 110 bytes

S=&gt;[...S].map(S=&gt;R.map((_GSSSSSSVWWW,V)=&gt;R[V]-=S.charCodeAt()&gt;&gt;V&amp;1),R=[_=3^3,_,_,_,_,_,_])&amp;&amp;!R.some(S=&gt;S^R[_])


Below is a hexdump with bit sums.

Addr. | Dump                                            | #6 #5 #4 #3 #2 #1 #0
------+-------------------------------------------------+---------------------
00-0F | 53 3D 3E 5B 2E 2E 2E 53 5D 2E 6D 61 70 28 53 3D |  8 11  9 11  9  9  9
10-1F | 3E 52 2E 6D 61 70 28 28 5F 47 53 53 53 53 53 53 | 20 18 19 17 14 20 19
20-2F | 56 57 57 57 2C 56 29 3D 3E 52 5B 56 5D 2D 3D 53 | 30 24 32 25 26 30 29
30-3F | 2E 63 68 61 72 43 6F 64 65 41 74 28 29 3E 3E 56 | 41 37 37 32 34 38 36
40-4F | 26 31 29 2C 52 3D 5B 5F 3D 33 5E 33 2C 5F 2C 5F | 47 47 48 43 44 47 46
50-5F | 2C 5F 2C 5F 2C 5F 2C 5F 5D 29 26 26 21 52 2E 73 | 54 57 55 54 56 56 54
60-6D | 6F 6D 65 28 53 3D 3E 53 5E 52 5B 5F 5D 29       | 64 64 64 64 64 64 64


Demo



let f =

S=&gt;[...S].map(S=&gt;R.map((_GSSSSSSVWWW,V)=&gt;R[V]-=S.charCodeAt()&gt;&gt;V&amp;1),R=[_=3^3,_,_,_,_,_,_])&amp;&amp;!R.some(S=&gt;S^R[_])

console.log(f("O5vy_+~"))
console.log(f("Hello World!"))
console.log(f(`S=&gt;[...S].map(S=&gt;R.map((_GSSSSSSVWWW,V)=&gt;R[V]-=S.charCodeAt()&gt;&gt;V&amp;1),R=[_=3^3,_,_,_,_,_,_])&amp;&amp;!R.some(S=&gt;S^R[_])`))