<gh_stars>0
from js2py.pyjs import *
# setting scope
var = Scope( JS_BUILTINS )
set_global_object(var)

# Code follows:
var.registers(['getFromGlobals', 'underscore', '_typeof'])
@Js
def PyJsHoisted_getFromGlobals_(name, this, arguments, var=var):
    var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
    var.registers(['name'])
    if var.get('Object').get('prototype').callprop('hasOwnProperty', Js('_fake_exports')).neg():
        PyJsTempException = JsToPyException(var.get('Error')((Js('Could not find any value named ')+var.get('name'))))
        raise PyJsTempException
    if var.get('Object').get('prototype').get('_fake_exports').callprop('hasOwnProperty', var.get('name')):
        return var.get('Object').get('prototype').get('_fake_exports').get(var.get('name'))
    else:
        PyJsTempException = JsToPyException(var.get('Error')((Js('Could not find any value named ')+var.get('name'))))
        raise PyJsTempException
PyJsHoisted_getFromGlobals_.func_name = 'getFromGlobals'
var.put('getFromGlobals', PyJsHoisted_getFromGlobals_)
Js('use strict')
@Js
def PyJs_anonymous_0_(obj, this, arguments, var=var):
    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
    var.registers(['obj'])
    return var.get('obj',throw=False).typeof()
PyJs_anonymous_0_._set_name('anonymous')
@Js
def PyJs_anonymous_1_(obj, this, arguments, var=var):
    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
    var.registers(['obj'])
    return (Js('symbol') if (((var.get('obj') and PyJsStrictEq(var.get('Symbol',throw=False).typeof(),Js('function'))) and PyJsStrictEq(var.get('obj').get('constructor'),var.get('Symbol'))) and PyJsStrictNeq(var.get('obj'),var.get('Symbol').get('prototype'))) else var.get('obj',throw=False).typeof())
