# from twisted.internet import reactor, protocol
# import socket
# import time
# from concurrent.futures import ThreadPoolExecutor
# import threading
#
#
# class MinimalDelayProtocol(protocol.Protocol):
#     """最小延迟协议"""
#
#     def __init__(self, server_id):
#         self.server_id = server_id
#         self.timestamps = {
#             'start': time.time(),
#             'connected': None,
#             'cmd1_sent': None,
#             'resp1_received': None,
#             'cmd2_sent': None,
#             'resp2_received': None
#         }
#
#     def connectionMade(self):
#         self.timestamps['connected'] = time.time()
#         connect_time = self.timestamps['connected'] - self.timestamps['start']
#
#         # 关键优化1: 禁用Nagle算法
#         try:
#             self.transport.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
#         except:
#             pass
#
#         # 关键优化2: 立即发送，不要延迟
#         self.send_command1()
#
#         print(f"[{self.server_id}] 连接: {connect_time * 1000:.1f}ms")
#
#     def send_command1(self):
#         cmd1 = bytes([
#             0x55, 0xaa, 0x01, 0x00, 0x79, 0x19, 0x0b, 0x01,
#             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x01
#         ])
#
#         self.timestamps['cmd1_sent'] = time.time()
#         self.transport.write(cmd1)
#
#         cmd1_delay = self.timestamps['cmd1_sent'] - self.timestamps['connected']
#         print(f"[{self.server_id}] 发cmd1: {cmd1_delay * 1000:.1f}ms")
#
#     def dataReceived(self, data):
#         current_time = time.time()
#
#         if not self.timestamps['resp1_received']:
#             self.timestamps['resp1_received'] = current_time
#             resp1_delay = current_time - self.timestamps['cmd1_sent']
#             print(f"[{self.server_id}] 收resp1: {resp1_delay * 1000:.1f}ms")
#
#             # 关键优化3: 立即发送第二个命令
#             self.send_command2()
#         elif not self.timestamps['resp2_received']:
#             self.timestamps['resp2_received'] = current_time
#             resp2_delay = current_time - self.timestamps['cmd2_sent']
#             print(f"[{self.server_id}] 收resp2: {resp2_delay * 1000:.1f}ms")
#
#             # 关键优化4: 立即断开
#             self.transport.loseConnection()
#
#     def send_command2(self):
#         cmd2 = bytes([
#             0x55, 0xaa, 0x01, 0x00, 0x79, 0x19, 0x19, 0x01,
#             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x01
#         ])
#
#         self.timestamps['cmd2_sent'] = time.time()
#         self.transport.write(cmd2)
#
#         cmd2_delay = self.timestamps['cmd2_sent'] - self.timestamps['resp1_received']
#         print(f"[{self.server_id}] 发cmd2: {cmd2_delay * 1000:.1f}ms")
#
#     def connectionLost(self, reason):
#         total_time = time.time() - self.timestamps['start']
#         print(f"[{self.server_id}] 完成: {total_time * 1000:.1f}ms")
#
#
# def clearFaceLog(faceIP):
#     """优化后的主函数"""
#     print("最小延迟并发客户端")
#     print("=" * 50)
#
#     # servers = [
#     #     (1, '192.168.3.82', 5005),
#     #     (2, '192.168.3.83', 5005),
#     #     (3, '192.168.3.85', 5005)
#     # ]
#     servers = [(1, faceIP, 5005)]
#
#     start_total = time.time()
#
#     # 同时启动所有连接
#     for server_id, host, port in servers:
#         factory = protocol.ClientFactory()
#         factory.protocol = lambda: MinimalDelayProtocol(server_id)
#
#         # 设置短超时
#         reactor.connectTCP(host, port, factory, timeout=2)
#
#     # 运行
#     reactor.callLater(5, lambda: (
#         print(f"\n总耗时: {(time.time() - start_total) * 1000:.1f}ms")
#         # reactor.stop()
#     ))
#
#     # reactor.run()
#     return f"\n总耗时: {(time.time() - start_total) * 1000:.1f}ms"
#
if 82 - 82: Iii1i
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
if 98 - 98: I11iiIi11i1I % oOO
from twisted . internet import reactor , protocol , defer
from twisted . internet . endpoints import TCP4ClientEndpoint
import time
import binascii
import threading
from concurrent . futures import ThreadPoolExecutor
import sys
import socket
if 31 - 31: i1I
from . wgAppConfig import wgAppConfig
if 9 - 9: IiI11Ii111 / oOo0O00 / IiIIii11Ii - I11iiIi11i1I - iI1iII1I1I1i
if 16 - 16: i1i1i1111I / i1iiIII111
def print4debug ( info ) :
 if 3 - 3: i1 % i1 % i1i1i1111I . Ii * i1
 pass
