2022-12-21 15:22:44 +11:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								tracing = False 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								def  trace ( * args , * * kwargs ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  tracing :  print ( * args , * * kwargs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								def  delimit ( code , spacer = ' ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  not  spacer : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  len ( code ) == 16 :  return  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  len ( code ) != 19 :  raise  Exception ( ' code length should be 19 for despacing, got ' , len ( code ) , ' from ' , code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  code [ 0 : 4 ] + code [ 5 : 9 ] + code [ 10 : 14 ] + code [ 15 : 19 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  spacer : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  len ( code ) == 19 :  return  code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  len ( code ) != 16 :  raise  Exception ( ' code length should be 16 for spacing, got ' , len ( code ) , ' from ' , code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  code [ 0 : 4 ] + spacer + code [ 4 : 8 ] + spacer + code [ 8 : 12 ] + spacer + code [ 12 : 16 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								def  scramble ( code , unscramble = False ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									n = int ( code [ 0 ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  unscramble :  n = 15 - n  # Because the 1st digit is left alone this needs to be +1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  code [ 0 ] + code [ 16 - n : 16 ] + code [ 1 : 16 - n ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								def  combine ( code , namehash = ' ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  namehash :  return  code [ 0 : 2 ] + namehash [ 4 : 5 ] + code [ 2 : 6 ] + namehash [ 3 : 4 ] + code [ 6 : 8 ] + namehash [ 1 : 3 ] + code [ 8 : 11 ] + namehash [ 0 : 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									charcode = code [ 0 : 2 ] + code [ 3 : 7 ] + code [ 8 : 10 ] + code [ 12 : 15 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									namehash = code [ 15 ] + code [ 10 : 12 ] + code [ 7 ] + code [ 2 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  charcode , namehash 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								def  fill0s ( num , zeroes = 0 ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  not  zeroes :  return  str ( int ( num ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									n = str ( num ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-14 15:12:17 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  ' 0 ' * ( zeroes - len ( n ) ) + n 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								def  muxhero ( clas , trait , spec ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  clas + trait * 12 + spec * 12 * 16  # It's actually stored backwards like this, spec is in the most significant bits. Whatever, it doesn't need to be reversable. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								def  muxmedals ( key , moh = - 1 , pcc = - 1 , cob = - 1 , lsa = - 1 , rem = - 1 ) : 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 20:47:24 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									print ( key , moh , pcc , cob , lsa , rem ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-14 15:12:17 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  moh != - 1 :  return  key + moh * 2 + pcc * 4 + cob * 8 + lsa * 16 + rem * 32 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  bool ( key & 1 ) , bool ( key & 2 ) , bool ( key & 4 ) , bool ( key & 8 ) , bool ( key & 16 ) , key / / 32