PyJs_anonymous_1_._set_name('anonymous')
var.put('_typeof', (PyJs_anonymous_0_ if (PyJsStrictEq(var.get('Symbol',throw=False).typeof(),Js('function')) and PyJsStrictEq(var.get('Symbol').get('iterator').typeof(),Js('symbol'))) else PyJs_anonymous_1_))
@Js
def PyJs_anonymous_2_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'require', 'module'])
    @Js
    def PyJs_anonymous_3_(PyJsArg_676c6f62616c_, this, arguments, var=var):
        var = Scope({'global':PyJsArg_676c6f62616c_, 'this':this, 'arguments':arguments}, var)
        var.registers(['global'])
        @Js
        def PyJs_anonymous_4_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers(['nativeIsArray', 'keyInObj', 'has', 'escapeChar', 'deepEq', 'restArguments', 'deepGet', 'hasEnumBug', 'toString', 'Ctor', 'executeBound', 'unescapeMap', 'createReduce', 'nonEnumerableProps', 'isArrayLike', 'root', 'escapeMap', 'cb', 'push', 'SymbolProto', 'nativeKeys', 'escapes', 'nativeCreate', 'flatten', 'shallowProperty', 'baseCreate', 'builtinIteratee', 'createAssigner', 'group', 'createIndexFinder', 'escapeRegExp', 'ArrayProto', '_', 'createPredicateIndexFinder', 'reStrSymbol', 'eq', 'createEscaper', 'slice', 'nodelist', 'getLength', 'idCounter', 'optimizeCb', 'previousUnderscore', 'ObjProto', 'noMatch', 'MAX_ARRAY_INDEX', 'hasOwnProperty', 'collectNonEnumProps', 'chainResult'])
            def PyJs_LONG_5_(var=var):
                return (((((Js('undefined') if PyJsStrictEq(var.get('self',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('self')))==Js('object')) and PyJsStrictEq(var.get('self').get('self'),var.get('self'))) and var.get('self')) or ((((Js('undefined') if PyJsStrictEq(var.get('global',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('global')))==Js('object')) and PyJsStrictEq(var.get('global').get('global'),var.get('global'))) and var.get('global')))
            var.put('root', ((PyJs_LONG_5_() or var.get(u"this")) or Js({})))
            var.put('previousUnderscore', var.get('root').get('_'))
            var.put('ArrayProto', var.get('Array').get('prototype'))
            var.put('ObjProto', var.get('Object').get('prototype'))
            var.put('SymbolProto', (var.get('Symbol').get('prototype') if PyJsStrictNeq(var.get('Symbol',throw=False).typeof(),Js('undefined')) else var.get(u"null")))
            var.put('push', var.get('ArrayProto').get('push'))
            var.put('slice', var.get('ArrayProto').get('slice'))
            var.put('toString', var.get('ObjProto').get('toString'))
            var.put('hasOwnProperty', var.get('ObjProto').get('hasOwnProperty'))
            var.put('nativeIsArray', var.get('Array').get('isArray'))
            var.put('nativeKeys', var.get('Object').get('keys'))
            var.put('nativeCreate', var.get('Object').get('create'))
            @Js
            def PyJs_Ctor_6_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments, 'Ctor':PyJs_Ctor_6_}, var)
                var.registers([])
                pass
            PyJs_Ctor_6_._set_name('Ctor')
            var.put('Ctor', PyJs_Ctor_6_)
            @Js
            def PyJs___7_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments, '_':PyJs___7_}, var)
                var.registers(['obj'])
                if var.get('obj').instanceof(var.get('_')):
                    return var.get('obj')
                if var.get(u"this").instanceof(var.get('_')).neg():
                    return var.get('_').create(var.get('obj'))
                var.get(u"this").put('_wrapped', var.get('obj'))
            PyJs___7_._set_name('_')
            var.put('_', PyJs___7_)
            if ((var.get('exports',throw=False).typeof()!=Js('undefined')) and var.get('exports').get('nodeType').neg()):
                if (((var.get('module',throw=False).typeof()!=Js('undefined')) and var.get('module').get('nodeType').neg()) and var.get('module').get('exports')):
                    var.put('exports', var.get('module').put('exports', var.get('_')))
                var.get('exports').put('_', var.get('_'))
            else:
                var.get('root').put('_', var.get('_'))
            var.get('_').put('VERSION', Js('1.9.1'))
            @Js
            def PyJs_optimizeCb_8_(func, context, argCount, this, arguments, var=var):
                var = Scope({'func':func, 'context':context, 'argCount':argCount, 'this':this, 'arguments':arguments, 'optimizeCb':PyJs_optimizeCb_8_}, var)
                var.registers(['context', 'func', 'argCount'])
                if PyJsStrictEq(var.get('context'),PyJsComma(Js(0.0), Js(None))):
                    return var.get('func')
                while 1:
                    SWITCHED = False
                    CONDITION = ((Js(3.0) if (var.get('argCount')==var.get(u"null")) else var.get('argCount')))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js(1.0)):
                        SWITCHED = True
                        @Js
                        def PyJs_anonymous_9_(value, this, arguments, var=var):
                            var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                            var.registers(['value'])
                            return var.get('func').callprop('call', var.get('context'), var.get('value'))
                        PyJs_anonymous_9_._set_name('anonymous')
                        return PyJs_anonymous_9_
                    if SWITCHED or PyJsStrictEq(CONDITION, Js(3.0)):
                        SWITCHED = True
                        @Js
                        def PyJs_anonymous_10_(value, index, collection, this, arguments, var=var):
                            var = Scope({'value':value, 'index':index, 'collection':collection, 'this':this, 'arguments':arguments}, var)
                            var.registers(['value', 'index', 'collection'])
                            return var.get('func').callprop('call', var.get('context'), var.get('value'), var.get('index'), var.get('collection'))
                        PyJs_anonymous_10_._set_name('anonymous')
                        return PyJs_anonymous_10_
                    if SWITCHED or PyJsStrictEq(CONDITION, Js(4.0)):
                        SWITCHED = True
                        @Js
                        def PyJs_anonymous_11_(accumulator, value, index, collection, this, arguments, var=var):
                            var = Scope({'accumulator':accumulator, 'value':value, 'index':index, 'collection':collection, 'this':this, 'arguments':arguments}, var)
                            var.registers(['value', 'index', 'collection', 'accumulator'])
                            return var.get('func').callprop('call', var.get('context'), var.get('accumulator'), var.get('value'), var.get('index'), var.get('collection'))
                        PyJs_anonymous_11_._set_name('anonymous')
                        return PyJs_anonymous_11_
                    SWITCHED = True
                    break
                @Js
                def PyJs_anonymous_12_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('func').callprop('apply', var.get('context'), var.get('arguments'))
                PyJs_anonymous_12_._set_name('anonymous')
                return PyJs_anonymous_12_
            PyJs_optimizeCb_8_._set_name('optimizeCb')
            var.put('optimizeCb', PyJs_optimizeCb_8_)
            pass
            @Js
            def PyJs_cb_13_(value, context, argCount, this, arguments, var=var):
                var = Scope({'value':value, 'context':context, 'argCount':argCount, 'this':this, 'arguments':arguments, 'cb':PyJs_cb_13_}, var)
                var.registers(['value', 'argCount', 'context'])
                if PyJsStrictNeq(var.get('_').get('iteratee'),var.get('builtinIteratee')):
                    return var.get('_').callprop('iteratee', var.get('value'), var.get('context'))
                if (var.get('value')==var.get(u"null")):
                    return var.get('_').get('identity')
                if var.get('_').callprop('isFunction', var.get('value')):
                    return var.get('optimizeCb')(var.get('value'), var.get('context'), var.get('argCount'))
                if (var.get('_').callprop('isObject', var.get('value')) and var.get('_').callprop('isArray', var.get('value')).neg()):
                    return var.get('_').callprop('matcher', var.get('value'))
                return var.get('_').callprop('property', var.get('value'))
            PyJs_cb_13_._set_name('cb')
            var.put('cb', PyJs_cb_13_)
            @Js
            def PyJs_builtinIteratee_14_(value, context, this, arguments, var=var):
                var = Scope({'value':value, 'context':context, 'this':this, 'arguments':arguments, 'builtinIteratee':PyJs_builtinIteratee_14_}, var)
                var.registers(['value', 'context'])
                return var.get('cb')(var.get('value'), var.get('context'), var.get('Infinity'))
            PyJs_builtinIteratee_14_._set_name('builtinIteratee')
            var.get('_').put('iteratee', var.put('builtinIteratee', PyJs_builtinIteratee_14_))
            @Js
            def PyJs_restArguments_15_(func, startIndex, this, arguments, var=var):
                var = Scope({'func':func, 'startIndex':startIndex, 'this':this, 'arguments':arguments, 'restArguments':PyJs_restArguments_15_}, var)
                var.registers(['startIndex', 'func'])
                var.put('startIndex', ((var.get('func').get('length')-Js(1.0)) if (var.get('startIndex')==var.get(u"null")) else (+var.get('startIndex'))))
                @Js
                def PyJs_anonymous_16_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers(['rest', 'index', 'length', 'args'])
                    var.put('length', var.get('Math').callprop('max', (var.get('arguments').get('length')-var.get('startIndex')), Js(0.0)))
                    var.put('rest', var.get('Array')(var.get('length')))
                    var.put('index', Js(0.0))
                    #for JS loop
                    
                    while (var.get('index')<var.get('length')):
                        try:
                            var.get('rest').put(var.get('index'), var.get('arguments').get((var.get('index')+var.get('startIndex'))))
                        finally:
                                (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                    while 1:
                        SWITCHED = False
                        CONDITION = (var.get('startIndex'))
                        if SWITCHED or PyJsStrictEq(CONDITION, Js(0.0)):
                            SWITCHED = True
                            return var.get('func').callprop('call', var.get(u"this"), var.get('rest'))
                        if SWITCHED or PyJsStrictEq(CONDITION, Js(1.0)):
                            SWITCHED = True
                            return var.get('func').callprop('call', var.get(u"this"), var.get('arguments').get('0'), var.get('rest'))
                        if SWITCHED or PyJsStrictEq(CONDITION, Js(2.0)):
                            SWITCHED = True
                            return var.get('func').callprop('call', var.get(u"this"), var.get('arguments').get('0'), var.get('arguments').get('1'), var.get('rest'))
                        SWITCHED = True
                        break
                    var.put('args', var.get('Array')((var.get('startIndex')+Js(1.0))))
                    #for JS loop
                    var.put('index', Js(0.0))
                    while (var.get('index')<var.get('startIndex')):
                        try:
                            var.get('args').put(var.get('index'), var.get('arguments').get(var.get('index')))
                        finally:
                                (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                    var.get('args').put(var.get('startIndex'), var.get('rest'))
                    return var.get('func').callprop('apply', var.get(u"this"), var.get('args'))
                PyJs_anonymous_16_._set_name('anonymous')
                return PyJs_anonymous_16_
            PyJs_restArguments_15_._set_name('restArguments')
            var.put('restArguments', PyJs_restArguments_15_)
            @Js
            def PyJs_baseCreate_17_(prototype, this, arguments, var=var):
                var = Scope({'prototype':prototype, 'this':this, 'arguments':arguments, 'baseCreate':PyJs_baseCreate_17_}, var)
                var.registers(['prototype', 'result'])
                if var.get('_').callprop('isObject', var.get('prototype')).neg():
                    return Js({})
                if var.get('nativeCreate'):
                    return var.get('nativeCreate')(var.get('prototype'))
                var.get('Ctor').put('prototype', var.get('prototype'))
                var.put('result', var.get('Ctor').create())
                var.get('Ctor').put('prototype', var.get(u"null"))
                return var.get('result')
            PyJs_baseCreate_17_._set_name('baseCreate')
            var.put('baseCreate', PyJs_baseCreate_17_)
            @Js
            def PyJs_shallowProperty_18_(key, this, arguments, var=var):
                var = Scope({'key':key, 'this':this, 'arguments':arguments, 'shallowProperty':PyJs_shallowProperty_18_}, var)
                var.registers(['key'])
                @Js
                def PyJs_anonymous_19_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return (PyJsComma(Js(0.0), Js(None)) if (var.get('obj')==var.get(u"null")) else var.get('obj').get(var.get('key')))
                PyJs_anonymous_19_._set_name('anonymous')
                return PyJs_anonymous_19_
            PyJs_shallowProperty_18_._set_name('shallowProperty')
            var.put('shallowProperty', PyJs_shallowProperty_18_)
            @Js
            def PyJs_has_20_(obj, path, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'this':this, 'arguments':arguments, 'has':PyJs_has_20_}, var)
                var.registers(['obj', 'path'])
                return ((var.get('obj')!=var.get(u"null")) and var.get('hasOwnProperty').callprop('call', var.get('obj'), var.get('path')))
            PyJs_has_20_._set_name('has')
            var.put('has', PyJs_has_20_)
            @Js
            def PyJs_deepGet_21_(obj, path, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'this':this, 'arguments':arguments, 'deepGet':PyJs_deepGet_21_}, var)
                var.registers(['i', 'length', 'path', 'obj'])
                var.put('length', var.get('path').get('length'))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        if (var.get('obj')==var.get(u"null")):
                            return PyJsComma(Js(0.0), Js(None))
                        var.put('obj', var.get('obj').get(var.get('path').get(var.get('i'))))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return (var.get('obj') if var.get('length') else PyJsComma(Js(0.0), Js(None)))
            PyJs_deepGet_21_._set_name('deepGet')
            var.put('deepGet', PyJs_deepGet_21_)
            var.put('MAX_ARRAY_INDEX', (var.get('Math').callprop('pow', Js(2.0), Js(53.0))-Js(1.0)))
            var.put('getLength', var.get('shallowProperty')(Js('length')))
            @Js
            def PyJs_isArrayLike_22_(collection, this, arguments, var=var):
                var = Scope({'collection':collection, 'this':this, 'arguments':arguments, 'isArrayLike':PyJs_isArrayLike_22_}, var)
                var.registers(['length', 'collection'])
                var.put('length', var.get('getLength')(var.get('collection')))
                return (((var.get('length',throw=False).typeof()==Js('number')) and (var.get('length')>=Js(0.0))) and (var.get('length')<=var.get('MAX_ARRAY_INDEX')))
            PyJs_isArrayLike_22_._set_name('isArrayLike')
            var.put('isArrayLike', PyJs_isArrayLike_22_)
            @Js
            def PyJs_anonymous_23_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'iteratee', 'length', 'obj', 'context', 'i'])
                var.put('iteratee', var.get('optimizeCb')(var.get('iteratee'), var.get('context')))
                pass
                if var.get('isArrayLike')(var.get('obj')):
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('length', var.get('obj').get('length')))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.get('iteratee')(var.get('obj').get(var.get('i')), var.get('i'), var.get('obj'))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                else:
                    var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('length', var.get('keys').get('length')))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.get('iteratee')(var.get('obj').get(var.get('keys').get(var.get('i'))), var.get('keys').get(var.get('i')), var.get('obj'))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('obj')
            PyJs_anonymous_23_._set_name('anonymous')
            var.get('_').put('each', var.get('_').put('forEach', PyJs_anonymous_23_))
            @Js
            def PyJs_anonymous_24_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['currentKey', 'keys', 'results', 'index', 'length', 'iteratee', 'context', 'obj'])
                var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                var.put('keys', (var.get('isArrayLike')(var.get('obj')).neg() and var.get('_').callprop('keys', var.get('obj'))))
                var.put('length', (var.get('keys') or var.get('obj')).get('length'))
                var.put('results', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.put('currentKey', (var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index')))
                        var.get('results').put(var.get('index'), var.get('iteratee')(var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')))
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return var.get('results')
            PyJs_anonymous_24_._set_name('anonymous')
            var.get('_').put('map', var.get('_').put('collect', PyJs_anonymous_24_))
            @Js
            def PyJs_createReduce_25_(dir, this, arguments, var=var):
                var = Scope({'dir':dir, 'this':this, 'arguments':arguments, 'createReduce':PyJs_createReduce_25_}, var)
                var.registers(['reducer', 'dir'])
                @Js
                def PyJs_reducer_26_(obj, iteratee, memo, initial, this, arguments, var=var):
                    var = Scope({'obj':obj, 'iteratee':iteratee, 'memo':memo, 'initial':initial, 'this':this, 'arguments':arguments, 'reducer':PyJs_reducer_26_}, var)
                    var.registers(['currentKey', 'initial', 'keys', 'index', 'length', 'iteratee', 'memo', 'obj'])
                    var.put('keys', (var.get('isArrayLike')(var.get('obj')).neg() and var.get('_').callprop('keys', var.get('obj'))))
                    var.put('length', (var.get('keys') or var.get('obj')).get('length'))
                    var.put('index', (Js(0.0) if (var.get('dir')>Js(0.0)) else (var.get('length')-Js(1.0))))
                    if var.get('initial').neg():
                        var.put('memo', var.get('obj').get((var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index'))))
                        var.put('index', var.get('dir'), '+')
                    #for JS loop
                    
                    while ((var.get('index')>=Js(0.0)) and (var.get('index')<var.get('length'))):
                        try:
                            var.put('currentKey', (var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index')))
                            var.put('memo', var.get('iteratee')(var.get('memo'), var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')))
                        finally:
                                var.put('index', var.get('dir'), '+')
                    return var.get('memo')
                PyJs_reducer_26_._set_name('reducer')
                var.put('reducer', PyJs_reducer_26_)
                @Js
                def PyJs_anonymous_27_(obj, iteratee, memo, context, this, arguments, var=var):
                    var = Scope({'obj':obj, 'iteratee':iteratee, 'memo':memo, 'context':context, 'this':this, 'arguments':arguments}, var)
                    var.registers(['initial', 'iteratee', 'memo', 'context', 'obj'])
                    var.put('initial', (var.get('arguments').get('length')>=Js(3.0)))
                    return var.get('reducer')(var.get('obj'), var.get('optimizeCb')(var.get('iteratee'), var.get('context'), Js(4.0)), var.get('memo'), var.get('initial'))
                PyJs_anonymous_27_._set_name('anonymous')
                return PyJs_anonymous_27_
            PyJs_createReduce_25_._set_name('createReduce')
            var.put('createReduce', PyJs_createReduce_25_)
            var.get('_').put('reduce', var.get('_').put('foldl', var.get('_').put('inject', var.get('createReduce')(Js(1.0)))))
            var.get('_').put('reduceRight', var.get('_').put('foldr', var.get('createReduce')((-Js(1.0)))))
            @Js
            def PyJs_anonymous_28_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'key', 'predicate', 'keyFinder', 'obj'])
                var.put('keyFinder', (var.get('_').get('findIndex') if var.get('isArrayLike')(var.get('obj')) else var.get('_').get('findKey')))
                var.put('key', var.get('keyFinder')(var.get('obj'), var.get('predicate'), var.get('context')))
                if (PyJsStrictNeq(var.get('key'),PyJsComma(Js(0.0), Js(None))) and PyJsStrictNeq(var.get('key'),(-Js(1.0)))):
                    return var.get('obj').get(var.get('key'))
            PyJs_anonymous_28_._set_name('anonymous')
            var.get('_').put('find', var.get('_').put('detect', PyJs_anonymous_28_))
            @Js
            def PyJs_anonymous_29_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'results', 'obj', 'predicate'])
                var.put('results', Js([]))
                var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                @Js
                def PyJs_anonymous_30_(value, index, list, this, arguments, var=var):
                    var = Scope({'value':value, 'index':index, 'list':list, 'this':this, 'arguments':arguments}, var)
                    var.registers(['value', 'index', 'list'])
                    if var.get('predicate')(var.get('value'), var.get('index'), var.get('list')):
                        var.get('results').callprop('push', var.get('value'))
                PyJs_anonymous_30_._set_name('anonymous')
                var.get('_').callprop('each', var.get('obj'), PyJs_anonymous_30_)
                return var.get('results')
            PyJs_anonymous_29_._set_name('anonymous')
            var.get('_').put('filter', var.get('_').put('select', PyJs_anonymous_29_))
            @Js
            def PyJs_anonymous_31_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'obj', 'predicate'])
                return var.get('_').callprop('filter', var.get('obj'), var.get('_').callprop('negate', var.get('cb')(var.get('predicate'))), var.get('context'))
            PyJs_anonymous_31_._set_name('anonymous')
            var.get('_').put('reject', PyJs_anonymous_31_)
            @Js
            def PyJs_anonymous_32_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['currentKey', 'keys', 'predicate', 'index', 'length', 'context', 'obj'])
                var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                var.put('keys', (var.get('isArrayLike')(var.get('obj')).neg() and var.get('_').callprop('keys', var.get('obj'))))
                var.put('length', (var.get('keys') or var.get('obj')).get('length'))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.put('currentKey', (var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index')))
                        if var.get('predicate')(var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')).neg():
                            return Js(False)
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return Js(True)
            PyJs_anonymous_32_._set_name('anonymous')
            var.get('_').put('every', var.get('_').put('all', PyJs_anonymous_32_))
            @Js
            def PyJs_anonymous_33_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['currentKey', 'keys', 'predicate', 'index', 'length', 'context', 'obj'])
                var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                var.put('keys', (var.get('isArrayLike')(var.get('obj')).neg() and var.get('_').callprop('keys', var.get('obj'))))
                var.put('length', (var.get('keys') or var.get('obj')).get('length'))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.put('currentKey', (var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index')))
                        if var.get('predicate')(var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')):
                            return Js(True)
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return Js(False)
            PyJs_anonymous_33_._set_name('anonymous')
            var.get('_').put('some', var.get('_').put('any', PyJs_anonymous_33_))
            @Js
            def PyJs_anonymous_34_(obj, item, fromIndex, guard, this, arguments, var=var):
                var = Scope({'obj':obj, 'item':item, 'fromIndex':fromIndex, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'item', 'guard', 'fromIndex'])
                if var.get('isArrayLike')(var.get('obj')).neg():
                    var.put('obj', var.get('_').callprop('values', var.get('obj')))
                if ((var.get('fromIndex',throw=False).typeof()!=Js('number')) or var.get('guard')):
                    var.put('fromIndex', Js(0.0))
                return (var.get('_').callprop('indexOf', var.get('obj'), var.get('item'), var.get('fromIndex'))>=Js(0.0))
            PyJs_anonymous_34_._set_name('anonymous')
            var.get('_').put('contains', var.get('_').put('includes', var.get('_').put('include', PyJs_anonymous_34_)))
            @Js
            def PyJs_anonymous_35_(obj, path, args, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'args':args, 'this':this, 'arguments':arguments}, var)
                var.registers(['func', 'contextPath', 'path', 'args', 'obj'])
                pass
                if var.get('_').callprop('isFunction', var.get('path')):
                    var.put('func', var.get('path'))
                else:
                    if var.get('_').callprop('isArray', var.get('path')):
                        var.put('contextPath', var.get('path').callprop('slice', Js(0.0), (-Js(1.0))))
                        var.put('path', var.get('path').get((var.get('path').get('length')-Js(1.0))))
                @Js
                def PyJs_anonymous_36_(context, this, arguments, var=var):
                    var = Scope({'context':context, 'this':this, 'arguments':arguments}, var)
                    var.registers(['context', 'method'])
                    var.put('method', var.get('func'))
                    if var.get('method').neg():
                        if (var.get('contextPath') and var.get('contextPath').get('length')):
                            var.put('context', var.get('deepGet')(var.get('context'), var.get('contextPath')))
                        if (var.get('context')==var.get(u"null")):
                            return PyJsComma(Js(0.0), Js(None))
                        var.put('method', var.get('context').get(var.get('path')))
                    return (var.get('method') if (var.get('method')==var.get(u"null")) else var.get('method').callprop('apply', var.get('context'), var.get('args')))
                PyJs_anonymous_36_._set_name('anonymous')
                return var.get('_').callprop('map', var.get('obj'), PyJs_anonymous_36_)
            PyJs_anonymous_35_._set_name('anonymous')
            var.get('_').put('invoke', var.get('restArguments')(PyJs_anonymous_35_))
            @Js
            def PyJs_anonymous_37_(obj, key, this, arguments, var=var):
                var = Scope({'obj':obj, 'key':key, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'key'])
                return var.get('_').callprop('map', var.get('obj'), var.get('_').callprop('property', var.get('key')))
            PyJs_anonymous_37_._set_name('anonymous')
            var.get('_').put('pluck', PyJs_anonymous_37_)
            @Js
            def PyJs_anonymous_38_(obj, attrs, this, arguments, var=var):
                var = Scope({'obj':obj, 'attrs':attrs, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'attrs'])
                return var.get('_').callprop('filter', var.get('obj'), var.get('_').callprop('matcher', var.get('attrs')))
            PyJs_anonymous_38_._set_name('anonymous')
            var.get('_').put('where', PyJs_anonymous_38_)
            @Js
            def PyJs_anonymous_39_(obj, attrs, this, arguments, var=var):
                var = Scope({'obj':obj, 'attrs':attrs, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'attrs'])
                return var.get('_').callprop('find', var.get('obj'), var.get('_').callprop('matcher', var.get('attrs')))
            PyJs_anonymous_39_._set_name('anonymous')
            var.get('_').put('findWhere', PyJs_anonymous_39_)
            @Js
            def PyJs_anonymous_40_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'computed', 'length', 'iteratee', 'obj', 'context', 'i', 'lastComputed', 'result'])
                var.put('result', (-var.get('Infinity')))
                var.put('lastComputed', (-var.get('Infinity')))
                if ((var.get('iteratee')==var.get(u"null")) or (((var.get('iteratee',throw=False).typeof()==Js('number')) and (var.get('_typeof')(var.get('obj').get('0'))!=Js('object'))) and (var.get('obj')!=var.get(u"null")))):
                    var.put('obj', (var.get('obj') if var.get('isArrayLike')(var.get('obj')) else var.get('_').callprop('values', var.get('obj'))))
                    #for JS loop
                    var.put('i', Js(0.0))
                    var.put('length', var.get('obj').get('length'))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.put('value', var.get('obj').get(var.get('i')))
                            if ((var.get('value')!=var.get(u"null")) and (var.get('value')>var.get('result'))):
                                var.put('result', var.get('value'))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                else:
                    var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                    @Js
                    def PyJs_anonymous_41_(v, index, list, this, arguments, var=var):
                        var = Scope({'v':v, 'index':index, 'list':list, 'this':this, 'arguments':arguments}, var)
                        var.registers(['list', 'index', 'v'])
                        var.put('computed', var.get('iteratee')(var.get('v'), var.get('index'), var.get('list')))
                        if ((var.get('computed')>var.get('lastComputed')) or (PyJsStrictEq(var.get('computed'),(-var.get('Infinity'))) and PyJsStrictEq(var.get('result'),(-var.get('Infinity'))))):
                            var.put('result', var.get('v'))
                            var.put('lastComputed', var.get('computed'))
                    PyJs_anonymous_41_._set_name('anonymous')
                    var.get('_').callprop('each', var.get('obj'), PyJs_anonymous_41_)
                return var.get('result')
            PyJs_anonymous_40_._set_name('anonymous')
            var.get('_').put('max', PyJs_anonymous_40_)
            @Js
            def PyJs_anonymous_42_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'computed', 'length', 'iteratee', 'obj', 'context', 'i', 'lastComputed', 'result'])
                var.put('result', var.get('Infinity'))
                var.put('lastComputed', var.get('Infinity'))
                if ((var.get('iteratee')==var.get(u"null")) or (((var.get('iteratee',throw=False).typeof()==Js('number')) and (var.get('_typeof')(var.get('obj').get('0'))!=Js('object'))) and (var.get('obj')!=var.get(u"null")))):
                    var.put('obj', (var.get('obj') if var.get('isArrayLike')(var.get('obj')) else var.get('_').callprop('values', var.get('obj'))))
                    #for JS loop
                    var.put('i', Js(0.0))
                    var.put('length', var.get('obj').get('length'))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.put('value', var.get('obj').get(var.get('i')))
                            if ((var.get('value')!=var.get(u"null")) and (var.get('value')<var.get('result'))):
                                var.put('result', var.get('value'))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                else:
                    var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                    @Js
                    def PyJs_anonymous_43_(v, index, list, this, arguments, var=var):
                        var = Scope({'v':v, 'index':index, 'list':list, 'this':this, 'arguments':arguments}, var)
                        var.registers(['list', 'index', 'v'])
                        var.put('computed', var.get('iteratee')(var.get('v'), var.get('index'), var.get('list')))
                        if ((var.get('computed')<var.get('lastComputed')) or (PyJsStrictEq(var.get('computed'),var.get('Infinity')) and PyJsStrictEq(var.get('result'),var.get('Infinity')))):
                            var.put('result', var.get('v'))
                            var.put('lastComputed', var.get('computed'))
                    PyJs_anonymous_43_._set_name('anonymous')
                    var.get('_').callprop('each', var.get('obj'), PyJs_anonymous_43_)
                return var.get('result')
            PyJs_anonymous_42_._set_name('anonymous')
            var.get('_').put('min', PyJs_anonymous_42_)
            @Js
            def PyJs_anonymous_44_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return var.get('_').callprop('sample', var.get('obj'), var.get('Infinity'))
            PyJs_anonymous_44_._set_name('anonymous')
            var.get('_').put('shuffle', PyJs_anonymous_44_)
            @Js
            def PyJs_anonymous_45_(obj, n, guard, this, arguments, var=var):
                var = Scope({'obj':obj, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'sample', 'rand', 'last', 'index', 'length', 'temp', 'obj', 'guard'])
                if ((var.get('n')==var.get(u"null")) or var.get('guard')):
                    if var.get('isArrayLike')(var.get('obj')).neg():
                        var.put('obj', var.get('_').callprop('values', var.get('obj')))
                    return var.get('obj').get(var.get('_').callprop('random', (var.get('obj').get('length')-Js(1.0))))
                var.put('sample', (var.get('_').callprop('clone', var.get('obj')) if var.get('isArrayLike')(var.get('obj')) else var.get('_').callprop('values', var.get('obj'))))
                var.put('length', var.get('getLength')(var.get('sample')))
                var.put('n', var.get('Math').callprop('max', var.get('Math').callprop('min', var.get('n'), var.get('length')), Js(0.0)))
                var.put('last', (var.get('length')-Js(1.0)))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('n')):
                    try:
                        var.put('rand', var.get('_').callprop('random', var.get('index'), var.get('last')))
                        var.put('temp', var.get('sample').get(var.get('index')))
                        var.get('sample').put(var.get('index'), var.get('sample').get(var.get('rand')))
                        var.get('sample').put(var.get('rand'), var.get('temp'))
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return var.get('sample').callprop('slice', Js(0.0), var.get('n'))
            PyJs_anonymous_45_._set_name('anonymous')
            var.get('_').put('sample', PyJs_anonymous_45_)
            @Js
            def PyJs_anonymous_46_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['iteratee', 'index', 'context', 'obj'])
                var.put('index', Js(0.0))
                var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                @Js
                def PyJs_anonymous_47_(left, right, this, arguments, var=var):
                    var = Scope({'left':left, 'right':right, 'this':this, 'arguments':arguments}, var)
                    var.registers(['left', 'a', 'b', 'right'])
                    var.put('a', var.get('left').get('criteria'))
                    var.put('b', var.get('right').get('criteria'))
                    if PyJsStrictNeq(var.get('a'),var.get('b')):
                        if ((var.get('a')>var.get('b')) or PyJsStrictEq(var.get('a'),PyJsComma(Js(0.0), Js(None)))):
                            return Js(1.0)
                        if ((var.get('a')<var.get('b')) or PyJsStrictEq(var.get('b'),PyJsComma(Js(0.0), Js(None)))):
                            return (-Js(1.0))
                    return (var.get('left').get('index')-var.get('right').get('index'))
                PyJs_anonymous_47_._set_name('anonymous')
                @Js
                def PyJs_anonymous_48_(value, key, list, this, arguments, var=var):
                    var = Scope({'value':value, 'key':key, 'list':list, 'this':this, 'arguments':arguments}, var)
                    var.registers(['value', 'list', 'key'])
                    return Js({'value':var.get('value'),'index':(var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1)),'criteria':var.get('iteratee')(var.get('value'), var.get('key'), var.get('list'))})
                PyJs_anonymous_48_._set_name('anonymous')
                return var.get('_').callprop('pluck', var.get('_').callprop('map', var.get('obj'), PyJs_anonymous_48_).callprop('sort', PyJs_anonymous_47_), Js('value'))
            PyJs_anonymous_46_._set_name('anonymous')
            var.get('_').put('sortBy', PyJs_anonymous_46_)
            @Js
            def PyJs_group_49_(behavior, partition, this, arguments, var=var):
                var = Scope({'behavior':behavior, 'partition':partition, 'this':this, 'arguments':arguments, 'group':PyJs_group_49_}, var)
                var.registers(['behavior', 'partition'])
                @Js
                def PyJs_anonymous_50_(obj, iteratee, context, this, arguments, var=var):
                    var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                    var.registers(['iteratee', 'obj', 'context', 'result'])
                    var.put('result', (Js([Js([]), Js([])]) if var.get('partition') else Js({})))
                    var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                    @Js
                    def PyJs_anonymous_51_(value, index, this, arguments, var=var):
                        var = Scope({'value':value, 'index':index, 'this':this, 'arguments':arguments}, var)
                        var.registers(['value', 'index', 'key'])
                        var.put('key', var.get('iteratee')(var.get('value'), var.get('index'), var.get('obj')))
                        var.get('behavior')(var.get('result'), var.get('value'), var.get('key'))
                    PyJs_anonymous_51_._set_name('anonymous')
                    var.get('_').callprop('each', var.get('obj'), PyJs_anonymous_51_)
                    return var.get('result')
                PyJs_anonymous_50_._set_name('anonymous')
                return PyJs_anonymous_50_
            PyJs_group_49_._set_name('group')
            var.put('group', PyJs_group_49_)
            @Js
            def PyJs_anonymous_52_(result, value, key, this, arguments, var=var):
                var = Scope({'result':result, 'value':value, 'key':key, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'key', 'result'])
                if var.get('has')(var.get('result'), var.get('key')):
                    var.get('result').get(var.get('key')).callprop('push', var.get('value'))
                else:
                    var.get('result').put(var.get('key'), Js([var.get('value')]))
            PyJs_anonymous_52_._set_name('anonymous')
            var.get('_').put('groupBy', var.get('group')(PyJs_anonymous_52_))
            @Js
            def PyJs_anonymous_53_(result, value, key, this, arguments, var=var):
                var = Scope({'result':result, 'value':value, 'key':key, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'key', 'result'])
                var.get('result').put(var.get('key'), var.get('value'))
            PyJs_anonymous_53_._set_name('anonymous')
            var.get('_').put('indexBy', var.get('group')(PyJs_anonymous_53_))
            @Js
            def PyJs_anonymous_54_(result, value, key, this, arguments, var=var):
                var = Scope({'result':result, 'value':value, 'key':key, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'key', 'result'])
                if var.get('has')(var.get('result'), var.get('key')):
                    (var.get('result').put(var.get('key'),Js(var.get('result').get(var.get('key')).to_number())+Js(1))-Js(1))
                else:
                    var.get('result').put(var.get('key'), Js(1.0))
            PyJs_anonymous_54_._set_name('anonymous')
            var.get('_').put('countBy', var.get('group')(PyJs_anonymous_54_))
            var.put('reStrSymbol', JsRegExp('/[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g'))
            @Js
            def PyJs_anonymous_55_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if var.get('obj').neg():
                    return Js([])
                if var.get('_').callprop('isArray', var.get('obj')):
                    return var.get('slice').callprop('call', var.get('obj'))
                if var.get('_').callprop('isString', var.get('obj')):
                    return var.get('obj').callprop('match', var.get('reStrSymbol'))
                if var.get('isArrayLike')(var.get('obj')):
                    return var.get('_').callprop('map', var.get('obj'), var.get('_').get('identity'))
                return var.get('_').callprop('values', var.get('obj'))
            PyJs_anonymous_55_._set_name('anonymous')
            var.get('_').put('toArray', PyJs_anonymous_55_)
            @Js
            def PyJs_anonymous_56_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if (var.get('obj')==var.get(u"null")):
                    return Js(0.0)
                return (var.get('obj').get('length') if var.get('isArrayLike')(var.get('obj')) else var.get('_').callprop('keys', var.get('obj')).get('length'))
            PyJs_anonymous_56_._set_name('anonymous')
            var.get('_').put('size', PyJs_anonymous_56_)
            @Js
            def PyJs_anonymous_57_(result, value, PyJsArg_70617373_, this, arguments, var=var):
                var = Scope({'result':result, 'value':value, 'pass':PyJsArg_70617373_, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'pass', 'result'])
                var.get('result').get((Js(0.0) if var.get('pass') else Js(1.0))).callprop('push', var.get('value'))
            PyJs_anonymous_57_._set_name('anonymous')
            var.get('_').put('partition', var.get('group')(PyJs_anonymous_57_, Js(True)))
            @Js
            def PyJs_anonymous_58_(array, n, guard, this, arguments, var=var):
                var = Scope({'array':array, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'array', 'guard'])
                if ((var.get('array')==var.get(u"null")) or (var.get('array').get('length')<Js(1.0))):
                    return (PyJsComma(Js(0.0), Js(None)) if (var.get('n')==var.get(u"null")) else Js([]))
                if ((var.get('n')==var.get(u"null")) or var.get('guard')):
                    return var.get('array').get('0')
                return var.get('_').callprop('initial', var.get('array'), (var.get('array').get('length')-var.get('n')))
            PyJs_anonymous_58_._set_name('anonymous')
            var.get('_').put('first', var.get('_').put('head', var.get('_').put('take', PyJs_anonymous_58_)))
            @Js
            def PyJs_anonymous_59_(array, n, guard, this, arguments, var=var):
                var = Scope({'array':array, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'array', 'guard'])
                return var.get('slice').callprop('call', var.get('array'), Js(0.0), var.get('Math').callprop('max', Js(0.0), (var.get('array').get('length')-(Js(1.0) if ((var.get('n')==var.get(u"null")) or var.get('guard')) else var.get('n')))))
            PyJs_anonymous_59_._set_name('anonymous')
            var.get('_').put('initial', PyJs_anonymous_59_)
            @Js
            def PyJs_anonymous_60_(array, n, guard, this, arguments, var=var):
                var = Scope({'array':array, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'array', 'guard'])
                if ((var.get('array')==var.get(u"null")) or (var.get('array').get('length')<Js(1.0))):
                    return (PyJsComma(Js(0.0), Js(None)) if (var.get('n')==var.get(u"null")) else Js([]))
                if ((var.get('n')==var.get(u"null")) or var.get('guard')):
                    return var.get('array').get((var.get('array').get('length')-Js(1.0)))
                return var.get('_').callprop('rest', var.get('array'), var.get('Math').callprop('max', Js(0.0), (var.get('array').get('length')-var.get('n'))))
            PyJs_anonymous_60_._set_name('anonymous')
            var.get('_').put('last', PyJs_anonymous_60_)
            @Js
            def PyJs_anonymous_61_(array, n, guard, this, arguments, var=var):
                var = Scope({'array':array, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'array', 'guard'])
                return var.get('slice').callprop('call', var.get('array'), (Js(1.0) if ((var.get('n')==var.get(u"null")) or var.get('guard')) else var.get('n')))
            PyJs_anonymous_61_._set_name('anonymous')
            var.get('_').put('rest', var.get('_').put('tail', var.get('_').put('drop', PyJs_anonymous_61_)))
            @Js
            def PyJs_anonymous_62_(array, this, arguments, var=var):
                var = Scope({'array':array, 'this':this, 'arguments':arguments}, var)
                var.registers(['array'])
                return var.get('_').callprop('filter', var.get('array'), var.get('Boolean'))
            PyJs_anonymous_62_._set_name('anonymous')
            var.get('_').put('compact', PyJs_anonymous_62_)
            @Js
            def PyJs_flatten_63_(input, shallow, strict, output, this, arguments, var=var):
                var = Scope({'input':input, 'shallow':shallow, 'strict':strict, 'output':output, 'this':this, 'arguments':arguments, 'flatten':PyJs_flatten_63_}, var)
                var.registers(['idx', 'j', 'input', 'output', 'value', 'length', 'strict', 'len', 'i', 'shallow'])
                var.put('output', (var.get('output') or Js([])))
                var.put('idx', var.get('output').get('length'))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('getLength')(var.get('input')))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('value', var.get('input').get(var.get('i')))
                        if (var.get('isArrayLike')(var.get('value')) and (var.get('_').callprop('isArray', var.get('value')) or var.get('_').callprop('isArguments', var.get('value')))):
                            if var.get('shallow'):
                                var.put('j', Js(0.0))
                                var.put('len', var.get('value').get('length'))
                                while (var.get('j')<var.get('len')):
                                    var.get('output').put((var.put('idx',Js(var.get('idx').to_number())+Js(1))-Js(1)), var.get('value').get((var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))))
                            else:
                                var.get('flatten')(var.get('value'), var.get('shallow'), var.get('strict'), var.get('output'))
                                var.put('idx', var.get('output').get('length'))
                        else:
                            if var.get('strict').neg():
                                var.get('output').put((var.put('idx',Js(var.get('idx').to_number())+Js(1))-Js(1)), var.get('value'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('output')
            PyJs_flatten_63_._set_name('flatten')
            var.put('flatten', PyJs_flatten_63_)
            @Js
            def PyJs_anonymous_64_(array, shallow, this, arguments, var=var):
                var = Scope({'array':array, 'shallow':shallow, 'this':this, 'arguments':arguments}, var)
                var.registers(['array', 'shallow'])
                return var.get('flatten')(var.get('array'), var.get('shallow'), Js(False))
            PyJs_anonymous_64_._set_name('anonymous')
            var.get('_').put('flatten', PyJs_anonymous_64_)
            @Js
            def PyJs_anonymous_65_(array, otherArrays, this, arguments, var=var):
                var = Scope({'array':array, 'otherArrays':otherArrays, 'this':this, 'arguments':arguments}, var)
                var.registers(['array', 'otherArrays'])
                return var.get('_').callprop('difference', var.get('array'), var.get('otherArrays'))
            PyJs_anonymous_65_._set_name('anonymous')
            var.get('_').put('without', var.get('restArguments')(PyJs_anonymous_65_))
            @Js
            def PyJs_anonymous_66_(array, isSorted, iteratee, context, this, arguments, var=var):
                var = Scope({'array':array, 'isSorted':isSorted, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['isSorted', 'value', 'computed', 'length', 'iteratee', 'context', 'i', 'seen', 'array', 'result'])
                if var.get('_').callprop('isBoolean', var.get('isSorted')).neg():
                    var.put('context', var.get('iteratee'))
                    var.put('iteratee', var.get('isSorted'))
                    var.put('isSorted', Js(False))
                if (var.get('iteratee')!=var.get(u"null")):
                    var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                var.put('result', Js([]))
                var.put('seen', Js([]))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('getLength')(var.get('array')))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('value', var.get('array').get(var.get('i')))
                        var.put('computed', (var.get('iteratee')(var.get('value'), var.get('i'), var.get('array')) if var.get('iteratee') else var.get('value')))
                        if (var.get('isSorted') and var.get('iteratee').neg()):
                            if (var.get('i').neg() or PyJsStrictNeq(var.get('seen'),var.get('computed'))):
                                var.get('result').callprop('push', var.get('value'))
                            var.put('seen', var.get('computed'))
                        else:
                            if var.get('iteratee'):
                                if var.get('_').callprop('contains', var.get('seen'), var.get('computed')).neg():
                                    var.get('seen').callprop('push', var.get('computed'))
                                    var.get('result').callprop('push', var.get('value'))
                            else:
                                if var.get('_').callprop('contains', var.get('result'), var.get('value')).neg():
                                    var.get('result').callprop('push', var.get('value'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_66_._set_name('anonymous')
            var.get('_').put('uniq', var.get('_').put('unique', PyJs_anonymous_66_))
            @Js
            def PyJs_anonymous_67_(arrays, this, arguments, var=var):
                var = Scope({'arrays':arrays, 'this':this, 'arguments':arguments}, var)
                var.registers(['arrays'])
                return var.get('_').callprop('uniq', var.get('flatten')(var.get('arrays'), Js(True), Js(True)))
            PyJs_anonymous_67_._set_name('anonymous')
            var.get('_').put('union', var.get('restArguments')(PyJs_anonymous_67_))
            @Js
            def PyJs_anonymous_68_(array, this, arguments, var=var):
                var = Scope({'array':array, 'this':this, 'arguments':arguments}, var)
                var.registers(['j', 'length', 'argsLength', 'i', 'item', 'array', 'result'])
                var.put('result', Js([]))
                var.put('argsLength', var.get('arguments').get('length'))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('getLength')(var.get('array')))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('item', var.get('array').get(var.get('i')))
                        if var.get('_').callprop('contains', var.get('result'), var.get('item')):
                            continue
                        pass
                        #for JS loop
                        var.put('j', Js(1.0))
                        while (var.get('j')<var.get('argsLength')):
                            try:
                                if var.get('_').callprop('contains', var.get('arguments').get(var.get('j')), var.get('item')).neg():
                                    break
                            finally:
                                    (var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))
                        if PyJsStrictEq(var.get('j'),var.get('argsLength')):
                            var.get('result').callprop('push', var.get('item'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_68_._set_name('anonymous')
            var.get('_').put('intersection', PyJs_anonymous_68_)
            @Js
            def PyJs_anonymous_69_(array, rest, this, arguments, var=var):
                var = Scope({'array':array, 'rest':rest, 'this':this, 'arguments':arguments}, var)
                var.registers(['rest', 'array'])
                var.put('rest', var.get('flatten')(var.get('rest'), Js(True), Js(True)))
                @Js
                def PyJs_anonymous_70_(value, this, arguments, var=var):
                    var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                    var.registers(['value'])
                    return var.get('_').callprop('contains', var.get('rest'), var.get('value')).neg()
                PyJs_anonymous_70_._set_name('anonymous')
                return var.get('_').callprop('filter', var.get('array'), PyJs_anonymous_70_)
            PyJs_anonymous_69_._set_name('anonymous')
            var.get('_').put('difference', var.get('restArguments')(PyJs_anonymous_69_))
            @Js
            def PyJs_anonymous_71_(array, this, arguments, var=var):
                var = Scope({'array':array, 'this':this, 'arguments':arguments}, var)
                var.registers(['index', 'length', 'array', 'result'])
                var.put('length', ((var.get('array') and var.get('_').callprop('max', var.get('array'), var.get('getLength')).get('length')) or Js(0.0)))
                var.put('result', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.get('result').put(var.get('index'), var.get('_').callprop('pluck', var.get('array'), var.get('index')))
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_71_._set_name('anonymous')
            var.get('_').put('unzip', PyJs_anonymous_71_)
            var.get('_').put('zip', var.get('restArguments')(var.get('_').get('unzip')))
            @Js
            def PyJs_anonymous_72_(list, values, this, arguments, var=var):
                var = Scope({'list':list, 'values':values, 'this':this, 'arguments':arguments}, var)
                var.registers(['values', 'length', 'i', 'list', 'result'])
                var.put('result', Js({}))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('getLength')(var.get('list')))
                while (var.get('i')<var.get('length')):
                    try:
                        if var.get('values'):
                            var.get('result').put(var.get('list').get(var.get('i')), var.get('values').get(var.get('i')))
                        else:
                            var.get('result').put(var.get('list').get(var.get('i')).get('0'), var.get('list').get(var.get('i')).get('1'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_72_._set_name('anonymous')
            var.get('_').put('object', PyJs_anonymous_72_)
            @Js
            def PyJs_createPredicateIndexFinder_73_(dir, this, arguments, var=var):
                var = Scope({'dir':dir, 'this':this, 'arguments':arguments, 'createPredicateIndexFinder':PyJs_createPredicateIndexFinder_73_}, var)
                var.registers(['dir'])
                @Js
                def PyJs_anonymous_74_(array, predicate, context, this, arguments, var=var):
                    var = Scope({'array':array, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                    var.registers(['predicate', 'index', 'length', 'context', 'array'])
                    var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                    var.put('length', var.get('getLength')(var.get('array')))
                    var.put('index', (Js(0.0) if (var.get('dir')>Js(0.0)) else (var.get('length')-Js(1.0))))
                    #for JS loop
                    
                    while ((var.get('index')>=Js(0.0)) and (var.get('index')<var.get('length'))):
                        try:
                            if var.get('predicate')(var.get('array').get(var.get('index')), var.get('index'), var.get('array')):
                                return var.get('index')
                        finally:
                                var.put('index', var.get('dir'), '+')
                    return (-Js(1.0))
                PyJs_anonymous_74_._set_name('anonymous')
                return PyJs_anonymous_74_
            PyJs_createPredicateIndexFinder_73_._set_name('createPredicateIndexFinder')
            var.put('createPredicateIndexFinder', PyJs_createPredicateIndexFinder_73_)
            var.get('_').put('findIndex', var.get('createPredicateIndexFinder')(Js(1.0)))
            var.get('_').put('findLastIndex', var.get('createPredicateIndexFinder')((-Js(1.0))))
            @Js
            def PyJs_anonymous_75_(array, obj, iteratee, context, this, arguments, var=var):
                var = Scope({'array':array, 'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['mid', 'value', 'high', 'iteratee', 'obj', 'context', 'array', 'low'])
                var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context'), Js(1.0)))
                var.put('value', var.get('iteratee')(var.get('obj')))
                var.put('low', Js(0.0))
                var.put('high', var.get('getLength')(var.get('array')))
                while (var.get('low')<var.get('high')):
                    var.put('mid', var.get('Math').callprop('floor', ((var.get('low')+var.get('high'))/Js(2.0))))
                    if (var.get('iteratee')(var.get('array').get(var.get('mid')))<var.get('value')):
                        var.put('low', (var.get('mid')+Js(1.0)))
                    else:
                        var.put('high', var.get('mid'))
                return var.get('low')
            PyJs_anonymous_75_._set_name('anonymous')
            var.get('_').put('sortedIndex', PyJs_anonymous_75_)
            @Js
            def PyJs_createIndexFinder_76_(dir, predicateFind, sortedIndex, this, arguments, var=var):
                var = Scope({'dir':dir, 'predicateFind':predicateFind, 'sortedIndex':sortedIndex, 'this':this, 'arguments':arguments, 'createIndexFinder':PyJs_createIndexFinder_76_}, var)
                var.registers(['dir', 'sortedIndex', 'predicateFind'])
                @Js
                def PyJs_anonymous_77_(array, item, idx, this, arguments, var=var):
                    var = Scope({'array':array, 'item':item, 'idx':idx, 'this':this, 'arguments':arguments}, var)
                    var.registers(['idx', 'length', 'i', 'item', 'array'])
                    var.put('i', Js(0.0))
                    var.put('length', var.get('getLength')(var.get('array')))
                    if (var.get('idx',throw=False).typeof()==Js('number')):
                        if (var.get('dir')>Js(0.0)):
                            var.put('i', (var.get('idx') if (var.get('idx')>=Js(0.0)) else var.get('Math').callprop('max', (var.get('idx')+var.get('length')), var.get('i'))))
                        else:
                            var.put('length', (var.get('Math').callprop('min', (var.get('idx')+Js(1.0)), var.get('length')) if (var.get('idx')>=Js(0.0)) else ((var.get('idx')+var.get('length'))+Js(1.0))))
                    else:
                        if ((var.get('sortedIndex') and var.get('idx')) and var.get('length')):
                            var.put('idx', var.get('sortedIndex')(var.get('array'), var.get('item')))
                            return (var.get('idx') if PyJsStrictEq(var.get('array').get(var.get('idx')),var.get('item')) else (-Js(1.0)))
                    if PyJsStrictNeq(var.get('item'),var.get('item')):
                        var.put('idx', var.get('predicateFind')(var.get('slice').callprop('call', var.get('array'), var.get('i'), var.get('length')), var.get('_').get('isNaN')))
                        return ((var.get('idx')+var.get('i')) if (var.get('idx')>=Js(0.0)) else (-Js(1.0)))
                    #for JS loop
                    var.put('idx', (var.get('i') if (var.get('dir')>Js(0.0)) else (var.get('length')-Js(1.0))))
                    while ((var.get('idx')>=Js(0.0)) and (var.get('idx')<var.get('length'))):
                        try:
                            if PyJsStrictEq(var.get('array').get(var.get('idx')),var.get('item')):
                                return var.get('idx')
                        finally:
                                var.put('idx', var.get('dir'), '+')
                    return (-Js(1.0))
                PyJs_anonymous_77_._set_name('anonymous')
                return PyJs_anonymous_77_
            PyJs_createIndexFinder_76_._set_name('createIndexFinder')
            var.put('createIndexFinder', PyJs_createIndexFinder_76_)
            var.get('_').put('indexOf', var.get('createIndexFinder')(Js(1.0), var.get('_').get('findIndex'), var.get('_').get('sortedIndex')))
            var.get('_').put('lastIndexOf', var.get('createIndexFinder')((-Js(1.0)), var.get('_').get('findLastIndex')))
            @Js
            def PyJs_anonymous_78_(start, stop, step, this, arguments, var=var):
                var = Scope({'start':start, 'stop':stop, 'step':step, 'this':this, 'arguments':arguments}, var)
                var.registers(['range', 'idx', 'stop', 'step', 'length', 'start'])
                if (var.get('stop')==var.get(u"null")):
                    var.put('stop', (var.get('start') or Js(0.0)))
                    var.put('start', Js(0.0))
                if var.get('step').neg():
                    var.put('step', ((-Js(1.0)) if (var.get('stop')<var.get('start')) else Js(1.0)))
                var.put('length', var.get('Math').callprop('max', var.get('Math').callprop('ceil', ((var.get('stop')-var.get('start'))/var.get('step'))), Js(0.0)))
                var.put('range', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('idx', Js(0.0))
                while (var.get('idx')<var.get('length')):
                    try:
                        var.get('range').put(var.get('idx'), var.get('start'))
                    finally:
                            PyJsComma((var.put('idx',Js(var.get('idx').to_number())+Js(1))-Js(1)),var.put('start', var.get('step'), '+'))
                return var.get('range')
            PyJs_anonymous_78_._set_name('anonymous')
            var.get('_').put('range', PyJs_anonymous_78_)
            @Js
            def PyJs_anonymous_79_(array, count, this, arguments, var=var):
                var = Scope({'array':array, 'count':count, 'this':this, 'arguments':arguments}, var)
                var.registers(['length', 'i', 'count', 'array', 'result'])
                if ((var.get('count')==var.get(u"null")) or (var.get('count')<Js(1.0))):
                    return Js([])
                var.put('result', Js([]))
                var.put('i', Js(0.0))
                var.put('length', var.get('array').get('length'))
                while (var.get('i')<var.get('length')):
                    var.get('result').callprop('push', var.get('slice').callprop('call', var.get('array'), var.get('i'), var.put('i', var.get('count'), '+')))
                return var.get('result')
            PyJs_anonymous_79_._set_name('anonymous')
            var.get('_').put('chunk', PyJs_anonymous_79_)
            @Js
            def PyJs_executeBound_80_(sourceFunc, boundFunc, context, callingContext, args, this, arguments, var=var):
                var = Scope({'sourceFunc':sourceFunc, 'boundFunc':boundFunc, 'context':context, 'callingContext':callingContext, 'args':args, 'this':this, 'arguments':arguments, 'executeBound':PyJs_executeBound_80_}, var)
                var.registers(['sourceFunc', 'boundFunc', 'self', 'args', 'context', 'callingContext', 'result'])
                if var.get('callingContext').instanceof(var.get('boundFunc')).neg():
                    return var.get('sourceFunc').callprop('apply', var.get('context'), var.get('args'))
                var.put('self', var.get('baseCreate')(var.get('sourceFunc').get('prototype')))
                var.put('result', var.get('sourceFunc').callprop('apply', var.get('self'), var.get('args')))
                if var.get('_').callprop('isObject', var.get('result')):
                    return var.get('result')
                return var.get('self')
            PyJs_executeBound_80_._set_name('executeBound')
            var.put('executeBound', PyJs_executeBound_80_)
            @Js
            def PyJs_anonymous_81_(func, context, args, this, arguments, var=var):
                var = Scope({'func':func, 'context':context, 'args':args, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'func', 'args', 'bound'])
                if var.get('_').callprop('isFunction', var.get('func')).neg():
                    PyJsTempException = JsToPyException(var.get('TypeError').create(Js('Bind must be called on a function')))
                    raise PyJsTempException
                @Js
                def PyJs_anonymous_82_(callArgs, this, arguments, var=var):
                    var = Scope({'callArgs':callArgs, 'this':this, 'arguments':arguments}, var)
                    var.registers(['callArgs'])
                    return var.get('executeBound')(var.get('func'), var.get('bound'), var.get('context'), var.get(u"this"), var.get('args').callprop('concat', var.get('callArgs')))
                PyJs_anonymous_82_._set_name('anonymous')
                var.put('bound', var.get('restArguments')(PyJs_anonymous_82_))
                return var.get('bound')
            PyJs_anonymous_81_._set_name('anonymous')
            var.get('_').put('bind', var.get('restArguments')(PyJs_anonymous_81_))
            @Js
            def PyJs_anonymous_83_(func, boundArgs, this, arguments, var=var):
                var = Scope({'func':func, 'boundArgs':boundArgs, 'this':this, 'arguments':arguments}, var)
                var.registers(['boundArgs', 'placeholder', 'func', 'bound'])
                var.put('placeholder', var.get('_').get('partial').get('placeholder'))
                @Js
                def PyJs_bound_84_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments, 'bound':PyJs_bound_84_}, var)
                    var.registers(['i', 'length', 'args', 'position'])
                    var.put('position', Js(0.0))
                    var.put('length', var.get('boundArgs').get('length'))
                    var.put('args', var.get('Array')(var.get('length')))
                    #for JS loop
                    var.put('i', Js(0.0))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.get('args').put(var.get('i'), (var.get('arguments').get((var.put('position',Js(var.get('position').to_number())+Js(1))-Js(1))) if PyJsStrictEq(var.get('boundArgs').get(var.get('i')),var.get('placeholder')) else var.get('boundArgs').get(var.get('i'))))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                    while (var.get('position')<var.get('arguments').get('length')):
                        var.get('args').callprop('push', var.get('arguments').get((var.put('position',Js(var.get('position').to_number())+Js(1))-Js(1))))
                    return var.get('executeBound')(var.get('func'), var.get('bound'), var.get(u"this"), var.get(u"this"), var.get('args'))
                PyJs_bound_84_._set_name('bound')
                var.put('bound', PyJs_bound_84_)
                return var.get('bound')
            PyJs_anonymous_83_._set_name('anonymous')
            var.get('_').put('partial', var.get('restArguments')(PyJs_anonymous_83_))
            var.get('_').get('partial').put('placeholder', var.get('_'))
            @Js
            def PyJs_anonymous_85_(obj, keys, this, arguments, var=var):
                var = Scope({'obj':obj, 'keys':keys, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'index', 'obj', 'key'])
                var.put('keys', var.get('flatten')(var.get('keys'), Js(False), Js(False)))
                var.put('index', var.get('keys').get('length'))
                if (var.get('index')<Js(1.0)):
                    PyJsTempException = JsToPyException(var.get('Error').create(Js('bindAll must be passed function names')))
                    raise PyJsTempException
                while (var.put('index',Js(var.get('index').to_number())-Js(1))+Js(1)):
                    var.put('key', var.get('keys').get(var.get('index')))
                    var.get('obj').put(var.get('key'), var.get('_').callprop('bind', var.get('obj').get(var.get('key')), var.get('obj')))
            PyJs_anonymous_85_._set_name('anonymous')
            var.get('_').put('bindAll', var.get('restArguments')(PyJs_anonymous_85_))
            @Js
            def PyJs_anonymous_86_(func, hasher, this, arguments, var=var):
                var = Scope({'func':func, 'hasher':hasher, 'this':this, 'arguments':arguments}, var)
                var.registers(['func', 'memoize', 'hasher'])
                @Js
                def PyJs_memoize_87_(key, this, arguments, var=var):
                    var = Scope({'key':key, 'this':this, 'arguments':arguments, 'memoize':PyJs_memoize_87_}, var)
                    var.registers(['cache', 'address', 'key'])
                    var.put('cache', var.get('memoize').get('cache'))
                    var.put('address', (Js('')+(var.get('hasher').callprop('apply', var.get(u"this"), var.get('arguments')) if var.get('hasher') else var.get('key'))))
                    if var.get('has')(var.get('cache'), var.get('address')).neg():
                        var.get('cache').put(var.get('address'), var.get('func').callprop('apply', var.get(u"this"), var.get('arguments')))
                    return var.get('cache').get(var.get('address'))
                PyJs_memoize_87_._set_name('memoize')
                var.put('memoize', PyJs_memoize_87_)
                var.get('memoize').put('cache', Js({}))
                return var.get('memoize')
            PyJs_anonymous_86_._set_name('anonymous')
            var.get('_').put('memoize', PyJs_anonymous_86_)
            @Js
            def PyJs_anonymous_88_(func, wait, args, this, arguments, var=var):
                var = Scope({'func':func, 'wait':wait, 'args':args, 'this':this, 'arguments':arguments}, var)
                var.registers(['wait', 'func', 'args'])
                @Js
                def PyJs_anonymous_89_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('func').callprop('apply', var.get(u"null"), var.get('args'))
                PyJs_anonymous_89_._set_name('anonymous')
                return var.get('setTimeout')(PyJs_anonymous_89_, var.get('wait'))
            PyJs_anonymous_88_._set_name('anonymous')
            var.get('_').put('delay', var.get('restArguments')(PyJs_anonymous_88_))
            var.get('_').put('defer', var.get('_').callprop('partial', var.get('_').get('delay'), var.get('_'), Js(1.0)))
            @Js
            def PyJs_anonymous_90_(func, wait, options, this, arguments, var=var):
                var = Scope({'func':func, 'wait':wait, 'options':options, 'this':this, 'arguments':arguments}, var)
                var.registers(['throttled', 'previous', 'timeout', 'func', 'later', 'args', 'options', 'context', 'wait', 'result'])
                pass
                var.put('previous', Js(0.0))
                if var.get('options').neg():
                    var.put('options', Js({}))
                @Js
                def PyJs_later_91_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments, 'later':PyJs_later_91_}, var)
                    var.registers([])
                    var.put('previous', (Js(0.0) if PyJsStrictEq(var.get('options').get('leading'),Js(False)) else var.get('_').callprop('now')))
                    var.put('timeout', var.get(u"null"))
                    var.put('result', var.get('func').callprop('apply', var.get('context'), var.get('args')))
                    if var.get('timeout').neg():
                        var.put('context', var.put('args', var.get(u"null")))
                PyJs_later_91_._set_name('later')
                var.put('later', PyJs_later_91_)
                @Js
                def PyJs_throttled_92_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments, 'throttled':PyJs_throttled_92_}, var)
                    var.registers(['remaining', 'now'])
                    var.put('now', var.get('_').callprop('now'))
                    if (var.get('previous').neg() and PyJsStrictEq(var.get('options').get('leading'),Js(False))):
                        var.put('previous', var.get('now'))
                    var.put('remaining', (var.get('wait')-(var.get('now')-var.get('previous'))))
                    var.put('context', var.get(u"this"))
                    var.put('args', var.get('arguments'))
                    if ((var.get('remaining')<=Js(0.0)) or (var.get('remaining')>var.get('wait'))):
                        if var.get('timeout'):
                            var.get('clearTimeout')(var.get('timeout'))
                            var.put('timeout', var.get(u"null"))
                        var.put('previous', var.get('now'))
                        var.put('result', var.get('func').callprop('apply', var.get('context'), var.get('args')))
                        if var.get('timeout').neg():
                            var.put('context', var.put('args', var.get(u"null")))
                    else:
                        if (var.get('timeout').neg() and PyJsStrictNeq(var.get('options').get('trailing'),Js(False))):
                            var.put('timeout', var.get('setTimeout')(var.get('later'), var.get('remaining')))
                    return var.get('result')
                PyJs_throttled_92_._set_name('throttled')
                var.put('throttled', PyJs_throttled_92_)
                @Js
                def PyJs_anonymous_93_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.get('clearTimeout')(var.get('timeout'))
                    var.put('previous', Js(0.0))
                    var.put('timeout', var.put('context', var.put('args', var.get(u"null"))))
                PyJs_anonymous_93_._set_name('anonymous')
                var.get('throttled').put('cancel', PyJs_anonymous_93_)
                return var.get('throttled')
            PyJs_anonymous_90_._set_name('anonymous')
            var.get('_').put('throttle', PyJs_anonymous_90_)
            @Js
            def PyJs_anonymous_94_(func, wait, immediate, this, arguments, var=var):
                var = Scope({'func':func, 'wait':wait, 'immediate':immediate, 'this':this, 'arguments':arguments}, var)
                var.registers(['timeout', 'func', 'later', 'immediate', 'debounced', 'wait', 'result'])
                pass
                @Js
                def PyJs_later_95_(context, args, this, arguments, var=var):
                    var = Scope({'context':context, 'args':args, 'this':this, 'arguments':arguments, 'later':PyJs_later_95_}, var)
                    var.registers(['context', 'args'])
                    var.put('timeout', var.get(u"null"))
                    if var.get('args'):
                        var.put('result', var.get('func').callprop('apply', var.get('context'), var.get('args')))
                PyJs_later_95_._set_name('later')
                var.put('later', PyJs_later_95_)
                @Js
                def PyJs_anonymous_96_(args, this, arguments, var=var):
                    var = Scope({'args':args, 'this':this, 'arguments':arguments}, var)
                    var.registers(['args', 'callNow'])
                    if var.get('timeout'):
                        var.get('clearTimeout')(var.get('timeout'))
                    if var.get('immediate'):
                        var.put('callNow', var.get('timeout').neg())
                        var.put('timeout', var.get('setTimeout')(var.get('later'), var.get('wait')))
                        if var.get('callNow'):
                            var.put('result', var.get('func').callprop('apply', var.get(u"this"), var.get('args')))
                    else:
                        var.put('timeout', var.get('_').callprop('delay', var.get('later'), var.get('wait'), var.get(u"this"), var.get('args')))
                    return var.get('result')
                PyJs_anonymous_96_._set_name('anonymous')
                var.put('debounced', var.get('restArguments')(PyJs_anonymous_96_))
                @Js
                def PyJs_anonymous_97_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.get('clearTimeout')(var.get('timeout'))
                    var.put('timeout', var.get(u"null"))
                PyJs_anonymous_97_._set_name('anonymous')
                var.get('debounced').put('cancel', PyJs_anonymous_97_)
                return var.get('debounced')
            PyJs_anonymous_94_._set_name('anonymous')
            var.get('_').put('debounce', PyJs_anonymous_94_)
            @Js
            def PyJs_anonymous_98_(func, wrapper, this, arguments, var=var):
                var = Scope({'func':func, 'wrapper':wrapper, 'this':this, 'arguments':arguments}, var)
                var.registers(['func', 'wrapper'])
                return var.get('_').callprop('partial', var.get('wrapper'), var.get('func'))
            PyJs_anonymous_98_._set_name('anonymous')
            var.get('_').put('wrap', PyJs_anonymous_98_)
            @Js
            def PyJs_anonymous_99_(predicate, this, arguments, var=var):
                var = Scope({'predicate':predicate, 'this':this, 'arguments':arguments}, var)
                var.registers(['predicate'])
                @Js
                def PyJs_anonymous_100_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('predicate').callprop('apply', var.get(u"this"), var.get('arguments')).neg()
                PyJs_anonymous_100_._set_name('anonymous')
                return PyJs_anonymous_100_
            PyJs_anonymous_99_._set_name('anonymous')
            var.get('_').put('negate', PyJs_anonymous_99_)
            @Js
            def PyJs_anonymous_101_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers(['args', 'start'])
                var.put('args', var.get('arguments'))
                var.put('start', (var.get('args').get('length')-Js(1.0)))
                @Js
                def PyJs_anonymous_102_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers(['i', 'result'])
                    var.put('i', var.get('start'))
                    var.put('result', var.get('args').get(var.get('start')).callprop('apply', var.get(u"this"), var.get('arguments')))
                    while (var.put('i',Js(var.get('i').to_number())-Js(1))+Js(1)):
                        var.put('result', var.get('args').get(var.get('i')).callprop('call', var.get(u"this"), var.get('result')))
                    return var.get('result')
                PyJs_anonymous_102_._set_name('anonymous')
                return PyJs_anonymous_102_
            PyJs_anonymous_101_._set_name('anonymous')
            var.get('_').put('compose', PyJs_anonymous_101_)
            @Js
            def PyJs_anonymous_103_(times, func, this, arguments, var=var):
                var = Scope({'times':times, 'func':func, 'this':this, 'arguments':arguments}, var)
                var.registers(['func', 'times'])
                @Js
                def PyJs_anonymous_104_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    if (var.put('times',Js(var.get('times').to_number())-Js(1))<Js(1.0)):
                        return var.get('func').callprop('apply', var.get(u"this"), var.get('arguments'))
                PyJs_anonymous_104_._set_name('anonymous')
                return PyJs_anonymous_104_
            PyJs_anonymous_103_._set_name('anonymous')
            var.get('_').put('after', PyJs_anonymous_103_)
            @Js
            def PyJs_anonymous_105_(times, func, this, arguments, var=var):
                var = Scope({'times':times, 'func':func, 'this':this, 'arguments':arguments}, var)
                var.registers(['times', 'func', 'memo'])
                pass
                @Js
                def PyJs_anonymous_106_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    if (var.put('times',Js(var.get('times').to_number())-Js(1))>Js(0.0)):
                        var.put('memo', var.get('func').callprop('apply', var.get(u"this"), var.get('arguments')))
                    if (var.get('times')<=Js(1.0)):
                        var.put('func', var.get(u"null"))
                    return var.get('memo')
                PyJs_anonymous_106_._set_name('anonymous')
                return PyJs_anonymous_106_
            PyJs_anonymous_105_._set_name('anonymous')
            var.get('_').put('before', PyJs_anonymous_105_)
            var.get('_').put('once', var.get('_').callprop('partial', var.get('_').get('before'), Js(2.0)))
            var.get('_').put('restArguments', var.get('restArguments'))
            var.put('hasEnumBug', Js({'toString':var.get(u"null")}).callprop('propertyIsEnumerable', Js('toString')).neg())
            var.put('nonEnumerableProps', Js([Js('valueOf'), Js('isPrototypeOf'), Js('toString'), Js('propertyIsEnumerable'), Js('hasOwnProperty'), Js('toLocaleString')]))
            @Js
            def PyJs_collectNonEnumProps_107_(obj, keys, this, arguments, var=var):
                var = Scope({'obj':obj, 'keys':keys, 'this':this, 'arguments':arguments, 'collectNonEnumProps':PyJs_collectNonEnumProps_107_}, var)
                var.registers(['proto', 'keys', 'prop', 'constructor', 'nonEnumIdx', 'obj'])
                var.put('nonEnumIdx', var.get('nonEnumerableProps').get('length'))
                var.put('constructor', var.get('obj').get('constructor'))
                var.put('proto', ((var.get('_').callprop('isFunction', var.get('constructor')) and var.get('constructor').get('prototype')) or var.get('ObjProto')))
                var.put('prop', Js('constructor'))
                if (var.get('has')(var.get('obj'), var.get('prop')) and var.get('_').callprop('contains', var.get('keys'), var.get('prop')).neg()):
                    var.get('keys').callprop('push', var.get('prop'))
                while (var.put('nonEnumIdx',Js(var.get('nonEnumIdx').to_number())-Js(1))+Js(1)):
                    var.put('prop', var.get('nonEnumerableProps').get(var.get('nonEnumIdx')))
                    if ((var.get('obj').contains(var.get('prop')) and PyJsStrictNeq(var.get('obj').get(var.get('prop')),var.get('proto').get(var.get('prop')))) and var.get('_').callprop('contains', var.get('keys'), var.get('prop')).neg()):
                        var.get('keys').callprop('push', var.get('prop'))
            PyJs_collectNonEnumProps_107_._set_name('collectNonEnumProps')
            var.put('collectNonEnumProps', PyJs_collectNonEnumProps_107_)
            @Js
            def PyJs_anonymous_108_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'obj', 'key'])
                if var.get('_').callprop('isObject', var.get('obj')).neg():
                    return Js([])
                if var.get('nativeKeys'):
                    return var.get('nativeKeys')(var.get('obj'))
                var.put('keys', Js([]))
                for PyJsTemp in var.get('obj'):
                    var.put('key', PyJsTemp)
                    if var.get('has')(var.get('obj'), var.get('key')):
                        var.get('keys').callprop('push', var.get('key'))
                if var.get('hasEnumBug'):
                    var.get('collectNonEnumProps')(var.get('obj'), var.get('keys'))
                return var.get('keys')
            PyJs_anonymous_108_._set_name('anonymous')
            var.get('_').put('keys', PyJs_anonymous_108_)
            @Js
            def PyJs_anonymous_109_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'obj', 'key'])
                if var.get('_').callprop('isObject', var.get('obj')).neg():
                    return Js([])
                var.put('keys', Js([]))
                for PyJsTemp in var.get('obj'):
                    var.put('key', PyJsTemp)
                    var.get('keys').callprop('push', var.get('key'))
                if var.get('hasEnumBug'):
                    var.get('collectNonEnumProps')(var.get('obj'), var.get('keys'))
                return var.get('keys')
            PyJs_anonymous_109_._set_name('anonymous')
            var.get('_').put('allKeys', PyJs_anonymous_109_)
            @Js
            def PyJs_anonymous_110_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['values', 'keys', 'length', 'obj', 'i'])
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                var.put('length', var.get('keys').get('length'))
                var.put('values', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.get('values').put(var.get('i'), var.get('obj').get(var.get('keys').get(var.get('i'))))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('values')
            PyJs_anonymous_110_._set_name('anonymous')
            var.get('_').put('values', PyJs_anonymous_110_)
            @Js
            def PyJs_anonymous_111_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['currentKey', 'keys', 'results', 'index', 'length', 'iteratee', 'context', 'obj'])
                var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                var.put('length', var.get('keys').get('length'))
                var.put('results', Js({}))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.put('currentKey', var.get('keys').get(var.get('index')))
                        var.get('results').put(var.get('currentKey'), var.get('iteratee')(var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')))
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return var.get('results')
            PyJs_anonymous_111_._set_name('anonymous')
            var.get('_').put('mapObject', PyJs_anonymous_111_)
            @Js
            def PyJs_anonymous_112_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'pairs', 'length', 'obj', 'i'])
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                var.put('length', var.get('keys').get('length'))
                var.put('pairs', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.get('pairs').put(var.get('i'), Js([var.get('keys').get(var.get('i')), var.get('obj').get(var.get('keys').get(var.get('i')))]))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('pairs')
            PyJs_anonymous_112_._set_name('anonymous')
            var.get('_').put('pairs', PyJs_anonymous_112_)
            @Js
            def PyJs_anonymous_113_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'length', 'obj', 'i', 'result'])
                var.put('result', Js({}))
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('keys').get('length'))
                while (var.get('i')<var.get('length')):
                    try:
                        var.get('result').put(var.get('obj').get(var.get('keys').get(var.get('i'))), var.get('keys').get(var.get('i')))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_113_._set_name('anonymous')
            var.get('_').put('invert', PyJs_anonymous_113_)
            @Js
            def PyJs_anonymous_114_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'names', 'key'])
                var.put('names', Js([]))
                for PyJsTemp in var.get('obj'):
                    var.put('key', PyJsTemp)
                    if var.get('_').callprop('isFunction', var.get('obj').get(var.get('key'))):
                        var.get('names').callprop('push', var.get('key'))
                return var.get('names').callprop('sort')
            PyJs_anonymous_114_._set_name('anonymous')
            var.get('_').put('functions', var.get('_').put('methods', PyJs_anonymous_114_))
            @Js
            def PyJs_createAssigner_115_(keysFunc, defaults, this, arguments, var=var):
                var = Scope({'keysFunc':keysFunc, 'defaults':defaults, 'this':this, 'arguments':arguments, 'createAssigner':PyJs_createAssigner_115_}, var)
                var.registers(['keysFunc', 'defaults'])
                @Js
                def PyJs_anonymous_116_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['key', 'keys', 'index', 'length', 'source', 'obj', 'l', 'i'])
                    var.put('length', var.get('arguments').get('length'))
                    if var.get('defaults'):
                        var.put('obj', var.get('Object')(var.get('obj')))
                    if ((var.get('length')<Js(2.0)) or (var.get('obj')==var.get(u"null"))):
                        return var.get('obj')
                    #for JS loop
                    var.put('index', Js(1.0))
                    while (var.get('index')<var.get('length')):
                        try:
                            var.put('source', var.get('arguments').get(var.get('index')))
                            var.put('keys', var.get('keysFunc')(var.get('source')))
                            var.put('l', var.get('keys').get('length'))
                            #for JS loop
                            var.put('i', Js(0.0))
                            while (var.get('i')<var.get('l')):
                                try:
                                    var.put('key', var.get('keys').get(var.get('i')))
                                    if (var.get('defaults').neg() or PyJsStrictEq(var.get('obj').get(var.get('key')),PyJsComma(Js(0.0), Js(None)))):
                                        var.get('obj').put(var.get('key'), var.get('source').get(var.get('key')))
                                finally:
                                        (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                        finally:
                                (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                    return var.get('obj')
                PyJs_anonymous_116_._set_name('anonymous')
                return PyJs_anonymous_116_
            PyJs_createAssigner_115_._set_name('createAssigner')
            var.put('createAssigner', PyJs_createAssigner_115_)
            var.get('_').put('extend', var.get('createAssigner')(var.get('_').get('allKeys')))
            var.get('_').put('extendOwn', var.get('_').put('assign', var.get('createAssigner')(var.get('_').get('keys'))))
            @Js
            def PyJs_anonymous_117_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['key', 'keys', 'predicate', 'length', 'obj', 'context', 'i'])
                var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('keys').get('length'))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('key', var.get('keys').get(var.get('i')))
                        if var.get('predicate')(var.get('obj').get(var.get('key')), var.get('key'), var.get('obj')):
                            return var.get('key')
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
            PyJs_anonymous_117_._set_name('anonymous')
            var.get('_').put('findKey', PyJs_anonymous_117_)
            @Js
            def PyJs_keyInObj_118_(value, key, obj, this, arguments, var=var):
                var = Scope({'value':value, 'key':key, 'obj':obj, 'this':this, 'arguments':arguments, 'keyInObj':PyJs_keyInObj_118_}, var)
                var.registers(['value', 'obj', 'key'])
                return var.get('obj').contains(var.get('key'))
            PyJs_keyInObj_118_._set_name('keyInObj')
            var.put('keyInObj', PyJs_keyInObj_118_)
            @Js
            def PyJs_anonymous_119_(obj, keys, this, arguments, var=var):
                var = Scope({'obj':obj, 'keys':keys, 'this':this, 'arguments':arguments}, var)
                var.registers(['key', 'keys', 'value', 'iteratee', 'length', 'obj', 'i', 'result'])
                var.put('result', Js({}))
                var.put('iteratee', var.get('keys').get('0'))
                if (var.get('obj')==var.get(u"null")):
                    return var.get('result')
                if var.get('_').callprop('isFunction', var.get('iteratee')):
                    if (var.get('keys').get('length')>Js(1.0)):
                        var.put('iteratee', var.get('optimizeCb')(var.get('iteratee'), var.get('keys').get('1')))
                    var.put('keys', var.get('_').callprop('allKeys', var.get('obj')))
                else:
                    var.put('iteratee', var.get('keyInObj'))
                    var.put('keys', var.get('flatten')(var.get('keys'), Js(False), Js(False)))
                    var.put('obj', var.get('Object')(var.get('obj')))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('keys').get('length'))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('key', var.get('keys').get(var.get('i')))
                        var.put('value', var.get('obj').get(var.get('key')))
                        if var.get('iteratee')(var.get('value'), var.get('key'), var.get('obj')):
                            var.get('result').put(var.get('key'), var.get('value'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_119_._set_name('anonymous')
            var.get('_').put('pick', var.get('restArguments')(PyJs_anonymous_119_))
            @Js
            def PyJs_anonymous_120_(obj, keys, this, arguments, var=var):
                var = Scope({'obj':obj, 'keys':keys, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'iteratee', 'keys', 'obj'])
                var.put('iteratee', var.get('keys').get('0'))
                if var.get('_').callprop('isFunction', var.get('iteratee')):
                    var.put('iteratee', var.get('_').callprop('negate', var.get('iteratee')))
                    if (var.get('keys').get('length')>Js(1.0)):
                        var.put('context', var.get('keys').get('1'))
                else:
                    var.put('keys', var.get('_').callprop('map', var.get('flatten')(var.get('keys'), Js(False), Js(False)), var.get('String')))
                    @Js
                    def PyJs_iteratee_121_(value, key, this, arguments, var=var):
                        var = Scope({'value':value, 'key':key, 'this':this, 'arguments':arguments, 'iteratee':PyJs_iteratee_121_}, var)
                        var.registers(['value', 'key'])
                        return var.get('_').callprop('contains', var.get('keys'), var.get('key')).neg()
                    PyJs_iteratee_121_._set_name('iteratee')
                    var.put('iteratee', PyJs_iteratee_121_)
                return var.get('_').callprop('pick', var.get('obj'), var.get('iteratee'), var.get('context'))
            PyJs_anonymous_120_._set_name('anonymous')
            var.get('_').put('omit', var.get('restArguments')(PyJs_anonymous_120_))
            var.get('_').put('defaults', var.get('createAssigner')(var.get('_').get('allKeys'), Js(True)))
            @Js
            def PyJs_anonymous_122_(prototype, props, this, arguments, var=var):
                var = Scope({'prototype':prototype, 'props':props, 'this':this, 'arguments':arguments}, var)
                var.registers(['props', 'prototype', 'result'])
                var.put('result', var.get('baseCreate')(var.get('prototype')))
                if var.get('props'):
                    var.get('_').callprop('extendOwn', var.get('result'), var.get('props'))
                return var.get('result')
            PyJs_anonymous_122_._set_name('anonymous')
            var.get('_').put('create', PyJs_anonymous_122_)
            @Js
            def PyJs_anonymous_123_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if var.get('_').callprop('isObject', var.get('obj')).neg():
                    return var.get('obj')
                return (var.get('obj').callprop('slice') if var.get('_').callprop('isArray', var.get('obj')) else var.get('_').callprop('extend', Js({}), var.get('obj')))
            PyJs_anonymous_123_._set_name('anonymous')
            var.get('_').put('clone', PyJs_anonymous_123_)
            @Js
            def PyJs_anonymous_124_(obj, interceptor, this, arguments, var=var):
                var = Scope({'obj':obj, 'interceptor':interceptor, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'interceptor'])
                var.get('interceptor')(var.get('obj'))
                return var.get('obj')
            PyJs_anonymous_124_._set_name('anonymous')
            var.get('_').put('tap', PyJs_anonymous_124_)
            @Js
            def PyJs_anonymous_125_(object, attrs, this, arguments, var=var):
                var = Scope({'object':object, 'attrs':attrs, 'this':this, 'arguments':arguments}, var)
                var.registers(['object', 'key', 'keys', 'length', 'attrs', 'obj', 'i'])
                var.put('keys', var.get('_').callprop('keys', var.get('attrs')))
                var.put('length', var.get('keys').get('length'))
                if (var.get('object')==var.get(u"null")):
                    return var.get('length').neg()
                var.put('obj', var.get('Object')(var.get('object')))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('key', var.get('keys').get(var.get('i')))
                        if (PyJsStrictNeq(var.get('attrs').get(var.get('key')),var.get('obj').get(var.get('key'))) or var.get('obj').contains(var.get('key')).neg()):
                            return Js(False)
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return Js(True)
            PyJs_anonymous_125_._set_name('anonymous')
            var.get('_').put('isMatch', PyJs_anonymous_125_)
            pass
            @Js
            def PyJs_eq_126_(a, b, aStack, bStack, this, arguments, var=var):
                var = Scope({'a':a, 'b':b, 'aStack':aStack, 'bStack':bStack, 'this':this, 'arguments':arguments, 'eq':PyJs_eq_126_}, var)
                var.registers(['aStack', 'type', 'bStack', 'a', 'b'])
                if PyJsStrictEq(var.get('a'),var.get('b')):
                    return (PyJsStrictNeq(var.get('a'),Js(0.0)) or PyJsStrictEq((Js(1.0)/var.get('a')),(Js(1.0)/var.get('b'))))
                if ((var.get('a')==var.get(u"null")) or (var.get('b')==var.get(u"null"))):
                    return Js(False)
                if PyJsStrictNeq(var.get('a'),var.get('a')):
                    return PyJsStrictNeq(var.get('b'),var.get('b'))
                var.put('type', (Js('undefined') if PyJsStrictEq(var.get('a',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('a'))))
                if ((PyJsStrictNeq(var.get('type'),Js('function')) and PyJsStrictNeq(var.get('type'),Js('object'))) and ((Js('undefined') if PyJsStrictEq(var.get('b',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('b')))!=Js('object'))):
                    return Js(False)
                return var.get('deepEq')(var.get('a'), var.get('b'), var.get('aStack'), var.get('bStack'))
            PyJs_eq_126_._set_name('eq')
            var.put('eq', PyJs_eq_126_)
            @Js
            def PyJs_deepEq_127_(a, b, aStack, bStack, this, arguments, var=var):
                var = Scope({'a':a, 'b':b, 'aStack':aStack, 'bStack':bStack, 'this':this, 'arguments':arguments, 'deepEq':PyJs_deepEq_127_}, var)
                var.registers(['aStack', 'bCtor', 'key', 'keys', 'bStack', 'a', 'length', 'areArrays', 'className', 'b', 'aCtor'])
                if var.get('a').instanceof(var.get('_')):
                    var.put('a', var.get('a').get('_wrapped'))
                if var.get('b').instanceof(var.get('_')):
                    var.put('b', var.get('b').get('_wrapped'))
                var.put('className', var.get('toString').callprop('call', var.get('a')))
                if PyJsStrictNeq(var.get('className'),var.get('toString').callprop('call', var.get('b'))):
                    return Js(False)
                while 1:
                    SWITCHED = False
                    CONDITION = (var.get('className'))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object RegExp]')):
                        SWITCHED = True
                        pass
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object String]')):
                        SWITCHED = True
                        return PyJsStrictEq((Js('')+var.get('a')),(Js('')+var.get('b')))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object Number]')):
                        SWITCHED = True
                        if PyJsStrictNeq((+var.get('a')),(+var.get('a'))):
                            return PyJsStrictNeq((+var.get('b')),(+var.get('b')))
                        return (PyJsStrictEq((Js(1.0)/(+var.get('a'))),(Js(1.0)/var.get('b'))) if PyJsStrictEq((+var.get('a')),Js(0.0)) else PyJsStrictEq((+var.get('a')),(+var.get('b'))))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object Date]')):
                        SWITCHED = True
                        pass
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object Boolean]')):
                        SWITCHED = True
                        return PyJsStrictEq((+var.get('a')),(+var.get('b')))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object Symbol]')):
                        SWITCHED = True
                        return PyJsStrictEq(var.get('SymbolProto').get('valueOf').callprop('call', var.get('a')),var.get('SymbolProto').get('valueOf').callprop('call', var.get('b')))
                    SWITCHED = True
                    break
                var.put('areArrays', PyJsStrictEq(var.get('className'),Js('[object Array]')))
                if var.get('areArrays').neg():
                    if (((Js('undefined') if PyJsStrictEq(var.get('a',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('a')))!=Js('object')) or ((Js('undefined') if PyJsStrictEq(var.get('b',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('b')))!=Js('object'))):
                        return Js(False)
                    var.put('aCtor', var.get('a').get('constructor'))
                    var.put('bCtor', var.get('b').get('constructor'))
                    if (((PyJsStrictNeq(var.get('aCtor'),var.get('bCtor')) and (((var.get('_').callprop('isFunction', var.get('aCtor')) and var.get('aCtor').instanceof(var.get('aCtor'))) and var.get('_').callprop('isFunction', var.get('bCtor'))) and var.get('bCtor').instanceof(var.get('bCtor'))).neg()) and var.get('a').contains(Js('constructor'))) and var.get('b').contains(Js('constructor'))):
                        return Js(False)
                var.put('aStack', (var.get('aStack') or Js([])))
                var.put('bStack', (var.get('bStack') or Js([])))
                var.put('length', var.get('aStack').get('length'))
                while (var.put('length',Js(var.get('length').to_number())-Js(1))+Js(1)):
                    if PyJsStrictEq(var.get('aStack').get(var.get('length')),var.get('a')):
                        return PyJsStrictEq(var.get('bStack').get(var.get('length')),var.get('b'))
                var.get('aStack').callprop('push', var.get('a'))
                var.get('bStack').callprop('push', var.get('b'))
                if var.get('areArrays'):
                    var.put('length', var.get('a').get('length'))
                    if PyJsStrictNeq(var.get('length'),var.get('b').get('length')):
                        return Js(False)
                    while (var.put('length',Js(var.get('length').to_number())-Js(1))+Js(1)):
                        if var.get('eq')(var.get('a').get(var.get('length')), var.get('b').get(var.get('length')), var.get('aStack'), var.get('bStack')).neg():
                            return Js(False)
                else:
                    var.put('keys', var.get('_').callprop('keys', var.get('a')))
                    var.put('length', var.get('keys').get('length'))
                    if PyJsStrictNeq(var.get('_').callprop('keys', var.get('b')).get('length'),var.get('length')):
                        return Js(False)
                    while (var.put('length',Js(var.get('length').to_number())-Js(1))+Js(1)):
                        var.put('key', var.get('keys').get(var.get('length')))
                        if (var.get('has')(var.get('b'), var.get('key')) and var.get('eq')(var.get('a').get(var.get('key')), var.get('b').get(var.get('key')), var.get('aStack'), var.get('bStack'))).neg():
                            return Js(False)
                var.get('aStack').callprop('pop')
                var.get('bStack').callprop('pop')
                return Js(True)
            PyJs_deepEq_127_._set_name('deepEq')
            var.put('deepEq', PyJs_deepEq_127_)
            @Js
            def PyJs_anonymous_128_(a, b, this, arguments, var=var):
                var = Scope({'a':a, 'b':b, 'this':this, 'arguments':arguments}, var)
                var.registers(['a', 'b'])
                return var.get('eq')(var.get('a'), var.get('b'))
            PyJs_anonymous_128_._set_name('anonymous')
            var.get('_').put('isEqual', PyJs_anonymous_128_)
            @Js
            def PyJs_anonymous_129_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if (var.get('obj')==var.get(u"null")):
                    return Js(True)
                if (var.get('isArrayLike')(var.get('obj')) and ((var.get('_').callprop('isArray', var.get('obj')) or var.get('_').callprop('isString', var.get('obj'))) or var.get('_').callprop('isArguments', var.get('obj')))):
                    return PyJsStrictEq(var.get('obj').get('length'),Js(0.0))
                return PyJsStrictEq(var.get('_').callprop('keys', var.get('obj')).get('length'),Js(0.0))
            PyJs_anonymous_129_._set_name('anonymous')
            var.get('_').put('isEmpty', PyJs_anonymous_129_)
            @Js
            def PyJs_anonymous_130_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return (var.get('obj') and PyJsStrictEq(var.get('obj').get('nodeType'),Js(1.0))).neg().neg()
            PyJs_anonymous_130_._set_name('anonymous')
            var.get('_').put('isElement', PyJs_anonymous_130_)
            @Js
            def PyJs_anonymous_131_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return PyJsStrictEq(var.get('toString').callprop('call', var.get('obj')),Js('[object Array]'))
            PyJs_anonymous_131_._set_name('anonymous')
            var.get('_').put('isArray', (var.get('nativeIsArray') or PyJs_anonymous_131_))
            @Js
            def PyJs_anonymous_132_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'type'])
                var.put('type', (Js('undefined') if PyJsStrictEq(var.get('obj',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('obj'))))
                return (PyJsStrictEq(var.get('type'),Js('function')) or (PyJsStrictEq(var.get('type'),Js('object')) and var.get('obj').neg().neg()))
            PyJs_anonymous_132_._set_name('anonymous')
            var.get('_').put('isObject', PyJs_anonymous_132_)
            @Js
            def PyJs_anonymous_133_(name, this, arguments, var=var):
                var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
                var.registers(['name'])
                @Js
                def PyJs_anonymous_134_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return PyJsStrictEq(var.get('toString').callprop('call', var.get('obj')),((Js('[object ')+var.get('name'))+Js(']')))
                PyJs_anonymous_134_._set_name('anonymous')
                var.get('_').put((Js('is')+var.get('name')), PyJs_anonymous_134_)
            PyJs_anonymous_133_._set_name('anonymous')
            var.get('_').callprop('each', Js([Js('Arguments'), Js('Function'), Js('String'), Js('Number'), Js('Date'), Js('RegExp'), Js('Error'), Js('Symbol'), Js('Map'), Js('WeakMap'), Js('Set'), Js('WeakSet')]), PyJs_anonymous_133_)
            if var.get('_').callprop('isArguments', var.get('arguments')).neg():
                @Js
                def PyJs_anonymous_135_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return var.get('has')(var.get('obj'), Js('callee'))
                PyJs_anonymous_135_._set_name('anonymous')
                var.get('_').put('isArguments', PyJs_anonymous_135_)
            var.put('nodelist', (var.get('root').get('document') and var.get('root').get('document').get('childNodes')))
            if (((JsRegExp('/./').typeof()!=Js('function')) and ((Js('undefined') if PyJsStrictEq(var.get('Int8Array',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('Int8Array')))!=Js('object'))) and (var.get('nodelist',throw=False).typeof()!=Js('function'))):
                @Js
                def PyJs_anonymous_136_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return ((var.get('obj',throw=False).typeof()==Js('function')) or Js(False))
                PyJs_anonymous_136_._set_name('anonymous')
                var.get('_').put('isFunction', PyJs_anonymous_136_)
            @Js
            def PyJs_anonymous_137_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return ((var.get('_').callprop('isSymbol', var.get('obj')).neg() and var.get('isFinite')(var.get('obj'))) and var.get('isNaN')(var.get('parseFloat')(var.get('obj'))).neg())
            PyJs_anonymous_137_._set_name('anonymous')
            var.get('_').put('isFinite', PyJs_anonymous_137_)
            @Js
            def PyJs_anonymous_138_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return (var.get('_').callprop('isNumber', var.get('obj')) and var.get('isNaN')(var.get('obj')))
            PyJs_anonymous_138_._set_name('anonymous')
            var.get('_').put('isNaN', PyJs_anonymous_138_)
            @Js
            def PyJs_anonymous_139_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return ((PyJsStrictEq(var.get('obj'),Js(True)) or PyJsStrictEq(var.get('obj'),Js(False))) or PyJsStrictEq(var.get('toString').callprop('call', var.get('obj')),Js('[object Boolean]')))
            PyJs_anonymous_139_._set_name('anonymous')
            var.get('_').put('isBoolean', PyJs_anonymous_139_)
            @Js
            def PyJs_anonymous_140_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return PyJsStrictEq(var.get('obj'),var.get(u"null"))
            PyJs_anonymous_140_._set_name('anonymous')
            var.get('_').put('isNull', PyJs_anonymous_140_)
            @Js
            def PyJs_anonymous_141_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return PyJsStrictEq(var.get('obj'),PyJsComma(Js(0.0), Js(None)))
            PyJs_anonymous_141_._set_name('anonymous')
            var.get('_').put('isUndefined', PyJs_anonymous_141_)
            @Js
            def PyJs_anonymous_142_(obj, path, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'this':this, 'arguments':arguments}, var)
                var.registers(['key', 'path', 'length', 'obj', 'i'])
                if var.get('_').callprop('isArray', var.get('path')).neg():
                    return var.get('has')(var.get('obj'), var.get('path'))
                var.put('length', var.get('path').get('length'))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('key', var.get('path').get(var.get('i')))
                        if ((var.get('obj')==var.get(u"null")) or var.get('hasOwnProperty').callprop('call', var.get('obj'), var.get('key')).neg()):
                            return Js(False)
                        var.put('obj', var.get('obj').get(var.get('key')))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('length').neg().neg()
            PyJs_anonymous_142_._set_name('anonymous')
            var.get('_').put('has', PyJs_anonymous_142_)
            @Js
            def PyJs_anonymous_143_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                var.get('root').put('_', var.get('previousUnderscore'))
                return var.get(u"this")
            PyJs_anonymous_143_._set_name('anonymous')
            var.get('_').put('noConflict', PyJs_anonymous_143_)
            @Js
            def PyJs_anonymous_144_(value, this, arguments, var=var):
                var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                var.registers(['value'])
                return var.get('value')
            PyJs_anonymous_144_._set_name('anonymous')
            var.get('_').put('identity', PyJs_anonymous_144_)
            @Js
            def PyJs_anonymous_145_(value, this, arguments, var=var):
                var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                var.registers(['value'])
                @Js
                def PyJs_anonymous_146_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('value')
                PyJs_anonymous_146_._set_name('anonymous')
                return PyJs_anonymous_146_
            PyJs_anonymous_145_._set_name('anonymous')
            var.get('_').put('constant', PyJs_anonymous_145_)
            @Js
            def PyJs_anonymous_147_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                pass
            PyJs_anonymous_147_._set_name('anonymous')
            var.get('_').put('noop', PyJs_anonymous_147_)
            @Js
            def PyJs_anonymous_148_(path, this, arguments, var=var):
                var = Scope({'path':path, 'this':this, 'arguments':arguments}, var)
                var.registers(['path'])
                if var.get('_').callprop('isArray', var.get('path')).neg():
                    return var.get('shallowProperty')(var.get('path'))
                @Js
                def PyJs_anonymous_149_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return var.get('deepGet')(var.get('obj'), var.get('path'))
                PyJs_anonymous_149_._set_name('anonymous')
                return PyJs_anonymous_149_
            PyJs_anonymous_148_._set_name('anonymous')
            var.get('_').put('property', PyJs_anonymous_148_)
            @Js
            def PyJs_anonymous_150_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if (var.get('obj')==var.get(u"null")):
                    @Js
                    def PyJs_anonymous_151_(this, arguments, var=var):
                        var = Scope({'this':this, 'arguments':arguments}, var)
                        var.registers([])
                        pass
                    PyJs_anonymous_151_._set_name('anonymous')
                    return PyJs_anonymous_151_
                @Js
                def PyJs_anonymous_152_(path, this, arguments, var=var):
                    var = Scope({'path':path, 'this':this, 'arguments':arguments}, var)
                    var.registers(['path'])
                    return (var.get('obj').get(var.get('path')) if var.get('_').callprop('isArray', var.get('path')).neg() else var.get('deepGet')(var.get('obj'), var.get('path')))
                PyJs_anonymous_152_._set_name('anonymous')
                return PyJs_anonymous_152_
            PyJs_anonymous_150_._set_name('anonymous')
            var.get('_').put('propertyOf', PyJs_anonymous_150_)
            @Js
            def PyJs_anonymous_153_(attrs, this, arguments, var=var):
                var = Scope({'attrs':attrs, 'this':this, 'arguments':arguments}, var)
                var.registers(['attrs'])
                var.put('attrs', var.get('_').callprop('extendOwn', Js({}), var.get('attrs')))
                @Js
                def PyJs_anonymous_154_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return var.get('_').callprop('isMatch', var.get('obj'), var.get('attrs'))
                PyJs_anonymous_154_._set_name('anonymous')
                return PyJs_anonymous_154_
            PyJs_anonymous_153_._set_name('anonymous')
            var.get('_').put('matcher', var.get('_').put('matches', PyJs_anonymous_153_))
            @Js
            def PyJs_anonymous_155_(n, iteratee, context, this, arguments, var=var):
                var = Scope({'n':n, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'accum', 'iteratee', 'context', 'i'])
                var.put('accum', var.get('Array')(var.get('Math').callprop('max', Js(0.0), var.get('n'))))
                var.put('iteratee', var.get('optimizeCb')(var.get('iteratee'), var.get('context'), Js(1.0)))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('n')):
                    try:
                        var.get('accum').put(var.get('i'), var.get('iteratee')(var.get('i')))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('accum')
            PyJs_anonymous_155_._set_name('anonymous')
            var.get('_').put('times', PyJs_anonymous_155_)
            @Js
            def PyJs_anonymous_156_(min, max, this, arguments, var=var):
                var = Scope({'min':min, 'max':max, 'this':this, 'arguments':arguments}, var)
                var.registers(['max', 'min'])
                if (var.get('max')==var.get(u"null")):
                    var.put('max', var.get('min'))
                    var.put('min', Js(0.0))
                return (var.get('min')+var.get('Math').callprop('floor', (var.get('Math').callprop('random')*((var.get('max')-var.get('min'))+Js(1.0)))))
            PyJs_anonymous_156_._set_name('anonymous')
            var.get('_').put('random', PyJs_anonymous_156_)
            @Js
            def PyJs_anonymous_157_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                return var.get('Date').create().callprop('getTime')
            PyJs_anonymous_157_._set_name('anonymous')
            var.get('_').put('now', (var.get('Date').get('now') or PyJs_anonymous_157_))
            var.put('escapeMap', Js({'&':Js('&amp;'),'<':Js('&lt;'),'>':Js('&gt;'),'"':Js('&quot;'),"'":Js('&#x27;'),'`':Js('&#x60;')}))
            var.put('unescapeMap', var.get('_').callprop('invert', var.get('escapeMap')))
            @Js
            def PyJs_createEscaper_158_(map, this, arguments, var=var):
                var = Scope({'map':map, 'this':this, 'arguments':arguments, 'createEscaper':PyJs_createEscaper_158_}, var)
                var.registers(['map', 'testRegexp', 'replaceRegexp', 'source', 'escaper'])
                @Js
                def PyJs_escaper_159_(match, this, arguments, var=var):
                    var = Scope({'match':match, 'this':this, 'arguments':arguments, 'escaper':PyJs_escaper_159_}, var)
                    var.registers(['match'])
                    return var.get('map').get(var.get('match'))
                PyJs_escaper_159_._set_name('escaper')
                var.put('escaper', PyJs_escaper_159_)
                var.put('source', ((Js('(?:')+var.get('_').callprop('keys', var.get('map')).callprop('join', Js('|')))+Js(')')))
                var.put('testRegexp', var.get('RegExp')(var.get('source')))
                var.put('replaceRegexp', var.get('RegExp')(var.get('source'), Js('g')))
                @Js
                def PyJs_anonymous_160_(string, this, arguments, var=var):
                    var = Scope({'string':string, 'this':this, 'arguments':arguments}, var)
                    var.registers(['string'])
                    var.put('string', (Js('') if (var.get('string')==var.get(u"null")) else (Js('')+var.get('string'))))
                    return (var.get('string').callprop('replace', var.get('replaceRegexp'), var.get('escaper')) if var.get('testRegexp').callprop('test', var.get('string')) else var.get('string'))
                PyJs_anonymous_160_._set_name('anonymous')
                return PyJs_anonymous_160_
            PyJs_createEscaper_158_._set_name('createEscaper')
            var.put('createEscaper', PyJs_createEscaper_158_)
            var.get('_').put('escape', var.get('createEscaper')(var.get('escapeMap')))
            var.get('_').put('unescape', var.get('createEscaper')(var.get('unescapeMap')))
            @Js
            def PyJs_anonymous_161_(obj, path, fallback, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'fallback':fallback, 'this':this, 'arguments':arguments}, var)
                var.registers(['path', 'prop', 'fallback', 'length', 'obj', 'i'])
                if var.get('_').callprop('isArray', var.get('path')).neg():
                    var.put('path', Js([var.get('path')]))
                var.put('length', var.get('path').get('length'))
                if var.get('length').neg():
                    return (var.get('fallback').callprop('call', var.get('obj')) if var.get('_').callprop('isFunction', var.get('fallback')) else var.get('fallback'))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('prop', (PyJsComma(Js(0.0), Js(None)) if (var.get('obj')==var.get(u"null")) else var.get('obj').get(var.get('path').get(var.get('i')))))
                        if PyJsStrictEq(var.get('prop'),PyJsComma(Js(0.0), Js(None))):
                            var.put('prop', var.get('fallback'))
                            var.put('i', var.get('length'))
                        var.put('obj', (var.get('prop').callprop('call', var.get('obj')) if var.get('_').callprop('isFunction', var.get('prop')) else var.get('prop')))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('obj')
            PyJs_anonymous_161_._set_name('anonymous')
            var.get('_').put('result', PyJs_anonymous_161_)
            var.put('idCounter', Js(0.0))
            @Js
            def PyJs_anonymous_162_(prefix, this, arguments, var=var):
                var = Scope({'prefix':prefix, 'this':this, 'arguments':arguments}, var)
                var.registers(['id', 'prefix'])
                var.put('id', (var.put('idCounter',Js(var.get('idCounter').to_number())+Js(1))+Js('')))
                return ((var.get('prefix')+var.get('id')) if var.get('prefix') else var.get('id'))
            PyJs_anonymous_162_._set_name('anonymous')
            var.get('_').put('uniqueId', PyJs_anonymous_162_)
            var.get('_').put('templateSettings', Js({'evaluate':JsRegExp('/<%([\\s\\S]+?)%>/g'),'interpolate':JsRegExp('/<%=([\\s\\S]+?)%>/g'),'escape':JsRegExp('/<%-([\\s\\S]+?)%>/g')}))
            var.put('noMatch', JsRegExp('/(.)^/'))
            var.put('escapes', Js({"'":Js("'"),'\\':Js('\\'),'\r':Js('r'),'\n':Js('n'),'\u2028':Js('u2028'),'\u2029':Js('u2029')}))
            var.put('escapeRegExp', JsRegExp("/\\\\|'|\\r|\\n|\\u2028|\\u2029/g"))
            @Js
            def PyJs_escapeChar_163_(match, this, arguments, var=var):
                var = Scope({'match':match, 'this':this, 'arguments':arguments, 'escapeChar':PyJs_escapeChar_163_}, var)
                var.registers(['match'])
                return (Js('\\')+var.get('escapes').get(var.get('match')))
            PyJs_escapeChar_163_._set_name('escapeChar')
            var.put('escapeChar', PyJs_escapeChar_163_)
            @Js
            def PyJs_anonymous_164_(text, settings, oldSettings, this, arguments, var=var):
                var = Scope({'text':text, 'settings':settings, 'oldSettings':oldSettings, 'this':this, 'arguments':arguments}, var)
                var.registers(['text', 'settings', 'template', 'oldSettings', 'matcher', 'index', 'argument', 'render', 'source'])
                if (var.get('settings').neg() and var.get('oldSettings')):
                    var.put('settings', var.get('oldSettings'))
                var.put('settings', var.get('_').callprop('defaults', Js({}), var.get('settings'), var.get('_').get('templateSettings')))
                var.put('matcher', var.get('RegExp')((Js([(var.get('settings').get('escape') or var.get('noMatch')).get('source'), (var.get('settings').get('interpolate') or var.get('noMatch')).get('source'), (var.get('settings').get('evaluate') or var.get('noMatch')).get('source')]).callprop('join', Js('|'))+Js('|$')), Js('g')))
                var.put('index', Js(0.0))
                var.put('source', Js("__p+='"))
                @Js
                def PyJs_anonymous_165_(match, escape, interpolate, evaluate, offset, this, arguments, var=var):
                    var = Scope({'match':match, 'escape':escape, 'interpolate':interpolate, 'evaluate':evaluate, 'offset':offset, 'this':this, 'arguments':arguments}, var)
                    var.registers(['offset', 'evaluate', 'escape', 'interpolate', 'match'])
                    var.put('source', var.get('text').callprop('slice', var.get('index'), var.get('offset')).callprop('replace', var.get('escapeRegExp'), var.get('escapeChar')), '+')
                    var.put('index', (var.get('offset')+var.get('match').get('length')))
                    if var.get('escape'):
                        var.put('source', ((Js("'+\n((__t=(")+var.get('escape'))+Js("))==null?'':_.escape(__t))+\n'")), '+')
                    else:
                        if var.get('interpolate'):
                            var.put('source', ((Js("'+\n((__t=(")+var.get('interpolate'))+Js("))==null?'':__t)+\n'")), '+')
                        else:
                            if var.get('evaluate'):
                                var.put('source', ((Js("';\n")+var.get('evaluate'))+Js("\n__p+='")), '+')
                    return var.get('match')
                PyJs_anonymous_165_._set_name('anonymous')
                var.get('text').callprop('replace', var.get('matcher'), PyJs_anonymous_165_)
                var.put('source', Js("';\n"), '+')
                if var.get('settings').get('variable').neg():
                    var.put('source', ((Js('with(obj||{}){\n')+var.get('source'))+Js('}\n')))
                var.put('source', (((Js("var __t,__p='',__j=Array.prototype.join,")+Js("print=function(){__p+=__j.call(arguments,'');};\n"))+var.get('source'))+Js('return __p;\n')))
                pass
                try:
                    var.put('render', var.get('Function').create((var.get('settings').get('variable') or Js('obj')), Js('_'), var.get('source')))
                except PyJsException as PyJsTempException:
                    PyJsHolder_65_89572903 = var.own.get('e')
                    var.force_own_put('e', PyExceptionToJs(PyJsTempException))
                    try:
                        var.get('e').put('source', var.get('source'))
                        PyJsTempException = JsToPyException(var.get('e'))
                        raise PyJsTempException
                    finally:
                        if PyJsHolder_65_89572903 is not None:
                            var.own['e'] = PyJsHolder_65_89572903
                        else:
                            del var.own['e']
                        del PyJsHolder_65_89572903
                @Js
                def PyJs_template_166_(data, this, arguments, var=var):
                    var = Scope({'data':data, 'this':this, 'arguments':arguments, 'template':PyJs_template_166_}, var)
                    var.registers(['data'])
                    return var.get('render').callprop('call', var.get(u"this"), var.get('data'), var.get('_'))
                PyJs_template_166_._set_name('template')
                var.put('template', PyJs_template_166_)
                var.put('argument', (var.get('settings').get('variable') or Js('obj')))
                var.get('template').put('source', ((((Js('function(')+var.get('argument'))+Js('){\n'))+var.get('source'))+Js('}')))
                return var.get('template')
            PyJs_anonymous_164_._set_name('anonymous')
            var.get('_').put('template', PyJs_anonymous_164_)
            @Js
            def PyJs_anonymous_167_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'instance'])
                var.put('instance', var.get('_')(var.get('obj')))
                var.get('instance').put('_chain', Js(True))
                return var.get('instance')
            PyJs_anonymous_167_._set_name('anonymous')
            var.get('_').put('chain', PyJs_anonymous_167_)
            @Js
            def PyJs_chainResult_168_(instance, obj, this, arguments, var=var):
                var = Scope({'instance':instance, 'obj':obj, 'this':this, 'arguments':arguments, 'chainResult':PyJs_chainResult_168_}, var)
                var.registers(['obj', 'instance'])
                return (var.get('_')(var.get('obj')).callprop('chain') if var.get('instance').get('_chain') else var.get('obj'))
            PyJs_chainResult_168_._set_name('chainResult')
            var.put('chainResult', PyJs_chainResult_168_)
            @Js
            def PyJs_anonymous_169_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                @Js
                def PyJs_anonymous_170_(name, this, arguments, var=var):
                    var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
                    var.registers(['name', 'func'])
                    var.put('func', var.get('_').put(var.get('name'), var.get('obj').get(var.get('name'))))
                    @Js
                    def PyJs_anonymous_171_(this, arguments, var=var):
                        var = Scope({'this':this, 'arguments':arguments}, var)
                        var.registers(['args'])
                        var.put('args', Js([var.get(u"this").get('_wrapped')]))
                        var.get('push').callprop('apply', var.get('args'), var.get('arguments'))
                        return var.get('chainResult')(var.get(u"this"), var.get('func').callprop('apply', var.get('_'), var.get('args')))
                    PyJs_anonymous_171_._set_name('anonymous')
                    var.get('_').get('prototype').put(var.get('name'), PyJs_anonymous_171_)
                PyJs_anonymous_170_._set_name('anonymous')
                var.get('_').callprop('each', var.get('_').callprop('functions', var.get('obj')), PyJs_anonymous_170_)
                return var.get('_')
            PyJs_anonymous_169_._set_name('anonymous')
            var.get('_').put('mixin', PyJs_anonymous_169_)
            var.get('_').callprop('mixin', var.get('_'))
            @Js
            def PyJs_anonymous_172_(name, this, arguments, var=var):
                var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
                var.registers(['name', 'method'])
                var.put('method', var.get('ArrayProto').get(var.get('name')))
                @Js
                def PyJs_anonymous_173_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    var.put('obj', var.get(u"this").get('_wrapped'))
                    var.get('method').callprop('apply', var.get('obj'), var.get('arguments'))
                    if ((PyJsStrictEq(var.get('name'),Js('shift')) or PyJsStrictEq(var.get('name'),Js('splice'))) and PyJsStrictEq(var.get('obj').get('length'),Js(0.0))):
                        var.get('obj').delete('0')
                    return var.get('chainResult')(var.get(u"this"), var.get('obj'))
                PyJs_anonymous_173_._set_name('anonymous')
                var.get('_').get('prototype').put(var.get('name'), PyJs_anonymous_173_)
            PyJs_anonymous_172_._set_name('anonymous')
            var.get('_').callprop('each', Js([Js('pop'), Js('push'), Js('reverse'), Js('shift'), Js('sort'), Js('splice'), Js('unshift')]), PyJs_anonymous_172_)
            @Js
            def PyJs_anonymous_174_(name, this, arguments, var=var):
                var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
                var.registers(['name', 'method'])
                var.put('method', var.get('ArrayProto').get(var.get('name')))
                @Js
                def PyJs_anonymous_175_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('chainResult')(var.get(u"this"), var.get('method').callprop('apply', var.get(u"this").get('_wrapped'), var.get('arguments')))
                PyJs_anonymous_175_._set_name('anonymous')
                var.get('_').get('prototype').put(var.get('name'), PyJs_anonymous_175_)
            PyJs_anonymous_174_._set_name('anonymous')
            var.get('_').callprop('each', Js([Js('concat'), Js('join'), Js('slice')]), PyJs_anonymous_174_)
            @Js
            def PyJs_anonymous_176_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                return var.get(u"this").get('_wrapped')
            PyJs_anonymous_176_._set_name('anonymous')
            var.get('_').get('prototype').put('value', PyJs_anonymous_176_)
            var.get('_').get('prototype').put('valueOf', var.get('_').get('prototype').put('toJSON', var.get('_').get('prototype').get('value')))
            @Js
            def PyJs_anonymous_177_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                return var.get('String')(var.get(u"this").get('_wrapped'))
            PyJs_anonymous_177_._set_name('anonymous')
            var.get('_').get('prototype').put('toString', PyJs_anonymous_177_)
            if ((var.get('define',throw=False).typeof()==Js('function')) and var.get('define').get('amd')):
                @Js
                def PyJs_anonymous_178_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('_')
                PyJs_anonymous_178_._set_name('anonymous')
                var.get('define')(Js('underscore'), Js([]), PyJs_anonymous_178_)
        PyJs_anonymous_4_._set_name('anonymous')
        PyJs_anonymous_4_()
    PyJs_anonymous_3_._set_name('anonymous')
    PyJs_anonymous_3_.callprop('call', var.get(u"this"), (var.get('global') if PyJsStrictNeq(var.get('global',throw=False).typeof(),Js('undefined')) else (var.get('self') if PyJsStrictNeq(var.get('self',throw=False).typeof(),Js('undefined')) else (var.get('window') if PyJsStrictNeq(var.get('window',throw=False).typeof(),Js('undefined')) else Js({})))))
