PiotrDabkowski / pyjsparser

Fast JavaScript parser for Python.
MIT License
246 stars 37 forks source link

Stack overflow when parsing (big) pac file #16

Closed nils-ballmann closed 6 years ago

nils-ballmann commented 6 years ago

My python 3.6.3 code (test.py) :

import pathlib

import pyjsparser as pjp

p = pjp.PyJsParser()
f = p.parse(pathlib.Path('company-proxy.pac').read_text())

print(repr(f))

Results in:

Traceback (most recent call last):
  File "C:\path\to\test.py", line 13, in <module>
    f = p.parse(pathlib.Path('company-proxy.pac').read_text())
  File "C:\Python36\lib\site-packages\pyjsparser\parser.py", line 2864, in parse
    return node_to_dict(program)
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in node_to_dict
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in <genexpr>
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 466, in node_to_dict
    return [node_to_dict(e) for e in node]
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 466, in <listcomp>
    return [node_to_dict(e) for e in node]
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in node_to_dict
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in <genexpr>
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in node_to_dict
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in <genexpr>
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 466, in node_to_dict
    return [node_to_dict(e) for e in node]
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 466, in <listcomp>
    return [node_to_dict(e) for e in node]
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in node_to_dict
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in <genexpr>
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in node_to_dict
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in <genexpr>
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  ... (many more)
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in node_to_dict
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in <genexpr>
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
  File "C:\Python36\lib\site-packages\pyjsparser\std_nodes.py", line 471, in node_to_dict
    return dict((k, node_to_dict(v)) for k, v in node.__dict__.items())
RecursionError: maximum recursion depth exceeded while calling a Python object

Content of 'company-proxy.pac', as far as I can reveal it:

/*
** some comment
*/