class ConcurrentClientProtocol ( protocol . Protocol ) :
 if 9 - 9: i1iiIII111
 if 10 - 10: ooOOO / IIiIIiIi11I1 * oOO / i1I / i1I
 def __init__ ( self , server_info ) :
  self . server_info = server_info
  self . buffer = b""
  self . commands = [ ]
  self . current_step = 0
  self . expected_responses = [ ]
  self . is_connected = False
  self . timeout_handle = None
  self . start_time = None
  self . completed = False
  if 61 - 61: Ooo0Ooo - I1I
  if 13 - 13: Ooo0Ooo
  self . initialize_commands ( )
  if 46 - 46: iI1iII1I1I1i - Ii * Oo * Ii
 def initialize_commands ( self ) :
  if 52 - 52: Oo + I1I / oOO / OooOoo - I1Ii1I1 - ooOOO
  self . commands . append ( {
  # i1i1i1111I / oOO - Ii . oOO
 'send' : bytes ( [
 0x55 , 0xaa , 0x01 , 0x00 , 0x79 , 0x19 , 0x0b , 0x01 ,
 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x9e , 0x01
 ] ) ,
 'expect' : [
 bytes ( [ 0x5a , 0xa5 , 0x01 , 0x00 , 0x01 , 0x00 , 0x01 , 0x01 ] ) ,
 bytes ( [ 0xaa , 0x55 , 0x01 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 ,
 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x01 ] )
 ] ,
 'desc' : '发送5523，期待5524和5527' ,
 'step' : 1
 } )
  if 2 - 2: i1
  if 22 - 22: IIiIIiIi11I1 - ooo000 / I1Ii1I1 . ooo000
  self . commands . append ( {
 'send' : bytes ( [
 0x55 , 0xaa , 0x01 , 0x00 , 0x79 , 0x19 , 0x19 , 0x01 ,
 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xac , 0x01
 ] ) ,
 'expect' : [
 bytes ( [ 0x5a , 0xa5 , 0x01 , 0x00 , 0x01 , 0x00 , 0x01 , 0x01 ] ) ,
 bytes ( [ 0xaa , 0x55 , 0x01 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 ,
 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x01 ] )
 ] ,
 'desc' : '发送5528，期待5529和5532' ,
 'step' : 2
 } )
  if 1 - 1: iI1iII1I1I1i + Ooo0Ooo + oOO * IIiIIiIi11I1
  self . commands . append ( {
 'send' : bytes ( [
 0x55 , 0xaa , 0x01 , 0x00 , 0x79 , 0x19 , 0x18 , 0x01 ,
 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xab , 0x01
 ] ) ,
 'expect' : [
 bytes ( [ 0x5a , 0xa5 , 0x01 , 0x00 , 0x01 , 0x00 , 0x01 , 0x01 ] ) ,
 bytes ( [ 0xaa , 0x55 , 0x01 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 ,
 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x01 ] )
 ] ,
 'desc' : '发送5528，期待5529和5532' ,
 'step' : 3
 } )
  if 20 - 20: I1I + Ii
  self . commands . append ( {
 'send' : bytes ( [
 0x55 , 0xaa , 0x01 , 0x00 , 0x79 , 0x19 , 0x0c , 0x01 ,
 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x9f , 0x01
 ] ) ,
 'expect' : [
 bytes ( [ 0x5a , 0xa5 , 0x01 , 0x00 , 0x01 , 0x00 , 0x01 , 0x01 ] ) ,
 bytes ( [ 0xaa , 0x55 , 0x01 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 ,
 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x01 ] )
 ] ,
 'desc' : '发送5528，期待5529和5532' ,
 'step' : 4
 } )
  if 75 - 75: Ii % i1iiIII111 * Ii . IIiIIiIi11I1 % I11iiIi11i1I % I1Ii1I1
 def connectionMade ( self ) :
  self . is_connected = True
  if 8 - 8: I1Ii1I1 . IiI11Ii111 . i1 . Oo - i1I
  self . start_time = time . time ( )
  if 32 - 32: Ii % i1i1i1111I % i1I - I11iiIi11i1I % i1iiIII111
  print4debug ( "{0}[{1}] ✓ 已连接到 {2}:{3}" . format ( time . time ( ) - self . start_time , self . server_info [ 'name' ] , self . server_info [ 'host' ] , self . server_info [ 'port' ] ) )
  print4debug ( "[{0}] 开始执行命令序列..." . format ( self . server_info [ 'name' ] ) )
  if 34 - 34: i1iiIII111 * i1
  try :
   self . transport . socket . setsockopt ( socket . IPPROTO_TCP , socket . TCP_NODELAY , 1 )
  except :
   pass
   if 34 - 34: oOo0O00 / i1iiIII111 - Iii1i . iI1iII1I1I1i
  reactor . callLater ( 0.1 , self . execute_command_step , 0 )
  if 80 - 80: i1i1i1111I . I1I % ooOOO % IiIIii11Ii / i1i1i1111I
 def execute_command_step ( self , step_index ) :
  if step_index >= len ( self . commands ) :
   if 32 - 32: I1Ii1I1 + oOO - oOo0O00
   self . completed = True
   print4debug ( "[{0}] ✓ 所有命令执行完成" . format ( self . server_info [ 'name' ] ) )
   if 79 - 79: Iii1i % oOO * Oo + ooOOO / Oo . oOO
   if 20 - 20: IiI11Ii111 + i1iiIII111 / I1I
   if 88 - 88: I11iiIi11i1I + ooOOO - i1i1i1111I . Ooo0Ooo * Ii + Iii1i
   reactor . callLater ( 0.1 , self . disconnect_gracefully )
   return
   if 43 - 43: ooOOO * I1Ii1I1
  self . current_step = step_index
  Oooo0o0oO0 = self . commands [ step_index ]
  self . expected_responses = Oooo0o0oO0 [ 'expect' ] [ : ]
  if 71 - 71: OooOoo - Ii
  print4debug ( "\n{0}[{1}] 执行步骤{2}: {3}" . format ( time . time ( ) - self . start_time , self . server_info [ 'name' ] , Oooo0o0oO0 [ 'step' ] , Oooo0o0oO0 [ 'desc' ] ) )
  print4debug ( "[{0}] 发送: {1}" . format ( self . server_info [ 'name' ] , self . bytes_to_hex ( Oooo0o0oO0 [ 'send' ] ) ) )
  if 40 - 40: IiIIii11Ii . i1 / Oo
  if 46 - 46: IiI11Ii111 - OooOoo * I1Ii1I1 / Ooo0Ooo / Iii1i
  self . transport . write ( Oooo0o0oO0 [ 'send' ] )
  if 23 - 23: Ooo0Ooo + i1 * I1Ii1I1 + Oo * Ii - IIiIIiIi11I1
  if 29 - 29: IiIIii11Ii - oOo0O00
  if 30 - 30: I1I . ooo000
  self . timeout_handle = reactor . callLater ( 2 , self . handle_step_timeout , step_index )
  if 43 - 43: ooOOO . I11iiIi11i1I + ooo000
 def dataReceived ( self , data ) :
  self . buffer += data
  if 87 - 87: Iii1i + ooOOO . i1I / Ii + Oo
  if 77 - 77: i1iiIII111 + IiI11Ii111 - Oo % ooo000
  if 74 - 74: Ii + Ooo0Ooo
  self . process_expected_responses ( )
  if 1 - 1: I1I % Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo
 def process_expected_responses ( self ) :
  if not self . expected_responses :
   if 93 - 93: oOo0O00 % Ooo0Ooo * i1iiIII111
   return
   if 52 - 52: oOO + I1I / ooo000 - I1Ii1I1 * i1I % oOo0O00
  oOoO00 = False
  if 84 - 84: iI1iII1I1I1i - I1I - I11iiIi11i1I
  while self . expected_responses :
   ooO0000Ooo0O = self . expected_responses [ 0 ]
   if 29 - 29: Iii1i / Ii
   if ooO0000Ooo0O in self . buffer :
    IiII11i11II = self . buffer . find ( ooO0000Ooo0O )
    o00o = self . buffer [ IiII11i11II : IiII11i11II + len ( ooO0000Ooo0O ) ]
    self . buffer = self . buffer [ IiII11i11II + len ( ooO0000Ooo0O ) : ]
    if 97 - 97: Ooo0Ooo
    print4debug ( "[{0}] ✓ 收到响应: {1}" . format ( self . server_info [ 'name' ] , self . bytes_to_hex ( o00o ) ) )
    if 29 - 29: I11iiIi11i1I * iI1iII1I1I1i
    if 7 - 7: Oo / OooOoo - I11iiIi11i1I - IiI11Ii111 % i1iiIII111
    self . expected_responses . pop ( 0 )
    if 97 - 97: I11iiIi11i1I % oOO - I1Ii1I1 - IIiIIiIi11I1
    if 58 - 58: ooOOO / IIiIIiIi11I1 % i1
    if self . timeout_handle and self . timeout_handle . active ( ) :
     self . timeout_handle . cancel ( )
   else :
    print4debug ( "[{0}]不是要的响应: {1}" . format ( self . server_info [ 'name' ] , self . bytes_to_hex ( self . buffer ) ) )
    break
    if 36 - 36: oOo0O00 . ooOOO / i1iiIII111 + oOO
    if 11 - 11: i1 / ooo000
  if not self . expected_responses :
   if 89 - 89: I1I * i1i1i1111I
   reactor . callLater ( 0.1 , lambda : self . execute_command_step ( self . current_step + 1 ) )
   if 54 - 54: oOO + Ooo0Ooo - I1I . Ooo0Ooo
 def handle_step_timeout ( self , step_index ) :
  print4debug ( "[{0}] ✗ 步骤{1}超时" . format ( self . server_info [ 'name' ] , step_index + 1 ) )
  if 50 - 50: Iii1i * ooo000 % Iii1i - oOo0O00 + ooo000
  if 54 - 54: oOO * i1 % i1 - Ooo0Ooo + IIiIIiIi11I1
  if self . expected_responses :
   print4debug ( "[{0}] 未收到的响应:" . format ( self . server_info [ 'name' ] ) )
   for I11I1iI , i111ii1I in enumerate ( self . expected_responses , 1 ) :
    print4debug ( "  {0}. {1}" . format ( I11I1iI , self . bytes_to_hex ( i111ii1I ) ) )
    if 18 - 18: Ii / ooo000 + I1I + iI1iII1I1I1i
    if 42 - 42: ooOOO - ooOOO - i1i1i1111I
  reactor . callLater ( 1 , lambda : self . execute_command_step ( step_index + 1 ) )
  if 61 - 61: oOO
 def disconnect_gracefully ( self ) :
  if self . is_connected :
   if 7 - 7: i1i1i1111I / Ii * Iii1i
   print4debug ( "[{0}] 正在断开连接..." . format ( self . server_info [ 'name' ] ) )
   self . transport . loseConnection ( )
   if 32 - 32: IiI11Ii111 . OooOoo
 def connectionLost ( self , reason ) :
  self . is_connected = False
  if 31 - 31: Oo - i1I
  IIIi1111iiIi1 = time . time ( ) - self . start_time if self . start_time else 0
  if 4 - 4: ooo000 % I1I - i1i1i1111I
  iI11i1iI1I1Ii = "成功完成" if self . completed else "异常断开: {0}" . format ( reason )
  print4debug ( "[{0}] 连接关闭 ({1}, 耗时: {2:.2f}秒)" . format ( self . server_info [ 'name' ] , iI11i1iI1I1Ii , IIIi1111iiIi1 ) )
  if 65 - 65: Iii1i + IIiIIiIi11I1 - Ooo0Ooo . iI1iII1I1I1i + OooOoo * Ooo0Ooo
  if 23 - 23: ooOOO % oOO % iI1iII1I1I1i - i1I - i1iiIII111 + i1
  if self . server_info . get ( 'manager' ) :
   self . server_info [ 'manager' ] . connection_completed ( self . server_info [ 'name' ] , self . completed )
   if 12 - 12: i1 - i1I - IiI11Ii111
 def bytes_to_hex ( self , data ) :
  return binascii . hexlify ( data ) . decode ( ) . upper ( )
  if 86 - 86: Iii1i + i1iiIII111 - IIiIIiIi11I1 / I1I
  if 46 - 46: ooOOO + ooOOO % oOO
  if 2 - 2: i1i1i1111I / Ooo0Ooo / oOO - IIiIIiIi11I1 / IIiIIiIi11I1
class ConcurrentClientFactory ( protocol . ClientFactory ) :
 if 58 - 58: i1i1i1111I
 if 38 - 38: i1 - oOo0O00
 def __init__ ( self , server_info ) :
  self . server_info = server_info
  self . protocol_instance = None
  if 85 - 85: IIiIIiIi11I1 + I11iiIi11i1I % Ooo0Ooo + oOO * i1iiIII111
 def buildProtocol ( self , addr ) :
  self . protocol_instance = ConcurrentClientProtocol ( self . server_info )
  return self . protocol_instance
  if 46 - 46: ooOOO - ooOOO + Oo / I1I * Oo + oOO
 def startedConnecting ( self , connector ) :
  print4debug ( "[{0}] 正在连接..." . format ( self . server_info [ 'name' ] ) )
  if 98 - 98: I1I / IIiIIiIi11I1 / i1I + IiI11Ii111 % Oo + I1I
 def clientConnectionFailed ( self , connector , reason ) :
  print4debug ( "[{0}] ✗ 连接失败: {1}" . format ( self . server_info [ 'name' ] , reason ) )
  if self . server_info . get ( 'manager' ) :
   self . server_info [ 'manager' ] . connection_completed ( self . server_info [ 'name' ] , False )
   if 38 - 38: I1Ii1I1 + oOo0O00
 def clientConnectionLost ( self , connector , reason ) :
  if 2 - 2: OooOoo % Ii + oOO . OooOoo + IIiIIiIi11I1 * Oo
  pass
  if 2 - 2: IIiIIiIi11I1 + iI1iII1I1I1i - I1Ii1I1 + ooOOO . IIiIIiIi11I1
  if 15 - 15: ooo000