PyJs_anonymous_2_._set_name('anonymous')
@Js
def PyJs_anonymous_179_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'addToGlobals', 'module_temp_love_python', 'require'])
    @Js
    def PyJsHoisted_addToGlobals_(name, obj, this, arguments, var=var):
        var = Scope({'name':name, 'obj':obj, 'this':this, 'arguments':arguments}, var)
        var.registers(['name', 'obj'])
        if var.get('Object').get('prototype').callprop('hasOwnProperty', Js('_fake_exports')).neg():
            var.get('Object').get('prototype').put('_fake_exports', Js({}))
        var.get('Object').get('prototype').get('_fake_exports').put(var.get('name'), var.get('obj'))
    PyJsHoisted_addToGlobals_.func_name = 'addToGlobals'
    var.put('addToGlobals', PyJsHoisted_addToGlobals_)
    pass
    pass
    pass
    var.put('module_temp_love_python', var.get('require')(Js('underscore')))
    var.get('addToGlobals')(Js('underscore'), var.get('module_temp_love_python'))
PyJs_anonymous_179_._set_name('anonymous')
@Js
def PyJs_anonymous_180_(this, arguments, var=var):
    var = Scope({'this':this, 'arguments':arguments}, var)
    var.registers(['r'])
    @Js
    def PyJsHoisted_r_(e, n, t, this, arguments, var=var):
        var = Scope({'e':e, 'n':n, 't':t, 'this':this, 'arguments':arguments}, var)
        var.registers(['n', 't', 'e', 'o', 'u', 'i'])
        @Js
        def PyJsHoisted_o_(i, f, this, arguments, var=var):
            var = Scope({'i':i, 'f':f, 'this':this, 'arguments':arguments}, var)
            var.registers(['a', 'c', 'f', 'p', 'i'])
            if var.get('n').get(var.get('i')).neg():
                if var.get('e').get(var.get('i')).neg():
                    var.put('c', ((Js('function')==var.get('require',throw=False).typeof()) and var.get('require')))
                    if (var.get('f').neg() and var.get('c')):
                        return var.get('c')(var.get('i'), Js(0.0).neg())
                    if var.get('u'):
                        return var.get('u')(var.get('i'), Js(0.0).neg())
                    var.put('a', var.get('Error').create(((Js("Cannot find module '")+var.get('i'))+Js("'"))))
                    PyJsTempException = JsToPyException(PyJsComma(var.get('a').put('code', Js('MODULE_NOT_FOUND')),var.get('a')))
                    raise PyJsTempException
                var.put('p', var.get('n').put(var.get('i'), Js({'exports':Js({})})))
                @Js
                def PyJs_anonymous_181_(r, this, arguments, var=var):
                    var = Scope({'r':r, 'this':this, 'arguments':arguments}, var)
                    var.registers(['r', 'n'])
                    var.put('n', var.get('e').get(var.get('i')).get('1').get(var.get('r')))
                    return var.get('o')((var.get('n') or var.get('r')))
                PyJs_anonymous_181_._set_name('anonymous')
                var.get('e').get(var.get('i')).get('0').callprop('call', var.get('p').get('exports'), PyJs_anonymous_181_, var.get('p'), var.get('p').get('exports'), var.get('r'), var.get('e'), var.get('n'), var.get('t'))
            return var.get('n').get(var.get('i')).get('exports')
        PyJsHoisted_o_.func_name = 'o'
        var.put('o', PyJsHoisted_o_)
        pass
        #for JS loop
        var.put('u', ((Js('function')==var.get('require',throw=False).typeof()) and var.get('require')))
        var.put('i', Js(0.0))
        while (var.get('i')<var.get('t').get('length')):
            try:
                var.get('o')(var.get('t').get(var.get('i')))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        return var.get('o')
    PyJsHoisted_r_.func_name = 'r'
    var.put('r', PyJsHoisted_r_)
    pass
    return var.get('r')
