J, 171 bytes
(+:>.+:^^*_){.".(':',~(+:+:>.^*_){(*:>.^*_)!:(+:<.^+:*_)''),',',(":(>:*:+:+:+:*_),(<.^<:^<:^*_),<:*:<.^+:*_),'+/',('.',~(+:<.+:^*_){(*:>.^*_)!:(+:<.^+:*_)''),":+:<.*:>:^*_
Ow... my brain hurts... Try it online!
Here's so you can see all of it one line (it won't run, though, with line breaks.)
(+:>.+:^^*_){.".(':',~(+:+:>.^*_){(*:>.^*_)!:(+:<.^+:*_)''),',',(":(>:*:+:+:+:*_),(<.^<:^<:^*
_),<:*:<.^+:*_),'+/',('.',~(+:<.+:^*_){(*:>.^*_)!:(+:<.^+:*_)''),":+:<.*:>:^*_
Only guaranteed to work with J version j805/j64/linux/release/commercial/www.jsoftware.com/2016-12-11T08:02:52
, in that order. (Only the first 12 characters matter.)
Explanation
Most of the program is devoted to constant generation. With those constants replaced with their values, the program looks like this:
(62){.".(':',~(12){(9)!:(14)''),',',(":(65),(97),48),'+/',('.',~(10){(9)!:(14)''),":26
With some parentheses removed, and some numbers made nicer:
62{.".(':',~12{9!:14''),',',(":65 97 48),'+/',('.',~10{9!:14''),":26
This is composed of a bunch of ,
and ,~
s, which append and prepend arguments. Here are the separate values:
":26
('.',~10{9!:14'')
'+/'
(":65 97 48)
','
(':',~12{9!:14'')
1
is 26
as a string.
9!:14''
generates the following string on TIO:
j805/j64/linux/release/commercial/www.jsoftware.com/2016-12-11T08:02:52
with 2
, we obtain the 10
th character (i
from linux
), and add a .
to the end of it, yielding i.
.
3
and 5
are self-explanatory.
4
is the list of numbers 65 97 48
as a string.
6
is similar to 2
, except it's the 12
th character (u
from linux
) and adds a :
to the end, yielding u:
.
This, all together, yields u:,65 97 48+/i.26
. ".
evaluates this, giving us:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHI
(Note: +/
is tabulated addition.)
Then, with 62{.
, we take the first 62
characters from this, giving us ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
.