function FindProxyForURL(url, host) {

    if (shExpMatch(host, "localhost")) { return "DIRECT"; }
    if (shExpMatch(host, "localhost.*")) { return "DIRECT"; }
    if (shExpMatch(host, "127.0.0.*")) { return "DIRECT"; }
    if (isPlainHostName(host)) { return "DIRECT"; }

    if (shExpMatch(host, "host_pattern_001")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_002")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_003")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_004")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_005")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_006")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_007")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_008")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_009")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_010")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_011")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_012")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_013")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_014")) { return "PROXY proxy_ip_port_3"; }
    if (shExpMatch(host, "host_pattern_015")) { return "PROXY proxy_ip_port_3"; }
    if (shExpMatch(host, "host_pattern_016")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_017")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_018")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_019")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_020")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_021")) { return "PROXY proxy_ip_port_5"; }
    if (shExpMatch(host, "host_pattern_022")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_023")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_024")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_025")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_026")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_027")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_028")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_029")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_030")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_031")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_032")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_033")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_034")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_035")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_036")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_037")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_038")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_039")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_040")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_041")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_042")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_043")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_044")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_045")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_046")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_047")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_048")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_049")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_050")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_051")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_052")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_053")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_054")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_055")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_056")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_057")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_058")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_059")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_060")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_061")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_062")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_063")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_064")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_065")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_066")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_067")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_068")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_069")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_070")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_071")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_072")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_073")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_074")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_075")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_076")) { return "PROXY proxy_ip_port_2"; }
    if (shExpMatch(host, "host_pattern_077")) { return "PROXY proxy_ip_port_4"; }
    if (shExpMatch(host, "host_pattern_078")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_079")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_080")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_081")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_082")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_083")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_084")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_085")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_086")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_087")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_088")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_089")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_090")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_091")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_092")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_093")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_094")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_095")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_096")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_097")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_098")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_099")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_100")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_101")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_102")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_103")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_104")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_105")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_106")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_107")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_108")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_109")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_110")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_111")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_112")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_113")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_114")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_115")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_116")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_117")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_118")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_119")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_120")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_121")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_122")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_123")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_124")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_125")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_126")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_127")) { return "PROXY proxy_ip_port_1"; }
    if (shExpMatch(host, "host_pattern_128")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_129")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_130")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_131")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_132")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_133")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_134")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_135")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_136")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_137")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_138")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_139")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_140")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_141")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_142")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_143")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_144")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_145")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_146")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_147")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_148")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_149")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_150")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_151")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_152")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_153")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_154")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_155")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_156")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_157")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_158")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_159")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_160")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_161")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_162")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_163")) { return "PROXY proxy_ip_port_7; PROXY proxy_ip_port_6"; }
    if (shExpMatch(host, "host_pattern_164")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_165")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_166")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_167")) { return "PROXY proxy_ip_port_8"; }
    if (shExpMatch(host, "host_pattern_168")) { return "DIRECT"; }

    if (shExpMatch(host, "host_pattern_169") ||
        shExpMatch(host, "host_pattern_170") ||
        shExpMatch(host, "host_pattern_171") ||
        shExpMatch(host, "host_pattern_172") ||
        shExpMatch(host, "host_pattern_173") ||
        shExpMatch(host, "host_pattern_174") ||
        shExpMatch(host, "host_pattern_175") ||
        shExpMatch(host, "host_pattern_176") ||
        shExpMatch(host, "host_pattern_177") ||
        shExpMatch(host, "host_pattern_178") ||
        shExpMatch(host, "host_pattern_179") ||
        shExpMatch(host, "host_pattern_180") ||
        shExpMatch(host, "host_pattern_181") ||
        shExpMatch(host, "host_pattern_182") ||
        shExpMatch(host, "host_pattern_183") ||
        shExpMatch(host, "host_pattern_184") ||
        shExpMatch(host, "host_pattern_185") ||
        shExpMatch(host, "host_pattern_186") ||
        shExpMatch(host, "host_pattern_187") ||
        shExpMatch(host, "host_pattern_188") ||
        shExpMatch(host, "host_pattern_189") ||
        shExpMatch(host, "host_pattern_190") ||
        shExpMatch(host, "host_pattern_191") ||
        shExpMatch(host, "host_pattern_192") ||
        shExpMatch(host, "host_pattern_193") ||
        shExpMatch(host, "host_pattern_194") ||
        shExpMatch(host, "host_pattern_195") ||
        shExpMatch(host, "host_pattern_196") ||
        shExpMatch(host, "host_pattern_197") ||
        shExpMatch(host, "host_pattern_198") ||
        shExpMatch(host, "host_pattern_199") ||
        shExpMatch(host, "host_pattern_200") ||
        shExpMatch(host, "host_pattern_201") ||
        shExpMatch(host, "host_pattern_202") ||
        shExpMatch(host, "host_pattern_203") ||
        shExpMatch(host, "host_pattern_204") ||
        shExpMatch(host, "host_pattern_205") ||
        shExpMatch(host, "host_pattern_206") ||
        shExpMatch(host, "host_pattern_207") ||
        shExpMatch(host, "host_pattern_208") ||
        shExpMatch(host, "host_pattern_209") ||
        shExpMatch(host, "host_pattern_210") ||
        shExpMatch(host, "host_pattern_211") ||
        shExpMatch(host, "host_pattern_212") ||
        shExpMatch(host, "host_pattern_213") ||
        shExpMatch(host, "host_pattern_214") ||
        shExpMatch(host, "host_pattern_215") ||
        shExpMatch(host, "host_pattern_216") ||
        shExpMatch(host, "host_pattern_217") ||
        shExpMatch(host, "host_pattern_218") ||
        shExpMatch(host, "host_pattern_219") ||
        shExpMatch(host, "host_pattern_220") ||
        shExpMatch(host, "host_pattern_221") ||
        shExpMatch(host, "host_pattern_222") ||
        shExpMatch(host, "host_pattern_223") ||
        shExpMatch(host, "host_pattern_224") ||
        shExpMatch(host, "host_pattern_225") ||
        shExpMatch(host, "host_pattern_226") ||
        shExpMatch(host, "host_pattern_227") ||
        shExpMatch(host, "host_pattern_228") ||
        shExpMatch(host, "host_pattern_229") ||
        shExpMatch(host, "host_pattern_230") ||
        shExpMatch(host, "host_pattern_231") ||
        shExpMatch(host, "host_pattern_232") ||
        shExpMatch(host, "host_pattern_233") ||
        shExpMatch(host, "host_pattern_234") ||
        shExpMatch(host, "host_pattern_235") ||
        shExpMatch(host, "host_pattern_236") ||
        shExpMatch(host, "host_pattern_237") ||
        shExpMatch(host, "host_pattern_238") ||
        shExpMatch(host, "host_pattern_239") ||
        shExpMatch(host, "host_pattern_240") ||
        shExpMatch(host, "host_pattern_241") ||
        shExpMatch(host, "host_pattern_242") ||
        shExpMatch(host, "host_pattern_243") ||
        shExpMatch(host, "host_pattern_244") ||
        shExpMatch(host, "host_pattern_245") ||
        shExpMatch(host, "host_pattern_246") ||
        shExpMatch(host, "host_pattern_247") ||
        shExpMatch(host, "host_pattern_248") ||
        shExpMatch(host, "host_pattern_249") ||
        shExpMatch(host, "host_pattern_250") ||
        shExpMatch(host, "host_pattern_251") ||
        shExpMatch(host, "host_pattern_252") ||
        shExpMatch(host, "host_pattern_253") ||
        shExpMatch(host, "host_pattern_254") ||
        shExpMatch(host, "host_pattern_255") ||
        shExpMatch(host, "host_pattern_256") ||
        shExpMatch(host, "host_pattern_257") ||
        shExpMatch(host, "host_pattern_258") ||
        shExpMatch(host, "host_pattern_259") ||
        shExpMatch(host, "host_pattern_260") ||
        shExpMatch(host, "host_pattern_261") ||
        shExpMatch(host, "host_pattern_262") ||
        shExpMatch(host, "host_pattern_263") ||
        shExpMatch(host, "host_pattern_264") ||
        shExpMatch(host, "host_pattern_265") ||
        shExpMatch(host, "host_pattern_266") ||
        shExpMatch(host, "host_pattern_267") ||
        shExpMatch(host, "host_pattern_268") ||
        shExpMatch(host, "host_pattern_269") ||
        shExpMatch(host, "host_pattern_270") ||
        shExpMatch(host, "host_pattern_271") ||
        shExpMatch(host, "host_pattern_272") ||
        shExpMatch(host, "host_pattern_273") ||
        shExpMatch(host, "host_pattern_274") ||
        shExpMatch(host, "host_pattern_275") ||
        shExpMatch(host, "host_pattern_276") ||
        shExpMatch(host, "host_pattern_277") ||
        shExpMatch(host, "host_pattern_278") ||
        shExpMatch(host, "host_pattern_279") ||
        shExpMatch(host, "host_pattern_280") ||
        shExpMatch(host, "host_pattern_281") ||
        shExpMatch(host, "host_pattern_282") ||
        shExpMatch(host, "host_pattern_283") ||
        shExpMatch(host, "host_pattern_284") ||
        shExpMatch(host, "host_pattern_285") ||
        shExpMatch(host, "host_pattern_286") ||
        shExpMatch(host, "host_pattern_287") ||
        shExpMatch(host, "host_pattern_288") ||
        shExpMatch(host, "host_pattern_289") ||
        shExpMatch(host, "host_pattern_290") ||
        shExpMatch(host, "host_pattern_291") ||
        shExpMatch(host, "host_pattern_292") ||
        shExpMatch(host, "host_pattern_293") ||
        shExpMatch(host, "host_pattern_294") ||
        shExpMatch(host, "host_pattern_295") ||
        shExpMatch(host, "host_pattern_296") ||
        shExpMatch(host, "host_pattern_297") ||
        shExpMatch(host, "host_pattern_298") ||
        shExpMatch(host, "host_pattern_299") ||
        shExpMatch(host, "host_pattern_300") ||
        shExpMatch(host, "host_pattern_301") ||
        shExpMatch(host, "host_pattern_302") ||
        shExpMatch(host, "host_pattern_303") ||
        shExpMatch(host, "host_pattern_304") ||
        shExpMatch(host, "host_pattern_305") ||
        shExpMatch(host, "host_pattern_306") ||
        shExpMatch(host, "host_pattern_307") ||
        shExpMatch(host, "host_pattern_308") ||
        shExpMatch(host, "host_pattern_309") ||
        shExpMatch(host, "host_pattern_310") ||
        shExpMatch(host, "host_pattern_311") ||
        shExpMatch(host, "host_pattern_312") ||
        shExpMatch(host, "host_pattern_313") ||
        shExpMatch(host, "host_pattern_314") ||
        shExpMatch(host, "host_pattern_315") ||
        shExpMatch(host, "host_pattern_316") ||
        shExpMatch(host, "host_pattern_317") ||
        shExpMatch(host, "host_pattern_318") ||
        shExpMatch(host, "host_pattern_319") ||
        shExpMatch(host, "host_pattern_320") ||
        shExpMatch(host, "host_pattern_321") ||
        shExpMatch(host, "host_pattern_322") ||
        shExpMatch(host, "host_pattern_323") ||
        shExpMatch(host, "host_pattern_324") ||
        shExpMatch(host, "host_pattern_325") ||
        shExpMatch(host, "host_pattern_326") ||
        shExpMatch(host, "host_pattern_327") ||
        shExpMatch(host, "host_pattern_328") ||
        shExpMatch(host, "host_pattern_329") ||
        shExpMatch(host, "host_pattern_330") ||
        shExpMatch(host, "host_pattern_331") ||
        shExpMatch(host, "host_pattern_332") ||
        shExpMatch(host, "host_pattern_333") ||
        shExpMatch(host, "host_pattern_334") ||
        shExpMatch(host, "host_pattern_335") ||
        shExpMatch(host, "host_pattern_336") ||
        shExpMatch(host, "host_pattern_337") ||
        shExpMatch(host, "host_pattern_338") ||
        shExpMatch(host, "host_pattern_339") ||
        shExpMatch(host, "host_pattern_340") ||
        shExpMatch(host, "host_pattern_341") ||
        shExpMatch(host, "host_pattern_342") ||
        shExpMatch(host, "host_pattern_343") ||
        shExpMatch(host, "host_pattern_344") ||
        shExpMatch(host, "host_pattern_345") ||
        shExpMatch(host, "host_pattern_346") ||
        shExpMatch(host, "host_pattern_347") ||
        shExpMatch(host, "host_pattern_348") ||
        shExpMatch(host, "host_pattern_349") ||
        shExpMatch(host, "host_pattern_350") ||
        shExpMatch(host, "host_pattern_351") ||
        shExpMatch(host, "host_pattern_352") ||
        shExpMatch(host, "host_pattern_353") ||
        shExpMatch(host, "host_pattern_354") ||
        shExpMatch(host, "host_pattern_355") ||
        shExpMatch(host, "host_pattern_356") ||
        shExpMatch(host, "host_pattern_357") ||
        shExpMatch(host, "host_pattern_358") ||
        shExpMatch(host, "host_pattern_359") ||
        shExpMatch(host, "host_pattern_360") ||
        shExpMatch(host, "host_pattern_361") ||
        shExpMatch(host, "host_pattern_362") ||
        shExpMatch(host, "host_pattern_363") ||
        shExpMatch(host, "host_pattern_364") ||
        shExpMatch(host, "host_pattern_365") ||
        shExpMatch(host, "host_pattern_366") ||
        shExpMatch(host, "host_pattern_367") ||
        shExpMatch(host, "host_pattern_368") ||
        shExpMatch(host, "host_pattern_369") ||
        shExpMatch(host, "host_pattern_370") ||
        shExpMatch(host, "host_pattern_371") ||
        shExpMatch(host, "host_pattern_372") ||
        shExpMatch(host, "host_pattern_373") ||
        shExpMatch(host, "host_pattern_374") ||
        shExpMatch(host, "host_pattern_375") ||
        shExpMatch(host, "host_pattern_376") ||
        shExpMatch(host, "host_pattern_377") ||
        shExpMatch(host, "host_pattern_378") ||
        shExpMatch(host, "host_pattern_379") ||
        shExpMatch(host, "host_pattern_380") ||
        shExpMatch(host, "host_pattern_381") ||
        shExpMatch(host, "host_pattern_382") ||
        shExpMatch(host, "host_pattern_383") ||
        shExpMatch(host, "host_pattern_384") ||
        shExpMatch(host, "host_pattern_385") ||
        shExpMatch(host, "host_pattern_386") ||
        shExpMatch(host, "host_pattern_387") ||
        shExpMatch(host, "host_pattern_388") ||
        shExpMatch(host, "host_pattern_389") ||
        shExpMatch(host, "host_pattern_390") ||
        shExpMatch(host, "host_pattern_391") ||
        shExpMatch(host, "host_pattern_392") ||
        shExpMatch(host, "host_pattern_393") ||
        shExpMatch(host, "host_pattern_394") ||
        shExpMatch(host, "host_pattern_395") ||
        shExpMatch(host, "host_pattern_396") ||
        shExpMatch(host, "host_pattern_397") ||
        shExpMatch(host, "host_pattern_398") ||
        shExpMatch(host, "host_pattern_399") ||
        shExpMatch(host, "host_pattern_400") ||
        shExpMatch(host, "host_pattern_401") ||
        shExpMatch(host, "host_pattern_402") ||
        shExpMatch(host, "host_pattern_403") ||
        shExpMatch(host, "host_pattern_404") ||
        shExpMatch(host, "host_pattern_405") ||
        shExpMatch(host, "host_pattern_406") ||
        shExpMatch(host, "host_pattern_407") ||
        shExpMatch(host, "host_pattern_408") ||
        shExpMatch(host, "host_pattern_409") ||
        shExpMatch(host, "host_pattern_410") ||
        shExpMatch(host, "host_pattern_411") ||
        shExpMatch(host, "host_pattern_412") ||
        shExpMatch(host, "host_pattern_413") ||
        shExpMatch(host, "host_pattern_414") ||
        shExpMatch(host, "host_pattern_415") ||
        shExpMatch(host, "host_pattern_416") ||
        shExpMatch(host, "host_pattern_417") ||
        shExpMatch(host, "host_pattern_418") ||
        shExpMatch(host, "host_pattern_419") ||
        shExpMatch(host, "host_pattern_420") ||
        shExpMatch(host, "host_pattern_421") ||
        shExpMatch(host, "host_pattern_422") ||
        shExpMatch(host, "host_pattern_423") ||
        shExpMatch(host, "host_pattern_424") ||
        shExpMatch(host, "host_pattern_425") ||
        shExpMatch(host, "host_pattern_426") ||
        shExpMatch(host, "host_pattern_427") ||
        shExpMatch(host, "host_pattern_428") ||
        shExpMatch(host, "host_pattern_429") ||
        shExpMatch(host, "host_pattern_430") ||
        shExpMatch(host, "host_pattern_431") ||
        shExpMatch(host, "host_pattern_432") ||
        shExpMatch(host, "host_pattern_433") ||
        shExpMatch(host, "host_pattern_434") ||
        shExpMatch(host, "host_pattern_435") ||
        shExpMatch(host, "host_pattern_436") ||
        shExpMatch(host, "host_pattern_437") ||
        shExpMatch(host, "host_pattern_438") ||
        shExpMatch(host, "host_pattern_439") ||
        shExpMatch(host, "host_pattern_440") ||
        shExpMatch(host, "host_pattern_441") ||
        shExpMatch(host, "host_pattern_442") ||
        shExpMatch(host, "host_pattern_443") ||
        shExpMatch(host, "host_pattern_444") ||
        shExpMatch(host, "host_pattern_445") ||
        shExpMatch(host, "host_pattern_446") ||
        shExpMatch(host, "host_pattern_447") ||
        shExpMatch(host, "host_pattern_448") ||
        shExpMatch(host, "host_pattern_449") ||
        shExpMatch(host, "host_pattern_450") ||
        shExpMatch(host, "host_pattern_451") ||
        shExpMatch(host, "host_pattern_452") ||
        shExpMatch(host, "host_pattern_453") ||
        shExpMatch(host, "host_pattern_454") ||
        shExpMatch(host, "host_pattern_455") ||
        shExpMatch(host, "host_pattern_456") ||
        shExpMatch(host, "host_pattern_457") ||
        shExpMatch(host, "host_pattern_458") ||
        shExpMatch(host, "host_pattern_459") ||
        shExpMatch(host, "host_pattern_460") ||
        shExpMatch(host, "host_pattern_461") ||
        shExpMatch(host, "host_pattern_462") ||
        shExpMatch(host, "host_pattern_463") ||
        shExpMatch(host, "host_pattern_464") ||
        shExpMatch(host, "host_pattern_465") ||
        shExpMatch(host, "host_pattern_466") ||
        shExpMatch(host, "host_pattern_467") ||
        shExpMatch(host, "host_pattern_468") ||
        shExpMatch(host, "host_pattern_469") ||
        shExpMatch(host, "host_pattern_470") ||
        shExpMatch(host, "host_pattern_471") ||
        shExpMatch(host, "host_pattern_472") ||
        shExpMatch(host, "host_pattern_473") ||
        shExpMatch(host, "host_pattern_474") ||
        shExpMatch(host, "host_pattern_475") ||
        shExpMatch(host, "host_pattern_476") ||
        shExpMatch(host, "host_pattern_477") ||
        shExpMatch(host, "host_pattern_478") ||
        shExpMatch(host, "host_pattern_479") ||
        shExpMatch(host, "host_pattern_480") ||
        shExpMatch(host, "host_pattern_481") ||
        shExpMatch(host, "host_pattern_482") ||
        shExpMatch(host, "host_pattern_483") ||
        shExpMatch(host, "host_pattern_484") ||
        shExpMatch(host, "host_pattern_485") ||
        shExpMatch(host, "host_pattern_486") ||
        shExpMatch(host, "host_pattern_487") ||
        shExpMatch(host, "host_pattern_488") ||
        shExpMatch(host, "host_pattern_489") ||
        shExpMatch(host, "host_pattern_490") ||
        shExpMatch(host, "host_pattern_491") ||
        shExpMatch(host, "host_pattern_492") ||
        shExpMatch(host, "host_pattern_493") ||
        shExpMatch(host, "host_pattern_494") ||
        shExpMatch(host, "host_pattern_495") ||
        shExpMatch(host, "host_pattern_496") ||
        shExpMatch(host, "host_pattern_497") ||
        shExpMatch(host, "host_pattern_498") ||
        shExpMatch(host, "host_pattern_499") ||
        shExpMatch(host, "host_pattern_500") ||
        shExpMatch(host, "host_pattern_501") ||
        shExpMatch(host, "host_pattern_502") ||
        shExpMatch(host, "host_pattern_503") ||
        shExpMatch(host, "host_pattern_504") ||
        shExpMatch(host, "host_pattern_505") ||
        shExpMatch(host, "host_pattern_506") ||
        shExpMatch(host, "host_pattern_507") ||
        shExpMatch(host, "host_pattern_508") ||
        shExpMatch(host, "host_pattern_509") ||
        shExpMatch(host, "host_pattern_510") ||
        shExpMatch(host, "host_pattern_511") ||
        shExpMatch(host, "host_pattern_512") ||
        shExpMatch(host, "host_pattern_513") ||
        shExpMatch(host, "host_pattern_514") ||
        shExpMatch(host, "host_pattern_515") ||
        shExpMatch(host, "host_pattern_516") ||
        shExpMatch(host, "host_pattern_517") ||
        shExpMatch(host, "host_pattern_518") ||
        shExpMatch(host, "host_pattern_519") ||
        shExpMatch(host, "host_pattern_520") ||
        shExpMatch(host, "host_pattern_521") ||
        shExpMatch(host, "host_pattern_522") ||
        shExpMatch(host, "host_pattern_523") ||
        shExpMatch(host, "host_pattern_524") ||
        shExpMatch(host, "host_pattern_525") ||
        shExpMatch(host, "host_pattern_526") ||
        shExpMatch(host, "host_pattern_527") ||
        shExpMatch(host, "host_pattern_528") ||
        shExpMatch(host, "host_pattern_529") ||
        shExpMatch(host, "host_pattern_530") ||
        shExpMatch(host, "host_pattern_531") ||
        shExpMatch(host, "host_pattern_532") ||
        shExpMatch(host, "host_pattern_533") ||
        shExpMatch(host, "host_pattern_534") ||
        shExpMatch(host, "host_pattern_535") ||
        shExpMatch(host, "host_pattern_536") ||
        shExpMatch(host, "host_pattern_537") ||
        shExpMatch(host, "host_pattern_538") ||
        shExpMatch(host, "host_pattern_539") ||
        shExpMatch(host, "host_pattern_540") ||
        shExpMatch(host, "host_pattern_541") ||
        shExpMatch(host, "host_pattern_542") ||
        shExpMatch(host, "host_pattern_543") ||
        shExpMatch(host, "host_pattern_544") ||
        shExpMatch(host, "host_pattern_545") ||
        shExpMatch(host, "host_pattern_546") ||
        shExpMatch(host, "host_pattern_547") ||
        shExpMatch(host, "host_pattern_548") ||
        shExpMatch(host, "host_pattern_549") ||
        shExpMatch(host, "host_pattern_550") ||
        shExpMatch(host, "host_pattern_551") ||
        shExpMatch(host, "host_pattern_552") ||
        shExpMatch(host, "host_pattern_553") ||
        shExpMatch(host, "host_pattern_554") ||
        shExpMatch(host, "host_pattern_555") ||
        shExpMatch(host, "host_pattern_556") ||
        shExpMatch(host, "host_pattern_557") ||
        shExpMatch(host, "host_pattern_558") ||
        shExpMatch(host, "host_pattern_559") ||
        shExpMatch(host, "host_pattern_560") ||
        shExpMatch(host, "host_pattern_561") ||
        shExpMatch(host, "host_pattern_562") ||
        shExpMatch(host, "host_pattern_563") ||
        shExpMatch(host, "host_pattern_564") ||
        shExpMatch(host, "host_pattern_565") ||
        shExpMatch(host, "host_pattern_566") ||
        shExpMatch(host, "host_pattern_567") ||
        shExpMatch(host, "host_pattern_568") ||
        shExpMatch(host, "host_pattern_569") ||
        shExpMatch(host, "host_pattern_570") ||
        shExpMatch(host, "host_pattern_571") ||
        shExpMatch(host, "host_pattern_572") ||
        shExpMatch(host, "host_pattern_573") ||
        shExpMatch(host, "host_pattern_574") ||
        shExpMatch(host, "host_pattern_575") ||
        shExpMatch(host, "host_pattern_576") ||
        shExpMatch(host, "host_pattern_577") ||
        shExpMatch(host, "host_pattern_578") ||
        shExpMatch(host, "host_pattern_579") ||
        shExpMatch(host, "host_pattern_580") ||
        shExpMatch(host, "host_pattern_581") ||
        shExpMatch(host, "host_pattern_582") ||
        shExpMatch(host, "host_pattern_583") ||
        shExpMatch(host, "host_pattern_584") ||
        shExpMatch(host, "host_pattern_585") ||
        shExpMatch(host, "host_pattern_586") ||
        shExpMatch(host, "host_pattern_587") ||
        shExpMatch(host, "host_pattern_588") ||
        shExpMatch(host, "host_pattern_589") ||
        shExpMatch(host, "host_pattern_590") ||
        shExpMatch(host, "host_pattern_591") ||
        shExpMatch(host, "host_pattern_592") ||
        shExpMatch(host, "host_pattern_593") ||
        shExpMatch(host, "host_pattern_594") ||
        shExpMatch(host, "host_pattern_595") ||
        shExpMatch(host, "host_pattern_596") ||
        shExpMatch(host, "host_pattern_597") ||
        shExpMatch(host, "host_pattern_598") ||
        shExpMatch(host, "host_pattern_599") ||
        shExpMatch(host, "host_pattern_600") ||
        shExpMatch(host, "host_pattern_601") ||
        shExpMatch(host, "host_pattern_602") ||
        shExpMatch(host, "host_pattern_603") ||
        shExpMatch(host, "host_pattern_604") ||
        shExpMatch(host, "host_pattern_605") ||
        shExpMatch(host, "host_pattern_606") ||
        shExpMatch(host, "host_pattern_607") ||
        shExpMatch(host, "host_pattern_608") ||
        shExpMatch(host, "host_pattern_609") ||
        shExpMatch(host, "host_pattern_610") ||
        shExpMatch(host, "host_pattern_611") ||
        shExpMatch(host, "host_pattern_612") ||
        shExpMatch(host, "host_pattern_613") ||
        shExpMatch(host, "host_pattern_614") ||
        shExpMatch(host, "host_pattern_615") ||
        shExpMatch(host, "host_pattern_616") ||
        shExpMatch(host, "host_pattern_617") ||
        shExpMatch(host, "host_pattern_618") ||
        shExpMatch(host, "host_pattern_619") ||
        shExpMatch(host, "host_pattern_620") ||
        shExpMatch(host, "host_pattern_621") ||
        shExpMatch(host, "host_pattern_622") ||
        shExpMatch(host, "host_pattern_623") ||
        shExpMatch(host, "host_pattern_624") ||
        shExpMatch(host, "host_pattern_625") ||
        shExpMatch(host, "host_pattern_626") ||
        shExpMatch(host, "host_pattern_627") ||
        shExpMatch(host, "host_pattern_628") ||
        shExpMatch(host, "host_pattern_629") ||
        shExpMatch(host, "host_pattern_630") ||
        shExpMatch(host, "host_pattern_631") ||
        shExpMatch(host, "host_pattern_632") ||
        shExpMatch(host, "host_pattern_633")
    )
        return "PROXY proxy_ip_port_8";

    if (shExpMatch(host, "host_pattern_634")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_635")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_636")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_637")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_638")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_639")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_640")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_641")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_642")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_643")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_644")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_645")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_646")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_647")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_648")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_649")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_650")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_651")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_652")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_653")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_654")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_655")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_656")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_657")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_658")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_659")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_660")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_661")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_662")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_663")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_664")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_665")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_666")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_667")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_668")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_669")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_670")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_671")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_672")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_673")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_674")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_675")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_676")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_677")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_678")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_679")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_680")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_681")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_682")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_683")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_684")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_685")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_686")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_687")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_688")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_689")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_690")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_691")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_692")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_693")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_694")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_695")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_696")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_697")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_698")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_699")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_700")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_701")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_702")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_703")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_704")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_705")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_706")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_707")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_708")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_709")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_710")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_711")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_712")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_713")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_714")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_715")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_716")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_717")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_718")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_719")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_720")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_721")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_722")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_723")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_724")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_725")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_726")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_727")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_728")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_729")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_730")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_731")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_732")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_733")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_734")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_735")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_736")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_737")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_738")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_739")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_740")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_741")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_742")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_743")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_744")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_745")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_746")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_747")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_748")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_749")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_750")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_751")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_752")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_753")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_754")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_755")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_756")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_757")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_758")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_759")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_760")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_761")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_762")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_763")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_764")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_765")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_766")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_767")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_768")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_769")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_770")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_771")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_772")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_773")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_774")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_775")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_776")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_777")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_778")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_779")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_780")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_781")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_782")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_783")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_784")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_785")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_786")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_787")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_788")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_789")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_790")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_791")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_792")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_793")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_794")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_795")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_796")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_797")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_798")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_799")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_800")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_801")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_802")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_803")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_804")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_805")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_806")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_807")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_808")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_809")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_810")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_811")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_812")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_813")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_814")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_815")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_816")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_817")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_818")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_819")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_820")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_821")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_822")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_823")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_824")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_825")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_826")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_827")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_828")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_829")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_830")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_831")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_832")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_833")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_834")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_835")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_836")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_837")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_838")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_839")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_840")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_841")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_842")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_843")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_844")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_845")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_846")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_847")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_848")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_849")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_850")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_851")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_852")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_853")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_854")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_855")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_856")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_857")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_858")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_859")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_860")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_861")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_862")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_863")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_864")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_865")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_866")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_867")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_868")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_869")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_870")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_871")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_872")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_873")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_874")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_875")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_876")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_877")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_878")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_879")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_880")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_881")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_882")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_883")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_884")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_885")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_886")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_887")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_888")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_889")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_890")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_891")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_892")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_893")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_894")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_895")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_896")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_897")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_898")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_899")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_900")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_901")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_902")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_903")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_904")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_905")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_906")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_907")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_908")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_909")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_910")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_911")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_912")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_913")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_914")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_915")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_916")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_917")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_918")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_919")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_920")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_921")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_922")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_923")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_924")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_925")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_926")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_927")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_928")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_929")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_930")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_931")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_932")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_933")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_934")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_935")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_936")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_937")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_938")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_939")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_940")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_941")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_942")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_943")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_944")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_945")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_946")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_947")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_948")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_949")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_950")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_951")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_952")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_953")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_954")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_955")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_956")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_957")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_958")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_959")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_960")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_961")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_962")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_963")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_964")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_965")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_966")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_967")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_968")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_969")) { return "DIRECT"; }

    if (shExpMatch(host, "host_pattern_970")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_971")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_972")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_973")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_974")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_975")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_976")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_977")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_978")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_979")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_980")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_981")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_982")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_983")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_984")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_985")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_986")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_987")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_988")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_989")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_990")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_991")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_992")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_993")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_994")) { return "DIRECT"; }
    if (shExpMatch(host, "host_pattern_995")) { return "DIRECT"; }

    if (!isResolvable(host)) { return "PROXY proxy_ip_port_8"; }
    resolved_host = dnsResolve(host);
    if (isInNet(resolved_host, "network_ip_00", "net_mask_00")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_01", "net_mask_01")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_02", "net_mask_02")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_03", "net_mask_03")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_04", "net_mask_04")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_05", "net_mask_05")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_06", "net_mask_06")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_07", "net_mask_07")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_08", "net_mask_08")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_09", "net_mask_09")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_10", "net_mask_10")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_11", "net_mask_11")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_12", "net_mask_12")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_13", "net_mask_13")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_14", "net_mask_14")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_15", "net_mask_15")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_16", "net_mask_16")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_17", "net_mask_17")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_18", "net_mask_18")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_19", "net_mask_19")) { return "PROXY proxy_ip_port_8"; }
    if (isInNet(resolved_host, "network_ip_20", "net_mask_20")) { return "PROXY proxy_ip_port_8"; }
    if (isInNet(resolved_host, "network_ip_21", "net_mask_21")) { return "PROXY proxy_ip_port_8"; }
    if (isInNet(resolved_host, "network_ip_22", "net_mask_22")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_23", "net_mask_23")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_24", "net_mask_24")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_25", "net_mask_25")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_26", "net_mask_26")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_27", "net_mask_27")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_28", "net_mask_28")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_29", "net_mask_29")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_30", "net_mask_30")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_31", "net_mask_31")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_32", "net_mask_32")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_33", "net_mask_33")) { return "DIRECT"; }
    if (isInNet(resolved_host, "network_ip_34", "net_mask_34")) { return "DIRECT"; }

    return "PROXY proxy_ip_port_8";

}
PiotrDabkowski commented 6 years ago

The file has some highly nested structure so just increase the maximum recursion limit of your python interpreter to say 10000 (it is 1000 by default) and it should work fine.

nils-ballmann commented 6 years ago

Sorry to have bothered you. You were right. 10000 on the recursion limit seems to be enough. Thank you.