PyJs_anonymous_180_._set_name('anonymous')
PyJs_anonymous_180_()(Js({'1':Js([PyJs_anonymous_2_, Js({})]),'2':Js([PyJs_anonymous_179_, Js({'underscore':Js(1.0)})])}), Js({}), Js([Js(2.0)]))
pass
pass
pass
pass
var.put('underscore', var.get('getFromGlobals')(Js('underscore')))
var.get('underscore')

from js2py.pyjs import *
# setting scope
var = Scope( JS_BUILTINS )
set_global_object(var)

# Code follows:
var.registers(['getFromGlobals', 'underscore', '_typeof'])
@Js
def PyJsHoisted_getFromGlobals_(name, this, arguments, var=var):
    var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
    var.registers(['name'])
    if var.get('Object').get('prototype').callprop('hasOwnProperty', Js('_fake_exports')).neg():
        PyJsTempException = JsToPyException(var.get('Error')((Js('Could not find any value named ')+var.get('name'))))
        raise PyJsTempException
    if var.get('Object').get('prototype').get('_fake_exports').callprop('hasOwnProperty', var.get('name')):
        return var.get('Object').get('prototype').get('_fake_exports').get(var.get('name'))
    else:
        PyJsTempException = JsToPyException(var.get('Error')((Js('Could not find any value named ')+var.get('name'))))
        raise PyJsTempException