class ConcurrentConnectionManager :
 if 63 - 63: i1I
 if 81 - 81: OooOoo . i1I / i1i1i1111I + Oo / Ooo0Ooo % IiI11Ii111
 def __init__ ( self ) :
  self . servers = [

  # i1 % ooo000 % iI1iII1I1I1i - i1I + Ooo0Ooo
  # IiI11Ii111 % IiI11Ii111 . Oo
  # I1I * ooOOO
  # I1Ii1I1 . I1Ii1I1 / i1i1i1111I % Iii1i / iI1iII1I1I1i - IiI11Ii111
  # Ii + oOo0O00 / oOo0O00 * iI1iII1I1I1i
  # i1
  # i1I * I1I * Ooo0Ooo
  # oOO
  # OooOoo * ooOOO
  # Ii . I1Ii1I1
  # i1I % iI1iII1I1I1i + Oo
  # oOo0O00 * ooo000 * I11iiIi11i1I + oOO
  # i1i1i1111I - Ii % i1iiIII111 - IiI11Ii111
  # i1i1i1111I . i1I / i1I
  # ooOOO
  # I1Ii1I1 . I11iiIi11i1I - iI1iII1I1I1i * I1Ii1I1 + i1I
  # IIiIIiIi11I1 * IIiIIiIi11I1 . Ooo0Ooo + i1iiIII111
  # Oo * i1iiIII111 / Ooo0Ooo
  # oOo0O00 - ooo000 * Ii % i1i1i1111I - ooOOO + i1iiIII111
  # ooo000
  # oOO . Ooo0Ooo - I1I . IiIIii11Ii % IiI11Ii111
  # iI1iII1I1I1i * I1I . oOO + OooOoo
  # IIiIIiIi11I1 - Iii1i . IiI11Ii111
  # I1Ii1I1 * oOo0O00
  # oOO . i1i1i1111I - Oo / Oo - OooOoo
  # oOo0O00 * ooOOO % IIiIIiIi11I1 - IIiIIiIi11I1
  ]
  if 32 - 32: OooOoo % I1I - I11iiIi11i1I % OooOoo
  self . completed_count = 0
  self . success_count = 0
  self . total_servers = len ( self . servers )
  self . start_time = None
  if 9 - 9: i1iiIII111 - ooOOO % Iii1i
 def start_concurrent_connections ( self ) :
  self . start_time = time . time ( )
  if 37 - 37: i1I + IIiIIiIi11I1 % iI1iII1I1I1i / IIiIIiIi11I1 % i1iiIII111 + oOO
  if 98 - 98: iI1iII1I1I1i - I1I + i1 * ooo000 % i1
  print4debug ( "=" * 60 )
  print4debug ( "并发多服务器客户端" )
  print4debug ( "将同时连接到 {0} 个服务器" . format ( self . total_servers ) )
  print4debug ( "=" * 60 )
  if 100 - 100: i1iiIII111 . IIiIIiIi11I1 * ooo000 * ooo000
  Iioo0Oo0oO0 = [ ]
  if 20 - 20: IIiIIiIi11I1
  for O0O0oO00OO0 in self . servers :
   if 92 - 92: Ii % i1i1i1111I % oOo0O00 / i1
   O0O0oO00OO0 [ 'manager' ] = self
   if 96 - 96: Ooo0Ooo
   print4debug ( "\n{0}创建连接: {1} -> {2}:{3}" . format ( time . time ( ) - self . start_time , O0O0oO00OO0 [ 'name' ] , O0O0oO00OO0 [ 'host' ] , O0O0oO00OO0 [ 'port' ] ) )
   if 13 - 13: Oo * I1Ii1I1 - oOo0O00 * Ii . Ii + oOo0O00
   if 46 - 46: OooOoo - I11iiIi11i1I / Ooo0Ooo
   ii1I = ConcurrentClientFactory ( O0O0oO00OO0 )
   O0O0oO00OO0 [ 'factory' ] = ii1I
   if 80 - 80: IIiIIiIi11I1 / OooOoo % iI1iII1I1I1i / ooOOO * ooOOO - Iii1i
   if 60 - 60: oOO * i1i1i1111I / iI1iII1I1I1i
   if 45 - 45: Ooo0Ooo + ooOOO * oOo0O00 - ooo000 / IIiIIiIi11I1
   i1I1I1Ii = TCP4ClientEndpoint ( reactor , O0O0oO00OO0 [ 'host' ] , O0O0oO00OO0 [ 'port' ] , timeout = 2 )
   O0 = i1I1I1Ii . connect ( ii1I )
   if 88 - 88: IiI11Ii111 . IIiIIiIi11I1 * i1 + IiIIii11Ii % I1I / IiI11Ii111
   def oo00oOOo0O0o ( protocol , srv = O0O0oO00OO0 ) :
    srv [ 'connected' ] = True
    print4debug ( "{0}[{1}] 连接成功建立" . format ( time . time ( ) - self . start_time , srv [ 'name' ] ) )
    return protocol
    if 12 - 12: Ooo0Ooo + I1I / OooOoo
   def OOOO ( failure , srv = O0O0oO00OO0 ) :
    print4debug ( "[{0}] 连接失败: {1}" . format ( srv [ 'name' ] , failure ) )
    self . connection_completed ( srv [ 'name' ] , False )
    return failure
    if 96 - 96: iI1iII1I1I1i . OooOoo . i1
   O0 . addCallback ( oo00oOOo0O0o )
   O0 . addErrback ( OOOO )
   if 87 - 87: ooo000 * IiIIii11Ii % ooo000 . ooOOO . Oo % iI1iII1I1I1i
   Iioo0Oo0oO0 . append ( O0 )
   if 48 - 48: ooOOO * ooo000 % IiIIii11Ii * i1 . Iii1i - IiI11Ii111
   if 72 - 72: i1 % i1i1i1111I * iI1iII1I1I1i
  return defer . DeferredList ( Iioo0Oo0oO0 , consumeErrors = True )
  if 90 - 90: Ooo0Ooo * OooOoo . Ii
 def connection_completed ( self , server_name , success ) :
  self . completed_count += 1
  if 5 - 5: Oo - i1 . oOO
  if success :
   self . success_count += 1
   if 18 - 18: IiIIii11Ii - oOO * i1I - OooOoo
   if 54 - 54: IIiIIiIi11I1 . Ooo0Ooo % Ii + IiIIii11Ii * iI1iII1I1I1i / iI1iII1I1I1i
  for O0O0oO00OO0 in self . servers :
   if O0O0oO00OO0 [ 'name' ] == server_name :
    O0O0oO00OO0 [ 'completed' ] = True
    O0O0oO00OO0 [ 'success' ] = success
    break
    if 31 - 31: IiIIii11Ii . IiIIii11Ii % Ii
  print4debug ( "\n[{0}] 通信完成 ({1}/{2})" . format ( server_name , self . completed_count , self . total_servers ) )
  if 51 - 51: Oo / i1i1i1111I - I1I
  if 83 - 83: Iii1i % i1iiIII111 . OooOoo / I1I % oOO . I1I
  if self . completed_count >= self . total_servers :
   self . print_summary ( )
   reactor . callLater ( 2 , self . shutdown )
   if 76 - 76: i1iiIII111 / OooOoo
 def print_summary ( self ) :
  IIIi1111iiIi1 = time . time ( ) - self . start_time
  if 77 - 77: ooOOO
  if 19 - 19: ooOOO % I1Ii1I1
  print4debug ( "\n" + "=" * 60 )
  print4debug ( "并发通信完成摘要" )
  print4debug ( "=" * 60 )
  print4debug ( "总耗时: {0:.2f} 秒" . format ( IIIi1111iiIi1 ) )
  print4debug ( "总连接数: {0}" . format ( self . total_servers ) )
  print4debug ( "成功: {0}" . format ( self . success_count ) )
  print4debug ( "失败: {0}" . format ( self . total_servers - self . success_count ) )
  print4debug ( "-" * 40 )
  if 15 - 15: OooOoo . IiIIii11Ii . i1I / Iii1i + ooOOO / Ii
  for O0O0oO00OO0 in self . servers :
   iI11i1iI1I1Ii = "✓ 成功" if O0O0oO00OO0 [ 'success' ] else "✗ 失败"
   print4debug ( "{0}: {1}:{2} - {3}" . format ( O0O0oO00OO0 [ 'name' ] , O0O0oO00OO0 [ 'host' ] , O0O0oO00OO0 [ 'port' ] , iI11i1iI1I1Ii ) )
   if 17 - 17: I11iiIi11i1I - i1i1i1111I . iI1iII1I1I1i - I11iiIi11i1I + Oo % iI1iII1I1I1i
  print4debug ( "=" * 60 )
  if 65 - 65: Ii % I11iiIi11i1I
 def shutdown ( self ) :
  print4debug ( "\n正在关闭程序..." )
  if 39 - 39: Iii1i * IIiIIiIi11I1 . Ooo0Ooo - Oo
  if 63 - 63: i1i1i1111I - i1iiIII111 . OooOoo % OooOoo . IiI11Ii111 + i1I
  if 71 - 71: ooo000 + I11iiIi11i1I % iI1iII1I1I1i + IiI11Ii111 % Oo - Oo
  if 84 - 84: I1I % iI1iII1I1I1i - Ooo0Ooo / iI1iII1I1I1i + Ooo0Ooo - Oo