PyJsHoisted_getFromGlobals_.func_name = 'getFromGlobals'
var.put('getFromGlobals', PyJsHoisted_getFromGlobals_)
Js('use strict')
@Js
def PyJs_anonymous_0_(obj, this, arguments, var=var):
    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
    var.registers(['obj'])
    return var.get('obj',throw=False).typeof()
PyJs_anonymous_0_._set_name('anonymous')
@Js
def PyJs_anonymous_1_(obj, this, arguments, var=var):
    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
    var.registers(['obj'])
    return (Js('symbol') if (((var.get('obj') and PyJsStrictEq(var.get('Symbol',throw=False).typeof(),Js('function'))) and PyJsStrictEq(var.get('obj').get('constructor'),var.get('Symbol'))) and PyJsStrictNeq(var.get('obj'),var.get('Symbol').get('prototype'))) else var.get('obj',throw=False).typeof())
PyJs_anonymous_1_._set_name('anonymous')
var.put('_typeof', (PyJs_anonymous_0_ if (PyJsStrictEq(var.get('Symbol',throw=False).typeof(),Js('function')) and PyJsStrictEq(var.get('Symbol').get('iterator').typeof(),Js('symbol'))) else PyJs_anonymous_1_))
@Js
def PyJs_anonymous_2_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'require', 'module'])
    @Js
    def PyJs_anonymous_3_(PyJsArg_676c6f62616c_, this, arguments, var=var):
        var = Scope({'global':PyJsArg_676c6f62616c_, 'this':this, 'arguments':arguments}, var)
        var.registers(['global'])
        @Js
        def PyJs_anonymous_4_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers(['nativeIsArray', 'keyInObj', 'has', 'escapeChar', 'deepEq', 'restArguments', 'deepGet', 'hasEnumBug', 'toString', 'Ctor', 'executeBound', 'unescapeMap', 'createReduce', 'nonEnumerableProps', 'isArrayLike', 'root', 'escapeMap', 'cb', 'push', 'SymbolProto', 'nativeKeys', 'escapes', 'nativeCreate', 'flatten', 'shallowProperty', 'baseCreate', 'builtinIteratee', 'createAssigner', 'group', 'createIndexFinder', 'escapeRegExp', 'ArrayProto', '_', 'createPredicateIndexFinder', 'reStrSymbol', 'eq', 'createEscaper', 'slice', 'nodelist', 'getLength', 'idCounter', 'optimizeCb', 'previousUnderscore', 'ObjProto', 'noMatch', 'MAX_ARRAY_INDEX', 'hasOwnProperty', 'collectNonEnumProps', 'chainResult'])
            def PyJs_LONG_5_(var=var):
                return (((((Js('undefined') if PyJsStrictEq(var.get('self',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('self')))==Js('object')) and PyJsStrictEq(var.get('self').get('self'),var.get('self'))) and var.get('self')) or ((((Js('undefined') if PyJsStrictEq(var.get('global',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('global')))==Js('object')) and PyJsStrictEq(var.get('global').get('global'),var.get('global'))) and var.get('global')))
            var.put('root', ((PyJs_LONG_5_() or var.get(u"this")) or Js({})))
            var.put('previousUnderscore', var.get('root').get('_'))
            var.put('ArrayProto', var.get('Array').get('prototype'))
            var.put('ObjProto', var.get('Object').get('prototype'))
            var.put('SymbolProto', (var.get('Symbol').get('prototype') if PyJsStrictNeq(var.get('Symbol',throw=False).typeof(),Js('undefined')) else var.get(u"null")))
            var.put('push', var.get('ArrayProto').get('push'))
            var.put('slice', var.get('ArrayProto').get('slice'))
            var.put('toString', var.get('ObjProto').get('toString'))
            var.put('hasOwnProperty', var.get('ObjProto').get('hasOwnProperty'))
            var.put('nativeIsArray', var.get('Array').get('isArray'))
            var.put('nativeKeys', var.get('Object').get('keys'))
            var.put('nativeCreate', var.get('Object').get('create'))
            @Js
            def PyJs_Ctor_6_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments, 'Ctor':PyJs_Ctor_6_}, var)
                var.registers([])
                pass
            PyJs_Ctor_6_._set_name('Ctor')
            var.put('Ctor', PyJs_Ctor_6_)
            @Js
            def PyJs___7_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments, '_':PyJs___7_}, var)
                var.registers(['obj'])
                if var.get('obj').instanceof(var.get('_')):
                    return var.get('obj')
                if var.get(u"this").instanceof(var.get('_')).neg():
                    return var.get('_').create(var.get('obj'))
                var.get(u"this").put('_wrapped', var.get('obj'))
            PyJs___7_._set_name('_')
            var.put('_', PyJs___7_)
            if ((var.get('exports',throw=False).typeof()!=Js('undefined')) and var.get('exports').get('nodeType').neg()):
                if (((var.get('module',throw=False).typeof()!=Js('undefined')) and var.get('module').get('nodeType').neg()) and var.get('module').get('exports')):
                    var.put('exports', var.get('module').put('exports', var.get('_')))
                var.get('exports').put('_', var.get('_'))
            else:
                var.get('root').put('_', var.get('_'))
            var.get('_').put('VERSION', Js('1.9.1'))
            @Js
            def PyJs_optimizeCb_8_(func, context, argCount, this, arguments, var=var):
                var = Scope({'func':func, 'context':context, 'argCount':argCount, 'this':this, 'arguments':arguments, 'optimizeCb':PyJs_optimizeCb_8_}, var)
                var.registers(['context', 'func', 'argCount'])
                if PyJsStrictEq(var.get('context'),PyJsComma(Js(0.0), Js(None))):
                    return var.get('func')
                while 1:
                    SWITCHED = False
                    CONDITION = ((Js(3.0) if (var.get('argCount')==var.get(u"null")) else var.get('argCount')))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js(1.0)):
                        SWITCHED = True
                        @Js
                        def PyJs_anonymous_9_(value, this, arguments, var=var):
                            var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                            var.registers(['value'])
                            return var.get('func').callprop('call', var.get('context'), var.get('value'))
                        PyJs_anonymous_9_._set_name('anonymous')
                        return PyJs_anonymous_9_
                    if SWITCHED or PyJsStrictEq(CONDITION, Js(3.0)):
                        SWITCHED = True
                        @Js
                        def PyJs_anonymous_10_(value, index, collection, this, arguments, var=var):
                            var = Scope({'value':value, 'index':index, 'collection':collection, 'this':this, 'arguments':arguments}, var)
                            var.registers(['value', 'index', 'collection'])
                            return var.get('func').callprop('call', var.get('context'), var.get('value'), var.get('index'), var.get('collection'))
                        PyJs_anonymous_10_._set_name('anonymous')
                        return PyJs_anonymous_10_
                    if SWITCHED or PyJsStrictEq(CONDITION, Js(4.0)):
                        SWITCHED = True
                        @Js
                        def PyJs_anonymous_11_(accumulator, value, index, collection, this, arguments, var=var):
                            var = Scope({'accumulator':accumulator, 'value':value, 'index':index, 'collection':collection, 'this':this, 'arguments':arguments}, var)
                            var.registers(['value', 'index', 'collection', 'accumulator'])
                            return var.get('func').callprop('call', var.get('context'), var.get('accumulator'), var.get('value'), var.get('index'), var.get('collection'))
                        PyJs_anonymous_11_._set_name('anonymous')
                        return PyJs_anonymous_11_
                    SWITCHED = True
                    break
                @Js
                def PyJs_anonymous_12_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('func').callprop('apply', var.get('context'), var.get('arguments'))
                PyJs_anonymous_12_._set_name('anonymous')
                return PyJs_anonymous_12_
            PyJs_optimizeCb_8_._set_name('optimizeCb')
            var.put('optimizeCb', PyJs_optimizeCb_8_)
            pass
            @Js
            def PyJs_cb_13_(value, context, argCount, this, arguments, var=var):
                var = Scope({'value':value, 'context':context, 'argCount':argCount, 'this':this, 'arguments':arguments, 'cb':PyJs_cb_13_}, var)
                var.registers(['value', 'argCount', 'context'])
                if PyJsStrictNeq(var.get('_').get('iteratee'),var.get('builtinIteratee')):
                    return var.get('_').callprop('iteratee', var.get('value'), var.get('context'))
                if (var.get('value')==var.get(u"null")):
                    return var.get('_').get('identity')
                if var.get('_').callprop('isFunction', var.get('value')):
                    return var.get('optimizeCb')(var.get('value'), var.get('context'), var.get('argCount'))
                if (var.get('_').callprop('isObject', var.get('value')) and var.get('_').callprop('isArray', var.get('value')).neg()):
                    return var.get('_').callprop('matcher', var.get('value'))
                return var.get('_').callprop('property', var.get('value'))
            PyJs_cb_13_._set_name('cb')
            var.put('cb', PyJs_cb_13_)
            @Js
            def PyJs_builtinIteratee_14_(value, context, this, arguments, var=var):
                var = Scope({'value':value, 'context':context, 'this':this, 'arguments':arguments, 'builtinIteratee':PyJs_builtinIteratee_14_}, var)
                var.registers(['value', 'context'])
                return var.get('cb')(var.get('value'), var.get('context'), var.get('Infinity'))
            PyJs_builtinIteratee_14_._set_name('builtinIteratee')
            var.get('_').put('iteratee', var.put('builtinIteratee', PyJs_builtinIteratee_14_))
            @Js
            def PyJs_restArguments_15_(func, startIndex, this, arguments, var=var):
                var = Scope({'func':func, 'startIndex':startIndex, 'this':this, 'arguments':arguments, 'restArguments':PyJs_restArguments_15_}, var)
                var.registers(['startIndex', 'func'])
                var.put('startIndex', ((var.get('func').get('length')-Js(1.0)) if (var.get('startIndex')==var.get(u"null")) else (+var.get('startIndex'))))
                @Js
                def PyJs_anonymous_16_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers(['rest', 'index', 'length', 'args'])
                    var.put('length', var.get('Math').callprop('max', (var.get('arguments').get('length')-var.get('startIndex')), Js(0.0)))
                    var.put('rest', var.get('Array')(var.get('length')))
                    var.put('index', Js(0.0))
                    #for JS loop
                    
                    while (var.get('index')<var.get('length')):
                        try:
                            var.get('rest').put(var.get('index'), var.get('arguments').get((var.get('index')+var.get('startIndex'))))
                        finally:
                                (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                    while 1:
                        SWITCHED = False
                        CONDITION = (var.get('startIndex'))
                        if SWITCHED or PyJsStrictEq(CONDITION, Js(0.0)):
                            SWITCHED = True
                            return var.get('func').callprop('call', var.get(u"this"), var.get('rest'))
                        if SWITCHED or PyJsStrictEq(CONDITION, Js(1.0)):
                            SWITCHED = True
                            return var.get('func').callprop('call', var.get(u"this"), var.get('arguments').get('0'), var.get('rest'))
                        if SWITCHED or PyJsStrictEq(CONDITION, Js(2.0)):
                            SWITCHED = True
                            return var.get('func').callprop('call', var.get(u"this"), var.get('arguments').get('0'), var.get('arguments').get('1'), var.get('rest'))
                        SWITCHED = True
                        break
                    var.put('args', var.get('Array')((var.get('startIndex')+Js(1.0))))
                    #for JS loop
                    var.put('index', Js(0.0))
                    while (var.get('index')<var.get('startIndex')):
                        try:
                            var.get('args').put(var.get('index'), var.get('arguments').get(var.get('index')))
                        finally:
                                (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                    var.get('args').put(var.get('startIndex'), var.get('rest'))
                    return var.get('func').callprop('apply', var.get(u"this"), var.get('args'))
                PyJs_anonymous_16_._set_name('anonymous')
                return PyJs_anonymous_16_
            PyJs_restArguments_15_._set_name('restArguments')
            var.put('restArguments', PyJs_restArguments_15_)
            @Js
            def PyJs_baseCreate_17_(prototype, this, arguments, var=var):
                var = Scope({'prototype':prototype, 'this':this, 'arguments':arguments, 'baseCreate':PyJs_baseCreate_17_}, var)
                var.registers(['prototype', 'result'])
                if var.get('_').callprop('isObject', var.get('prototype')).neg():
                    return Js({})
                if var.get('nativeCreate'):
                    return var.get('nativeCreate')(var.get('prototype'))
                var.get('Ctor').put('prototype', var.get('prototype'))
                var.put('result', var.get('Ctor').create())
                var.get('Ctor').put('prototype', var.get(u"null"))
                return var.get('result')
            PyJs_baseCreate_17_._set_name('baseCreate')
            var.put('baseCreate', PyJs_baseCreate_17_)
            @Js
            def PyJs_shallowProperty_18_(key, this, arguments, var=var):
                var = Scope({'key':key, 'this':this, 'arguments':arguments, 'shallowProperty':PyJs_shallowProperty_18_}, var)
                var.registers(['key'])
                @Js
                def PyJs_anonymous_19_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return (PyJsComma(Js(0.0), Js(None)) if (var.get('obj')==var.get(u"null")) else var.get('obj').get(var.get('key')))
                PyJs_anonymous_19_._set_name('anonymous')
                return PyJs_anonymous_19_
            PyJs_shallowProperty_18_._set_name('shallowProperty')
            var.put('shallowProperty', PyJs_shallowProperty_18_)
            @Js
            def PyJs_has_20_(obj, path, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'this':this, 'arguments':arguments, 'has':PyJs_has_20_}, var)
                var.registers(['obj', 'path'])
                return ((var.get('obj')!=var.get(u"null")) and var.get('hasOwnProperty').callprop('call', var.get('obj'), var.get('path')))
            PyJs_has_20_._set_name('has')
            var.put('has', PyJs_has_20_)
            @Js
            def PyJs_deepGet_21_(obj, path, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'this':this, 'arguments':arguments, 'deepGet':PyJs_deepGet_21_}, var)
                var.registers(['i', 'length', 'path', 'obj'])
                var.put('length', var.get('path').get('length'))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        if (var.get('obj')==var.get(u"null")):
                            return PyJsComma(Js(0.0), Js(None))
                        var.put('obj', var.get('obj').get(var.get('path').get(var.get('i'))))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return (var.get('obj') if var.get('length') else PyJsComma(Js(0.0), Js(None)))
            PyJs_deepGet_21_._set_name('deepGet')
            var.put('deepGet', PyJs_deepGet_21_)
            var.put('MAX_ARRAY_INDEX', (var.get('Math').callprop('pow', Js(2.0), Js(53.0))-Js(1.0)))
            var.put('getLength', var.get('shallowProperty')(Js('length')))
            @Js
            def PyJs_isArrayLike_22_(collection, this, arguments, var=var):
                var = Scope({'collection':collection, 'this':this, 'arguments':arguments, 'isArrayLike':PyJs_isArrayLike_22_}, var)
                var.registers(['length', 'collection'])
                var.put('length', var.get('getLength')(var.get('collection')))
                return (((var.get('length',throw=False).typeof()==Js('number')) and (var.get('length')>=Js(0.0))) and (var.get('length')<=var.get('MAX_ARRAY_INDEX')))
            PyJs_isArrayLike_22_._set_name('isArrayLike')
            var.put('isArrayLike', PyJs_isArrayLike_22_)
            @Js
            def PyJs_anonymous_23_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'iteratee', 'length', 'obj', 'context', 'i'])
                var.put('iteratee', var.get('optimizeCb')(var.get('iteratee'), var.get('context')))
                pass
                if var.get('isArrayLike')(var.get('obj')):
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('length', var.get('obj').get('length')))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.get('iteratee')(var.get('obj').get(var.get('i')), var.get('i'), var.get('obj'))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                else:
                    var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('length', var.get('keys').get('length')))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.get('iteratee')(var.get('obj').get(var.get('keys').get(var.get('i'))), var.get('keys').get(var.get('i')), var.get('obj'))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('obj')
            PyJs_anonymous_23_._set_name('anonymous')
            var.get('_').put('each', var.get('_').put('forEach', PyJs_anonymous_23_))
            @Js
            def PyJs_anonymous_24_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['currentKey', 'keys', 'results', 'index', 'length', 'iteratee', 'context', 'obj'])
                var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                var.put('keys', (var.get('isArrayLike')(var.get('obj')).neg() and var.get('_').callprop('keys', var.get('obj'))))
                var.put('length', (var.get('keys') or var.get('obj')).get('length'))
                var.put('results', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.put('currentKey', (var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index')))
                        var.get('results').put(var.get('index'), var.get('iteratee')(var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')))
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return var.get('results')
            PyJs_anonymous_24_._set_name('anonymous')
            var.get('_').put('map', var.get('_').put('collect', PyJs_anonymous_24_))
            @Js
            def PyJs_createReduce_25_(dir, this, arguments, var=var):
                var = Scope({'dir':dir, 'this':this, 'arguments':arguments, 'createReduce':PyJs_createReduce_25_}, var)
                var.registers(['reducer', 'dir'])
                @Js
                def PyJs_reducer_26_(obj, iteratee, memo, initial, this, arguments, var=var):
                    var = Scope({'obj':obj, 'iteratee':iteratee, 'memo':memo, 'initial':initial, 'this':this, 'arguments':arguments, 'reducer':PyJs_reducer_26_}, var)
                    var.registers(['currentKey', 'initial', 'keys', 'index', 'length', 'iteratee', 'memo', 'obj'])
                    var.put('keys', (var.get('isArrayLike')(var.get('obj')).neg() and var.get('_').callprop('keys', var.get('obj'))))
                    var.put('length', (var.get('keys') or var.get('obj')).get('length'))
                    var.put('index', (Js(0.0) if (var.get('dir')>Js(0.0)) else (var.get('length')-Js(1.0))))
                    if var.get('initial').neg():
                        var.put('memo', var.get('obj').get((var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index'))))
                        var.put('index', var.get('dir'), '+')
                    #for JS loop
                    
                    while ((var.get('index')>=Js(0.0)) and (var.get('index')<var.get('length'))):
                        try:
                            var.put('currentKey', (var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index')))
                            var.put('memo', var.get('iteratee')(var.get('memo'), var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')))
                        finally:
                                var.put('index', var.get('dir'), '+')
                    return var.get('memo')
                PyJs_reducer_26_._set_name('reducer')
                var.put('reducer', PyJs_reducer_26_)
                @Js
                def PyJs_anonymous_27_(obj, iteratee, memo, context, this, arguments, var=var):
                    var = Scope({'obj':obj, 'iteratee':iteratee, 'memo':memo, 'context':context, 'this':this, 'arguments':arguments}, var)
                    var.registers(['initial', 'iteratee', 'memo', 'context', 'obj'])
                    var.put('initial', (var.get('arguments').get('length')>=Js(3.0)))
                    return var.get('reducer')(var.get('obj'), var.get('optimizeCb')(var.get('iteratee'), var.get('context'), Js(4.0)), var.get('memo'), var.get('initial'))
                PyJs_anonymous_27_._set_name('anonymous')
                return PyJs_anonymous_27_
            PyJs_createReduce_25_._set_name('createReduce')
            var.put('createReduce', PyJs_createReduce_25_)
            var.get('_').put('reduce', var.get('_').put('foldl', var.get('_').put('inject', var.get('createReduce')(Js(1.0)))))
            var.get('_').put('reduceRight', var.get('_').put('foldr', var.get('createReduce')((-Js(1.0)))))
            @Js
            def PyJs_anonymous_28_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'key', 'predicate', 'keyFinder', 'obj'])
                var.put('keyFinder', (var.get('_').get('findIndex') if var.get('isArrayLike')(var.get('obj')) else var.get('_').get('findKey')))
                var.put('key', var.get('keyFinder')(var.get('obj'), var.get('predicate'), var.get('context')))
                if (PyJsStrictNeq(var.get('key'),PyJsComma(Js(0.0), Js(None))) and PyJsStrictNeq(var.get('key'),(-Js(1.0)))):
                    return var.get('obj').get(var.get('key'))
            PyJs_anonymous_28_._set_name('anonymous')
            var.get('_').put('find', var.get('_').put('detect', PyJs_anonymous_28_))
            @Js
            def PyJs_anonymous_29_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'results', 'obj', 'predicate'])
                var.put('results', Js([]))
                var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                @Js
                def PyJs_anonymous_30_(value, index, list, this, arguments, var=var):
                    var = Scope({'value':value, 'index':index, 'list':list, 'this':this, 'arguments':arguments}, var)
                    var.registers(['value', 'index', 'list'])
                    if var.get('predicate')(var.get('value'), var.get('index'), var.get('list')):
                        var.get('results').callprop('push', var.get('value'))
                PyJs_anonymous_30_._set_name('anonymous')
                var.get('_').callprop('each', var.get('obj'), PyJs_anonymous_30_)
                return var.get('results')
            PyJs_anonymous_29_._set_name('anonymous')
            var.get('_').put('filter', var.get('_').put('select', PyJs_anonymous_29_))
            @Js
            def PyJs_anonymous_31_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'obj', 'predicate'])
                return var.get('_').callprop('filter', var.get('obj'), var.get('_').callprop('negate', var.get('cb')(var.get('predicate'))), var.get('context'))
            PyJs_anonymous_31_._set_name('anonymous')
            var.get('_').put('reject', PyJs_anonymous_31_)
            @Js
            def PyJs_anonymous_32_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['currentKey', 'keys', 'predicate', 'index', 'length', 'context', 'obj'])
                var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                var.put('keys', (var.get('isArrayLike')(var.get('obj')).neg() and var.get('_').callprop('keys', var.get('obj'))))
                var.put('length', (var.get('keys') or var.get('obj')).get('length'))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.put('currentKey', (var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index')))
                        if var.get('predicate')(var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')).neg():
                            return Js(False)
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return Js(True)
            PyJs_anonymous_32_._set_name('anonymous')
            var.get('_').put('every', var.get('_').put('all', PyJs_anonymous_32_))
            @Js
            def PyJs_anonymous_33_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['currentKey', 'keys', 'predicate', 'index', 'length', 'context', 'obj'])
                var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                var.put('keys', (var.get('isArrayLike')(var.get('obj')).neg() and var.get('_').callprop('keys', var.get('obj'))))
                var.put('length', (var.get('keys') or var.get('obj')).get('length'))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.put('currentKey', (var.get('keys').get(var.get('index')) if var.get('keys') else var.get('index')))
                        if var.get('predicate')(var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')):
                            return Js(True)
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return Js(False)
            PyJs_anonymous_33_._set_name('anonymous')
            var.get('_').put('some', var.get('_').put('any', PyJs_anonymous_33_))
            @Js
            def PyJs_anonymous_34_(obj, item, fromIndex, guard, this, arguments, var=var):
                var = Scope({'obj':obj, 'item':item, 'fromIndex':fromIndex, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'item', 'guard', 'fromIndex'])
                if var.get('isArrayLike')(var.get('obj')).neg():
                    var.put('obj', var.get('_').callprop('values', var.get('obj')))
                if ((var.get('fromIndex',throw=False).typeof()!=Js('number')) or var.get('guard')):
                    var.put('fromIndex', Js(0.0))
                return (var.get('_').callprop('indexOf', var.get('obj'), var.get('item'), var.get('fromIndex'))>=Js(0.0))
            PyJs_anonymous_34_._set_name('anonymous')
            var.get('_').put('contains', var.get('_').put('includes', var.get('_').put('include', PyJs_anonymous_34_)))
            @Js
            def PyJs_anonymous_35_(obj, path, args, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'args':args, 'this':this, 'arguments':arguments}, var)
                var.registers(['func', 'contextPath', 'path', 'args', 'obj'])
                pass
                if var.get('_').callprop('isFunction', var.get('path')):
                    var.put('func', var.get('path'))
                else:
                    if var.get('_').callprop('isArray', var.get('path')):
                        var.put('contextPath', var.get('path').callprop('slice', Js(0.0), (-Js(1.0))))
                        var.put('path', var.get('path').get((var.get('path').get('length')-Js(1.0))))
                @Js
                def PyJs_anonymous_36_(context, this, arguments, var=var):
                    var = Scope({'context':context, 'this':this, 'arguments':arguments}, var)
                    var.registers(['context', 'method'])
                    var.put('method', var.get('func'))
                    if var.get('method').neg():
                        if (var.get('contextPath') and var.get('contextPath').get('length')):
                            var.put('context', var.get('deepGet')(var.get('context'), var.get('contextPath')))
                        if (var.get('context')==var.get(u"null")):
                            return PyJsComma(Js(0.0), Js(None))
                        var.put('method', var.get('context').get(var.get('path')))
                    return (var.get('method') if (var.get('method')==var.get(u"null")) else var.get('method').callprop('apply', var.get('context'), var.get('args')))
                PyJs_anonymous_36_._set_name('anonymous')
                return var.get('_').callprop('map', var.get('obj'), PyJs_anonymous_36_)
            PyJs_anonymous_35_._set_name('anonymous')
            var.get('_').put('invoke', var.get('restArguments')(PyJs_anonymous_35_))
            @Js
            def PyJs_anonymous_37_(obj, key, this, arguments, var=var):
                var = Scope({'obj':obj, 'key':key, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'key'])
                return var.get('_').callprop('map', var.get('obj'), var.get('_').callprop('property', var.get('key')))
            PyJs_anonymous_37_._set_name('anonymous')
            var.get('_').put('pluck', PyJs_anonymous_37_)
            @Js
            def PyJs_anonymous_38_(obj, attrs, this, arguments, var=var):
                var = Scope({'obj':obj, 'attrs':attrs, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'attrs'])
                return var.get('_').callprop('filter', var.get('obj'), var.get('_').callprop('matcher', var.get('attrs')))
            PyJs_anonymous_38_._set_name('anonymous')
            var.get('_').put('where', PyJs_anonymous_38_)
            @Js
            def PyJs_anonymous_39_(obj, attrs, this, arguments, var=var):
                var = Scope({'obj':obj, 'attrs':attrs, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'attrs'])
                return var.get('_').callprop('find', var.get('obj'), var.get('_').callprop('matcher', var.get('attrs')))
            PyJs_anonymous_39_._set_name('anonymous')
            var.get('_').put('findWhere', PyJs_anonymous_39_)
            @Js
            def PyJs_anonymous_40_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'computed', 'length', 'iteratee', 'obj', 'context', 'i', 'lastComputed', 'result'])
                var.put('result', (-var.get('Infinity')))
                var.put('lastComputed', (-var.get('Infinity')))
                if ((var.get('iteratee')==var.get(u"null")) or (((var.get('iteratee',throw=False).typeof()==Js('number')) and (var.get('_typeof')(var.get('obj').get('0'))!=Js('object'))) and (var.get('obj')!=var.get(u"null")))):
                    var.put('obj', (var.get('obj') if var.get('isArrayLike')(var.get('obj')) else var.get('_').callprop('values', var.get('obj'))))
                    #for JS loop
                    var.put('i', Js(0.0))
                    var.put('length', var.get('obj').get('length'))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.put('value', var.get('obj').get(var.get('i')))
                            if ((var.get('value')!=var.get(u"null")) and (var.get('value')>var.get('result'))):
                                var.put('result', var.get('value'))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                else:
                    var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                    @Js
                    def PyJs_anonymous_41_(v, index, list, this, arguments, var=var):
                        var = Scope({'v':v, 'index':index, 'list':list, 'this':this, 'arguments':arguments}, var)
                        var.registers(['list', 'index', 'v'])
                        var.put('computed', var.get('iteratee')(var.get('v'), var.get('index'), var.get('list')))
                        if ((var.get('computed')>var.get('lastComputed')) or (PyJsStrictEq(var.get('computed'),(-var.get('Infinity'))) and PyJsStrictEq(var.get('result'),(-var.get('Infinity'))))):
                            var.put('result', var.get('v'))
                            var.put('lastComputed', var.get('computed'))
                    PyJs_anonymous_41_._set_name('anonymous')
                    var.get('_').callprop('each', var.get('obj'), PyJs_anonymous_41_)
                return var.get('result')
            PyJs_anonymous_40_._set_name('anonymous')
            var.get('_').put('max', PyJs_anonymous_40_)
            @Js
            def PyJs_anonymous_42_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'computed', 'length', 'iteratee', 'obj', 'context', 'i', 'lastComputed', 'result'])
                var.put('result', var.get('Infinity'))
                var.put('lastComputed', var.get('Infinity'))
                if ((var.get('iteratee')==var.get(u"null")) or (((var.get('iteratee',throw=False).typeof()==Js('number')) and (var.get('_typeof')(var.get('obj').get('0'))!=Js('object'))) and (var.get('obj')!=var.get(u"null")))):
                    var.put('obj', (var.get('obj') if var.get('isArrayLike')(var.get('obj')) else var.get('_').callprop('values', var.get('obj'))))
                    #for JS loop
                    var.put('i', Js(0.0))
                    var.put('length', var.get('obj').get('length'))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.put('value', var.get('obj').get(var.get('i')))
                            if ((var.get('value')!=var.get(u"null")) and (var.get('value')<var.get('result'))):
                                var.put('result', var.get('value'))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                else:
                    var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                    @Js
                    def PyJs_anonymous_43_(v, index, list, this, arguments, var=var):
                        var = Scope({'v':v, 'index':index, 'list':list, 'this':this, 'arguments':arguments}, var)
                        var.registers(['list', 'index', 'v'])
                        var.put('computed', var.get('iteratee')(var.get('v'), var.get('index'), var.get('list')))
                        if ((var.get('computed')<var.get('lastComputed')) or (PyJsStrictEq(var.get('computed'),var.get('Infinity')) and PyJsStrictEq(var.get('result'),var.get('Infinity')))):
                            var.put('result', var.get('v'))
                            var.put('lastComputed', var.get('computed'))
                    PyJs_anonymous_43_._set_name('anonymous')
                    var.get('_').callprop('each', var.get('obj'), PyJs_anonymous_43_)
                return var.get('result')
            PyJs_anonymous_42_._set_name('anonymous')
            var.get('_').put('min', PyJs_anonymous_42_)
            @Js
            def PyJs_anonymous_44_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return var.get('_').callprop('sample', var.get('obj'), var.get('Infinity'))
            PyJs_anonymous_44_._set_name('anonymous')
            var.get('_').put('shuffle', PyJs_anonymous_44_)
            @Js
            def PyJs_anonymous_45_(obj, n, guard, this, arguments, var=var):
                var = Scope({'obj':obj, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'sample', 'rand', 'last', 'index', 'length', 'temp', 'obj', 'guard'])
                if ((var.get('n')==var.get(u"null")) or var.get('guard')):
                    if var.get('isArrayLike')(var.get('obj')).neg():
                        var.put('obj', var.get('_').callprop('values', var.get('obj')))
                    return var.get('obj').get(var.get('_').callprop('random', (var.get('obj').get('length')-Js(1.0))))
                var.put('sample', (var.get('_').callprop('clone', var.get('obj')) if var.get('isArrayLike')(var.get('obj')) else var.get('_').callprop('values', var.get('obj'))))
                var.put('length', var.get('getLength')(var.get('sample')))
                var.put('n', var.get('Math').callprop('max', var.get('Math').callprop('min', var.get('n'), var.get('length')), Js(0.0)))
                var.put('last', (var.get('length')-Js(1.0)))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('n')):
                    try:
                        var.put('rand', var.get('_').callprop('random', var.get('index'), var.get('last')))
                        var.put('temp', var.get('sample').get(var.get('index')))
                        var.get('sample').put(var.get('index'), var.get('sample').get(var.get('rand')))
                        var.get('sample').put(var.get('rand'), var.get('temp'))
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return var.get('sample').callprop('slice', Js(0.0), var.get('n'))
            PyJs_anonymous_45_._set_name('anonymous')
            var.get('_').put('sample', PyJs_anonymous_45_)
            @Js
            def PyJs_anonymous_46_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['iteratee', 'index', 'context', 'obj'])
                var.put('index', Js(0.0))
                var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                @Js
                def PyJs_anonymous_47_(left, right, this, arguments, var=var):
                    var = Scope({'left':left, 'right':right, 'this':this, 'arguments':arguments}, var)
                    var.registers(['left', 'a', 'b', 'right'])
                    var.put('a', var.get('left').get('criteria'))
                    var.put('b', var.get('right').get('criteria'))
                    if PyJsStrictNeq(var.get('a'),var.get('b')):
                        if ((var.get('a')>var.get('b')) or PyJsStrictEq(var.get('a'),PyJsComma(Js(0.0), Js(None)))):
                            return Js(1.0)
                        if ((var.get('a')<var.get('b')) or PyJsStrictEq(var.get('b'),PyJsComma(Js(0.0), Js(None)))):
                            return (-Js(1.0))
                    return (var.get('left').get('index')-var.get('right').get('index'))
                PyJs_anonymous_47_._set_name('anonymous')
                @Js
                def PyJs_anonymous_48_(value, key, list, this, arguments, var=var):
                    var = Scope({'value':value, 'key':key, 'list':list, 'this':this, 'arguments':arguments}, var)
                    var.registers(['value', 'list', 'key'])
                    return Js({'value':var.get('value'),'index':(var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1)),'criteria':var.get('iteratee')(var.get('value'), var.get('key'), var.get('list'))})
                PyJs_anonymous_48_._set_name('anonymous')
                return var.get('_').callprop('pluck', var.get('_').callprop('map', var.get('obj'), PyJs_anonymous_48_).callprop('sort', PyJs_anonymous_47_), Js('value'))
            PyJs_anonymous_46_._set_name('anonymous')
            var.get('_').put('sortBy', PyJs_anonymous_46_)
            @Js
            def PyJs_group_49_(behavior, partition, this, arguments, var=var):
                var = Scope({'behavior':behavior, 'partition':partition, 'this':this, 'arguments':arguments, 'group':PyJs_group_49_}, var)
                var.registers(['behavior', 'partition'])
                @Js
                def PyJs_anonymous_50_(obj, iteratee, context, this, arguments, var=var):
                    var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                    var.registers(['iteratee', 'obj', 'context', 'result'])
                    var.put('result', (Js([Js([]), Js([])]) if var.get('partition') else Js({})))
                    var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                    @Js
                    def PyJs_anonymous_51_(value, index, this, arguments, var=var):
                        var = Scope({'value':value, 'index':index, 'this':this, 'arguments':arguments}, var)
                        var.registers(['value', 'index', 'key'])
                        var.put('key', var.get('iteratee')(var.get('value'), var.get('index'), var.get('obj')))
                        var.get('behavior')(var.get('result'), var.get('value'), var.get('key'))
                    PyJs_anonymous_51_._set_name('anonymous')
                    var.get('_').callprop('each', var.get('obj'), PyJs_anonymous_51_)
                    return var.get('result')
                PyJs_anonymous_50_._set_name('anonymous')
                return PyJs_anonymous_50_
            PyJs_group_49_._set_name('group')
            var.put('group', PyJs_group_49_)
            @Js
            def PyJs_anonymous_52_(result, value, key, this, arguments, var=var):
                var = Scope({'result':result, 'value':value, 'key':key, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'key', 'result'])
                if var.get('has')(var.get('result'), var.get('key')):
                    var.get('result').get(var.get('key')).callprop('push', var.get('value'))
                else:
                    var.get('result').put(var.get('key'), Js([var.get('value')]))
            PyJs_anonymous_52_._set_name('anonymous')
            var.get('_').put('groupBy', var.get('group')(PyJs_anonymous_52_))
            @Js
            def PyJs_anonymous_53_(result, value, key, this, arguments, var=var):
                var = Scope({'result':result, 'value':value, 'key':key, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'key', 'result'])
                var.get('result').put(var.get('key'), var.get('value'))
            PyJs_anonymous_53_._set_name('anonymous')
            var.get('_').put('indexBy', var.get('group')(PyJs_anonymous_53_))
            @Js
            def PyJs_anonymous_54_(result, value, key, this, arguments, var=var):
                var = Scope({'result':result, 'value':value, 'key':key, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'key', 'result'])
                if var.get('has')(var.get('result'), var.get('key')):
                    (var.get('result').put(var.get('key'),Js(var.get('result').get(var.get('key')).to_number())+Js(1))-Js(1))
                else:
                    var.get('result').put(var.get('key'), Js(1.0))
            PyJs_anonymous_54_._set_name('anonymous')
            var.get('_').put('countBy', var.get('group')(PyJs_anonymous_54_))
            var.put('reStrSymbol', JsRegExp('/[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g'))
            @Js
            def PyJs_anonymous_55_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if var.get('obj').neg():
                    return Js([])
                if var.get('_').callprop('isArray', var.get('obj')):
                    return var.get('slice').callprop('call', var.get('obj'))
                if var.get('_').callprop('isString', var.get('obj')):
                    return var.get('obj').callprop('match', var.get('reStrSymbol'))
                if var.get('isArrayLike')(var.get('obj')):
                    return var.get('_').callprop('map', var.get('obj'), var.get('_').get('identity'))
                return var.get('_').callprop('values', var.get('obj'))
            PyJs_anonymous_55_._set_name('anonymous')
            var.get('_').put('toArray', PyJs_anonymous_55_)
            @Js
            def PyJs_anonymous_56_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if (var.get('obj')==var.get(u"null")):
                    return Js(0.0)
                return (var.get('obj').get('length') if var.get('isArrayLike')(var.get('obj')) else var.get('_').callprop('keys', var.get('obj')).get('length'))
            PyJs_anonymous_56_._set_name('anonymous')
            var.get('_').put('size', PyJs_anonymous_56_)
            @Js
            def PyJs_anonymous_57_(result, value, PyJsArg_70617373_, this, arguments, var=var):
                var = Scope({'result':result, 'value':value, 'pass':PyJsArg_70617373_, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'pass', 'result'])
                var.get('result').get((Js(0.0) if var.get('pass') else Js(1.0))).callprop('push', var.get('value'))
            PyJs_anonymous_57_._set_name('anonymous')
            var.get('_').put('partition', var.get('group')(PyJs_anonymous_57_, Js(True)))
            @Js
            def PyJs_anonymous_58_(array, n, guard, this, arguments, var=var):
                var = Scope({'array':array, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'array', 'guard'])
                if ((var.get('array')==var.get(u"null")) or (var.get('array').get('length')<Js(1.0))):
                    return (PyJsComma(Js(0.0), Js(None)) if (var.get('n')==var.get(u"null")) else Js([]))
                if ((var.get('n')==var.get(u"null")) or var.get('guard')):
                    return var.get('array').get('0')
                return var.get('_').callprop('initial', var.get('array'), (var.get('array').get('length')-var.get('n')))
            PyJs_anonymous_58_._set_name('anonymous')
            var.get('_').put('first', var.get('_').put('head', var.get('_').put('take', PyJs_anonymous_58_)))
            @Js
            def PyJs_anonymous_59_(array, n, guard, this, arguments, var=var):
                var = Scope({'array':array, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'array', 'guard'])
                return var.get('slice').callprop('call', var.get('array'), Js(0.0), var.get('Math').callprop('max', Js(0.0), (var.get('array').get('length')-(Js(1.0) if ((var.get('n')==var.get(u"null")) or var.get('guard')) else var.get('n')))))
            PyJs_anonymous_59_._set_name('anonymous')
            var.get('_').put('initial', PyJs_anonymous_59_)
            @Js
            def PyJs_anonymous_60_(array, n, guard, this, arguments, var=var):
                var = Scope({'array':array, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'array', 'guard'])
                if ((var.get('array')==var.get(u"null")) or (var.get('array').get('length')<Js(1.0))):
                    return (PyJsComma(Js(0.0), Js(None)) if (var.get('n')==var.get(u"null")) else Js([]))
                if ((var.get('n')==var.get(u"null")) or var.get('guard')):
                    return var.get('array').get((var.get('array').get('length')-Js(1.0)))
                return var.get('_').callprop('rest', var.get('array'), var.get('Math').callprop('max', Js(0.0), (var.get('array').get('length')-var.get('n'))))
            PyJs_anonymous_60_._set_name('anonymous')
            var.get('_').put('last', PyJs_anonymous_60_)
            @Js
            def PyJs_anonymous_61_(array, n, guard, this, arguments, var=var):
                var = Scope({'array':array, 'n':n, 'guard':guard, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'array', 'guard'])
                return var.get('slice').callprop('call', var.get('array'), (Js(1.0) if ((var.get('n')==var.get(u"null")) or var.get('guard')) else var.get('n')))
            PyJs_anonymous_61_._set_name('anonymous')
            var.get('_').put('rest', var.get('_').put('tail', var.get('_').put('drop', PyJs_anonymous_61_)))
            @Js
            def PyJs_anonymous_62_(array, this, arguments, var=var):
                var = Scope({'array':array, 'this':this, 'arguments':arguments}, var)
                var.registers(['array'])
                return var.get('_').callprop('filter', var.get('array'), var.get('Boolean'))
            PyJs_anonymous_62_._set_name('anonymous')
            var.get('_').put('compact', PyJs_anonymous_62_)
            @Js
            def PyJs_flatten_63_(input, shallow, strict, output, this, arguments, var=var):
                var = Scope({'input':input, 'shallow':shallow, 'strict':strict, 'output':output, 'this':this, 'arguments':arguments, 'flatten':PyJs_flatten_63_}, var)
                var.registers(['idx', 'j', 'input', 'output', 'value', 'length', 'strict', 'len', 'i', 'shallow'])
                var.put('output', (var.get('output') or Js([])))
                var.put('idx', var.get('output').get('length'))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('getLength')(var.get('input')))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('value', var.get('input').get(var.get('i')))
                        if (var.get('isArrayLike')(var.get('value')) and (var.get('_').callprop('isArray', var.get('value')) or var.get('_').callprop('isArguments', var.get('value')))):
                            if var.get('shallow'):
                                var.put('j', Js(0.0))
                                var.put('len', var.get('value').get('length'))
                                while (var.get('j')<var.get('len')):
                                    var.get('output').put((var.put('idx',Js(var.get('idx').to_number())+Js(1))-Js(1)), var.get('value').get((var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))))
                            else:
                                var.get('flatten')(var.get('value'), var.get('shallow'), var.get('strict'), var.get('output'))
                                var.put('idx', var.get('output').get('length'))
                        else:
                            if var.get('strict').neg():
                                var.get('output').put((var.put('idx',Js(var.get('idx').to_number())+Js(1))-Js(1)), var.get('value'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('output')
            PyJs_flatten_63_._set_name('flatten')
            var.put('flatten', PyJs_flatten_63_)
            @Js
            def PyJs_anonymous_64_(array, shallow, this, arguments, var=var):
                var = Scope({'array':array, 'shallow':shallow, 'this':this, 'arguments':arguments}, var)
                var.registers(['array', 'shallow'])
                return var.get('flatten')(var.get('array'), var.get('shallow'), Js(False))
            PyJs_anonymous_64_._set_name('anonymous')
            var.get('_').put('flatten', PyJs_anonymous_64_)
            @Js
            def PyJs_anonymous_65_(array, otherArrays, this, arguments, var=var):
                var = Scope({'array':array, 'otherArrays':otherArrays, 'this':this, 'arguments':arguments}, var)
                var.registers(['array', 'otherArrays'])
                return var.get('_').callprop('difference', var.get('array'), var.get('otherArrays'))
            PyJs_anonymous_65_._set_name('anonymous')
            var.get('_').put('without', var.get('restArguments')(PyJs_anonymous_65_))
            @Js
            def PyJs_anonymous_66_(array, isSorted, iteratee, context, this, arguments, var=var):
                var = Scope({'array':array, 'isSorted':isSorted, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['isSorted', 'value', 'computed', 'length', 'iteratee', 'context', 'i', 'seen', 'array', 'result'])
                if var.get('_').callprop('isBoolean', var.get('isSorted')).neg():
                    var.put('context', var.get('iteratee'))
                    var.put('iteratee', var.get('isSorted'))
                    var.put('isSorted', Js(False))
                if (var.get('iteratee')!=var.get(u"null")):
                    var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                var.put('result', Js([]))
                var.put('seen', Js([]))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('getLength')(var.get('array')))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('value', var.get('array').get(var.get('i')))
                        var.put('computed', (var.get('iteratee')(var.get('value'), var.get('i'), var.get('array')) if var.get('iteratee') else var.get('value')))
                        if (var.get('isSorted') and var.get('iteratee').neg()):
                            if (var.get('i').neg() or PyJsStrictNeq(var.get('seen'),var.get('computed'))):
                                var.get('result').callprop('push', var.get('value'))
                            var.put('seen', var.get('computed'))
                        else:
                            if var.get('iteratee'):
                                if var.get('_').callprop('contains', var.get('seen'), var.get('computed')).neg():
                                    var.get('seen').callprop('push', var.get('computed'))
                                    var.get('result').callprop('push', var.get('value'))
                            else:
                                if var.get('_').callprop('contains', var.get('result'), var.get('value')).neg():
                                    var.get('result').callprop('push', var.get('value'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_66_._set_name('anonymous')
            var.get('_').put('uniq', var.get('_').put('unique', PyJs_anonymous_66_))
            @Js
            def PyJs_anonymous_67_(arrays, this, arguments, var=var):
                var = Scope({'arrays':arrays, 'this':this, 'arguments':arguments}, var)
                var.registers(['arrays'])
                return var.get('_').callprop('uniq', var.get('flatten')(var.get('arrays'), Js(True), Js(True)))
            PyJs_anonymous_67_._set_name('anonymous')
            var.get('_').put('union', var.get('restArguments')(PyJs_anonymous_67_))
            @Js
            def PyJs_anonymous_68_(array, this, arguments, var=var):
                var = Scope({'array':array, 'this':this, 'arguments':arguments}, var)
                var.registers(['j', 'length', 'argsLength', 'i', 'item', 'array', 'result'])
                var.put('result', Js([]))
                var.put('argsLength', var.get('arguments').get('length'))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('getLength')(var.get('array')))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('item', var.get('array').get(var.get('i')))
                        if var.get('_').callprop('contains', var.get('result'), var.get('item')):
                            continue
                        pass
                        #for JS loop
                        var.put('j', Js(1.0))
                        while (var.get('j')<var.get('argsLength')):
                            try:
                                if var.get('_').callprop('contains', var.get('arguments').get(var.get('j')), var.get('item')).neg():
                                    break
                            finally:
                                    (var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))
                        if PyJsStrictEq(var.get('j'),var.get('argsLength')):
                            var.get('result').callprop('push', var.get('item'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_68_._set_name('anonymous')
            var.get('_').put('intersection', PyJs_anonymous_68_)
            @Js
            def PyJs_anonymous_69_(array, rest, this, arguments, var=var):
                var = Scope({'array':array, 'rest':rest, 'this':this, 'arguments':arguments}, var)
                var.registers(['rest', 'array'])
                var.put('rest', var.get('flatten')(var.get('rest'), Js(True), Js(True)))
                @Js
                def PyJs_anonymous_70_(value, this, arguments, var=var):
                    var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                    var.registers(['value'])
                    return var.get('_').callprop('contains', var.get('rest'), var.get('value')).neg()
                PyJs_anonymous_70_._set_name('anonymous')
                return var.get('_').callprop('filter', var.get('array'), PyJs_anonymous_70_)
            PyJs_anonymous_69_._set_name('anonymous')
            var.get('_').put('difference', var.get('restArguments')(PyJs_anonymous_69_))
            @Js
            def PyJs_anonymous_71_(array, this, arguments, var=var):
                var = Scope({'array':array, 'this':this, 'arguments':arguments}, var)
                var.registers(['index', 'length', 'array', 'result'])
                var.put('length', ((var.get('array') and var.get('_').callprop('max', var.get('array'), var.get('getLength')).get('length')) or Js(0.0)))
                var.put('result', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.get('result').put(var.get('index'), var.get('_').callprop('pluck', var.get('array'), var.get('index')))
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_71_._set_name('anonymous')
            var.get('_').put('unzip', PyJs_anonymous_71_)
            var.get('_').put('zip', var.get('restArguments')(var.get('_').get('unzip')))
            @Js
            def PyJs_anonymous_72_(list, values, this, arguments, var=var):
                var = Scope({'list':list, 'values':values, 'this':this, 'arguments':arguments}, var)
                var.registers(['values', 'length', 'i', 'list', 'result'])
                var.put('result', Js({}))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('getLength')(var.get('list')))
                while (var.get('i')<var.get('length')):
                    try:
                        if var.get('values'):
                            var.get('result').put(var.get('list').get(var.get('i')), var.get('values').get(var.get('i')))
                        else:
                            var.get('result').put(var.get('list').get(var.get('i')).get('0'), var.get('list').get(var.get('i')).get('1'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_72_._set_name('anonymous')
            var.get('_').put('object', PyJs_anonymous_72_)
            @Js
            def PyJs_createPredicateIndexFinder_73_(dir, this, arguments, var=var):
                var = Scope({'dir':dir, 'this':this, 'arguments':arguments, 'createPredicateIndexFinder':PyJs_createPredicateIndexFinder_73_}, var)
                var.registers(['dir'])
                @Js
                def PyJs_anonymous_74_(array, predicate, context, this, arguments, var=var):
                    var = Scope({'array':array, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                    var.registers(['predicate', 'index', 'length', 'context', 'array'])
                    var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                    var.put('length', var.get('getLength')(var.get('array')))
                    var.put('index', (Js(0.0) if (var.get('dir')>Js(0.0)) else (var.get('length')-Js(1.0))))
                    #for JS loop
                    
                    while ((var.get('index')>=Js(0.0)) and (var.get('index')<var.get('length'))):
                        try:
                            if var.get('predicate')(var.get('array').get(var.get('index')), var.get('index'), var.get('array')):
                                return var.get('index')
                        finally:
                                var.put('index', var.get('dir'), '+')
                    return (-Js(1.0))
                PyJs_anonymous_74_._set_name('anonymous')
                return PyJs_anonymous_74_
            PyJs_createPredicateIndexFinder_73_._set_name('createPredicateIndexFinder')
            var.put('createPredicateIndexFinder', PyJs_createPredicateIndexFinder_73_)
            var.get('_').put('findIndex', var.get('createPredicateIndexFinder')(Js(1.0)))
            var.get('_').put('findLastIndex', var.get('createPredicateIndexFinder')((-Js(1.0))))
            @Js
            def PyJs_anonymous_75_(array, obj, iteratee, context, this, arguments, var=var):
                var = Scope({'array':array, 'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['mid', 'value', 'high', 'iteratee', 'obj', 'context', 'array', 'low'])
                var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context'), Js(1.0)))
                var.put('value', var.get('iteratee')(var.get('obj')))
                var.put('low', Js(0.0))
                var.put('high', var.get('getLength')(var.get('array')))
                while (var.get('low')<var.get('high')):
                    var.put('mid', var.get('Math').callprop('floor', ((var.get('low')+var.get('high'))/Js(2.0))))
                    if (var.get('iteratee')(var.get('array').get(var.get('mid')))<var.get('value')):
                        var.put('low', (var.get('mid')+Js(1.0)))
                    else:
                        var.put('high', var.get('mid'))
                return var.get('low')
            PyJs_anonymous_75_._set_name('anonymous')
            var.get('_').put('sortedIndex', PyJs_anonymous_75_)
            @Js
            def PyJs_createIndexFinder_76_(dir, predicateFind, sortedIndex, this, arguments, var=var):
                var = Scope({'dir':dir, 'predicateFind':predicateFind, 'sortedIndex':sortedIndex, 'this':this, 'arguments':arguments, 'createIndexFinder':PyJs_createIndexFinder_76_}, var)
                var.registers(['dir', 'sortedIndex', 'predicateFind'])
                @Js
                def PyJs_anonymous_77_(array, item, idx, this, arguments, var=var):
                    var = Scope({'array':array, 'item':item, 'idx':idx, 'this':this, 'arguments':arguments}, var)
                    var.registers(['idx', 'length', 'i', 'item', 'array'])
                    var.put('i', Js(0.0))
                    var.put('length', var.get('getLength')(var.get('array')))
                    if (var.get('idx',throw=False).typeof()==Js('number')):
                        if (var.get('dir')>Js(0.0)):
                            var.put('i', (var.get('idx') if (var.get('idx')>=Js(0.0)) else var.get('Math').callprop('max', (var.get('idx')+var.get('length')), var.get('i'))))
                        else:
                            var.put('length', (var.get('Math').callprop('min', (var.get('idx')+Js(1.0)), var.get('length')) if (var.get('idx')>=Js(0.0)) else ((var.get('idx')+var.get('length'))+Js(1.0))))
                    else:
                        if ((var.get('sortedIndex') and var.get('idx')) and var.get('length')):
                            var.put('idx', var.get('sortedIndex')(var.get('array'), var.get('item')))
                            return (var.get('idx') if PyJsStrictEq(var.get('array').get(var.get('idx')),var.get('item')) else (-Js(1.0)))
                    if PyJsStrictNeq(var.get('item'),var.get('item')):
                        var.put('idx', var.get('predicateFind')(var.get('slice').callprop('call', var.get('array'), var.get('i'), var.get('length')), var.get('_').get('isNaN')))
                        return ((var.get('idx')+var.get('i')) if (var.get('idx')>=Js(0.0)) else (-Js(1.0)))
                    #for JS loop
                    var.put('idx', (var.get('i') if (var.get('dir')>Js(0.0)) else (var.get('length')-Js(1.0))))
                    while ((var.get('idx')>=Js(0.0)) and (var.get('idx')<var.get('length'))):
                        try:
                            if PyJsStrictEq(var.get('array').get(var.get('idx')),var.get('item')):
                                return var.get('idx')
                        finally:
                                var.put('idx', var.get('dir'), '+')
                    return (-Js(1.0))
                PyJs_anonymous_77_._set_name('anonymous')
                return PyJs_anonymous_77_
            PyJs_createIndexFinder_76_._set_name('createIndexFinder')
            var.put('createIndexFinder', PyJs_createIndexFinder_76_)
            var.get('_').put('indexOf', var.get('createIndexFinder')(Js(1.0), var.get('_').get('findIndex'), var.get('_').get('sortedIndex')))
            var.get('_').put('lastIndexOf', var.get('createIndexFinder')((-Js(1.0)), var.get('_').get('findLastIndex')))
            @Js
            def PyJs_anonymous_78_(start, stop, step, this, arguments, var=var):
                var = Scope({'start':start, 'stop':stop, 'step':step, 'this':this, 'arguments':arguments}, var)
                var.registers(['range', 'idx', 'stop', 'step', 'length', 'start'])
                if (var.get('stop')==var.get(u"null")):
                    var.put('stop', (var.get('start') or Js(0.0)))
                    var.put('start', Js(0.0))
                if var.get('step').neg():
                    var.put('step', ((-Js(1.0)) if (var.get('stop')<var.get('start')) else Js(1.0)))
                var.put('length', var.get('Math').callprop('max', var.get('Math').callprop('ceil', ((var.get('stop')-var.get('start'))/var.get('step'))), Js(0.0)))
                var.put('range', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('idx', Js(0.0))
                while (var.get('idx')<var.get('length')):
                    try:
                        var.get('range').put(var.get('idx'), var.get('start'))
                    finally:
                            PyJsComma((var.put('idx',Js(var.get('idx').to_number())+Js(1))-Js(1)),var.put('start', var.get('step'), '+'))
                return var.get('range')
            PyJs_anonymous_78_._set_name('anonymous')
            var.get('_').put('range', PyJs_anonymous_78_)
            @Js
            def PyJs_anonymous_79_(array, count, this, arguments, var=var):
                var = Scope({'array':array, 'count':count, 'this':this, 'arguments':arguments}, var)
                var.registers(['length', 'i', 'count', 'array', 'result'])
                if ((var.get('count')==var.get(u"null")) or (var.get('count')<Js(1.0))):
                    return Js([])
                var.put('result', Js([]))
                var.put('i', Js(0.0))
                var.put('length', var.get('array').get('length'))
                while (var.get('i')<var.get('length')):
                    var.get('result').callprop('push', var.get('slice').callprop('call', var.get('array'), var.get('i'), var.put('i', var.get('count'), '+')))
                return var.get('result')
            PyJs_anonymous_79_._set_name('anonymous')
            var.get('_').put('chunk', PyJs_anonymous_79_)
            @Js
            def PyJs_executeBound_80_(sourceFunc, boundFunc, context, callingContext, args, this, arguments, var=var):
                var = Scope({'sourceFunc':sourceFunc, 'boundFunc':boundFunc, 'context':context, 'callingContext':callingContext, 'args':args, 'this':this, 'arguments':arguments, 'executeBound':PyJs_executeBound_80_}, var)
                var.registers(['sourceFunc', 'boundFunc', 'self', 'args', 'context', 'callingContext', 'result'])
                if var.get('callingContext').instanceof(var.get('boundFunc')).neg():
                    return var.get('sourceFunc').callprop('apply', var.get('context'), var.get('args'))
                var.put('self', var.get('baseCreate')(var.get('sourceFunc').get('prototype')))
                var.put('result', var.get('sourceFunc').callprop('apply', var.get('self'), var.get('args')))
                if var.get('_').callprop('isObject', var.get('result')):
                    return var.get('result')
                return var.get('self')
            PyJs_executeBound_80_._set_name('executeBound')
            var.put('executeBound', PyJs_executeBound_80_)
            @Js
            def PyJs_anonymous_81_(func, context, args, this, arguments, var=var):
                var = Scope({'func':func, 'context':context, 'args':args, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'func', 'args', 'bound'])
                if var.get('_').callprop('isFunction', var.get('func')).neg():
                    PyJsTempException = JsToPyException(var.get('TypeError').create(Js('Bind must be called on a function')))
                    raise PyJsTempException
                @Js
                def PyJs_anonymous_82_(callArgs, this, arguments, var=var):
                    var = Scope({'callArgs':callArgs, 'this':this, 'arguments':arguments}, var)
                    var.registers(['callArgs'])
                    return var.get('executeBound')(var.get('func'), var.get('bound'), var.get('context'), var.get(u"this"), var.get('args').callprop('concat', var.get('callArgs')))
                PyJs_anonymous_82_._set_name('anonymous')
                var.put('bound', var.get('restArguments')(PyJs_anonymous_82_))
                return var.get('bound')
            PyJs_anonymous_81_._set_name('anonymous')
            var.get('_').put('bind', var.get('restArguments')(PyJs_anonymous_81_))
            @Js
            def PyJs_anonymous_83_(func, boundArgs, this, arguments, var=var):
                var = Scope({'func':func, 'boundArgs':boundArgs, 'this':this, 'arguments':arguments}, var)
                var.registers(['boundArgs', 'placeholder', 'func', 'bound'])
                var.put('placeholder', var.get('_').get('partial').get('placeholder'))
                @Js
                def PyJs_bound_84_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments, 'bound':PyJs_bound_84_}, var)
                    var.registers(['i', 'length', 'args', 'position'])
                    var.put('position', Js(0.0))
                    var.put('length', var.get('boundArgs').get('length'))
                    var.put('args', var.get('Array')(var.get('length')))
                    #for JS loop
                    var.put('i', Js(0.0))
                    while (var.get('i')<var.get('length')):
                        try:
                            var.get('args').put(var.get('i'), (var.get('arguments').get((var.put('position',Js(var.get('position').to_number())+Js(1))-Js(1))) if PyJsStrictEq(var.get('boundArgs').get(var.get('i')),var.get('placeholder')) else var.get('boundArgs').get(var.get('i'))))
                        finally:
                                (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                    while (var.get('position')<var.get('arguments').get('length')):
                        var.get('args').callprop('push', var.get('arguments').get((var.put('position',Js(var.get('position').to_number())+Js(1))-Js(1))))
                    return var.get('executeBound')(var.get('func'), var.get('bound'), var.get(u"this"), var.get(u"this"), var.get('args'))
                PyJs_bound_84_._set_name('bound')
                var.put('bound', PyJs_bound_84_)
                return var.get('bound')
            PyJs_anonymous_83_._set_name('anonymous')
            var.get('_').put('partial', var.get('restArguments')(PyJs_anonymous_83_))
            var.get('_').get('partial').put('placeholder', var.get('_'))
            @Js
            def PyJs_anonymous_85_(obj, keys, this, arguments, var=var):
                var = Scope({'obj':obj, 'keys':keys, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'index', 'obj', 'key'])
                var.put('keys', var.get('flatten')(var.get('keys'), Js(False), Js(False)))
                var.put('index', var.get('keys').get('length'))
                if (var.get('index')<Js(1.0)):
                    PyJsTempException = JsToPyException(var.get('Error').create(Js('bindAll must be passed function names')))
                    raise PyJsTempException
                while (var.put('index',Js(var.get('index').to_number())-Js(1))+Js(1)):
                    var.put('key', var.get('keys').get(var.get('index')))
                    var.get('obj').put(var.get('key'), var.get('_').callprop('bind', var.get('obj').get(var.get('key')), var.get('obj')))
            PyJs_anonymous_85_._set_name('anonymous')
            var.get('_').put('bindAll', var.get('restArguments')(PyJs_anonymous_85_))
            @Js
            def PyJs_anonymous_86_(func, hasher, this, arguments, var=var):
                var = Scope({'func':func, 'hasher':hasher, 'this':this, 'arguments':arguments}, var)
                var.registers(['func', 'memoize', 'hasher'])
                @Js
                def PyJs_memoize_87_(key, this, arguments, var=var):
                    var = Scope({'key':key, 'this':this, 'arguments':arguments, 'memoize':PyJs_memoize_87_}, var)
                    var.registers(['cache', 'address', 'key'])
                    var.put('cache', var.get('memoize').get('cache'))
                    var.put('address', (Js('')+(var.get('hasher').callprop('apply', var.get(u"this"), var.get('arguments')) if var.get('hasher') else var.get('key'))))
                    if var.get('has')(var.get('cache'), var.get('address')).neg():
                        var.get('cache').put(var.get('address'), var.get('func').callprop('apply', var.get(u"this"), var.get('arguments')))
                    return var.get('cache').get(var.get('address'))
                PyJs_memoize_87_._set_name('memoize')
                var.put('memoize', PyJs_memoize_87_)
                var.get('memoize').put('cache', Js({}))
                return var.get('memoize')
            PyJs_anonymous_86_._set_name('anonymous')
            var.get('_').put('memoize', PyJs_anonymous_86_)
            @Js
            def PyJs_anonymous_88_(func, wait, args, this, arguments, var=var):
                var = Scope({'func':func, 'wait':wait, 'args':args, 'this':this, 'arguments':arguments}, var)
                var.registers(['wait', 'func', 'args'])
                @Js
                def PyJs_anonymous_89_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('func').callprop('apply', var.get(u"null"), var.get('args'))
                PyJs_anonymous_89_._set_name('anonymous')
                return var.get('setTimeout')(PyJs_anonymous_89_, var.get('wait'))
            PyJs_anonymous_88_._set_name('anonymous')
            var.get('_').put('delay', var.get('restArguments')(PyJs_anonymous_88_))
            var.get('_').put('defer', var.get('_').callprop('partial', var.get('_').get('delay'), var.get('_'), Js(1.0)))
            @Js
            def PyJs_anonymous_90_(func, wait, options, this, arguments, var=var):
                var = Scope({'func':func, 'wait':wait, 'options':options, 'this':this, 'arguments':arguments}, var)
                var.registers(['throttled', 'previous', 'timeout', 'func', 'later', 'args', 'options', 'context', 'wait', 'result'])
                pass
                var.put('previous', Js(0.0))
                if var.get('options').neg():
                    var.put('options', Js({}))
                @Js
                def PyJs_later_91_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments, 'later':PyJs_later_91_}, var)
                    var.registers([])
                    var.put('previous', (Js(0.0) if PyJsStrictEq(var.get('options').get('leading'),Js(False)) else var.get('_').callprop('now')))
                    var.put('timeout', var.get(u"null"))
                    var.put('result', var.get('func').callprop('apply', var.get('context'), var.get('args')))
                    if var.get('timeout').neg():
                        var.put('context', var.put('args', var.get(u"null")))
                PyJs_later_91_._set_name('later')
                var.put('later', PyJs_later_91_)
                @Js
                def PyJs_throttled_92_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments, 'throttled':PyJs_throttled_92_}, var)
                    var.registers(['remaining', 'now'])
                    var.put('now', var.get('_').callprop('now'))
                    if (var.get('previous').neg() and PyJsStrictEq(var.get('options').get('leading'),Js(False))):
                        var.put('previous', var.get('now'))
                    var.put('remaining', (var.get('wait')-(var.get('now')-var.get('previous'))))
                    var.put('context', var.get(u"this"))
                    var.put('args', var.get('arguments'))
                    if ((var.get('remaining')<=Js(0.0)) or (var.get('remaining')>var.get('wait'))):
                        if var.get('timeout'):
                            var.get('clearTimeout')(var.get('timeout'))
                            var.put('timeout', var.get(u"null"))
                        var.put('previous', var.get('now'))
                        var.put('result', var.get('func').callprop('apply', var.get('context'), var.get('args')))
                        if var.get('timeout').neg():
                            var.put('context', var.put('args', var.get(u"null")))
                    else:
                        if (var.get('timeout').neg() and PyJsStrictNeq(var.get('options').get('trailing'),Js(False))):
                            var.put('timeout', var.get('setTimeout')(var.get('later'), var.get('remaining')))
                    return var.get('result')
                PyJs_throttled_92_._set_name('throttled')
                var.put('throttled', PyJs_throttled_92_)
                @Js
                def PyJs_anonymous_93_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.get('clearTimeout')(var.get('timeout'))
                    var.put('previous', Js(0.0))
                    var.put('timeout', var.put('context', var.put('args', var.get(u"null"))))
                PyJs_anonymous_93_._set_name('anonymous')
                var.get('throttled').put('cancel', PyJs_anonymous_93_)
                return var.get('throttled')
            PyJs_anonymous_90_._set_name('anonymous')
            var.get('_').put('throttle', PyJs_anonymous_90_)
            @Js
            def PyJs_anonymous_94_(func, wait, immediate, this, arguments, var=var):
                var = Scope({'func':func, 'wait':wait, 'immediate':immediate, 'this':this, 'arguments':arguments}, var)
                var.registers(['timeout', 'func', 'later', 'immediate', 'debounced', 'wait', 'result'])
                pass
                @Js
                def PyJs_later_95_(context, args, this, arguments, var=var):
                    var = Scope({'context':context, 'args':args, 'this':this, 'arguments':arguments, 'later':PyJs_later_95_}, var)
                    var.registers(['context', 'args'])
                    var.put('timeout', var.get(u"null"))
                    if var.get('args'):
                        var.put('result', var.get('func').callprop('apply', var.get('context'), var.get('args')))
                PyJs_later_95_._set_name('later')
                var.put('later', PyJs_later_95_)
                @Js
                def PyJs_anonymous_96_(args, this, arguments, var=var):
                    var = Scope({'args':args, 'this':this, 'arguments':arguments}, var)
                    var.registers(['args', 'callNow'])
                    if var.get('timeout'):
                        var.get('clearTimeout')(var.get('timeout'))
                    if var.get('immediate'):
                        var.put('callNow', var.get('timeout').neg())
                        var.put('timeout', var.get('setTimeout')(var.get('later'), var.get('wait')))
                        if var.get('callNow'):
                            var.put('result', var.get('func').callprop('apply', var.get(u"this"), var.get('args')))
                    else:
                        var.put('timeout', var.get('_').callprop('delay', var.get('later'), var.get('wait'), var.get(u"this"), var.get('args')))
                    return var.get('result')
                PyJs_anonymous_96_._set_name('anonymous')
                var.put('debounced', var.get('restArguments')(PyJs_anonymous_96_))
                @Js
                def PyJs_anonymous_97_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.get('clearTimeout')(var.get('timeout'))
                    var.put('timeout', var.get(u"null"))
                PyJs_anonymous_97_._set_name('anonymous')
                var.get('debounced').put('cancel', PyJs_anonymous_97_)
                return var.get('debounced')
            PyJs_anonymous_94_._set_name('anonymous')
            var.get('_').put('debounce', PyJs_anonymous_94_)
            @Js
            def PyJs_anonymous_98_(func, wrapper, this, arguments, var=var):
                var = Scope({'func':func, 'wrapper':wrapper, 'this':this, 'arguments':arguments}, var)
                var.registers(['func', 'wrapper'])
                return var.get('_').callprop('partial', var.get('wrapper'), var.get('func'))
            PyJs_anonymous_98_._set_name('anonymous')
            var.get('_').put('wrap', PyJs_anonymous_98_)
            @Js
            def PyJs_anonymous_99_(predicate, this, arguments, var=var):
                var = Scope({'predicate':predicate, 'this':this, 'arguments':arguments}, var)
                var.registers(['predicate'])
                @Js
                def PyJs_anonymous_100_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('predicate').callprop('apply', var.get(u"this"), var.get('arguments')).neg()
                PyJs_anonymous_100_._set_name('anonymous')
                return PyJs_anonymous_100_
            PyJs_anonymous_99_._set_name('anonymous')
            var.get('_').put('negate', PyJs_anonymous_99_)
            @Js
            def PyJs_anonymous_101_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers(['args', 'start'])
                var.put('args', var.get('arguments'))
                var.put('start', (var.get('args').get('length')-Js(1.0)))
                @Js
                def PyJs_anonymous_102_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers(['i', 'result'])
                    var.put('i', var.get('start'))
                    var.put('result', var.get('args').get(var.get('start')).callprop('apply', var.get(u"this"), var.get('arguments')))
                    while (var.put('i',Js(var.get('i').to_number())-Js(1))+Js(1)):
                        var.put('result', var.get('args').get(var.get('i')).callprop('call', var.get(u"this"), var.get('result')))
                    return var.get('result')
                PyJs_anonymous_102_._set_name('anonymous')
                return PyJs_anonymous_102_
            PyJs_anonymous_101_._set_name('anonymous')
            var.get('_').put('compose', PyJs_anonymous_101_)
            @Js
            def PyJs_anonymous_103_(times, func, this, arguments, var=var):
                var = Scope({'times':times, 'func':func, 'this':this, 'arguments':arguments}, var)
                var.registers(['func', 'times'])
                @Js
                def PyJs_anonymous_104_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    if (var.put('times',Js(var.get('times').to_number())-Js(1))<Js(1.0)):
                        return var.get('func').callprop('apply', var.get(u"this"), var.get('arguments'))
                PyJs_anonymous_104_._set_name('anonymous')
                return PyJs_anonymous_104_
            PyJs_anonymous_103_._set_name('anonymous')
            var.get('_').put('after', PyJs_anonymous_103_)
            @Js
            def PyJs_anonymous_105_(times, func, this, arguments, var=var):
                var = Scope({'times':times, 'func':func, 'this':this, 'arguments':arguments}, var)
                var.registers(['times', 'func', 'memo'])
                pass
                @Js
                def PyJs_anonymous_106_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    if (var.put('times',Js(var.get('times').to_number())-Js(1))>Js(0.0)):
                        var.put('memo', var.get('func').callprop('apply', var.get(u"this"), var.get('arguments')))
                    if (var.get('times')<=Js(1.0)):
                        var.put('func', var.get(u"null"))
                    return var.get('memo')
                PyJs_anonymous_106_._set_name('anonymous')
                return PyJs_anonymous_106_
            PyJs_anonymous_105_._set_name('anonymous')
            var.get('_').put('before', PyJs_anonymous_105_)
            var.get('_').put('once', var.get('_').callprop('partial', var.get('_').get('before'), Js(2.0)))
            var.get('_').put('restArguments', var.get('restArguments'))
            var.put('hasEnumBug', Js({'toString':var.get(u"null")}).callprop('propertyIsEnumerable', Js('toString')).neg())
            var.put('nonEnumerableProps', Js([Js('valueOf'), Js('isPrototypeOf'), Js('toString'), Js('propertyIsEnumerable'), Js('hasOwnProperty'), Js('toLocaleString')]))
            @Js
            def PyJs_collectNonEnumProps_107_(obj, keys, this, arguments, var=var):
                var = Scope({'obj':obj, 'keys':keys, 'this':this, 'arguments':arguments, 'collectNonEnumProps':PyJs_collectNonEnumProps_107_}, var)
                var.registers(['proto', 'keys', 'prop', 'constructor', 'nonEnumIdx', 'obj'])
                var.put('nonEnumIdx', var.get('nonEnumerableProps').get('length'))
                var.put('constructor', var.get('obj').get('constructor'))
                var.put('proto', ((var.get('_').callprop('isFunction', var.get('constructor')) and var.get('constructor').get('prototype')) or var.get('ObjProto')))
                var.put('prop', Js('constructor'))
                if (var.get('has')(var.get('obj'), var.get('prop')) and var.get('_').callprop('contains', var.get('keys'), var.get('prop')).neg()):
                    var.get('keys').callprop('push', var.get('prop'))
                while (var.put('nonEnumIdx',Js(var.get('nonEnumIdx').to_number())-Js(1))+Js(1)):
                    var.put('prop', var.get('nonEnumerableProps').get(var.get('nonEnumIdx')))
                    if ((var.get('obj').contains(var.get('prop')) and PyJsStrictNeq(var.get('obj').get(var.get('prop')),var.get('proto').get(var.get('prop')))) and var.get('_').callprop('contains', var.get('keys'), var.get('prop')).neg()):
                        var.get('keys').callprop('push', var.get('prop'))
            PyJs_collectNonEnumProps_107_._set_name('collectNonEnumProps')
            var.put('collectNonEnumProps', PyJs_collectNonEnumProps_107_)
            @Js
            def PyJs_anonymous_108_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'obj', 'key'])
                if var.get('_').callprop('isObject', var.get('obj')).neg():
                    return Js([])
                if var.get('nativeKeys'):
                    return var.get('nativeKeys')(var.get('obj'))
                var.put('keys', Js([]))
                for PyJsTemp in var.get('obj'):
                    var.put('key', PyJsTemp)
                    if var.get('has')(var.get('obj'), var.get('key')):
                        var.get('keys').callprop('push', var.get('key'))
                if var.get('hasEnumBug'):
                    var.get('collectNonEnumProps')(var.get('obj'), var.get('keys'))
                return var.get('keys')
            PyJs_anonymous_108_._set_name('anonymous')
            var.get('_').put('keys', PyJs_anonymous_108_)
            @Js
            def PyJs_anonymous_109_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'obj', 'key'])
                if var.get('_').callprop('isObject', var.get('obj')).neg():
                    return Js([])
                var.put('keys', Js([]))
                for PyJsTemp in var.get('obj'):
                    var.put('key', PyJsTemp)
                    var.get('keys').callprop('push', var.get('key'))
                if var.get('hasEnumBug'):
                    var.get('collectNonEnumProps')(var.get('obj'), var.get('keys'))
                return var.get('keys')
            PyJs_anonymous_109_._set_name('anonymous')
            var.get('_').put('allKeys', PyJs_anonymous_109_)
            @Js
            def PyJs_anonymous_110_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['values', 'keys', 'length', 'obj', 'i'])
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                var.put('length', var.get('keys').get('length'))
                var.put('values', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.get('values').put(var.get('i'), var.get('obj').get(var.get('keys').get(var.get('i'))))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('values')
            PyJs_anonymous_110_._set_name('anonymous')
            var.get('_').put('values', PyJs_anonymous_110_)
            @Js
            def PyJs_anonymous_111_(obj, iteratee, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['currentKey', 'keys', 'results', 'index', 'length', 'iteratee', 'context', 'obj'])
                var.put('iteratee', var.get('cb')(var.get('iteratee'), var.get('context')))
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                var.put('length', var.get('keys').get('length'))
                var.put('results', Js({}))
                #for JS loop
                var.put('index', Js(0.0))
                while (var.get('index')<var.get('length')):
                    try:
                        var.put('currentKey', var.get('keys').get(var.get('index')))
                        var.get('results').put(var.get('currentKey'), var.get('iteratee')(var.get('obj').get(var.get('currentKey')), var.get('currentKey'), var.get('obj')))
                    finally:
                            (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                return var.get('results')
            PyJs_anonymous_111_._set_name('anonymous')
            var.get('_').put('mapObject', PyJs_anonymous_111_)
            @Js
            def PyJs_anonymous_112_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'pairs', 'length', 'obj', 'i'])
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                var.put('length', var.get('keys').get('length'))
                var.put('pairs', var.get('Array')(var.get('length')))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.get('pairs').put(var.get('i'), Js([var.get('keys').get(var.get('i')), var.get('obj').get(var.get('keys').get(var.get('i')))]))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('pairs')
            PyJs_anonymous_112_._set_name('anonymous')
            var.get('_').put('pairs', PyJs_anonymous_112_)
            @Js
            def PyJs_anonymous_113_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['keys', 'length', 'obj', 'i', 'result'])
                var.put('result', Js({}))
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('keys').get('length'))
                while (var.get('i')<var.get('length')):
                    try:
                        var.get('result').put(var.get('obj').get(var.get('keys').get(var.get('i'))), var.get('keys').get(var.get('i')))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_113_._set_name('anonymous')
            var.get('_').put('invert', PyJs_anonymous_113_)
            @Js
            def PyJs_anonymous_114_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'names', 'key'])
                var.put('names', Js([]))
                for PyJsTemp in var.get('obj'):
                    var.put('key', PyJsTemp)
                    if var.get('_').callprop('isFunction', var.get('obj').get(var.get('key'))):
                        var.get('names').callprop('push', var.get('key'))
                return var.get('names').callprop('sort')
            PyJs_anonymous_114_._set_name('anonymous')
            var.get('_').put('functions', var.get('_').put('methods', PyJs_anonymous_114_))
            @Js
            def PyJs_createAssigner_115_(keysFunc, defaults, this, arguments, var=var):
                var = Scope({'keysFunc':keysFunc, 'defaults':defaults, 'this':this, 'arguments':arguments, 'createAssigner':PyJs_createAssigner_115_}, var)
                var.registers(['keysFunc', 'defaults'])
                @Js
                def PyJs_anonymous_116_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['key', 'keys', 'index', 'length', 'source', 'obj', 'l', 'i'])
                    var.put('length', var.get('arguments').get('length'))
                    if var.get('defaults'):
                        var.put('obj', var.get('Object')(var.get('obj')))
                    if ((var.get('length')<Js(2.0)) or (var.get('obj')==var.get(u"null"))):
                        return var.get('obj')
                    #for JS loop
                    var.put('index', Js(1.0))
                    while (var.get('index')<var.get('length')):
                        try:
                            var.put('source', var.get('arguments').get(var.get('index')))
                            var.put('keys', var.get('keysFunc')(var.get('source')))
                            var.put('l', var.get('keys').get('length'))
                            #for JS loop
                            var.put('i', Js(0.0))
                            while (var.get('i')<var.get('l')):
                                try:
                                    var.put('key', var.get('keys').get(var.get('i')))
                                    if (var.get('defaults').neg() or PyJsStrictEq(var.get('obj').get(var.get('key')),PyJsComma(Js(0.0), Js(None)))):
                                        var.get('obj').put(var.get('key'), var.get('source').get(var.get('key')))
                                finally:
                                        (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                        finally:
                                (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                    return var.get('obj')
                PyJs_anonymous_116_._set_name('anonymous')
                return PyJs_anonymous_116_
            PyJs_createAssigner_115_._set_name('createAssigner')
            var.put('createAssigner', PyJs_createAssigner_115_)
            var.get('_').put('extend', var.get('createAssigner')(var.get('_').get('allKeys')))
            var.get('_').put('extendOwn', var.get('_').put('assign', var.get('createAssigner')(var.get('_').get('keys'))))
            @Js
            def PyJs_anonymous_117_(obj, predicate, context, this, arguments, var=var):
                var = Scope({'obj':obj, 'predicate':predicate, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['key', 'keys', 'predicate', 'length', 'obj', 'context', 'i'])
                var.put('predicate', var.get('cb')(var.get('predicate'), var.get('context')))
                var.put('keys', var.get('_').callprop('keys', var.get('obj')))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('keys').get('length'))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('key', var.get('keys').get(var.get('i')))
                        if var.get('predicate')(var.get('obj').get(var.get('key')), var.get('key'), var.get('obj')):
                            return var.get('key')
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
            PyJs_anonymous_117_._set_name('anonymous')
            var.get('_').put('findKey', PyJs_anonymous_117_)
            @Js
            def PyJs_keyInObj_118_(value, key, obj, this, arguments, var=var):
                var = Scope({'value':value, 'key':key, 'obj':obj, 'this':this, 'arguments':arguments, 'keyInObj':PyJs_keyInObj_118_}, var)
                var.registers(['value', 'obj', 'key'])
                return var.get('obj').contains(var.get('key'))
            PyJs_keyInObj_118_._set_name('keyInObj')
            var.put('keyInObj', PyJs_keyInObj_118_)
            @Js
            def PyJs_anonymous_119_(obj, keys, this, arguments, var=var):
                var = Scope({'obj':obj, 'keys':keys, 'this':this, 'arguments':arguments}, var)
                var.registers(['key', 'keys', 'value', 'iteratee', 'length', 'obj', 'i', 'result'])
                var.put('result', Js({}))
                var.put('iteratee', var.get('keys').get('0'))
                if (var.get('obj')==var.get(u"null")):
                    return var.get('result')
                if var.get('_').callprop('isFunction', var.get('iteratee')):
                    if (var.get('keys').get('length')>Js(1.0)):
                        var.put('iteratee', var.get('optimizeCb')(var.get('iteratee'), var.get('keys').get('1')))
                    var.put('keys', var.get('_').callprop('allKeys', var.get('obj')))
                else:
                    var.put('iteratee', var.get('keyInObj'))
                    var.put('keys', var.get('flatten')(var.get('keys'), Js(False), Js(False)))
                    var.put('obj', var.get('Object')(var.get('obj')))
                #for JS loop
                var.put('i', Js(0.0))
                var.put('length', var.get('keys').get('length'))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('key', var.get('keys').get(var.get('i')))
                        var.put('value', var.get('obj').get(var.get('key')))
                        if var.get('iteratee')(var.get('value'), var.get('key'), var.get('obj')):
                            var.get('result').put(var.get('key'), var.get('value'))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJs_anonymous_119_._set_name('anonymous')
            var.get('_').put('pick', var.get('restArguments')(PyJs_anonymous_119_))
            @Js
            def PyJs_anonymous_120_(obj, keys, this, arguments, var=var):
                var = Scope({'obj':obj, 'keys':keys, 'this':this, 'arguments':arguments}, var)
                var.registers(['context', 'iteratee', 'keys', 'obj'])
                var.put('iteratee', var.get('keys').get('0'))
                if var.get('_').callprop('isFunction', var.get('iteratee')):
                    var.put('iteratee', var.get('_').callprop('negate', var.get('iteratee')))
                    if (var.get('keys').get('length')>Js(1.0)):
                        var.put('context', var.get('keys').get('1'))
                else:
                    var.put('keys', var.get('_').callprop('map', var.get('flatten')(var.get('keys'), Js(False), Js(False)), var.get('String')))
                    @Js
                    def PyJs_iteratee_121_(value, key, this, arguments, var=var):
                        var = Scope({'value':value, 'key':key, 'this':this, 'arguments':arguments, 'iteratee':PyJs_iteratee_121_}, var)
                        var.registers(['value', 'key'])
                        return var.get('_').callprop('contains', var.get('keys'), var.get('key')).neg()
                    PyJs_iteratee_121_._set_name('iteratee')
                    var.put('iteratee', PyJs_iteratee_121_)
                return var.get('_').callprop('pick', var.get('obj'), var.get('iteratee'), var.get('context'))
            PyJs_anonymous_120_._set_name('anonymous')
            var.get('_').put('omit', var.get('restArguments')(PyJs_anonymous_120_))
            var.get('_').put('defaults', var.get('createAssigner')(var.get('_').get('allKeys'), Js(True)))
            @Js
            def PyJs_anonymous_122_(prototype, props, this, arguments, var=var):
                var = Scope({'prototype':prototype, 'props':props, 'this':this, 'arguments':arguments}, var)
                var.registers(['props', 'prototype', 'result'])
                var.put('result', var.get('baseCreate')(var.get('prototype')))
                if var.get('props'):
                    var.get('_').callprop('extendOwn', var.get('result'), var.get('props'))
                return var.get('result')
            PyJs_anonymous_122_._set_name('anonymous')
            var.get('_').put('create', PyJs_anonymous_122_)
            @Js
            def PyJs_anonymous_123_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if var.get('_').callprop('isObject', var.get('obj')).neg():
                    return var.get('obj')
                return (var.get('obj').callprop('slice') if var.get('_').callprop('isArray', var.get('obj')) else var.get('_').callprop('extend', Js({}), var.get('obj')))
            PyJs_anonymous_123_._set_name('anonymous')
            var.get('_').put('clone', PyJs_anonymous_123_)
            @Js
            def PyJs_anonymous_124_(obj, interceptor, this, arguments, var=var):
                var = Scope({'obj':obj, 'interceptor':interceptor, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'interceptor'])
                var.get('interceptor')(var.get('obj'))
                return var.get('obj')
            PyJs_anonymous_124_._set_name('anonymous')
            var.get('_').put('tap', PyJs_anonymous_124_)
            @Js
            def PyJs_anonymous_125_(object, attrs, this, arguments, var=var):
                var = Scope({'object':object, 'attrs':attrs, 'this':this, 'arguments':arguments}, var)
                var.registers(['object', 'key', 'keys', 'length', 'attrs', 'obj', 'i'])
                var.put('keys', var.get('_').callprop('keys', var.get('attrs')))
                var.put('length', var.get('keys').get('length'))
                if (var.get('object')==var.get(u"null")):
                    return var.get('length').neg()
                var.put('obj', var.get('Object')(var.get('object')))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('key', var.get('keys').get(var.get('i')))
                        if (PyJsStrictNeq(var.get('attrs').get(var.get('key')),var.get('obj').get(var.get('key'))) or var.get('obj').contains(var.get('key')).neg()):
                            return Js(False)
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return Js(True)
            PyJs_anonymous_125_._set_name('anonymous')
            var.get('_').put('isMatch', PyJs_anonymous_125_)
            pass
            @Js
            def PyJs_eq_126_(a, b, aStack, bStack, this, arguments, var=var):
                var = Scope({'a':a, 'b':b, 'aStack':aStack, 'bStack':bStack, 'this':this, 'arguments':arguments, 'eq':PyJs_eq_126_}, var)
                var.registers(['aStack', 'type', 'bStack', 'a', 'b'])
                if PyJsStrictEq(var.get('a'),var.get('b')):
                    return (PyJsStrictNeq(var.get('a'),Js(0.0)) or PyJsStrictEq((Js(1.0)/var.get('a')),(Js(1.0)/var.get('b'))))
                if ((var.get('a')==var.get(u"null")) or (var.get('b')==var.get(u"null"))):
                    return Js(False)
                if PyJsStrictNeq(var.get('a'),var.get('a')):
                    return PyJsStrictNeq(var.get('b'),var.get('b'))
                var.put('type', (Js('undefined') if PyJsStrictEq(var.get('a',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('a'))))
                if ((PyJsStrictNeq(var.get('type'),Js('function')) and PyJsStrictNeq(var.get('type'),Js('object'))) and ((Js('undefined') if PyJsStrictEq(var.get('b',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('b')))!=Js('object'))):
                    return Js(False)
                return var.get('deepEq')(var.get('a'), var.get('b'), var.get('aStack'), var.get('bStack'))
            PyJs_eq_126_._set_name('eq')
            var.put('eq', PyJs_eq_126_)
            @Js
            def PyJs_deepEq_127_(a, b, aStack, bStack, this, arguments, var=var):
                var = Scope({'a':a, 'b':b, 'aStack':aStack, 'bStack':bStack, 'this':this, 'arguments':arguments, 'deepEq':PyJs_deepEq_127_}, var)
                var.registers(['aStack', 'bCtor', 'key', 'keys', 'bStack', 'a', 'length', 'areArrays', 'className', 'b', 'aCtor'])
                if var.get('a').instanceof(var.get('_')):
                    var.put('a', var.get('a').get('_wrapped'))
                if var.get('b').instanceof(var.get('_')):
                    var.put('b', var.get('b').get('_wrapped'))
                var.put('className', var.get('toString').callprop('call', var.get('a')))
                if PyJsStrictNeq(var.get('className'),var.get('toString').callprop('call', var.get('b'))):
                    return Js(False)
                while 1:
                    SWITCHED = False
                    CONDITION = (var.get('className'))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object RegExp]')):
                        SWITCHED = True
                        pass
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object String]')):
                        SWITCHED = True
                        return PyJsStrictEq((Js('')+var.get('a')),(Js('')+var.get('b')))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object Number]')):
                        SWITCHED = True
                        if PyJsStrictNeq((+var.get('a')),(+var.get('a'))):
                            return PyJsStrictNeq((+var.get('b')),(+var.get('b')))
                        return (PyJsStrictEq((Js(1.0)/(+var.get('a'))),(Js(1.0)/var.get('b'))) if PyJsStrictEq((+var.get('a')),Js(0.0)) else PyJsStrictEq((+var.get('a')),(+var.get('b'))))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object Date]')):
                        SWITCHED = True
                        pass
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object Boolean]')):
                        SWITCHED = True
                        return PyJsStrictEq((+var.get('a')),(+var.get('b')))
                    if SWITCHED or PyJsStrictEq(CONDITION, Js('[object Symbol]')):
                        SWITCHED = True
                        return PyJsStrictEq(var.get('SymbolProto').get('valueOf').callprop('call', var.get('a')),var.get('SymbolProto').get('valueOf').callprop('call', var.get('b')))
                    SWITCHED = True
                    break
                var.put('areArrays', PyJsStrictEq(var.get('className'),Js('[object Array]')))
                if var.get('areArrays').neg():
                    if (((Js('undefined') if PyJsStrictEq(var.get('a',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('a')))!=Js('object')) or ((Js('undefined') if PyJsStrictEq(var.get('b',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('b')))!=Js('object'))):
                        return Js(False)
                    var.put('aCtor', var.get('a').get('constructor'))
                    var.put('bCtor', var.get('b').get('constructor'))
                    if (((PyJsStrictNeq(var.get('aCtor'),var.get('bCtor')) and (((var.get('_').callprop('isFunction', var.get('aCtor')) and var.get('aCtor').instanceof(var.get('aCtor'))) and var.get('_').callprop('isFunction', var.get('bCtor'))) and var.get('bCtor').instanceof(var.get('bCtor'))).neg()) and var.get('a').contains(Js('constructor'))) and var.get('b').contains(Js('constructor'))):
                        return Js(False)
                var.put('aStack', (var.get('aStack') or Js([])))
                var.put('bStack', (var.get('bStack') or Js([])))
                var.put('length', var.get('aStack').get('length'))
                while (var.put('length',Js(var.get('length').to_number())-Js(1))+Js(1)):
                    if PyJsStrictEq(var.get('aStack').get(var.get('length')),var.get('a')):
                        return PyJsStrictEq(var.get('bStack').get(var.get('length')),var.get('b'))
                var.get('aStack').callprop('push', var.get('a'))
                var.get('bStack').callprop('push', var.get('b'))
                if var.get('areArrays'):
                    var.put('length', var.get('a').get('length'))
                    if PyJsStrictNeq(var.get('length'),var.get('b').get('length')):
                        return Js(False)
                    while (var.put('length',Js(var.get('length').to_number())-Js(1))+Js(1)):
                        if var.get('eq')(var.get('a').get(var.get('length')), var.get('b').get(var.get('length')), var.get('aStack'), var.get('bStack')).neg():
                            return Js(False)
                else:
                    var.put('keys', var.get('_').callprop('keys', var.get('a')))
                    var.put('length', var.get('keys').get('length'))
                    if PyJsStrictNeq(var.get('_').callprop('keys', var.get('b')).get('length'),var.get('length')):
                        return Js(False)
                    while (var.put('length',Js(var.get('length').to_number())-Js(1))+Js(1)):
                        var.put('key', var.get('keys').get(var.get('length')))
                        if (var.get('has')(var.get('b'), var.get('key')) and var.get('eq')(var.get('a').get(var.get('key')), var.get('b').get(var.get('key')), var.get('aStack'), var.get('bStack'))).neg():
                            return Js(False)
                var.get('aStack').callprop('pop')
                var.get('bStack').callprop('pop')
                return Js(True)
            PyJs_deepEq_127_._set_name('deepEq')
            var.put('deepEq', PyJs_deepEq_127_)
            @Js
            def PyJs_anonymous_128_(a, b, this, arguments, var=var):
                var = Scope({'a':a, 'b':b, 'this':this, 'arguments':arguments}, var)
                var.registers(['a', 'b'])
                return var.get('eq')(var.get('a'), var.get('b'))
            PyJs_anonymous_128_._set_name('anonymous')
            var.get('_').put('isEqual', PyJs_anonymous_128_)
            @Js
            def PyJs_anonymous_129_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if (var.get('obj')==var.get(u"null")):
                    return Js(True)
                if (var.get('isArrayLike')(var.get('obj')) and ((var.get('_').callprop('isArray', var.get('obj')) or var.get('_').callprop('isString', var.get('obj'))) or var.get('_').callprop('isArguments', var.get('obj')))):
                    return PyJsStrictEq(var.get('obj').get('length'),Js(0.0))
                return PyJsStrictEq(var.get('_').callprop('keys', var.get('obj')).get('length'),Js(0.0))
            PyJs_anonymous_129_._set_name('anonymous')
            var.get('_').put('isEmpty', PyJs_anonymous_129_)
            @Js
            def PyJs_anonymous_130_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return (var.get('obj') and PyJsStrictEq(var.get('obj').get('nodeType'),Js(1.0))).neg().neg()
            PyJs_anonymous_130_._set_name('anonymous')
            var.get('_').put('isElement', PyJs_anonymous_130_)
            @Js
            def PyJs_anonymous_131_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return PyJsStrictEq(var.get('toString').callprop('call', var.get('obj')),Js('[object Array]'))
            PyJs_anonymous_131_._set_name('anonymous')
            var.get('_').put('isArray', (var.get('nativeIsArray') or PyJs_anonymous_131_))
            @Js
            def PyJs_anonymous_132_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'type'])
                var.put('type', (Js('undefined') if PyJsStrictEq(var.get('obj',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('obj'))))
                return (PyJsStrictEq(var.get('type'),Js('function')) or (PyJsStrictEq(var.get('type'),Js('object')) and var.get('obj').neg().neg()))
            PyJs_anonymous_132_._set_name('anonymous')
            var.get('_').put('isObject', PyJs_anonymous_132_)
            @Js
            def PyJs_anonymous_133_(name, this, arguments, var=var):
                var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
                var.registers(['name'])
                @Js
                def PyJs_anonymous_134_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return PyJsStrictEq(var.get('toString').callprop('call', var.get('obj')),((Js('[object ')+var.get('name'))+Js(']')))
                PyJs_anonymous_134_._set_name('anonymous')
                var.get('_').put((Js('is')+var.get('name')), PyJs_anonymous_134_)
            PyJs_anonymous_133_._set_name('anonymous')
            var.get('_').callprop('each', Js([Js('Arguments'), Js('Function'), Js('String'), Js('Number'), Js('Date'), Js('RegExp'), Js('Error'), Js('Symbol'), Js('Map'), Js('WeakMap'), Js('Set'), Js('WeakSet')]), PyJs_anonymous_133_)
            if var.get('_').callprop('isArguments', var.get('arguments')).neg():
                @Js
                def PyJs_anonymous_135_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return var.get('has')(var.get('obj'), Js('callee'))
                PyJs_anonymous_135_._set_name('anonymous')
                var.get('_').put('isArguments', PyJs_anonymous_135_)
            var.put('nodelist', (var.get('root').get('document') and var.get('root').get('document').get('childNodes')))
            if (((JsRegExp('/./').typeof()!=Js('function')) and ((Js('undefined') if PyJsStrictEq(var.get('Int8Array',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('Int8Array')))!=Js('object'))) and (var.get('nodelist',throw=False).typeof()!=Js('function'))):
                @Js
                def PyJs_anonymous_136_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return ((var.get('obj',throw=False).typeof()==Js('function')) or Js(False))
                PyJs_anonymous_136_._set_name('anonymous')
                var.get('_').put('isFunction', PyJs_anonymous_136_)
            @Js
            def PyJs_anonymous_137_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return ((var.get('_').callprop('isSymbol', var.get('obj')).neg() and var.get('isFinite')(var.get('obj'))) and var.get('isNaN')(var.get('parseFloat')(var.get('obj'))).neg())
            PyJs_anonymous_137_._set_name('anonymous')
            var.get('_').put('isFinite', PyJs_anonymous_137_)
            @Js
            def PyJs_anonymous_138_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return (var.get('_').callprop('isNumber', var.get('obj')) and var.get('isNaN')(var.get('obj')))
            PyJs_anonymous_138_._set_name('anonymous')
            var.get('_').put('isNaN', PyJs_anonymous_138_)
            @Js
            def PyJs_anonymous_139_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return ((PyJsStrictEq(var.get('obj'),Js(True)) or PyJsStrictEq(var.get('obj'),Js(False))) or PyJsStrictEq(var.get('toString').callprop('call', var.get('obj')),Js('[object Boolean]')))
            PyJs_anonymous_139_._set_name('anonymous')
            var.get('_').put('isBoolean', PyJs_anonymous_139_)
            @Js
            def PyJs_anonymous_140_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return PyJsStrictEq(var.get('obj'),var.get(u"null"))
            PyJs_anonymous_140_._set_name('anonymous')
            var.get('_').put('isNull', PyJs_anonymous_140_)
            @Js
            def PyJs_anonymous_141_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                return PyJsStrictEq(var.get('obj'),PyJsComma(Js(0.0), Js(None)))
            PyJs_anonymous_141_._set_name('anonymous')
            var.get('_').put('isUndefined', PyJs_anonymous_141_)
            @Js
            def PyJs_anonymous_142_(obj, path, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'this':this, 'arguments':arguments}, var)
                var.registers(['key', 'path', 'length', 'obj', 'i'])
                if var.get('_').callprop('isArray', var.get('path')).neg():
                    return var.get('has')(var.get('obj'), var.get('path'))
                var.put('length', var.get('path').get('length'))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('key', var.get('path').get(var.get('i')))
                        if ((var.get('obj')==var.get(u"null")) or var.get('hasOwnProperty').callprop('call', var.get('obj'), var.get('key')).neg()):
                            return Js(False)
                        var.put('obj', var.get('obj').get(var.get('key')))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('length').neg().neg()
            PyJs_anonymous_142_._set_name('anonymous')
            var.get('_').put('has', PyJs_anonymous_142_)
            @Js
            def PyJs_anonymous_143_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                var.get('root').put('_', var.get('previousUnderscore'))
                return var.get(u"this")
            PyJs_anonymous_143_._set_name('anonymous')
            var.get('_').put('noConflict', PyJs_anonymous_143_)
            @Js
            def PyJs_anonymous_144_(value, this, arguments, var=var):
                var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                var.registers(['value'])
                return var.get('value')
            PyJs_anonymous_144_._set_name('anonymous')
            var.get('_').put('identity', PyJs_anonymous_144_)
            @Js
            def PyJs_anonymous_145_(value, this, arguments, var=var):
                var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                var.registers(['value'])
                @Js
                def PyJs_anonymous_146_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('value')
                PyJs_anonymous_146_._set_name('anonymous')
                return PyJs_anonymous_146_
            PyJs_anonymous_145_._set_name('anonymous')
            var.get('_').put('constant', PyJs_anonymous_145_)
            @Js
            def PyJs_anonymous_147_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                pass
            PyJs_anonymous_147_._set_name('anonymous')
            var.get('_').put('noop', PyJs_anonymous_147_)
            @Js
            def PyJs_anonymous_148_(path, this, arguments, var=var):
                var = Scope({'path':path, 'this':this, 'arguments':arguments}, var)
                var.registers(['path'])
                if var.get('_').callprop('isArray', var.get('path')).neg():
                    return var.get('shallowProperty')(var.get('path'))
                @Js
                def PyJs_anonymous_149_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return var.get('deepGet')(var.get('obj'), var.get('path'))
                PyJs_anonymous_149_._set_name('anonymous')
                return PyJs_anonymous_149_
            PyJs_anonymous_148_._set_name('anonymous')
            var.get('_').put('property', PyJs_anonymous_148_)
            @Js
            def PyJs_anonymous_150_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                if (var.get('obj')==var.get(u"null")):
                    @Js
                    def PyJs_anonymous_151_(this, arguments, var=var):
                        var = Scope({'this':this, 'arguments':arguments}, var)
                        var.registers([])
                        pass
                    PyJs_anonymous_151_._set_name('anonymous')
                    return PyJs_anonymous_151_
                @Js
                def PyJs_anonymous_152_(path, this, arguments, var=var):
                    var = Scope({'path':path, 'this':this, 'arguments':arguments}, var)
                    var.registers(['path'])
                    return (var.get('obj').get(var.get('path')) if var.get('_').callprop('isArray', var.get('path')).neg() else var.get('deepGet')(var.get('obj'), var.get('path')))
                PyJs_anonymous_152_._set_name('anonymous')
                return PyJs_anonymous_152_
            PyJs_anonymous_150_._set_name('anonymous')
            var.get('_').put('propertyOf', PyJs_anonymous_150_)
            @Js
            def PyJs_anonymous_153_(attrs, this, arguments, var=var):
                var = Scope({'attrs':attrs, 'this':this, 'arguments':arguments}, var)
                var.registers(['attrs'])
                var.put('attrs', var.get('_').callprop('extendOwn', Js({}), var.get('attrs')))
                @Js
                def PyJs_anonymous_154_(obj, this, arguments, var=var):
                    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    return var.get('_').callprop('isMatch', var.get('obj'), var.get('attrs'))
                PyJs_anonymous_154_._set_name('anonymous')
                return PyJs_anonymous_154_
            PyJs_anonymous_153_._set_name('anonymous')
            var.get('_').put('matcher', var.get('_').put('matches', PyJs_anonymous_153_))
            @Js
            def PyJs_anonymous_155_(n, iteratee, context, this, arguments, var=var):
                var = Scope({'n':n, 'iteratee':iteratee, 'context':context, 'this':this, 'arguments':arguments}, var)
                var.registers(['n', 'accum', 'iteratee', 'context', 'i'])
                var.put('accum', var.get('Array')(var.get('Math').callprop('max', Js(0.0), var.get('n'))))
                var.put('iteratee', var.get('optimizeCb')(var.get('iteratee'), var.get('context'), Js(1.0)))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('n')):
                    try:
                        var.get('accum').put(var.get('i'), var.get('iteratee')(var.get('i')))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('accum')
            PyJs_anonymous_155_._set_name('anonymous')
            var.get('_').put('times', PyJs_anonymous_155_)
            @Js
            def PyJs_anonymous_156_(min, max, this, arguments, var=var):
                var = Scope({'min':min, 'max':max, 'this':this, 'arguments':arguments}, var)
                var.registers(['max', 'min'])
                if (var.get('max')==var.get(u"null")):
                    var.put('max', var.get('min'))
                    var.put('min', Js(0.0))
                return (var.get('min')+var.get('Math').callprop('floor', (var.get('Math').callprop('random')*((var.get('max')-var.get('min'))+Js(1.0)))))
            PyJs_anonymous_156_._set_name('anonymous')
            var.get('_').put('random', PyJs_anonymous_156_)
            @Js
            def PyJs_anonymous_157_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                return var.get('Date').create().callprop('getTime')
            PyJs_anonymous_157_._set_name('anonymous')
            var.get('_').put('now', (var.get('Date').get('now') or PyJs_anonymous_157_))
            var.put('escapeMap', Js({'&':Js('&amp;'),'<':Js('&lt;'),'>':Js('&gt;'),'"':Js('&quot;'),"'":Js('&#x27;'),'`':Js('&#x60;')}))
            var.put('unescapeMap', var.get('_').callprop('invert', var.get('escapeMap')))
            @Js
            def PyJs_createEscaper_158_(map, this, arguments, var=var):
                var = Scope({'map':map, 'this':this, 'arguments':arguments, 'createEscaper':PyJs_createEscaper_158_}, var)
                var.registers(['map', 'testRegexp', 'replaceRegexp', 'source', 'escaper'])
                @Js
                def PyJs_escaper_159_(match, this, arguments, var=var):
                    var = Scope({'match':match, 'this':this, 'arguments':arguments, 'escaper':PyJs_escaper_159_}, var)
                    var.registers(['match'])
                    return var.get('map').get(var.get('match'))
                PyJs_escaper_159_._set_name('escaper')
                var.put('escaper', PyJs_escaper_159_)
                var.put('source', ((Js('(?:')+var.get('_').callprop('keys', var.get('map')).callprop('join', Js('|')))+Js(')')))
                var.put('testRegexp', var.get('RegExp')(var.get('source')))
                var.put('replaceRegexp', var.get('RegExp')(var.get('source'), Js('g')))
                @Js
                def PyJs_anonymous_160_(string, this, arguments, var=var):
                    var = Scope({'string':string, 'this':this, 'arguments':arguments}, var)
                    var.registers(['string'])
                    var.put('string', (Js('') if (var.get('string')==var.get(u"null")) else (Js('')+var.get('string'))))
                    return (var.get('string').callprop('replace', var.get('replaceRegexp'), var.get('escaper')) if var.get('testRegexp').callprop('test', var.get('string')) else var.get('string'))
                PyJs_anonymous_160_._set_name('anonymous')
                return PyJs_anonymous_160_
            PyJs_createEscaper_158_._set_name('createEscaper')
            var.put('createEscaper', PyJs_createEscaper_158_)
            var.get('_').put('escape', var.get('createEscaper')(var.get('escapeMap')))
            var.get('_').put('unescape', var.get('createEscaper')(var.get('unescapeMap')))
            @Js
            def PyJs_anonymous_161_(obj, path, fallback, this, arguments, var=var):
                var = Scope({'obj':obj, 'path':path, 'fallback':fallback, 'this':this, 'arguments':arguments}, var)
                var.registers(['path', 'prop', 'fallback', 'length', 'obj', 'i'])
                if var.get('_').callprop('isArray', var.get('path')).neg():
                    var.put('path', Js([var.get('path')]))
                var.put('length', var.get('path').get('length'))
                if var.get('length').neg():
                    return (var.get('fallback').callprop('call', var.get('obj')) if var.get('_').callprop('isFunction', var.get('fallback')) else var.get('fallback'))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('length')):
                    try:
                        var.put('prop', (PyJsComma(Js(0.0), Js(None)) if (var.get('obj')==var.get(u"null")) else var.get('obj').get(var.get('path').get(var.get('i')))))
                        if PyJsStrictEq(var.get('prop'),PyJsComma(Js(0.0), Js(None))):
                            var.put('prop', var.get('fallback'))
                            var.put('i', var.get('length'))
                        var.put('obj', (var.get('prop').callprop('call', var.get('obj')) if var.get('_').callprop('isFunction', var.get('prop')) else var.get('prop')))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('obj')
            PyJs_anonymous_161_._set_name('anonymous')
            var.get('_').put('result', PyJs_anonymous_161_)
            var.put('idCounter', Js(0.0))
            @Js
            def PyJs_anonymous_162_(prefix, this, arguments, var=var):
                var = Scope({'prefix':prefix, 'this':this, 'arguments':arguments}, var)
                var.registers(['id', 'prefix'])
                var.put('id', (var.put('idCounter',Js(var.get('idCounter').to_number())+Js(1))+Js('')))
                return ((var.get('prefix')+var.get('id')) if var.get('prefix') else var.get('id'))
            PyJs_anonymous_162_._set_name('anonymous')
            var.get('_').put('uniqueId', PyJs_anonymous_162_)
            var.get('_').put('templateSettings', Js({'evaluate':JsRegExp('/<%([\\s\\S]+?)%>/g'),'interpolate':JsRegExp('/<%=([\\s\\S]+?)%>/g'),'escape':JsRegExp('/<%-([\\s\\S]+?)%>/g')}))
            var.put('noMatch', JsRegExp('/(.)^/'))
            var.put('escapes', Js({"'":Js("'"),'\\':Js('\\'),'\r':Js('r'),'\n':Js('n'),'\u2028':Js('u2028'),'\u2029':Js('u2029')}))
            var.put('escapeRegExp', JsRegExp("/\\\\|'|\\r|\\n|\\u2028|\\u2029/g"))
            @Js
            def PyJs_escapeChar_163_(match, this, arguments, var=var):
                var = Scope({'match':match, 'this':this, 'arguments':arguments, 'escapeChar':PyJs_escapeChar_163_}, var)
                var.registers(['match'])
                return (Js('\\')+var.get('escapes').get(var.get('match')))
            PyJs_escapeChar_163_._set_name('escapeChar')
            var.put('escapeChar', PyJs_escapeChar_163_)
            @Js
            def PyJs_anonymous_164_(text, settings, oldSettings, this, arguments, var=var):
                var = Scope({'text':text, 'settings':settings, 'oldSettings':oldSettings, 'this':this, 'arguments':arguments}, var)
                var.registers(['text', 'settings', 'template', 'oldSettings', 'matcher', 'index', 'argument', 'render', 'source'])
                if (var.get('settings').neg() and var.get('oldSettings')):
                    var.put('settings', var.get('oldSettings'))
                var.put('settings', var.get('_').callprop('defaults', Js({}), var.get('settings'), var.get('_').get('templateSettings')))
                var.put('matcher', var.get('RegExp')((Js([(var.get('settings').get('escape') or var.get('noMatch')).get('source'), (var.get('settings').get('interpolate') or var.get('noMatch')).get('source'), (var.get('settings').get('evaluate') or var.get('noMatch')).get('source')]).callprop('join', Js('|'))+Js('|$')), Js('g')))
                var.put('index', Js(0.0))
                var.put('source', Js("__p+='"))
                @Js
                def PyJs_anonymous_165_(match, escape, interpolate, evaluate, offset, this, arguments, var=var):
                    var = Scope({'match':match, 'escape':escape, 'interpolate':interpolate, 'evaluate':evaluate, 'offset':offset, 'this':this, 'arguments':arguments}, var)
                    var.registers(['offset', 'evaluate', 'escape', 'interpolate', 'match'])
                    var.put('source', var.get('text').callprop('slice', var.get('index'), var.get('offset')).callprop('replace', var.get('escapeRegExp'), var.get('escapeChar')), '+')
                    var.put('index', (var.get('offset')+var.get('match').get('length')))
                    if var.get('escape'):
                        var.put('source', ((Js("'+\n((__t=(")+var.get('escape'))+Js("))==null?'':_.escape(__t))+\n'")), '+')
                    else:
                        if var.get('interpolate'):
                            var.put('source', ((Js("'+\n((__t=(")+var.get('interpolate'))+Js("))==null?'':__t)+\n'")), '+')
                        else:
                            if var.get('evaluate'):
                                var.put('source', ((Js("';\n")+var.get('evaluate'))+Js("\n__p+='")), '+')
                    return var.get('match')
                PyJs_anonymous_165_._set_name('anonymous')
                var.get('text').callprop('replace', var.get('matcher'), PyJs_anonymous_165_)
                var.put('source', Js("';\n"), '+')
                if var.get('settings').get('variable').neg():
                    var.put('source', ((Js('with(obj||{}){\n')+var.get('source'))+Js('}\n')))
                var.put('source', (((Js("var __t,__p='',__j=Array.prototype.join,")+Js("print=function(){__p+=__j.call(arguments,'');};\n"))+var.get('source'))+Js('return __p;\n')))
                pass
                try:
                    var.put('render', var.get('Function').create((var.get('settings').get('variable') or Js('obj')), Js('_'), var.get('source')))
                except PyJsException as PyJsTempException:
                    PyJsHolder_65_89572903 = var.own.get('e')
                    var.force_own_put('e', PyExceptionToJs(PyJsTempException))
                    try:
                        var.get('e').put('source', var.get('source'))
                        PyJsTempException = JsToPyException(var.get('e'))
                        raise PyJsTempException
                    finally:
                        if PyJsHolder_65_89572903 is not None:
                            var.own['e'] = PyJsHolder_65_89572903
                        else:
                            del var.own['e']
                        del PyJsHolder_65_89572903
                @Js
                def PyJs_template_166_(data, this, arguments, var=var):
                    var = Scope({'data':data, 'this':this, 'arguments':arguments, 'template':PyJs_template_166_}, var)
                    var.registers(['data'])
                    return var.get('render').callprop('call', var.get(u"this"), var.get('data'), var.get('_'))
                PyJs_template_166_._set_name('template')
                var.put('template', PyJs_template_166_)
                var.put('argument', (var.get('settings').get('variable') or Js('obj')))
                var.get('template').put('source', ((((Js('function(')+var.get('argument'))+Js('){\n'))+var.get('source'))+Js('}')))
                return var.get('template')
            PyJs_anonymous_164_._set_name('anonymous')
            var.get('_').put('template', PyJs_anonymous_164_)
            @Js
            def PyJs_anonymous_167_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj', 'instance'])
                var.put('instance', var.get('_')(var.get('obj')))
                var.get('instance').put('_chain', Js(True))
                return var.get('instance')
            PyJs_anonymous_167_._set_name('anonymous')
            var.get('_').put('chain', PyJs_anonymous_167_)
            @Js
            def PyJs_chainResult_168_(instance, obj, this, arguments, var=var):
                var = Scope({'instance':instance, 'obj':obj, 'this':this, 'arguments':arguments, 'chainResult':PyJs_chainResult_168_}, var)
                var.registers(['obj', 'instance'])
                return (var.get('_')(var.get('obj')).callprop('chain') if var.get('instance').get('_chain') else var.get('obj'))
            PyJs_chainResult_168_._set_name('chainResult')
            var.put('chainResult', PyJs_chainResult_168_)
            @Js
            def PyJs_anonymous_169_(obj, this, arguments, var=var):
                var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
                var.registers(['obj'])
                @Js
                def PyJs_anonymous_170_(name, this, arguments, var=var):
                    var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
                    var.registers(['name', 'func'])
                    var.put('func', var.get('_').put(var.get('name'), var.get('obj').get(var.get('name'))))
                    @Js
                    def PyJs_anonymous_171_(this, arguments, var=var):
                        var = Scope({'this':this, 'arguments':arguments}, var)
                        var.registers(['args'])
                        var.put('args', Js([var.get(u"this").get('_wrapped')]))
                        var.get('push').callprop('apply', var.get('args'), var.get('arguments'))
                        return var.get('chainResult')(var.get(u"this"), var.get('func').callprop('apply', var.get('_'), var.get('args')))
                    PyJs_anonymous_171_._set_name('anonymous')
                    var.get('_').get('prototype').put(var.get('name'), PyJs_anonymous_171_)
                PyJs_anonymous_170_._set_name('anonymous')
                var.get('_').callprop('each', var.get('_').callprop('functions', var.get('obj')), PyJs_anonymous_170_)
                return var.get('_')
            PyJs_anonymous_169_._set_name('anonymous')
            var.get('_').put('mixin', PyJs_anonymous_169_)
            var.get('_').callprop('mixin', var.get('_'))
            @Js
            def PyJs_anonymous_172_(name, this, arguments, var=var):
                var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
                var.registers(['name', 'method'])
                var.put('method', var.get('ArrayProto').get(var.get('name')))
                @Js
                def PyJs_anonymous_173_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers(['obj'])
                    var.put('obj', var.get(u"this").get('_wrapped'))
                    var.get('method').callprop('apply', var.get('obj'), var.get('arguments'))
                    if ((PyJsStrictEq(var.get('name'),Js('shift')) or PyJsStrictEq(var.get('name'),Js('splice'))) and PyJsStrictEq(var.get('obj').get('length'),Js(0.0))):
                        var.get('obj').delete('0')
                    return var.get('chainResult')(var.get(u"this"), var.get('obj'))
                PyJs_anonymous_173_._set_name('anonymous')
                var.get('_').get('prototype').put(var.get('name'), PyJs_anonymous_173_)
            PyJs_anonymous_172_._set_name('anonymous')
            var.get('_').callprop('each', Js([Js('pop'), Js('push'), Js('reverse'), Js('shift'), Js('sort'), Js('splice'), Js('unshift')]), PyJs_anonymous_172_)
            @Js
            def PyJs_anonymous_174_(name, this, arguments, var=var):
                var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
                var.registers(['name', 'method'])
                var.put('method', var.get('ArrayProto').get(var.get('name')))
                @Js
                def PyJs_anonymous_175_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('chainResult')(var.get(u"this"), var.get('method').callprop('apply', var.get(u"this").get('_wrapped'), var.get('arguments')))
                PyJs_anonymous_175_._set_name('anonymous')
                var.get('_').get('prototype').put(var.get('name'), PyJs_anonymous_175_)
            PyJs_anonymous_174_._set_name('anonymous')
            var.get('_').callprop('each', Js([Js('concat'), Js('join'), Js('slice')]), PyJs_anonymous_174_)
            @Js
            def PyJs_anonymous_176_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                return var.get(u"this").get('_wrapped')
            PyJs_anonymous_176_._set_name('anonymous')
            var.get('_').get('prototype').put('value', PyJs_anonymous_176_)
            var.get('_').get('prototype').put('valueOf', var.get('_').get('prototype').put('toJSON', var.get('_').get('prototype').get('value')))
            @Js
            def PyJs_anonymous_177_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                return var.get('String')(var.get(u"this").get('_wrapped'))
            PyJs_anonymous_177_._set_name('anonymous')
            var.get('_').get('prototype').put('toString', PyJs_anonymous_177_)
            if ((var.get('define',throw=False).typeof()==Js('function')) and var.get('define').get('amd')):
                @Js
                def PyJs_anonymous_178_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    return var.get('_')
                PyJs_anonymous_178_._set_name('anonymous')
                var.get('define')(Js('underscore'), Js([]), PyJs_anonymous_178_)
        PyJs_anonymous_4_._set_name('anonymous')
        PyJs_anonymous_4_()
    PyJs_anonymous_3_._set_name('anonymous')
    PyJs_anonymous_3_.callprop('call', var.get(u"this"), (var.get('global') if PyJsStrictNeq(var.get('global',throw=False).typeof(),Js('undefined')) else (var.get('self') if PyJsStrictNeq(var.get('self',throw=False).typeof(),Js('undefined')) else (var.get('window') if PyJsStrictNeq(var.get('window',throw=False).typeof(),Js('undefined')) else Js({})))))