def clearFaceLog ( ip ) :
 O0OOo0O = 0
 try :
  if 9 - 9: i1i1i1111I
  I11 = ConcurrentConnectionManager ( )
  if 48 - 48: Ii % i1I
  print4debug ( "\n启动并发连接..." )
  O0O0oO00OO0 = [ ]
  for oO0O0oO0 in ip :
   O0O0oO00OO0 . append ( {
 'name' : 'Server-{0}' . format ( oO0O0oO0 ) ,
 'host' : oO0O0oO0 ,
   'port' : 5005 ,
 'factory' : None ,
 'connected' : False ,
 'completed' : False ,
 'success' : False
 } )
   if 40 - 40: i1I . I1I % OooOoo
   if 85 - 85: Oo / oOO + Oo + ooOOO
   if 74 - 74: oOO - IiI11Ii111
   if 79 - 79: oOO * IiI11Ii111 . ooOOO * I1Ii1I1 . oOo0O00 + i1iiIII111
   if 45 - 45: I1Ii1I1
   if 19 - 19: ooo000 * OooOoo . Iii1i * I11iiIi11i1I . I1I
   if 49 - 49: i1iiIII111 - IiIIii11Ii / i1iiIII111 + i1I
   if 77 - 77: Ii
   if 20 - 20: Ii % i1i1i1111I
   if 35 - 35: Ooo0Ooo * IiI11Ii111 - Ooo0Ooo - ooOOO
   if 28 - 28: IiIIii11Ii . Oo - i1I + I11iiIi11i1I - oOo0O00
  I11 . servers = O0O0oO00OO0
  I11 . total_servers = len ( I11 . servers )
  reactor . callWhenRunning ( I11 . start_concurrent_connections )
  if 6 - 6: IiI11Ii111 - Ii
  if 1 - 1: I1I + OooOoo
  def OooO0Oo ( ) :
   print4debug ( "\n" + "=" * 60 )
   print4debug ( "全局超时：30秒后强制停止" )
   print4debug ( "=" * 60 )
   if 17 - 17: i1 % oOO % IiIIii11Ii * i1i1i1111I
   ooOoO0O0 = I11 . completed_count
   print4debug ( "已完成连接: {0}/{1}" . format ( ooOoO0O0 , I11 . total_servers ) )
   if 52 - 52: Ooo0Ooo * Oo + Iii1i - I1Ii1I1 + iI1iII1I1I1i % IiIIii11Ii
   for O0O0oO00OO0 in I11 . servers :
    if not O0O0oO00OO0 [ 'completed' ] :
     print4debug ( "[{0}] 未完成" . format ( O0O0oO00OO0 [ 'name' ] ) )
     if 12 - 12: i1 . i1I - I11iiIi11i1I - i1i1i1111I
     if 51 - 51: i1iiIII111 * i1iiIII111 / I1Ii1I1
   return "已完成连接: {0}/{1}" . format ( ooOoO0O0 , I11 . total_servers )
   if 10 - 10: Oo * I11iiIi11i1I % IiIIii11Ii / OooOoo + i1
   if 14 - 14: I1I + I1Ii1I1
  reactor . callLater ( 3 , OooO0Oo )
  O0OOo0O = 1
 except Exception as i1II :
  wgAppConfig . wglog ( i1II )
  pass
 return O0OOo0O
 if 97 - 97: iI1iII1I1I1i % i1I * IiI11Ii111 * i1iiIII111 + OooOoo
 if 57 - 57: IIiIIiIi11I1
 if 57 - 57: ooOOO + Ii % I11iiIi11i1I + oOo0O00 . iI1iII1I1I1i - Ii
 if 8 - 8: i1i1i1111I + i1i1i1111I * IiI11Ii111
 if 77 - 77: iI1iII1I1I1i - oOO % Ii * i1I - I1I
 if 42 - 42: I11iiIi11i1I - Ii / Oo - i1i1i1111I + I11iiIi11i1I
 if 83 - 83: i1 . iI1iII1I1I1i
 if 57 - 57: IiI11Ii111 % IiIIii11Ii / oOo0O00 + Ooo0Ooo - i1iiIII111
 if 87 - 87: i1iiIII111 . i1iiIII111 . oOO . ooo000 * oOo0O00
 if 33 - 33: IiI11Ii111 * i1iiIII111 / i1I . OooOoo * oOo0O00 + ooo000
 if 17 - 17: i1i1i1111I * oOO + i1iiIII111 - I11iiIi11i1I / i1i1i1111I
 if 83 - 83: I11iiIi11i1I - Iii1i + oOo0O00 + I1I / IIiIIiIi11I1 + I1I
 if 29 - 29: i1i1i1111I / oOo0O00
 if 13 - 13: I11iiIi11i1I % i1iiIII111 . OooOoo % ooo000 % OooOoo
 if 21 - 21: IiI11Ii111 * I1Ii1I1
 if 93 - 93: Ooo0Ooo . i1 + IiI11Ii111 - oOo0O00
 if 97 - 97: i1 - i1 % IIiIIiIi11I1 + IiIIii11Ii / i1I * iI1iII1I1I1i
 if 60 - 60: I11iiIi11i1I - Ooo0Ooo % I1Ii1I1
 if 26 - 26: ooOOO / IIiIIiIi11I1 . oOO + I11iiIi11i1I . Oo
 if 37 - 37: I1Ii1I1
 if 35 - 35: OooOoo % i1i1i1111I - iI1iII1I1I1i / IiIIii11Ii
 if 4 - 4: ooo000 . IiIIii11Ii % ooo000 / i1i1i1111I
 if 48 - 48: i1iiIII111 . Oo
 if 92 - 92: OooOoo + Ii / IIiIIiIi11I1 + OooOoo * IIiIIiIi11I1 * iI1iII1I1I1i
 if 79 - 79: i1i1i1111I
 if 3 - 3: OooOoo / IiI11Ii111 % I11iiIi11i1I
 if 55 - 55: oOo0O00
 if 31 - 31: Ii . Ooo0Ooo / IiI11Ii111
 if 59 - 59: Oo
 if 64 - 64: Iii1i % I11iiIi11i1I * i1 % OooOoo * oOo0O00
 if 55 - 55: IiI11Ii111
 if 46 - 46: Ooo0Ooo % I1Ii1I1
 if 86 - 86: I11iiIi11i1I . i1i1i1111I + oOO % I11iiIi11i1I % Iii1i % ooo000
 if 61 - 61: ooo000
 if 48 - 48: Iii1i * i1i1i1111I + IiIIii11Ii
 if 31 - 31: Oo * i1iiIII111 % Ii / oOO + I1Ii1I1 + iI1iII1I1I1i
 if 90 - 90: I1Ii1I1 * i1i1i1111I / iI1iII1I1I1i * Ii
 if 38 - 38: I1I . Ii
 if 41 - 41: ooo000 % IIiIIiIi11I1 % ooOOO
 if 5 - 5: oOo0O00 / Ii + i1iiIII111 * Oo + Ooo0Ooo + ooo000
 if 96 - 96: i1iiIII111 - IIiIIiIi11I1 / IIiIIiIi11I1 * IiIIii11Ii
 if 67 - 67: Ooo0Ooo . Ooo0Ooo . IiI11Ii111
 if 24 - 24: i1iiIII111 + i1i1i1111I . oOo0O00 + iI1iII1I1I1i + IiI11Ii111
 if 92 - 92: iI1iII1I1I1i / iI1iII1I1I1i + IiIIii11Ii . IiI11Ii111
 if 56 - 56: Ii * ooo000 . IiIIii11Ii
 if 66 - 66: I1Ii1I1 * OooOoo . iI1iII1I1I1i % OooOoo . i1 . IiIIii11Ii
 if 47 - 47: Ii % OooOoo % iI1iII1I1I1i * IiIIii11Ii
 if 48 - 48: i1I . I11iiIi11i1I / ooo000 + i1iiIII111
 if 84 - 84: Oo / I1Ii1I1 . IIiIIiIi11I1
 if 67 - 67: Oo % ooOOO + iI1iII1I1I1i * I1I
 if 79 - 79: IIiIIiIi11I1 * Oo / OooOoo
 if 10 - 10: iI1iII1I1I1i / i1iiIII111 . IiIIii11Ii * i1i1i1111I
 if 71 - 71: oOo0O00 + I1Ii1I1 / I11iiIi11i1I + Oo / I1I
 if 18 - 18: Iii1i - IiIIii11Ii
 if 71 - 71: iI1iII1I1I1i + OooOoo % i1i1i1111I % oOo0O00 . ooo000
 if 92 - 92: I11iiIi11i1I - Ooo0Ooo - i1i1i1111I % i1iiIII111 / i1i1i1111I * iI1iII1I1I1i
 if 60 - 60: IiIIii11Ii % oOO / i1I * OooOoo / I11iiIi11i1I - Ii
 if 16 - 16: oOo0O00 / I1Ii1I1 / i1 + I11iiIi11i1I + oOo0O00
 if 11 - 11: oOO / OooOoo + oOo0O00
 if 79 - 79: I11iiIi11i1I . I1Ii1I1 * i1I % I1Ii1I1 / IiI11Ii111
 if 93 - 93: i1I + Iii1i . Ii . i1I * ooOOO
 if 84 - 84: Ooo0Ooo % IiI11Ii111
 if 82 - 82: IIiIIiIi11I1
 if 81 - 81: oOo0O00 + i1 - ooo000 * iI1iII1I1I1i + i1i1i1111I
 if 89 - 89: I1Ii1I1
 if 57 - 57: iI1iII1I1I1i - i1iiIII111 / OooOoo % i1iiIII111
 if 92 - 92: IiIIii11Ii * OooOoo - IiIIii11Ii
 if 66 - 66: i1iiIII111 . iI1iII1I1I1i / ooOOO . i1 - OooOoo
 if 13 - 13: oOo0O00
 if 50 - 50: i1 - i1iiIII111 / i1iiIII111 % I1Ii1I1 / IIiIIiIi11I1
 if 66 - 66: oOo0O00 - Iii1i - ooo000 . I11iiIi11i1I
 if 59 - 59: i1I / IiIIii11Ii
 if 7 - 7: oOo0O00
 if 64 - 64: IIiIIiIi11I1 * oOO + Oo . OooOoo - ooOOO
 if 94 - 94: IiIIii11Ii - ooo000 . Ii
 if 73 - 73: IiIIii11Ii / oOo0O00 % ooo000 . iI1iII1I1I1i % oOO
 if 36 - 36: IiI11Ii111 * OooOoo . ooo000 . i1iiIII111 + oOO
 if 47 - 47: IiI11Ii111 / I11iiIi11i1I
 if 52 - 52: Ii . OooOoo . i1iiIII111 * I11iiIi11i1I - iI1iII1I1I1i
 if 20 - 20: OooOoo % IiI11Ii111 + I1Ii1I1 + IiI11Ii111 - oOo0O00
 if 76 - 76: I11iiIi11i1I % IIiIIiIi11I1 % i1I
 if 39 - 39: IiIIii11Ii . Oo + i1I - oOo0O00
 if 93 - 93: Iii1i * IIiIIiIi11I1 % i1I + i1 % Ii * i1I
 if 62 - 62: IiI11Ii111 % ooo000
 if 19 - 19: Ii / Oo % Iii1i / i1iiIII111 - OooOoo - Ooo0Ooo
 if 89 - 89: I11iiIi11i1I - IiI11Ii111
 if 61 - 61: Ii * OooOoo * I1I % i1iiIII111 % IIiIIiIi11I1 * I11iiIi11i1I
 if 49 - 49: iI1iII1I1I1i / i1iiIII111 % oOO
 if 46 - 46: ooOOO * IIiIIiIi11I1 % i1 / oOO + i1 + oOo0O00
 if 99 - 99: I1I * IIiIIiIi11I1 * i1iiIII111
 if 62 - 62: ooOOO % Oo + i1I
 if 87 - 87: ooo000 - OooOoo + Ii + i1i1i1111I + IiIIii11Ii
 if 57 - 57: IIiIIiIi11I1 + I1I / ooOOO % ooOOO % Oo / IiI11Ii111
 if 95 - 95: i1 / I11iiIi11i1I . i1 / Oo . Ooo0Ooo
 if 43 - 43: Oo - OooOoo * oOO . Ooo0Ooo / IIiIIiIi11I1 * IIiIIiIi11I1
 if 84 - 84: i1iiIII111 + oOo0O00
 if 83 - 83: i1i1i1111I
 if 84 - 84: oOO / Ii * Ooo0Ooo / Ii / ooo000
 if 64 - 64: oOo0O00 * Ii
 if 2 - 2: IiI11Ii111 % i1iiIII111 . oOo0O00
 if 59 - 59: I11iiIi11i1I % OooOoo - iI1iII1I1I1i % I1I + i1iiIII111 . I1Ii1I1
 if 94 - 94: ooOOO * I1Ii1I1 * i1iiIII111 . oOo0O00
 if 73 - 73: I1Ii1I1 / ooo000 % I11iiIi11i1I - i1i1i1111I + Oo - I1Ii1I1
 if 18 - 18: i1 + ooOOO . i1 - iI1iII1I1I1i
 if 97 - 97: oOo0O00 + i1I % Iii1i
 if 34 - 34: i1 + Oo . oOo0O00 - ooo000 / I11iiIi11i1I * oOo0O00
 if 89 - 89: oOo0O00
 if 48 - 48: i1 / IIiIIiIi11I1 / iI1iII1I1I1i / IiI11Ii111 * IiIIii11Ii
 if 54 - 54: IIiIIiIi11I1 % I1I % IiI11Ii111 / I11iiIi11i1I . I11iiIi11i1I - IiIIii11Ii
 if 10 - 10: Ii . I11iiIi11i1I % i1I / OooOoo % I1Ii1I1
 if 42 - 42: Oo - I1I * i1I * i1i1i1111I - I11iiIi11i1I
 if 58 - 58: iI1iII1I1I1i
 if 17 - 17: iI1iII1I1I1i - Ii % iI1iII1I1I1i % oOo0O00 * Iii1i
 if 51 - 51: I1I . i1i1i1111I % Ii
 if 55 - 55: i1i1i1111I * Ii % i1i1i1111I
 if 61 - 61: oOo0O00
 if 53 - 53: Ooo0Ooo / IiIIii11Ii
 if 49 - 49: ooo000 - oOO . IiIIii11Ii / Oo
 if 23 - 23: I11iiIi11i1I - i1 / Iii1i . iI1iII1I1I1i + oOO
 if 55 - 55: i1 - iI1iII1I1I1i / OooOoo + I1I + Oo
 if 5 - 5: IiI11Ii111 - i1 . i1i1i1111I / IiI11Ii111 . iI1iII1I1I1i . IiI11Ii111
 if 87 - 87: i1 . Ii * iI1iII1I1I1i - oOO / Ii / OooOoo
 if 65 - 65: i1I / i1I + IiI11Ii111
 if 99 - 99: i1 + OooOoo + I11iiIi11i1I * Ooo0Ooo / ooOOO + Ii
 if 72 - 72: I1Ii1I1 * Ooo0Ooo * IIiIIiIi11I1 % IiIIii11Ii . ooo000
 if 68 - 68: Ooo0Ooo * OooOoo - oOo0O00
 if 49 - 49: IIiIIiIi11I1 % i1
 if 29 - 29: OooOoo * Ii - oOO
 if 53 - 53: I11iiIi11i1I % ooo000 / ooOOO / I1I
 if 43 - 43: iI1iII1I1I1i . i1i1i1111I + I1I % ooOOO . IiI11Ii111 - IiI11Ii111
 if 6 - 6: I1I
 if 98 - 98: oOO * IIiIIiIi11I1 / i1iiIII111 / Iii1i + I1I
 if 25 - 25: IIiIIiIi11I1 . IiI11Ii111 / I1I * i1 - i1iiIII111 % oOo0O00
 if 49 - 49: IiIIii11Ii % ooOOO + I11iiIi11i1I + IIiIIiIi11I1
 if 60 - 60: IIiIIiIi11I1
 if 98 - 98: IiIIii11Ii / Ooo0Ooo + Ii
 if 73 - 73: OooOoo * Iii1i
 if 34 - 34: i1I % Ooo0Ooo * OooOoo + i1iiIII111 / i1
 if 49 - 49: IIiIIiIi11I1 / i1iiIII111 % IIiIIiIi11I1 + IIiIIiIi11I1 * iI1iII1I1I1i
 if 22 - 22: I1Ii1I1 + oOO / I1Ii1I1 - Ii % Ii % i1i1i1111I
 if 86 - 86: Iii1i
 if 53 - 53: i1 * i1i1i1111I
 if 91 - 91: I1I . I11iiIi11i1I
 if 59 - 59: IiI11Ii111 . IiI11Ii111 * IIiIIiIi11I1
 if 85 - 85: Iii1i . oOO % Iii1i - Iii1i
 if 68 - 68: oOO + Iii1i + Ooo0Ooo % Oo / I11iiIi11i1I . OooOoo
 if 31 - 31: I11iiIi11i1I % ooOOO
 if 46 - 46: i1i1i1111I - ooo000 + iI1iII1I1I1i
 if 73 - 73: i1 * oOo0O00
 if 88 - 88: Ii
 if 12 - 12: ooo000 - IIiIIiIi11I1 % Iii1i . I1Ii1I1
 if 11 - 11: i1iiIII111 - Oo % Ii % i1
 if 28 - 28: IIiIIiIi11I1 % Ii + ooOOO . i1I % Ii * I1Ii1I1
 if 41 - 41: I1I
 if 76 - 76: ooo000 * i1i1i1111I
 if 39 - 39: i1 % i1I
 if 50 - 50: i1iiIII111 % OooOoo - i1i1i1111I * IiIIii11Ii % Oo . Ooo0Ooo
 if 30 - 30: i1iiIII111
 if 78 - 78: ooo000 % Iii1i + ooOOO * IIiIIiIi11I1 - i1
 if 46 - 46: Ooo0Ooo - i1I / ooo000 * IiI11Ii111 . oOo0O00
 if 32 - 32: i1i1i1111I . OooOoo + OooOoo - ooo000 * IiIIii11Ii + Oo
 if 12 - 12: oOo0O00
 if 57 - 57: Oo + i1i1i1111I / I1Ii1I1
 if 56 - 56: oOO % Ooo0Ooo % Iii1i . i1i1i1111I
 if 46 - 46: IiI11Ii111 . i1iiIII111 % Iii1i - Ooo0Ooo + ooo000
 if 100 - 100: oOO
 if 32 - 32: I1Ii1I1 % ooo000 * OooOoo / oOo0O00 + ooOOO
 if 64 - 64: I1Ii1I1 . Ooo0Ooo
 if 36 - 36: IIiIIiIi11I1 + IiIIii11Ii . i1 + IIiIIiIi11I1
 if 77 - 77: iI1iII1I1I1i / OooOoo . Iii1i + i1iiIII111 - IiI11Ii111
 if 49 - 49: i1iiIII111 - IiI11Ii111 - OooOoo
 if 39 - 39: I1I % i1iiIII111 - I1Ii1I1
 if 51 - 51: IIiIIiIi11I1 + i1 % i1iiIII111
 if 49 - 49: IiIIii11Ii - i1I . I1I
 if 76 - 76: oOO / iI1iII1I1I1i . I1I * oOo0O00 - i1i1i1111I
 if 53 - 53: OooOoo - oOo0O00 * ooOOO / OooOoo * Ooo0Ooo * ooo000
 if 10 - 10: IIiIIiIi11I1 % ooo000 % I11iiIi11i1I % Ooo0Ooo
 if 70 - 70: IiIIii11Ii
 if 90 - 90: i1i1i1111I % i1 . IiIIii11Ii * IiI11Ii111 / Ii
 if 73 - 73: ooo000 * Ooo0Ooo + Iii1i . ooOOO . I11iiIi11i1I / I11iiIi11i1I
 if 72 - 72: i1I * iI1iII1I1I1i / ooo000 + i1I - I11iiIi11i1I
 if 20 - 20: IIiIIiIi11I1 . oOo0O00 . Ooo0Ooo
 if 11 - 11: OooOoo
 if 45 - 45: iI1iII1I1I1i + I11iiIi11i1I / IIiIIiIi11I1
 if 45 - 45: iI1iII1I1I1i . iI1iII1I1I1i * i1i1i1111I + oOo0O00
 if 6 - 6: Iii1i . Oo + I1Ii1I1 * i1 * I1Ii1I1 % oOO
 if 21 - 21: Ooo0Ooo % i1 - ooo000
 if 81 - 81: Ooo0Ooo / ooo000
 if 4 - 4: I1I % i1I - ooo000 - I1I . ooOOO / i1i1i1111I
 if 74 - 74: oOO
 if 24 - 24: I1I + Oo - ooOOO
 if 86 - 86: i1iiIII111 % ooo000 % ooo000 % i1I
 if 15 - 15: iI1iII1I1I1i + I1Ii1I1 % oOo0O00
 if 79 - 79: OooOoo . Oo + oOo0O00 / I1Ii1I1 . IiIIii11Ii
 if 89 - 89: ooo000 % Ooo0Ooo
 if 77 - 77: ooo000 % Ooo0Ooo
 if 24 - 24: oOO * I1Ii1I1 * I1Ii1I1 % IIiIIiIi11I1
 if 37 - 37: i1iiIII111 / iI1iII1I1I1i
 if 80 - 80: IiIIii11Ii
 if 2 - 2: I1I / oOO - IIiIIiIi11I1 % Ooo0Ooo
 if 88 - 88: iI1iII1I1I1i - I1Ii1I1 - i1I . Iii1i
 if 98 - 98: Ii + ooOOO
 if 29 - 29: I1Ii1I1 + i1I - IIiIIiIi11I1 * I11iiIi11i1I % Oo
 if 74 - 74: ooOOO
 if 100 - 100: oOO + iI1iII1I1I1i . I1I % Oo - i1
 if 39 - 39: iI1iII1I1I1i
 if 34 - 34: iI1iII1I1I1i . i1 . I1I
 if 95 - 95: IiIIii11Ii * IiI11Ii111 * Ooo0Ooo * IiI11Ii111 / OooOoo
 if 27 - 27: i1I . IiIIii11Ii
 if 69 - 69: oOO % i1iiIII111 / oOo0O00
 if 38 - 38: I11iiIi11i1I + Oo * Ooo0Ooo / ooOOO . OooOoo
 if 90 - 90: OooOoo / i1iiIII111
 if 32 - 32: IIiIIiIi11I1 - i1I / ooOOO * Ooo0Ooo * iI1iII1I1I1i - i1i1i1111I
 if 82 - 82: ooo000
 if 66 - 66: IiIIii11Ii + IIiIIiIi11I1 - i1I + i1i1i1111I . iI1iII1I1I1i * IiIIii11Ii
 if 9 - 9: I1I - I1I - ooOOO - oOo0O00 + i1iiIII111
 if 71 - 71: i1I / i1iiIII111 - Ii * Oo . iI1iII1I1I1i
 if 3 - 3: I1Ii1I1
 if 57 - 57: Ooo0Ooo . OooOoo / oOo0O00 * I1Ii1I1
 if 36 - 36: IiIIii11Ii
 if 33 - 33: IiIIii11Ii
 if 86 - 86: Ii / oOo0O00 - i1 * i1i1i1111I - Oo * Iii1i
 if 28 - 28: OooOoo . i1 % iI1iII1I1I1i % Iii1i
 if 2 - 2: Oo + OooOoo - i1i1i1111I - ooo000 / Oo . Oo
 if 41 - 41: OooOoo + OooOoo - OooOoo
 if 9 - 9: Iii1i % I1Ii1I1 % IiIIii11Ii - I1I * OooOoo
 if 53 - 53: iI1iII1I1I1i * i1i1i1111I / OooOoo . i1I . ooo000
 if 45 - 45: OooOoo + ooOOO / i1i1i1111I * i1
 if 71 - 71: IiI11Ii111 % Iii1i + oOo0O00 * I11iiIi11i1I / IiI11Ii111
 if 66 - 66: ooo000 * oOo0O00
 if 83 - 83: i1
 if 64 - 64: i1 . IiI11Ii111 - I11iiIi11i1I . Iii1i
 if 47 - 47: ooo000 / Ooo0Ooo % IiIIii11Ii
 if 70 - 70: IIiIIiIi11I1 / Iii1i . i1i1i1111I % ooOOO . Ii / Ii
 if 51 - 51: I11iiIi11i1I + Ooo0Ooo - ooo000 * oOO . oOO
 if 79 - 79: i1i1i1111I + oOo0O00
 if 11 - 11: OooOoo / i1iiIII111 % i1I - i1i1i1111I * oOo0O00
 if 90 - 90: i1 * i1 . Ooo0Ooo . Oo
 if 59 - 59: Ii % I1Ii1I1 + Iii1i . OooOoo * Iii1i
 if 21 - 21: I11iiIi11i1I + ooOOO % IiIIii11Ii / OooOoo
 if 96 - 96: Oo * i1iiIII111 . Ooo0Ooo
 if 35 - 35: ooOOO . i1I * i1i1i1111I * iI1iII1I1I1i - I11iiIi11i1I
 if 47 - 47: IIiIIiIi11I1
 if 73 - 73: I1Ii1I1 + ooOOO
 if 99 - 99: i1I
 if 87 - 87: i1 . I11iiIi11i1I * Ii . i1 . IIiIIiIi11I1 . IiIIii11Ii
 if 50 - 50: Ii / oOO
 if 92 - 92: Ooo0Ooo * i1iiIII111 / Ooo0Ooo / i1iiIII111 * i1i1i1111I + i1I
 if 48 - 48: I11iiIi11i1I
 if 87 - 87: I1Ii1I1
 if 29 - 29: ooo000 . iI1iII1I1I1i . oOo0O00 + i1i1i1111I + oOO
 if 59 - 59: IiIIii11Ii
 if 26 - 26: oOo0O00 % IiI11Ii111 * i1
 if 60 - 60: IIiIIiIi11I1 % oOO / i1
 if 20 - 20: Ooo0Ooo
 if 4 - 4: IiIIii11Ii % Iii1i
 if 43 - 43: ooo000
 if 95 - 95: Oo + I11iiIi11i1I / Ooo0Ooo / Ii - ooOOO / i1i1i1111I
 if 6 - 6: Ooo0Ooo % IiIIii11Ii
 if 59 - 59: i1I . I11iiIi11i1I . ooo000 / i1I . Ii % Ooo0Ooo
 if 85 - 85: oOo0O00 / ooOOO
 if 41 - 41: i1iiIII111 * iI1iII1I1I1i + i1 + i1i1i1111I
 if 26 - 26: Oo % OooOoo
 if 14 - 14: iI1iII1I1I1i - i1iiIII111
 if 53 - 53: oOO
 if 46 - 46: oOo0O00 - iI1iII1I1I1i
 if 34 - 34: i1i1i1111I
 if 21 - 21: IiI11Ii111 + I1I . OooOoo + i1 . ooo000 + I11iiIi11i1I
 if 7 - 7: ooOOO + Iii1i / iI1iII1I1I1i - oOO % Oo / iI1iII1I1I1i
 if 14 - 14: Iii1i . Ii
 if 100 - 100: I1I / ooo000
 if 48 - 48: i1i1i1111I * i1I % i1i1i1111I + i1i1i1111I . iI1iII1I1I1i / OooOoo
 if 12 - 12: Ii . Ii - I1Ii1I1
 if 74 - 74: ooo000 * Iii1i - Ooo0Ooo - I1Ii1I1
 if 46 - 46: ooOOO / ooOOO
 if 58 - 58: IiI11Ii111 . IiI11Ii111
 if 79 - 79: oOo0O00 * IIiIIiIi11I1
 if 53 - 53: Ii - ooOOO . OooOoo - I1I - I11iiIi11i1I
 if 32 - 32: Iii1i % IiIIii11Ii - oOO - IiIIii11Ii - I11iiIi11i1I % i1iiIII111
 if 50 - 50: Iii1i / IiI11Ii111 + i1
 if 4 - 4: IIiIIiIi11I1 . IiIIii11Ii % i1I
 if 30 - 30: i1 . i1
 if 35 - 35: Ii * i1I / IiIIii11Ii - I1Ii1I1 / i1
 if 76 - 76: IiIIii11Ii * Iii1i % IiIIii11Ii
 if 73 - 73: i1I / IIiIIiIi11I1 / oOo0O00 % IIiIIiIi11I1 / Ii
 if 12 - 12: i1
 if 78 - 78: I11iiIi11i1I . IIiIIiIi11I1
 if 1 - 1: I1I % i1iiIII111 / I1Ii1I1
 if 42 - 42: Iii1i
 if 19 - 19: OooOoo * I11iiIi11i1I . i1i1i1111I + ooo000 + i1I
 if 13 - 13: i1iiIII111 + I1Ii1I1 / Ooo0Ooo
 if 82 - 82: i1iiIII111 * oOO / IiI11Ii111 * IiIIii11Ii
 if 29 - 29: I1Ii1I1 % oOo0O00 - oOo0O00 * I1Ii1I1 / Iii1i * i1I
 if 51 - 51: I1Ii1I1 . i1iiIII111 % i1 % i1I * Oo
 if 64 - 64: i1i1i1111I + i1
 if 45 - 45: i1i1i1111I / i1iiIII111 * iI1iII1I1I1i
 if 2 - 2: i1 / i1i1i1111I * IiIIii11Ii
 if 33 - 33: Iii1i
 if 7 - 7: Ooo0Ooo - Ooo0Ooo / ooo000 - IiIIii11Ii
 if 70 - 70: IIiIIiIi11I1 . i1 % iI1iII1I1I1i / i1i1i1111I
 if 5 - 5: i1iiIII111 . Oo + i1i1i1111I
 if 44 - 44: I1Ii1I1 - i1i1i1111I
 if 71 - 71: i1iiIII111
 if 77 - 77: Iii1i - I1Ii1I1 - Ooo0Ooo % Ii / Oo
 if 43 - 43: Ooo0Ooo / oOO
 if 93 - 93: ooOOO % oOo0O00 * i1 + Ii . i1I - oOO
 if 63 - 63: IiIIii11Ii . Iii1i
 if 55 - 55: oOo0O00
 if 85 - 85: IIiIIiIi11I1 % Oo / I1I . oOo0O00 / IIiIIiIi11I1 . Oo
 if 40 - 40: IIiIIiIi11I1 - ooOOO * oOO . ooo000
 if 24 - 24: IiIIii11Ii - iI1iII1I1I1i / Ii
 if 34 - 34: ooOOO - ooOOO / Ii % OooOoo
 if 97 - 97: Oo * IiIIii11Ii . Ooo0Ooo % i1 % Ii % ooo000
 if 67 - 67: IIiIIiIi11I1 % i1 % oOo0O00 - i1i1i1111I
 if 51 - 51: I11iiIi11i1I . I11iiIi11i1I % IiI11Ii111 % Oo / I1Ii1I1 - I1Ii1I1
 if 28 - 28: Ii / Ooo0Ooo
 if 11 - 11: I1I - OooOoo * ooOOO % i1i1i1111I + ooo000 . oOO
 if 51 - 51: ooOOO + iI1iII1I1I1i % IiI11Ii111 . I11iiIi11i1I % Ooo0Ooo
 if 15 - 15: OooOoo / i1I % Oo % Oo
 if 73 - 73: oOo0O00
 if 69 - 69: ooOOO - IIiIIiIi11I1 - i1I
 if 78 - 78: I1Ii1I1 . ooo000 + IiI11Ii111 / IiI11Ii111
 if 88 - 88: Ii - i1iiIII111 - i1 * IIiIIiIi11I1 . IiIIii11Ii + Iii1i
 if 44 - 44: ooOOO + Oo - i1
 if 18 - 18: iI1iII1I1I1i * ooOOO + Ooo0Ooo
 if 78 - 78: I1I . I1I - IIiIIiIi11I1 - IiIIii11Ii % I11iiIi11i1I . I1Ii1I1
 if 9 - 9: I11iiIi11i1I * OooOoo - I11iiIi11i1I
 if 73 - 73: I1Ii1I1
 if 25 - 25: i1 . Ii
 if 59 - 59: IiIIii11Ii
 if 91 - 91: IiIIii11Ii + iI1iII1I1I1i
 if 65 - 65: Oo * Iii1i * IiIIii11Ii / IIiIIiIi11I1
 if 77 - 77: IIiIIiIi11I1 / oOO % IiIIii11Ii + I1Ii1I1
 if 34 - 34: i1i1i1111I * Iii1i + Ii - i1I / i1 / i1
 if 87 - 87: Ooo0Ooo + I11iiIi11i1I
 if 3 - 3: IIiIIiIi11I1 . I1Ii1I1 / Iii1i % ooOOO / oOo0O00 % ooOOO
 if 55 - 55: iI1iII1I1I1i + I1I + oOo0O00 - I11iiIi11i1I
 if 80 - 80: Oo % I11iiIi11i1I . IiIIii11Ii * oOO
 if 83 - 83: oOo0O00 % Oo + i1i1i1111I - ooOOO + i1iiIII111
 if 36 - 36: oOo0O00 * OooOoo / I11iiIi11i1I
 if 98 - 98: IiI11Ii111 . ooo000
 if 85 - 85: OooOoo * Iii1i * IIiIIiIi11I1
 if 38 - 38: ooo000 - Ii - i1I
 if 91 - 91: i1iiIII111 / i1 * oOO * IIiIIiIi11I1 * IiIIii11Ii
 if 65 - 65: oOO / oOo0O00 / Oo
 if 61 - 61: ooOOO * oOO
 if 98 - 98: i1iiIII111 * i1i1i1111I
 if 29 - 29: oOo0O00 / i1iiIII111 - IiIIii11Ii
 if 34 - 34: iI1iII1I1I1i + IIiIIiIi11I1 . i1I . IiI11Ii111 % i1i1i1111I
 if 61 - 61: Oo % ooo000
 if 68 - 68: Ii - OooOoo / I1I
 if 44 - 44: iI1iII1I1I1i % i1iiIII111 / I1Ii1I1 * i1i1i1111I
 if 63 - 63: I1Ii1I1 * Ii + Iii1i
 if 58 - 58: I1Ii1I1 / I1Ii1I1 % IIiIIiIi11I1
 if 98 - 98: OooOoo
 if 79 - 79: Ooo0Ooo * Ooo0Ooo - ooo000 - Iii1i
 if 5 - 5: IiIIii11Ii / i1iiIII111 . I1I % Iii1i . i1
 if 29 - 29: oOo0O00 + Oo / I11iiIi11i1I - oOo0O00 % i1i1i1111I / Ii
 if 39 - 39: I11iiIi11i1I - I11iiIi11i1I % i1iiIII111
 if 56 - 56: i1iiIII111 / IiIIii11Ii - I1Ii1I1 / Iii1i - i1 / OooOoo
 if 28 - 28: i1I . I1Ii1I1 % IiIIii11Ii . Ii * ooOOO - oOO
 if 80 - 80: IiI11Ii111
 if 7 - 7: Iii1i . Oo . iI1iII1I1I1i - Oo - ooOOO % IIiIIiIi11I1
 if 90 - 90: Iii1i / oOo0O00
 if 54 - 54: I11iiIi11i1I . IiI11Ii111 + OooOoo % Oo - IiI11Ii111 % Oo
 if 37 - 37: Oo
 if 64 - 64: I1I % ooOOO
 if 67 - 67: Ooo0Ooo + oOo0O00
 if 21 - 21: oOO
 if 64 - 64: IIiIIiIi11I1 * i1iiIII111
 if 31 - 31: Iii1i
 if 86 - 86: Oo
 if 74 - 74: OooOoo - I11iiIi11i1I . Oo . i1 + oOo0O00 - ooOOO
 if 60 - 60: Oo
 if 23 - 23: oOo0O00
 if 47 - 47: Ooo0Ooo + Oo * Ii . OooOoo . I1Ii1I1 * i1iiIII111
 if 46 - 46: ooOOO % i1i1i1111I * i1iiIII111 + I1Ii1I1
 if 15 - 15: iI1iII1I1I1i - ooo000 + IIiIIiIi11I1 * Ooo0Ooo
 if 84 - 84: OooOoo . Ii
 if 21 - 21: Ooo0Ooo
 if 76 - 76: iI1iII1I1I1i % IiI11Ii111 / IiIIii11Ii - IiI11Ii111
 if 4 - 4: OooOoo * IIiIIiIi11I1 - Ooo0Ooo . Ii - ooOOO . i1iiIII111
 if 2 - 2: I11iiIi11i1I * i1I * i1I * i1iiIII111 / I11iiIi11i1I % IiI11Ii111
 if 13 - 13: i1 * IiIIii11Ii - ooo000 * OooOoo
 if 72 - 72: Iii1i . I1Ii1I1 * IIiIIiIi11I1 % I1Ii1I1 - i1i1i1111I
 if 97 - 97: i1 + ooOOO + I11iiIi11i1I . i1
 if 71 - 71: ooo000 - i1i1i1111I / iI1iII1I1I1i - iI1iII1I1I1i % IIiIIiIi11I1 . iI1iII1I1I1i
 if 41 - 41: IIiIIiIi11I1
 if 96 - 96: Oo . Ooo0Ooo - oOO . Iii1i % IiI11Ii111 . IiI11Ii111
 if 82 - 82: oOO % iI1iII1I1I1i / i1iiIII111
 if 47 - 47: i1
 if 59 - 59: IiI11Ii111 % IIiIIiIi11I1 % IiIIii11Ii
 if 92 - 92: Oo . i1 * i1iiIII111 . IiIIii11Ii
 if 82 - 82: I11iiIi11i1I % Oo + Ii
 if 22 - 22: Ooo0Ooo / ooOOO . I1I % I1I
 if 16 - 16: iI1iII1I1I1i / i1iiIII111 / Ooo0Ooo . Ii
 if 82 - 82: Oo % iI1iII1I1I1i - i1I * OooOoo % Iii1i - I11iiIi11i1I
 if 95 - 95: oOO
 if 56 - 56: I11iiIi11i1I - i1I / OooOoo / ooo000 . IiI11Ii111
 if 78 - 78: ooo000 % IiI11Ii111 - i1
 if 36 - 36: oOo0O00 + OooOoo - Ooo0Ooo / IiI11Ii111
 if 90 - 90: oOo0O00 % oOO * oOO + I1I * I1I / IiI11Ii111
 if 92 - 92: IiIIii11Ii * OooOoo * I1Ii1I1
 if 65 - 65: i1iiIII111 * Oo * oOO + i1I - i1I
 if 86 - 86: oOO - Ooo0Ooo + I11iiIi11i1I . Iii1i . OooOoo - Ii
 if 86 - 86: I1I
 if 35 - 35: ooOOO + OooOoo
 if 8 - 8: I1I + Ii % iI1iII1I1I1i + IiI11Ii111 . oOO * i1
 if 96 - 96: ooo000 % I11iiIi11i1I / oOo0O00 * Ii * ooo000 - Ooo0Ooo
 if 88 - 88: Ii % ooOOO . I1I
 if 80 - 80: IiIIii11Ii / oOO % IiI11Ii111 * I1I
 if 100 - 100: oOo0O00 / I1Ii1I1 - i1i1i1111I * I1Ii1I1 / I11iiIi11i1I * Oo
 if 49 - 49: Ooo0Ooo
 if 36 - 36: OooOoo + i1I / Iii1i + iI1iII1I1I1i + OooOoo
 if 6 - 6: IiI11Ii111 + Ii
 if 100 - 100: oOo0O00 % i1I - IiIIii11Ii % i1iiIII111 . i1 % I1Ii1I1
 if 67 - 67: I11iiIi11i1I
 if 21 - 21: oOO % i1i1i1111I - i1 + I1I
 if 85 - 85: IiIIii11Ii + I1I + IiI11Ii111
 if 68 - 68: Iii1i % IiIIii11Ii . i1 - IiI11Ii111
 if 80 - 80: i1iiIII111 . ooo000
 if 15 - 15: oOO + oOo0O00 * I11iiIi11i1I . IiIIii11Ii
 if 66 - 66: IIiIIiIi11I1 - oOo0O00 . I1I * I11iiIi11i1I + i1i1i1111I
 if 13 - 13: oOO % Iii1i
 if 81 - 81: I1I
 if 86 - 86: Ooo0Ooo / I1I . Ooo0Ooo % i1i1i1111I * OooOoo * Iii1i
 if 59 - 59: Ii + i1i1i1111I . I1Ii1I1 . oOO + i1I . i1
 if 34 - 34: iI1iII1I1I1i - ooo000 * i1iiIII111 - Iii1i
 if 50 - 50: oOO . IiI11Ii111 . i1I . i1i1i1111I . I11iiIi11i1I + Oo
 if 38 - 38: IiI11Ii111 + oOo0O00 . ooo000 - Iii1i - I1Ii1I1 - oOO
 if 29 - 29: ooo000 * oOO
 if 38 - 38: oOo0O00 / IiIIii11Ii * oOO . OooOoo % Ii . Iii1i
 if 74 - 74: oOO - i1i1i1111I % I1I + IiIIii11Ii * I1I
 if 53 - 53: OooOoo % I1Ii1I1 / IiI11Ii111 / I1I + I1Ii1I1 . i1I
 if 7 - 7: oOO - oOo0O00 . i1i1i1111I * Oo + I1I
 if 93 - 93: i1iiIII111 - OooOoo + i1 * oOo0O00 . IiI11Ii111
 if 9 - 9: IIiIIiIi11I1 + iI1iII1I1I1i
 if 43 - 43: oOo0O00 * i1I * i1I / IiIIii11Ii % i1iiIII111
 if 55 - 55: i1iiIII111 . i1
 if 29 - 29: Ooo0Ooo * IiIIii11Ii + i1iiIII111 / iI1iII1I1I1i - IiIIii11Ii - oOo0O00
 if 63 - 63: I1Ii1I1 . IiI11Ii111 * ooOOO . oOO / I1I
 if 34 - 34: i1i1i1111I * i1i1i1111I * I11iiIi11i1I . Iii1i * i1I % ooo000
 if 99 - 99: Ii / ooOOO % oOO % OooOoo - IiIIii11Ii
 if 51 - 51: oOo0O00 % OooOoo
 if 60 - 60: i1i1i1111I % IiIIii11Ii - Iii1i % i1 * IiI11Ii111
 if 88 - 88: OooOoo % iI1iII1I1I1i
 if 21 - 21: i1I % OooOoo
 if 95 - 95: IiIIii11Ii - i1 . i1 - ooOOO . i1 + Ii
 if 86 - 86: IiIIii11Ii % ooo000
 if 61 - 61: Ii . i1iiIII111 * I11iiIi11i1I . ooOOO
 if 95 - 95: oOO % I1Ii1I1 % ooo000
 if 84 - 84: i1I + i1i1i1111I * ooOOO % ooo000
 if 29 - 29: IiIIii11Ii - IIiIIiIi11I1 + IiI11Ii111 - I11iiIi11i1I . OooOoo
 if 57 - 57: i1i1i1111I / I11iiIi11i1I
 if 83 - 83: OooOoo / I1Ii1I1 / IiIIii11Ii
 if 78 - 78: i1 . i1iiIII111 - Oo * IIiIIiIi11I1 - I1I - i1I
 if 21 - 21: Iii1i - Ii / i1I / I1Ii1I1 % I11iiIi11i1I / Ii
 if 74 - 74: I1Ii1I1 . ooOOO
 if 24 - 24: IiI11Ii111 - Iii1i % oOo0O00 * I1I . iI1iII1I1I1i
 if 78 - 78: I1Ii1I1 - Ooo0Ooo / OooOoo % i1I
 if 99 - 99: I11iiIi11i1I % ooOOO
 if 22 - 22: i1iiIII111 * IiI11Ii111 - i1i1i1111I % ooo000 / OooOoo - Oo
 if 3 - 3: I11iiIi11i1I % Ooo0Ooo
 if 20 - 20: I1Ii1I1 . IiI11Ii111 - Ii % I11iiIi11i1I % Oo
 if 12 - 12: OooOoo * oOO % Ooo0Ooo . I11iiIi11i1I
 if 54 - 54: I11iiIi11i1I . i1 - IIiIIiIi11I1
 if 99 - 99: i1I + i1I * Ooo0Ooo . OooOoo
 if 33 - 33: i1i1i1111I / IiI11Ii111 + Ooo0Ooo % ooOOO
 if 25 - 25: Iii1i
 if 74 - 74: I11iiIi11i1I . ooo000 . I1I * i1iiIII111 * Ooo0Ooo
 if 47 - 47: OooOoo
 if 55 - 55: ooOOO % oOO + i1I - IiI11Ii111 + ooo000 + I1I
 if 53 - 53: IIiIIiIi11I1 % IiIIii11Ii / oOO % ooOOO - oOo0O00
 if 74 - 74: ooo000 * OooOoo * Oo
 if 96 - 96: I1Ii1I1 - Oo
 if 28 - 28: i1iiIII111 - IiI11Ii111 % Ii * ooo000 / Iii1i
 if 12 - 12: IiI11Ii111 - Ooo0Ooo
 if 12 - 12: ooOOO
 if 29 - 29: IiI11Ii111 . ooo000 . ooo000
 if 79 - 79: oOo0O00 % IiI11Ii111 * I1Ii1I1 . IIiIIiIi11I1 * Iii1i - I1I
 if 85 - 85: I1I + IiI11Ii111 . I11iiIi11i1I % i1 * IiI11Ii111
 if 22 - 22: IiIIii11Ii . Iii1i / i1i1i1111I / ooo000 + ooo000 + ooo000
 if 76 - 76: Iii1i % i1i1i1111I
 if 12 - 12: oOO + IiIIii11Ii % ooOOO + IiI11Ii111 / I1I
 if 59 - 59: Iii1i % I1Ii1I1 + I11iiIi11i1I - Oo
 if 72 - 72: I11iiIi11i1I
 if 38 - 38: I11iiIi11i1I . oOO + i1I
 if 33 - 33: ooo000 - IIiIIiIi11I1 % i1iiIII111 / iI1iII1I1I1i - Iii1i % IIiIIiIi11I1
 if 15 - 15: ooo000 . i1 * i1
 if 41 - 41: I11iiIi11i1I + Iii1i % ooOOO * i1
 if 37 - 37: ooo000
 if 87 - 87: i1i1i1111I + I1Ii1I1 % i1iiIII111 - I1I + ooOOO % I1Ii1I1
 if 96 - 96: IIiIIiIi11I1 / I1I * i1 / I1I + I1I / i1
 if 80 - 80: Oo / i1i1i1111I . IIiIIiIi11I1
 if 79 - 79: oOO
 if 6 - 6: IiI11Ii111 + IIiIIiIi11I1 + ooOOO % IIiIIiIi11I1
 if 24 - 24: ooo000 + i1I / Ii / Ooo0Ooo % IIiIIiIi11I1
 if 70 - 70: I11iiIi11i1I
 if 45 - 45: I1Ii1I1 * Oo - I11iiIi11i1I * iI1iII1I1I1i
 if 41 - 41: Iii1i . I1I * i1I - i1iiIII111 . IiI11Ii111 + ooOOO
 if 24 - 24: i1 + IIiIIiIi11I1 + i1iiIII111 % I1Ii1I1 + IIiIIiIi11I1
 if 55 - 55: IiIIii11Ii - IiIIii11Ii
 if 52 - 52: I1Ii1I1 - OooOoo % i1I
 if 88 - 88: ooOOO . i1
 if 72 - 72: I1I - OooOoo / Iii1i - I1Ii1I1
 if 54 - 54: I11iiIi11i1I / i1iiIII111 % oOo0O00 - ooOOO
 if 72 - 72: ooo000 . I1Ii1I1 . I1I . IIiIIiIi11I1 + Oo
 if 58 - 58: ooOOO + IiIIii11Ii + oOO % IiIIii11Ii + Ooo0Ooo . Oo
 if 45 - 45: I1I % i1I % oOO * oOo0O00 / i1iiIII111 + I11iiIi11i1I
 if 63 - 63: i1i1i1111I - IiI11Ii111 - iI1iII1I1I1i + OooOoo * i1iiIII111 / Ooo0Ooo
 if 81 - 81: ooo000 % i1i1i1111I . i1iiIII111 / i1iiIII111 / i1iiIII111
 if 84 - 84: ooOOO * ooo000 % ooOOO
 if 57 - 57: i1I * iI1iII1I1I1i % Ooo0Ooo
 if 22 - 22: OooOoo . i1
 if 85 - 85: i1i1i1111I * I1Ii1I1 / ooo000
 if 14 - 14: i1i1i1111I
 if 61 - 61: Iii1i . I11iiIi11i1I - Oo . IiI11Ii111 + OooOoo
 if 11 - 11: oOo0O00 - i1 / oOo0O00 * OooOoo - I11iiIi11i1I / I1Ii1I1
 if 4 - 4: IiIIii11Ii
 if 42 - 42: oOO - oOO + OooOoo - oOO
 if 23 - 23: iI1iII1I1I1i % i1I * I11iiIi11i1I - oOO * oOo0O00
 if 45 - 45: i1 % iI1iII1I1I1i . IiIIii11Ii + Ooo0Ooo
 if 34 - 34: Iii1i + Iii1i
 if 67 - 67: oOo0O00 + IIiIIiIi11I1
 if 69 - 69: IIiIIiIi11I1
 if 97 - 97: Iii1i + oOo0O00 - i1 % Iii1i
 if 71 - 71: Ooo0Ooo / Ooo0Ooo % ooo000
 if 32 - 32: ooo000 * ooo000
 if 29 - 29: Ooo0Ooo . i1 * I11iiIi11i1I
 if 98 - 98: ooOOO * oOO + Ooo0Ooo + i1i1i1111I / I1Ii1I1
 if 18 - 18: iI1iII1I1I1i . iI1iII1I1I1i % ooOOO
 if 90 - 90: I1I - Iii1i + Ii / Iii1i % I1Ii1I1
 if 14 - 14: OooOoo + iI1iII1I1I1i * Iii1i
 if 30 - 30: OooOoo
 if 2 - 2: i1iiIII111 / oOo0O00 - IiIIii11Ii - iI1iII1I1I1i
 if 90 - 90: i1iiIII111
 if 11 - 11: ooOOO . ooo000
 if 10 - 10: I1Ii1I1 - ooOOO / Iii1i - i1 . ooo000
 if 99 - 99: Ii / iI1iII1I1I1i / Oo * I11iiIi11i1I
 if 86 - 86: ooo000 - oOo0O00
 if 42 - 42: Ii * oOO
 if 67 - 67: ooOOO
 if 62 - 62: I1I + Ii + I1I * i1 . Ooo0Ooo * i1iiIII111
 if 2 - 2: i1I + Oo
 if 51 - 51: Ii . i1I
 if 89 - 89: IiI11Ii111 * IiIIii11Ii / i1 . I1Ii1I1
 if 64 - 64: IiI11Ii111
 if 44 - 44: Ii . OooOoo + oOO * OooOoo . i1 - i1iiIII111
 if 72 - 72: iI1iII1I1I1i + I1I * ooo000 . OooOoo + Ii + IIiIIiIi11I1
 if 91 - 91: oOo0O00 % IIiIIiIi11I1 % i1I / I1Ii1I1
 if 70 - 70: iI1iII1I1I1i + IiI11Ii111 + oOO
 if 21 - 21: I11iiIi11i1I
 if 20 - 20: ooOOO + IiIIii11Ii % Iii1i - I11iiIi11i1I
 if 49 - 49: Iii1i / IiIIii11Ii % i1 % i1i1i1111I + oOO * ooo000
 if 25 - 25: IIiIIiIi11I1 * OooOoo % oOo0O00 % Ooo0Ooo + i1iiIII111
 if 15 - 15: I11iiIi11i1I
 if 85 - 85: Ii
 if 17 - 17: I1I . Oo
 if 63 - 63: Ii . i1I
 if 83 - 83: IIiIIiIi11I1 * IiI11Ii111 % i1I * ooOOO
 if 7 - 7: IiI11Ii111 / i1i1i1111I * Iii1i
 if 27 - 27: i1i1i1111I - Ii - oOO + Ooo0Ooo * Ii + IiI11Ii111
 if 35 - 35: i1i1i1111I . i1i1i1111I + I11iiIi11i1I / Oo . i1
 if 69 - 69: I1I / i1 % I1Ii1I1 % oOO
 if 96 - 96: Oo - i1I * iI1iII1I1I1i + Ooo0Ooo * Oo
 if 22 - 22: ooo000 % I11iiIi11i1I
 if 44 - 44: oOO / iI1iII1I1I1i % i1iiIII111 + i1iiIII111 % Ooo0Ooo + Ooo0Ooo
 if 93 - 93: i1 % oOO % I1I
 if 49 - 49: ooOOO * iI1iII1I1I1i + ooo000 - Ii . oOo0O00
 if 77 - 77: I11iiIi11i1I
 if 18 - 18: oOo0O00 . I1I / i1iiIII111
 if 3 - 3: oOO + oOO % i1I % Oo / iI1iII1I1I1i . IiIIii11Ii
 if 20 - 20: IiIIii11Ii + i1I
 if 32 - 32: oOo0O00 + i1i1i1111I
 if 74 - 74: I1I % i1i1i1111I * i1iiIII111 * IIiIIiIi11I1
 if 23 - 23: i1I * IiI11Ii111 . oOo0O00 * Ii
 if 94 - 94: i1i1i1111I - i1iiIII111 . Ooo0Ooo + Oo - i1
 if 96 - 96: Iii1i % ooo000 * oOo0O00 . Ii % oOO + i1I
 if 20 - 20: i1 % Ii / ooo000
 if 58 - 58: I11iiIi11i1I % i1 . oOo0O00 - OooOoo - OooOoo
 if 44 - 44: IIiIIiIi11I1
 if 74 - 74: oOO . ooOOO - ooo000 . Ooo0Ooo % OooOoo * OooOoo
 if 62 - 62: IIiIIiIi11I1 / i1I - oOO / I11iiIi11i1I % i1
 if 32 - 32: ooOOO
 if 100 - 100: i1I + Oo . Ooo0Ooo * Ooo0Ooo
 if 47 - 47: i1iiIII111 / IiI11Ii111 + Iii1i
 if 99 - 99: IiIIii11Ii / iI1iII1I1I1i % IiI11Ii111
 if 19 - 19: i1 . IiIIii11Ii / i1i1i1111I / Oo
 if 95 - 95: i1
 if 80 - 80: Iii1i + i1iiIII111
 if 89 - 89: oOo0O00
 if 58 - 58: i1iiIII111 . oOO / I1I / oOO
 if 67 - 67: IIiIIiIi11I1 % OooOoo % Iii1i
 if 49 - 49: I11iiIi11i1I * ooOOO . Ii / I1I + IiI11Ii111
 if 35 - 35: iI1iII1I1I1i
 if 84 - 84: i1i1i1111I
 if 50 - 50: IiIIii11Ii + Iii1i . ooo000 + ooo000 / Oo % i1iiIII111
 if 63 - 63: i1i1i1111I % I1I / iI1iII1I1I1i % Iii1i % Ii
 if 32 - 32: i1iiIII111 + ooo000 - I1Ii1I1 * IiIIii11Ii . IiIIii11Ii
 if 46 - 46: i1 + ooOOO % ooOOO . Iii1i - ooOOO % i1
 if 20 - 20: OooOoo - ooo000 . I11iiIi11i1I
 if 87 - 87: i1 * i1 - OooOoo % oOo0O00 - IiI11Ii111
 if 43 - 43: OooOoo % OooOoo / oOO % I1I
 if 18 - 18: I11iiIi11i1I * Ooo0Ooo / OooOoo
 if 84 - 84: i1iiIII111 / oOO . Oo % i1iiIII111 / OooOoo
 if 94 - 94: i1iiIII111
 if 53 - 53: iI1iII1I1I1i + ooOOO * I1I / Oo
 if 17 - 17: IiI11Ii111 . IiI11Ii111
 if 35 - 35: IiI11Ii111 % IiI11Ii111 / i1 / Iii1i * IiIIii11Ii
 if 11 - 11: OooOoo - IiI11Ii111 % IiIIii11Ii - ooo000 / IIiIIiIi11I1 - OooOoo
 if 21 - 21: Ii / Ooo0Ooo
 if 98 - 98: ooOOO
 if 53 - 53: I1I * I1I
 if 9 - 9: IiI11Ii111 - IIiIIiIi11I1
 if 89 - 89: i1 - ooo000 - Ii
 if 78 - 78: i1iiIII111 - IiI11Ii111 - i1I * oOO % Ii % I11iiIi11i1I
 if 14 - 14: Ii - I11iiIi11i1I / ooo000 % Ii
 if 72 - 72: Ii % oOo0O00 / ooo000 - oOo0O00
 if 100 - 100: I1Ii1I1 - oOo0O00 - IiI11Ii111
 if 7 - 7: OooOoo % iI1iII1I1I1i - I11iiIi11i1I . I1Ii1I1 . oOO % OooOoo
 if 51 - 51: iI1iII1I1I1i + I1Ii1I1 . i1I - I1I
 if 59 - 59: ooOOO
 if 42 - 42: I1Ii1I1 * Oo * Oo . iI1iII1I1I1i * IiIIii11Ii * i1i1i1111I
 if 68 - 68: I11iiIi11i1I - I1Ii1I1 % oOO - Ii - i1iiIII111 / i1I
 if 85 - 85: OooOoo / I1Ii1I1
 if 99 - 99: Ooo0Ooo . oOo0O00 + iI1iII1I1I1i * I1Ii1I1 + OooOoo . I1I
 if 1 - 1: Iii1i + IIiIIiIi11I1 - oOO - IiI11Ii111 . IIiIIiIi11I1
 if 31 - 31: IIiIIiIi11I1 % iI1iII1I1I1i
 if 53 - 53: IiI11Ii111 . Iii1i % oOO / ooOOO
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