PyJs_anonymous_2_._set_name('anonymous')
@Js
def PyJs_anonymous_179_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'addToGlobals', 'module_temp_love_python', 'require'])
    @Js
    def PyJsHoisted_addToGlobals_(name, obj, this, arguments, var=var):
        var = Scope({'name':name, 'obj':obj, 'this':this, 'arguments':arguments}, var)
        var.registers(['name', 'obj'])
        if var.get('Object').get('prototype').callprop('hasOwnProperty', Js('_fake_exports')).neg():
            var.get('Object').get('prototype').put('_fake_exports', Js({}))
        var.get('Object').get('prototype').get('_fake_exports').put(var.get('name'), var.get('obj'))
    PyJsHoisted_addToGlobals_.func_name = 'addToGlobals'
    var.put('addToGlobals', PyJsHoisted_addToGlobals_)
    pass
    pass
    pass
    var.put('module_temp_love_python', var.get('require')(Js('underscore')))
    var.get('addToGlobals')(Js('underscore'), var.get('module_temp_love_python'))
PyJs_anonymous_179_._set_name('anonymous')
@Js
def PyJs_anonymous_180_(this, arguments, var=var):
    var = Scope({'this':this, 'arguments':arguments}, var)
    var.registers(['r'])
    @Js
    def PyJsHoisted_r_(e, n, t, this, arguments, var=var):
        var = Scope({'e':e, 'n':n, 't':t, 'this':this, 'arguments':arguments}, var)
        var.registers(['n', 't', 'e', 'o', 'u', 'i'])
        @Js
        def PyJsHoisted_o_(i, f, this, arguments, var=var):
            var = Scope({'i':i, 'f':f, 'this':this, 'arguments':arguments}, var)
            var.registers(['a', 'c', 'f', 'p', 'i'])
            if var.get('n').get(var.get('i')).neg():
                if var.get('e').get(var.get('i')).neg():
                    var.put('c', ((Js('function')==var.get('require',throw=False).typeof()) and var.get('require')))
                    if (var.get('f').neg() and var.get('c')):
                        return var.get('c')(var.get('i'), Js(0.0).neg())
                    if var.get('u'):
                        return var.get('u')(var.get('i'), Js(0.0).neg())
                    var.put('a', var.get('Error').create(((Js("Cannot find module '")+var.get('i'))+Js("'"))))
                    PyJsTempException = JsToPyException(PyJsComma(var.get('a').put('code', Js('MODULE_NOT_FOUND')),var.get('a')))
                    raise PyJsTempException
                var.put('p', var.get('n').put(var.get('i'), Js({'exports':Js({})})))
                @Js
                def PyJs_anonymous_181_(r, this, arguments, var=var):
                    var = Scope({'r':r, 'this':this, 'arguments':arguments}, var)
                    var.registers(['r', 'n'])
                    var.put('n', var.get('e').get(var.get('i')).get('1').get(var.get('r')))
                    return var.get('o')((var.get('n') or var.get('r')))
                PyJs_anonymous_181_._set_name('anonymous')
                var.get('e').get(var.get('i')).get('0').callprop('call', var.get('p').get('exports'), PyJs_anonymous_181_, var.get('p'), var.get('p').get('exports'), var.get('r'), var.get('e'), var.get('n'), var.get('t'))
            return var.get('n').get(var.get('i')).get('exports')
        PyJsHoisted_o_.func_name = 'o'
        var.put('o', PyJsHoisted_o_)
        pass
        #for JS loop
        var.put('u', ((Js('function')==var.get('require',throw=False).typeof()) and var.get('require')))
        var.put('i', Js(0.0))
        while (var.get('i')<var.get('t').get('length')):
            try:
                var.get('o')(var.get('t').get(var.get('i')))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        return var.get('o')
    PyJsHoisted_r_.func_name = 'r'
    var.put('r', PyJsHoisted_r_)
    pass
    return var.get('r')
PyJs_anonymous_180_._set_name('anonymous')
PyJs_anonymous_180_()(Js({'1':Js([PyJs_anonymous_2_, Js({})]),'2':Js([PyJs_anonymous_179_, Js({'underscore':Js(1.0)})])}), Js({}), Js([Js(2.0)]))
pass
pass
pass
pass
var.put('underscore', var.get('getFromGlobals')(Js('underscore')))
var.get('underscore')
# setting scope # Code follows: #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #for JS loop #x27;'),'`':Js('&#x60;')})) #for JS loop #for JS loop