From c2a7c1247056a8c307419c578e115085397810e9 Mon Sep 17 00:00:00 2001 From: Halali Date: Wed, 10 Apr 2019 22:52:37 +0200 Subject: [PATCH 1/3] Fix for #352 --- bazarr/get_providers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bazarr/get_providers.py b/bazarr/get_providers.py index 39ba91b67..1dafee00c 100644 --- a/bazarr/get_providers.py +++ b/bazarr/get_providers.py @@ -56,7 +56,7 @@ def get_providers(): if reason: now = datetime.datetime.now() if now < until: - logging.info("Not using %s until %s, because of: %s", provider, + logging.debug("Not using %s until %s, because of: %s", provider, until.strftime("%y/%m/%d %H:%M"), reason) providers_list.remove(provider) else: From 8cd81774552d21d77ef9eef69743f21ca1b8713a Mon Sep 17 00:00:00 2001 From: panni Date: Thu, 11 Apr 2019 02:02:14 +0200 Subject: [PATCH 2/3] core: update to subliminal_patch:head; replace cfscrape; add dependencies --- libs/cfscrape.py | 279 - libs/cfscrape/__init__.py | 326 + libs/cfscrape/jsfuck.py | 97 + libs/js2py/__init__.py | 75 + libs/js2py/base.py | 3280 + libs/js2py/constructors/__init__.py | 1 + libs/js2py/constructors/jsarray.py | 48 + libs/js2py/constructors/jsarraybuffer.py | 41 + libs/js2py/constructors/jsboolean.py | 16 + libs/js2py/constructors/jsdate.py | 405 + libs/js2py/constructors/jsfloat32array.py | 87 + libs/js2py/constructors/jsfloat64array.py | 87 + libs/js2py/constructors/jsfunction.py | 52 + libs/js2py/constructors/jsint16array.py | 87 + libs/js2py/constructors/jsint32array.py | 87 + libs/js2py/constructors/jsint8array.py | 79 + libs/js2py/constructors/jsmath.py | 157 + libs/js2py/constructors/jsnumber.py | 23 + libs/js2py/constructors/jsobject.py | 198 + libs/js2py/constructors/jsregexp.py | 16 + libs/js2py/constructors/jsstring.py | 40 + libs/js2py/constructors/jsuint16array.py | 87 + libs/js2py/constructors/jsuint32array.py | 95 + libs/js2py/constructors/jsuint8array.py | 79 + .../js2py/constructors/jsuint8clampedarray.py | 79 + libs/js2py/constructors/time_helpers.py | 207 + libs/js2py/es6/__init__.py | 41 + libs/js2py/es6/babel.js | 6 + libs/js2py/es6/babel.py | 52077 ++++++++++++++++ libs/js2py/es6/buildBabel | 12 + libs/js2py/evaljs.py | 265 + libs/js2py/host/__init__.py | 0 libs/js2py/host/console.py | 15 + libs/js2py/host/dom/__init__.py | 0 libs/js2py/host/jseval.py | 51 + libs/js2py/host/jsfunctions.py | 176 + libs/js2py/internals/__init__.py | 0 libs/js2py/internals/base.py | 925 + libs/js2py/internals/byte_trans.py | 752 + libs/js2py/internals/code.py | 197 + libs/js2py/internals/constructors/__init__.py | 1 + libs/js2py/internals/constructors/jsarray.py | 28 + .../js2py/internals/constructors/jsboolean.py | 14 + .../js2py/internals/constructors/jsconsole.py | 11 + libs/js2py/internals/constructors/jsdate.py | 405 + .../internals/constructors/jsfunction.py | 75 + libs/js2py/internals/constructors/jsmath.py | 157 + libs/js2py/internals/constructors/jsnumber.py | 27 + libs/js2py/internals/constructors/jsobject.py | 204 + libs/js2py/internals/constructors/jsregexp.py | 41 + libs/js2py/internals/constructors/jsstring.py | 23 + .../internals/constructors/time_helpers.py | 209 + libs/js2py/internals/conversions.py | 148 + libs/js2py/internals/desc.py | 90 + libs/js2py/internals/fill_space.py | 284 + libs/js2py/internals/func_utils.py | 73 + libs/js2py/internals/gen.py | 0 libs/js2py/internals/opcodes.py | 805 + libs/js2py/internals/operations.py | 314 + libs/js2py/internals/prototypes/__init__.py | 1 + libs/js2py/internals/prototypes/jsarray.py | 489 + libs/js2py/internals/prototypes/jsboolean.py | 22 + libs/js2py/internals/prototypes/jserror.py | 15 + libs/js2py/internals/prototypes/jsfunction.py | 61 + libs/js2py/internals/prototypes/jsjson.py | 205 + libs/js2py/internals/prototypes/jsnumber.py | 163 + libs/js2py/internals/prototypes/jsobject.py | 48 + libs/js2py/internals/prototypes/jsregexp.py | 56 + libs/js2py/internals/prototypes/jsstring.py | 323 + libs/js2py/internals/prototypes/jsutils.py | 149 + libs/js2py/internals/seval.py | 32 + libs/js2py/internals/simplex.py | 133 + libs/js2py/internals/space.py | 92 + libs/js2py/internals/speed.py | 62 + libs/js2py/internals/trans_utils.py | 28 + libs/js2py/legecy_translators/__init__.py | 1 + libs/js2py/legecy_translators/constants.py | 308 + libs/js2py/legecy_translators/exps.py | 83 + libs/js2py/legecy_translators/flow.py | 480 + libs/js2py/legecy_translators/functions.py | 98 + libs/js2py/legecy_translators/jsparser.py | 326 + libs/js2py/legecy_translators/nodevisitor.py | 562 + libs/js2py/legecy_translators/nparser.py | 3209 + libs/js2py/legecy_translators/objects.py | 300 + libs/js2py/legecy_translators/tokenize.py | 4 + libs/js2py/legecy_translators/translator.py | 151 + libs/js2py/legecy_translators/utils.py | 91 + libs/js2py/node_import.py | 113 + libs/js2py/prototypes/__init__.py | 1 + libs/js2py/prototypes/jsarray.py | 476 + libs/js2py/prototypes/jsarraybuffer.py | 19 + libs/js2py/prototypes/jsboolean.py | 10 + libs/js2py/prototypes/jserror.py | 10 + libs/js2py/prototypes/jsfunction.py | 52 + libs/js2py/prototypes/jsjson.py | 219 + libs/js2py/prototypes/jsnumber.py | 146 + libs/js2py/prototypes/jsobject.py | 28 + libs/js2py/prototypes/jsregexp.py | 45 + libs/js2py/prototypes/jsstring.py | 306 + libs/js2py/prototypes/jstypedarray.py | 344 + libs/js2py/py_node_modules/__init__.py | 1 + libs/js2py/pyjs.py | 100 + libs/js2py/test_internals.py | 9 + libs/js2py/translators/__init__.py | 38 + libs/js2py/translators/friendly_nodes.py | 375 + libs/js2py/translators/jsregexps.py | 211 + libs/js2py/translators/translating_nodes.py | 688 + libs/js2py/translators/translator.py | 189 + libs/js2py/utils/__init__.py | 0 libs/js2py/utils/injector.py | 235 + libs/pyjsparser/__init__.py | 4 + libs/pyjsparser/parser.py | 2898 + libs/pyjsparser/pyjsparserdata.py | 303 + libs/pyjsparser/std_nodes.py | 471 + libs/requests_toolbelt/__init__.py | 34 + libs/requests_toolbelt/_compat.py | 324 + libs/requests_toolbelt/adapters/__init__.py | 15 + libs/requests_toolbelt/adapters/appengine.py | 206 + .../requests_toolbelt/adapters/fingerprint.py | 48 + .../adapters/host_header_ssl.py | 43 + .../adapters/socket_options.py | 129 + libs/requests_toolbelt/adapters/source.py | 67 + libs/requests_toolbelt/adapters/ssl.py | 66 + libs/requests_toolbelt/adapters/x509.py | 178 + libs/requests_toolbelt/auth/__init__.py | 0 .../auth/_digest_auth_compat.py | 29 + libs/requests_toolbelt/auth/guess.py | 146 + libs/requests_toolbelt/auth/handler.py | 142 + .../auth/http_proxy_digest.py | 103 + libs/requests_toolbelt/cookies/__init__.py | 0 libs/requests_toolbelt/cookies/forgetful.py | 7 + .../downloadutils/__init__.py | 0 .../requests_toolbelt/downloadutils/stream.py | 176 + libs/requests_toolbelt/downloadutils/tee.py | 123 + libs/requests_toolbelt/exceptions.py | 37 + libs/requests_toolbelt/multipart/__init__.py | 31 + libs/requests_toolbelt/multipart/decoder.py | 156 + libs/requests_toolbelt/multipart/encoder.py | 655 + libs/requests_toolbelt/sessions.py | 70 + libs/requests_toolbelt/streaming_iterator.py | 116 + libs/requests_toolbelt/threaded/__init__.py | 97 + libs/requests_toolbelt/threaded/pool.py | 211 + libs/requests_toolbelt/threaded/thread.py | 53 + libs/requests_toolbelt/utils/__init__.py | 0 libs/requests_toolbelt/utils/deprecated.py | 91 + libs/requests_toolbelt/utils/dump.py | 197 + libs/requests_toolbelt/utils/formdata.py | 108 + libs/requests_toolbelt/utils/user_agent.py | 143 + libs/tzlocal/unix.py | 82 +- libs/tzlocal/utils.py | 38 + libs/tzlocal/win32.py | 11 +- libs/tzlocal/windows_tz.py | 15 +- 152 files changed, 81870 insertions(+), 314 deletions(-) delete mode 100644 libs/cfscrape.py create mode 100644 libs/cfscrape/__init__.py create mode 100644 libs/cfscrape/jsfuck.py create mode 100644 libs/js2py/__init__.py create mode 100644 libs/js2py/base.py create mode 100644 libs/js2py/constructors/__init__.py create mode 100644 libs/js2py/constructors/jsarray.py create mode 100644 libs/js2py/constructors/jsarraybuffer.py create mode 100644 libs/js2py/constructors/jsboolean.py create mode 100644 libs/js2py/constructors/jsdate.py create mode 100644 libs/js2py/constructors/jsfloat32array.py create mode 100644 libs/js2py/constructors/jsfloat64array.py create mode 100644 libs/js2py/constructors/jsfunction.py create mode 100644 libs/js2py/constructors/jsint16array.py create mode 100644 libs/js2py/constructors/jsint32array.py create mode 100644 libs/js2py/constructors/jsint8array.py create mode 100644 libs/js2py/constructors/jsmath.py create mode 100644 libs/js2py/constructors/jsnumber.py create mode 100644 libs/js2py/constructors/jsobject.py create mode 100644 libs/js2py/constructors/jsregexp.py create mode 100644 libs/js2py/constructors/jsstring.py create mode 100644 libs/js2py/constructors/jsuint16array.py create mode 100644 libs/js2py/constructors/jsuint32array.py create mode 100644 libs/js2py/constructors/jsuint8array.py create mode 100644 libs/js2py/constructors/jsuint8clampedarray.py create mode 100644 libs/js2py/constructors/time_helpers.py create mode 100644 libs/js2py/es6/__init__.py create mode 100644 libs/js2py/es6/babel.js create mode 100644 libs/js2py/es6/babel.py create mode 100644 libs/js2py/es6/buildBabel create mode 100644 libs/js2py/evaljs.py create mode 100644 libs/js2py/host/__init__.py create mode 100644 libs/js2py/host/console.py create mode 100644 libs/js2py/host/dom/__init__.py create mode 100644 libs/js2py/host/jseval.py create mode 100644 libs/js2py/host/jsfunctions.py create mode 100644 libs/js2py/internals/__init__.py create mode 100644 libs/js2py/internals/base.py create mode 100644 libs/js2py/internals/byte_trans.py create mode 100644 libs/js2py/internals/code.py create mode 100644 libs/js2py/internals/constructors/__init__.py create mode 100644 libs/js2py/internals/constructors/jsarray.py create mode 100644 libs/js2py/internals/constructors/jsboolean.py create mode 100644 libs/js2py/internals/constructors/jsconsole.py create mode 100644 libs/js2py/internals/constructors/jsdate.py create mode 100644 libs/js2py/internals/constructors/jsfunction.py create mode 100644 libs/js2py/internals/constructors/jsmath.py create mode 100644 libs/js2py/internals/constructors/jsnumber.py create mode 100644 libs/js2py/internals/constructors/jsobject.py create mode 100644 libs/js2py/internals/constructors/jsregexp.py create mode 100644 libs/js2py/internals/constructors/jsstring.py create mode 100644 libs/js2py/internals/constructors/time_helpers.py create mode 100644 libs/js2py/internals/conversions.py create mode 100644 libs/js2py/internals/desc.py create mode 100644 libs/js2py/internals/fill_space.py create mode 100644 libs/js2py/internals/func_utils.py create mode 100644 libs/js2py/internals/gen.py create mode 100644 libs/js2py/internals/opcodes.py create mode 100644 libs/js2py/internals/operations.py create mode 100644 libs/js2py/internals/prototypes/__init__.py create mode 100644 libs/js2py/internals/prototypes/jsarray.py create mode 100644 libs/js2py/internals/prototypes/jsboolean.py create mode 100644 libs/js2py/internals/prototypes/jserror.py create mode 100644 libs/js2py/internals/prototypes/jsfunction.py create mode 100644 libs/js2py/internals/prototypes/jsjson.py create mode 100644 libs/js2py/internals/prototypes/jsnumber.py create mode 100644 libs/js2py/internals/prototypes/jsobject.py create mode 100644 libs/js2py/internals/prototypes/jsregexp.py create mode 100644 libs/js2py/internals/prototypes/jsstring.py create mode 100644 libs/js2py/internals/prototypes/jsutils.py create mode 100644 libs/js2py/internals/seval.py create mode 100644 libs/js2py/internals/simplex.py create mode 100644 libs/js2py/internals/space.py create mode 100644 libs/js2py/internals/speed.py create mode 100644 libs/js2py/internals/trans_utils.py create mode 100644 libs/js2py/legecy_translators/__init__.py create mode 100644 libs/js2py/legecy_translators/constants.py create mode 100644 libs/js2py/legecy_translators/exps.py create mode 100644 libs/js2py/legecy_translators/flow.py create mode 100644 libs/js2py/legecy_translators/functions.py create mode 100644 libs/js2py/legecy_translators/jsparser.py create mode 100644 libs/js2py/legecy_translators/nodevisitor.py create mode 100644 libs/js2py/legecy_translators/nparser.py create mode 100644 libs/js2py/legecy_translators/objects.py create mode 100644 libs/js2py/legecy_translators/tokenize.py create mode 100644 libs/js2py/legecy_translators/translator.py create mode 100644 libs/js2py/legecy_translators/utils.py create mode 100644 libs/js2py/node_import.py create mode 100644 libs/js2py/prototypes/__init__.py create mode 100644 libs/js2py/prototypes/jsarray.py create mode 100644 libs/js2py/prototypes/jsarraybuffer.py create mode 100644 libs/js2py/prototypes/jsboolean.py create mode 100644 libs/js2py/prototypes/jserror.py create mode 100644 libs/js2py/prototypes/jsfunction.py create mode 100644 libs/js2py/prototypes/jsjson.py create mode 100644 libs/js2py/prototypes/jsnumber.py create mode 100644 libs/js2py/prototypes/jsobject.py create mode 100644 libs/js2py/prototypes/jsregexp.py create mode 100644 libs/js2py/prototypes/jsstring.py create mode 100644 libs/js2py/prototypes/jstypedarray.py create mode 100644 libs/js2py/py_node_modules/__init__.py create mode 100644 libs/js2py/pyjs.py create mode 100644 libs/js2py/test_internals.py create mode 100644 libs/js2py/translators/__init__.py create mode 100644 libs/js2py/translators/friendly_nodes.py create mode 100644 libs/js2py/translators/jsregexps.py create mode 100644 libs/js2py/translators/translating_nodes.py create mode 100644 libs/js2py/translators/translator.py create mode 100644 libs/js2py/utils/__init__.py create mode 100644 libs/js2py/utils/injector.py create mode 100644 libs/pyjsparser/__init__.py create mode 100644 libs/pyjsparser/parser.py create mode 100644 libs/pyjsparser/pyjsparserdata.py create mode 100644 libs/pyjsparser/std_nodes.py create mode 100644 libs/requests_toolbelt/__init__.py create mode 100644 libs/requests_toolbelt/_compat.py create mode 100644 libs/requests_toolbelt/adapters/__init__.py create mode 100644 libs/requests_toolbelt/adapters/appengine.py create mode 100644 libs/requests_toolbelt/adapters/fingerprint.py create mode 100644 libs/requests_toolbelt/adapters/host_header_ssl.py create mode 100644 libs/requests_toolbelt/adapters/socket_options.py create mode 100644 libs/requests_toolbelt/adapters/source.py create mode 100644 libs/requests_toolbelt/adapters/ssl.py create mode 100644 libs/requests_toolbelt/adapters/x509.py create mode 100644 libs/requests_toolbelt/auth/__init__.py create mode 100644 libs/requests_toolbelt/auth/_digest_auth_compat.py create mode 100644 libs/requests_toolbelt/auth/guess.py create mode 100644 libs/requests_toolbelt/auth/handler.py create mode 100644 libs/requests_toolbelt/auth/http_proxy_digest.py create mode 100644 libs/requests_toolbelt/cookies/__init__.py create mode 100644 libs/requests_toolbelt/cookies/forgetful.py create mode 100644 libs/requests_toolbelt/downloadutils/__init__.py create mode 100644 libs/requests_toolbelt/downloadutils/stream.py create mode 100644 libs/requests_toolbelt/downloadutils/tee.py create mode 100644 libs/requests_toolbelt/exceptions.py create mode 100644 libs/requests_toolbelt/multipart/__init__.py create mode 100644 libs/requests_toolbelt/multipart/decoder.py create mode 100644 libs/requests_toolbelt/multipart/encoder.py create mode 100644 libs/requests_toolbelt/sessions.py create mode 100644 libs/requests_toolbelt/streaming_iterator.py create mode 100644 libs/requests_toolbelt/threaded/__init__.py create mode 100644 libs/requests_toolbelt/threaded/pool.py create mode 100644 libs/requests_toolbelt/threaded/thread.py create mode 100644 libs/requests_toolbelt/utils/__init__.py create mode 100644 libs/requests_toolbelt/utils/deprecated.py create mode 100644 libs/requests_toolbelt/utils/dump.py create mode 100644 libs/requests_toolbelt/utils/formdata.py create mode 100644 libs/requests_toolbelt/utils/user_agent.py create mode 100644 libs/tzlocal/utils.py diff --git a/libs/cfscrape.py b/libs/cfscrape.py deleted file mode 100644 index 15986f03a..000000000 --- a/libs/cfscrape.py +++ /dev/null @@ -1,279 +0,0 @@ -import logging -import random -import time -import re - -# based off of https://gist.github.com/doko-desuka/58d9212461f62583f8df9bc6387fade2 -# and https://github.com/Anorov/cloudflare-scrape -# and https://github.com/VeNoMouS/cloudflare-scrape-js2py - -''''''''' -Disables InsecureRequestWarning: Unverified HTTPS request is being made warnings. -''''''''' -import requests -from requests.packages.urllib3.exceptions import InsecureRequestWarning - -requests.packages.urllib3.disable_warnings(InsecureRequestWarning) -'''''' -from requests.sessions import Session -from copy import deepcopy - -try: - from urlparse import urlparse -except ImportError: - from urllib.parse import urlparse - -DEFAULT_USER_AGENTS = [ - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36", - "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/65.0.3325.181 Chrome/65.0.3325.181 Safari/537.36", - "Mozilla/5.0 (Linux; Android 7.0; Moto G (5) Build/NPPS25.137-93-8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36", - "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53", - "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0", - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0", - "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0" -] - -DEFAULT_USER_AGENT = random.choice(DEFAULT_USER_AGENTS) - -BUG_REPORT = ( - "Cloudflare may have changed their technique, or there may be a bug in the script.\n\nPlease read " "https://github.com/Anorov/cloudflare-scrape#updates, then file a " - "bug report at https://github.com/Anorov/cloudflare-scrape/issues.") - - -class CloudflareScraper(Session): - def __init__(self, *args, **kwargs): - super(CloudflareScraper, self).__init__(*args, **kwargs) - - if "requests" in self.headers["User-Agent"]: - # Spoof Firefox on Linux if no custom User-Agent has been set - self.headers["User-Agent"] = random.choice(DEFAULT_USER_AGENTS) - - def request(self, method, url, *args, **kwargs): - resp = super(CloudflareScraper, self).request(method, url, *args, **kwargs) - - # Check if Cloudflare anti-bot is on - if (resp.status_code in (503, 429) - and resp.headers.get("Server", "").startswith("cloudflare") - and b"jschl_vc" in resp.content - and b"jschl_answer" in resp.content - ): - return self.solve_cf_challenge(resp, **kwargs) - - # Otherwise, no Cloudflare anti-bot detected - return resp - - def solve_cf_challenge(self, resp, **original_kwargs): - body = resp.text - parsed_url = urlparse(resp.url) - domain = parsed_url.netloc - submit_url = "%s://%s/cdn-cgi/l/chk_jschl" % (parsed_url.scheme, domain) - - cloudflare_kwargs = deepcopy(original_kwargs) - params = cloudflare_kwargs.setdefault("params", {}) - headers = cloudflare_kwargs.setdefault("headers", {}) - headers["Referer"] = resp.url - - try: - cf_delay = float(re.search('submit.*?(\d+)', body, re.DOTALL).group(1)) / 1000.0 - - form_index = body.find('id="challenge-form"') - if form_index == -1: - raise Exception('CF form not found') - sub_body = body[form_index:] - - s_match = re.search('name="s" value="(.+?)"', sub_body) - if s_match: - params["s"] = s_match.group(1) # On older variants this parameter is absent. - params["jschl_vc"] = re.search(r'name="jschl_vc" value="(\w+)"', sub_body).group(1) - params["pass"] = re.search(r'name="pass" value="(.+?)"', sub_body).group(1) - - if body.find('id="cf-dn-', form_index) != -1: - extra_div_expression = re.search('id="cf-dn-.*?>(.+?)<', sub_body).group(1) - - # Initial value. - js_answer = self.cf_parse_expression( - re.search('setTimeout\(function\(.*?:(.*?)}', body, re.DOTALL).group(1) - ) - # Extract the arithmetic operations. - builder = re.search("challenge-form'\);\s*;(.*);a.value", body, re.DOTALL).group(1) - # Remove a function semicolon before splitting on semicolons, else it messes the order. - lines = builder.replace(' return +(p)}();', '', 1).split(';') - - for line in lines: - if len(line) and '=' in line: - heading, expression = line.split('=', 1) - if 'eval(eval(atob' in expression: - # Uses the expression in an external
. - expression_value = self.cf_parse_expression(extra_div_expression) - elif '(function(p' in expression: - # Expression + domain sampling function. - expression_value = self.cf_parse_expression(expression, domain) - else: - expression_value = self.cf_parse_expression(expression) - js_answer = self.cf_arithmetic_op(heading[-1], js_answer, expression_value) - - if '+ t.length' in body: - js_answer += len(domain) # Only older variants add the domain length. - - params["jschl_answer"] = '%.10f' % js_answer - - except Exception as e: - # Something is wrong with the page. - # This may indicate Cloudflare has changed their anti-bot - # technique. If you see this and are running the latest version, - # please open a GitHub issue so I can update the code accordingly. - logging.error("[!] %s Unable to parse Cloudflare anti-bots page. " - "Try upgrading cloudflare-scrape, or submit a bug report " - "if you are running the latest version. Please read " - "https://github.com/Anorov/cloudflare-scrape#updates " - "before submitting a bug report." % e) - raise - - # Cloudflare requires a delay before solving the challenge. - # Always wait the full delay + 1s because of 'time.sleep()' imprecision. - time.sleep(cf_delay + 1.0) - - # Requests transforms any request into a GET after a redirect, - # so the redirect has to be handled manually here to allow for - # performing other types of requests even as the first request. - method = resp.request.method - cloudflare_kwargs["allow_redirects"] = False - - redirect = self.request(method, submit_url, **cloudflare_kwargs) - - if 'Location' in redirect.headers: - redirect_location = urlparse(redirect.headers["Location"]) - if not redirect_location.netloc: - redirect_url = "%s://%s%s" % (parsed_url.scheme, domain, redirect_location.path) - return self.request(method, redirect_url, **original_kwargs) - return self.request(method, redirect.headers["Location"], **original_kwargs) - else: - return redirect - - def cf_sample_domain_function(self, func_expression, domain): - parameter_start_index = func_expression.find('}(') + 2 - # Send the expression with the "+" char and enclosing parenthesis included, as they are - # stripped inside ".cf_parse_expression()'. - sample_index = self.cf_parse_expression( - func_expression[parameter_start_index: func_expression.rfind(')))')] - ) - return ord(domain[int(sample_index)]) - - def cf_arithmetic_op(self, op, a, b): - if op == '+': - return a + b - elif op == '/': - return a / float(b) - elif op == '*': - return a * float(b) - elif op == '-': - return a - b - else: - raise Exception('Unknown operation') - - def cf_parse_expression(self, expression, domain=None): - - def _get_jsfuck_number(section): - digit_expressions = section.replace('!+[]', '1').replace('+!![]', '1').replace('+[]', '0').split('+') - return int( - # Form a number string, with each digit as the sum of the values inside each parenthesis block. - ''.join( - str(sum(int(digit_char) for digit_char in digit_expression[1:-1])) # Strip the parenthesis. - for digit_expression in digit_expressions - ) - ) - - if '/' in expression: - dividend, divisor = expression.split('/') - dividend = dividend[2:-1] # Strip the leading '+' char and the enclosing parenthesis. - - if domain: - # 2019-04-02: At this moment, this extra domain sampling function always appears on the - # divisor side, at the end. - divisor_a, divisor_b = divisor.split('))+(') - divisor_a = _get_jsfuck_number(divisor_a[5:]) # Left-strip the sequence of "(+(+(". - divisor_b = self.cf_sample_domain_function(divisor_b, domain) - return _get_jsfuck_number(dividend) / float(divisor_a + divisor_b) - else: - divisor = divisor[2:-1] - return _get_jsfuck_number(dividend) / float(_get_jsfuck_number(divisor)) - else: - return _get_jsfuck_number(expression[2:-1]) - - @classmethod - def create_scraper(cls, sess=None, **kwargs): - """ - Convenience function for creating a ready-to-go requests.Session (subclass) object. - """ - scraper = cls() - - if sess: - attrs = ["auth", "cert", "cookies", "headers", "hooks", "params", "proxies", "data"] - for attr in attrs: - val = getattr(sess, attr, None) - if val: - setattr(scraper, attr, val) - - return scraper - - ## Functions for integrating cloudflare-scrape with other applications and scripts - - @classmethod - def get_tokens(cls, url, user_agent=None, **kwargs): - scraper = cls.create_scraper() - if user_agent: - scraper.headers["User-Agent"] = user_agent - - try: - resp = scraper.get(url, **kwargs) - resp.raise_for_status() - except Exception as e: - logging.error("'%s' returned an error. Could not collect tokens." % url) - raise - - domain = urlparse(resp.url).netloc - cookie_domain = None - - for d in scraper.cookies.list_domains(): - if d.startswith(".") and d in ("." + domain): - cookie_domain = d - break - else: - raise ValueError( - "Unable to find Cloudflare cookies. Does the site actually have Cloudflare IUAM (\"I'm Under Attack Mode\") enabled?") - - return ({ - "__cfduid": scraper.cookies.get("__cfduid", "", domain=cookie_domain), - "cf_clearance": scraper.cookies.get("cf_clearance", "", domain=cookie_domain) - }, - scraper.headers["User-Agent"] - ) - - def get_live_tokens(self, domain): - for d in self.cookies.list_domains(): - if d.startswith(".") and d in ("." + domain): - cookie_domain = d - break - else: - raise ValueError( - "Unable to find Cloudflare cookies. Does the site actually have Cloudflare IUAM (\"I'm Under Attack Mode\") enabled?") - - return ({ - "__cfduid": self.cookies.get("__cfduid", "", domain=cookie_domain), - "cf_clearance": self.cookies.get("cf_clearance", "", domain=cookie_domain) - }, - self.headers["User-Agent"] - ) - - @classmethod - def get_cookie_string(cls, url, user_agent=None, **kwargs): - """ - Convenience function for building a Cookie HTTP header value. - """ - tokens, user_agent = cls.get_tokens(url, user_agent=user_agent, **kwargs) - return "; ".join("=".join(pair) for pair in tokens.items()), user_agent - - -create_scraper = CloudflareScraper.create_scraper -get_tokens = CloudflareScraper.get_tokens -get_cookie_string = CloudflareScraper.get_cookie_string diff --git a/libs/cfscrape/__init__.py b/libs/cfscrape/__init__.py new file mode 100644 index 000000000..57afe4312 --- /dev/null +++ b/libs/cfscrape/__init__.py @@ -0,0 +1,326 @@ +import logging +import random +import re + +import base64 + +from copy import deepcopy +from time import sleep +from collections import OrderedDict +from .jsfuck import jsunfuck + +import js2py +from requests.sessions import Session + +try: + from requests_toolbelt.utils import dump +except ImportError: + pass + +try: + from urlparse import urlparse + from urlparse import urlunparse +except ImportError: + from urllib.parse import urlparse + from urllib.parse import urlunparse + +__version__ = "2.0.3" + +# Orignally written by https://github.com/Anorov/cloudflare-scrape +# Rewritten by VeNoMouS - for https://github.com/VeNoMouS/Sick-Beard - 24/3/2018 NZDT + +DEFAULT_USER_AGENTS = [ + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36", + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/65.0.3325.181 Chrome/65.0.3325.181 Safari/537.36", + "Mozilla/5.0 (Linux; Android 7.0; Moto G (5) Build/NPPS25.137-93-8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36", + "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53", + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0", + "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0", +] + +BUG_REPORT = """\ +Cloudflare may have changed their technique, or there may be a bug in the script. +""" + +class CloudflareScraper(Session): + def __init__(self, *args, **kwargs): + self.delay = kwargs.pop('delay', 8) + self.debug = False + + super(CloudflareScraper, self).__init__(*args, **kwargs) + + if 'requests' in self.headers['User-Agent']: + # Set a random User-Agent if no custom User-Agent has been set + self.headers['User-Agent'] = random.choice(DEFAULT_USER_AGENTS) + + def set_cloudflare_challenge_delay(self, delay): + if isinstance(delay, (int, float)) and delay > 0: + self.delay = delay + + def is_cloudflare_challenge(self, resp): + if resp.headers.get('Server', '').startswith('cloudflare'): + if b'why_captcha' in resp.content or b'/cdn-cgi/l/chk_captcha' in resp.content: + raise ValueError('Captcha') + + return ( + resp.status_code in [429, 503] + and b"jschl_vc" in resp.content + and b"jschl_answer" in resp.content + ) + return False + + def debugRequest(self, req): + try: + print (dump.dump_all(req).decode('utf-8')) + except: + pass + + def request(self, method, url, *args, **kwargs): + self.headers = ( + OrderedDict( + [ + ('User-Agent', self.headers['User-Agent']), + ('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'), + ('Accept-Language', 'en-US,en;q=0.5'), + ('Accept-Encoding', 'gzip, deflate'), + ('Connection', 'close'), + ('Upgrade-Insecure-Requests', '1') + ] + ) + ) + + resp = super(CloudflareScraper, self).request(method, url, *args, **kwargs) + + # Debug request + if self.debug: + self.debugRequest(resp) + + # Check if Cloudflare anti-bot is on + if self.is_cloudflare_challenge(resp): + # Work around if the initial request is not a GET, + # Superseed with a GET then re-request the orignal METHOD. + if resp.request.method != 'GET': + self.request('GET', resp.url) + resp = self.request(method, url, *args, **kwargs) + else: + resp = self.solve_cf_challenge(resp, **kwargs) + + return resp + + def solve_cf_challenge(self, resp, **original_kwargs): + body = resp.text + + # Cloudflare requires a delay before solving the challenge + if self.delay == 8: + try: + delay = float(re.search(r'submit\(\);\r?\n\s*},\s*([0-9]+)', body).group(1)) / float(1000) + if isinstance(delay, (int, float)): + self.delay = delay + except: + pass + + sleep(self.delay) + + parsed_url = urlparse(resp.url) + domain = parsed_url.netloc + submit_url = '{}://{}/cdn-cgi/l/chk_jschl'.format(parsed_url.scheme, domain) + + cloudflare_kwargs = deepcopy(original_kwargs) + headers = cloudflare_kwargs.setdefault('headers', {'Referer': resp.url}) + + try: + params = cloudflare_kwargs.setdefault( + 'params', OrderedDict( + [ + ('s', re.search(r'name="s"\svalue="(?P[^"]+)', body).group('s_value')), + ('jschl_vc', re.search(r'name="jschl_vc" value="(\w+)"', body).group(1)), + ('pass', re.search(r'name="pass" value="(.+?)"', body).group(1)), + ] + ) + ) + + except Exception as e: + # Something is wrong with the page. + # This may indicate Cloudflare has changed their anti-bot + # technique. If you see this and are running the latest version, + # please open a GitHub issue so I can update the code accordingly. + raise ValueError("Unable to parse Cloudflare anti-bots page: {} {}".format(e.message, BUG_REPORT)) + + # Solve the Javascript challenge + params['jschl_answer'] = self.solve_challenge(body, domain) + + # Requests transforms any request into a GET after a redirect, + # so the redirect has to be handled manually here to allow for + # performing other types of requests even as the first request. + method = resp.request.method + + cloudflare_kwargs['allow_redirects'] = False + + redirect = self.request(method, submit_url, **cloudflare_kwargs) + redirect_location = urlparse(redirect.headers['Location']) + if not redirect_location.netloc: + redirect_url = urlunparse( + ( + parsed_url.scheme, + domain, + redirect_location.path, + redirect_location.params, + redirect_location.query, + redirect_location.fragment + ) + ) + return self.request(method, redirect_url, **original_kwargs) + + return self.request(method, redirect.headers['Location'], **original_kwargs) + + def solve_challenge(self, body, domain): + try: + js = re.search( + r"setTimeout\(function\(\){\s+(var s,t,o,p,b,r,e,a,k,i,n,g,f.+?\r?\n[\s\S]+?a\.value =.+?)\r?\n", + body + ).group(1) + except Exception: + raise ValueError("Unable to identify Cloudflare IUAM Javascript on website. {}".format(BUG_REPORT)) + + js = re.sub(r"a\.value = ((.+).toFixed\(10\))?", r"\1", js) + js = re.sub(r'(e\s=\sfunction\(s\)\s{.*?};)', '', js, flags=re.DOTALL|re.MULTILINE) + js = re.sub(r"\s{3,}[a-z](?: = |\.).+", "", js).replace("t.length", str(len(domain))) + + js = js.replace('; 121', '') + + # Strip characters that could be used to exit the string context + # These characters are not currently used in Cloudflare's arithmetic snippet + js = re.sub(r"[\n\\']", "", js) + + if 'toFixed' not in js: + raise ValueError("Error parsing Cloudflare IUAM Javascript challenge. {}".format(BUG_REPORT)) + + try: + jsEnv = """ + var t = "{domain}"; + var g = String.fromCharCode; + + o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + e = function(s) {{ + s += "==".slice(2 - (s.length & 3)); + var bm, r = "", r1, r2, i = 0; + for (; i < s.length;) {{ + bm = o.indexOf(s.charAt(i++)) << 18 | o.indexOf(s.charAt(i++)) << 12 | (r1 = o.indexOf(s.charAt(i++))) << 6 | (r2 = o.indexOf(s.charAt(i++))); + r += r1 === 64 ? g(bm >> 16 & 255) : r2 === 64 ? g(bm >> 16 & 255, bm >> 8 & 255) : g(bm >> 16 & 255, bm >> 8 & 255, bm & 255); + }} + return r; + }}; + + function italics (str) {{ return '' + this + ''; }}; + var document = {{ + getElementById: function () {{ + return {{'innerHTML': '{innerHTML}'}}; + }} + }}; + {js} + """ + + innerHTML = re.search( + ']*)? id="([^<>]*?)">([^<>]*?)<\/div>', + body, + re.MULTILINE | re.DOTALL + ) + innerHTML = innerHTML.group(2).replace("'", r"\'") if innerHTML else "" + + js = jsunfuck(jsEnv.format(domain=domain, innerHTML=innerHTML, js=js)) + + def atob(s): + return base64.b64decode('{}'.format(s)).decode('utf-8') + + js2py.disable_pyimport() + context = js2py.EvalJs({'atob': atob}) + result = context.eval(js) + except Exception: + logging.error("Error executing Cloudflare IUAM Javascript. {}".format(BUG_REPORT)) + raise + + try: + float(result) + except Exception: + raise ValueError("Cloudflare IUAM challenge returned unexpected answer. {}".format(BUG_REPORT)) + + return result + + @classmethod + def create_scraper(cls, sess=None, **kwargs): + """ + Convenience function for creating a ready-to-go CloudflareScraper object. + """ + scraper = cls(**kwargs) + + if sess: + attrs = ['auth', 'cert', 'cookies', 'headers', 'hooks', 'params', 'proxies', 'data'] + for attr in attrs: + val = getattr(sess, attr, None) + if val: + setattr(scraper, attr, val) + + return scraper + + # Functions for integrating cloudflare-scrape with other applications and scripts + @classmethod + def get_tokens(cls, url, user_agent=None, debug=False, **kwargs): + scraper = cls.create_scraper() + scraper.debug = debug + + if user_agent: + scraper.headers['User-Agent'] = user_agent + + try: + resp = scraper.get(url, **kwargs) + resp.raise_for_status() + except Exception as e: + logging.error("'{}' returned an error. Could not collect tokens.".format(url)) + raise + + domain = urlparse(resp.url).netloc + cookie_domain = None + + for d in scraper.cookies.list_domains(): + if d.startswith('.') and d in ('.{}'.format(domain)): + cookie_domain = d + break + else: + raise ValueError("Unable to find Cloudflare cookies. Does the site actually have Cloudflare IUAM (\"I'm Under Attack Mode\") enabled?") + + return ( + { + '__cfduid': scraper.cookies.get('__cfduid', '', domain=cookie_domain), + 'cf_clearance': scraper.cookies.get('cf_clearance', '', domain=cookie_domain) + }, + scraper.headers['User-Agent'] + ) + + def get_live_tokens(self, domain): + for d in self.cookies.list_domains(): + if d.startswith(".") and d in ("." + domain): + cookie_domain = d + break + else: + raise ValueError( + "Unable to find Cloudflare cookies. Does the site actually have Cloudflare IUAM (\"I'm Under Attack Mode\") enabled?") + + return ({ + "__cfduid": self.cookies.get("__cfduid", "", domain=cookie_domain), + "cf_clearance": self.cookies.get("cf_clearance", "", domain=cookie_domain) + }, + self.headers["User-Agent"] + ) + + @classmethod + def get_cookie_string(cls, url, user_agent=None, debug=False, **kwargs): + """ + Convenience function for building a Cookie HTTP header value. + """ + tokens, user_agent = cls.get_tokens(url, user_agent=user_agent, debug=debug, **kwargs) + return "; ".join("=".join(pair) for pair in tokens.items()), user_agent + +create_scraper = CloudflareScraper.create_scraper +get_tokens = CloudflareScraper.get_tokens +get_cookie_string = CloudflareScraper.get_cookie_string diff --git a/libs/cfscrape/jsfuck.py b/libs/cfscrape/jsfuck.py new file mode 100644 index 000000000..9538a0ee1 --- /dev/null +++ b/libs/cfscrape/jsfuck.py @@ -0,0 +1,97 @@ +MAPPING = { + 'a': '(false+"")[1]', + 'b': '([]["entries"]()+"")[2]', + 'c': '([]["fill"]+"")[3]', + 'd': '(undefined+"")[2]', + 'e': '(true+"")[3]', + 'f': '(false+"")[0]', + 'g': '(false+[0]+String)[20]', + 'h': '(+(101))["to"+String["name"]](21)[1]', + 'i': '([false]+undefined)[10]', + 'j': '([]["entries"]()+"")[3]', + 'k': '(+(20))["to"+String["name"]](21)', + 'l': '(false+"")[2]', + 'm': '(Number+"")[11]', + 'n': '(undefined+"")[1]', + 'o': '(true+[]["fill"])[10]', + 'p': '(+(211))["to"+String["name"]](31)[1]', + 'q': '(+(212))["to"+String["name"]](31)[1]', + 'r': '(true+"")[1]', + 's': '(false+"")[3]', + 't': '(true+"")[0]', + 'u': '(undefined+"")[0]', + 'v': '(+(31))["to"+String["name"]](32)', + 'w': '(+(32))["to"+String["name"]](33)', + 'x': '(+(101))["to"+String["name"]](34)[1]', + 'y': '(NaN+[Infinity])[10]', + 'z': '(+(35))["to"+String["name"]](36)', + 'A': '(+[]+Array)[10]', + 'B': '(+[]+Boolean)[10]', + 'C': 'Function("return escape")()(("")["italics"]())[2]', + 'D': 'Function("return escape")()([]["fill"])["slice"]("-1")', + 'E': '(RegExp+"")[12]', + 'F': '(+[]+Function)[10]', + 'G': '(false+Function("return Date")()())[30]', + 'I': '(Infinity+"")[0]', + 'M': '(true+Function("return Date")()())[30]', + 'N': '(NaN+"")[0]', + 'O': '(NaN+Function("return{}")())[11]', + 'R': '(+[]+RegExp)[10]', + 'S': '(+[]+String)[10]', + 'T': '(NaN+Function("return Date")()())[30]', + 'U': '(NaN+Function("return{}")()["to"+String["name"]]["call"]())[11]', + ' ': '(NaN+[]["fill"])[11]', + '"': '("")["fontcolor"]()[12]', + '%': 'Function("return escape")()([]["fill"])[21]', + '&': '("")["link"](0+")[10]', + '(': '(undefined+[]["fill"])[22]', + ')': '([0]+false+[]["fill"])[20]', + '+': '(+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]])+[])[2]', + ',': '([]["slice"]["call"](false+"")+"")[1]', + '-': '(+(.+[0000000001])+"")[2]', + '.': '(+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]', + '/': '(false+[0])["italics"]()[10]', + ':': '(RegExp()+"")[3]', + ';': '("")["link"](")[14]', + '<': '("")["italics"]()[0]', + '=': '("")["fontcolor"]()[11]', + '>': '("")["italics"]()[2]', + '?': '(RegExp()+"")[2]', + '[': '([]["entries"]()+"")[0]', + ']': '([]["entries"]()+"")[22]', + '{': '(true+[]["fill"])[20]', + '}': '([]["fill"]+"")["slice"]("-1")' +} + +SIMPLE = { + 'false': '![]', + 'true': '!![]', + 'undefined': '[][[]]', + 'NaN': '+[![]]', + 'Infinity': '+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])' # +"1e1000" +} + +CONSTRUCTORS = { + 'Array': '[]', + 'Number': '(+[])', + 'String': '([]+[])', + 'Boolean': '(![])', + 'Function': '[]["fill"]', + 'RegExp': 'Function("return/"+false+"/")()' +} + +def jsunfuck(jsfuckString): + + for key in sorted(MAPPING, key=lambda k: len(MAPPING[k]), reverse=True): + if MAPPING.get(key) in jsfuckString: + jsfuckString = jsfuckString.replace(MAPPING.get(key), '"{}"'.format(key)) + + for key in sorted(SIMPLE, key=lambda k: len(SIMPLE[k]), reverse=True): + if SIMPLE.get(key) in jsfuckString: + jsfuckString = jsfuckString.replace(SIMPLE.get(key), '{}'.format(key)) + + #for key in sorted(CONSTRUCTORS, key=lambda k: len(CONSTRUCTORS[k]), reverse=True): + # if CONSTRUCTORS.get(key) in jsfuckString: + # jsfuckString = jsfuckString.replace(CONSTRUCTORS.get(key), '{}'.format(key)) + + return jsfuckString \ No newline at end of file diff --git a/libs/js2py/__init__.py b/libs/js2py/__init__.py new file mode 100644 index 000000000..a7fe5979c --- /dev/null +++ b/libs/js2py/__init__.py @@ -0,0 +1,75 @@ +# The MIT License +# +# Copyright 2014, 2015 Piotr Dabkowski +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the 'Software'), +# to deal in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, subject +# to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all copies or +# substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +# LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE +""" This module allows you to translate and execute Javascript in pure python. + Basically its implementation of ECMAScript 5.1 in pure python. + + Use eval_js method to execute javascript code and get resulting python object (builtin if possible). + + EXAMPLE: + >>> import js2py + >>> add = js2py.eval_js('function add(a, b) {return a + b}') + >>> add(1, 2) + 3 + 6 + >>> add('1', 2, 3) + u'12' + >>> add.constructor + function Function() { [python code] } + + + Or use EvalJs to execute many javascript code fragments under same context - you would be able to get any + variable from the context! + + >>> js = js2py.EvalJs() + >>> js.execute('var a = 10; function f(x) {return x*x};') + >>> js.f(9) + 81 + >>> js.a + 10 + + Also you can use its console method to play with interactive javascript console. + + + Use parse_js to parse (syntax tree is just like in esprima.js) and translate_js to trasnlate JavaScript. + + Finally, you can use pyimport statement from inside JS code to import and use python libraries. + + >>> js2py.eval_js('pyimport urllib; urllib.urlopen("https://www.google.com")') + + NOTE: This module is still not fully finished: + + Date and JSON builtin objects are not implemented + Array prototype is not fully finished (will be soon) + + Other than that everything should work fine. + +""" + +__author__ = 'Piotr Dabkowski' +__all__ = [ + 'EvalJs', 'translate_js', 'import_js', 'eval_js', 'parse_js', + 'translate_file', 'run_file', 'disable_pyimport', 'eval_js6', + 'translate_js6', 'PyJsException', 'get_file_contents', + 'write_file_contents', 'require' +] + +from .base import PyJsException +from .evaljs import * +from .translators import parse as parse_js +from .node_import import require diff --git a/libs/js2py/base.py b/libs/js2py/base.py new file mode 100644 index 000000000..67c80d599 --- /dev/null +++ b/libs/js2py/base.py @@ -0,0 +1,3280 @@ +'''Most important file in Js2Py implementation: PyJs class - father of all PyJs objects''' +from copy import copy +import re + +from .translators.friendly_nodes import REGEXP_CONVERTER +from .utils.injector import fix_js_args +from types import FunctionType, ModuleType, GeneratorType, BuiltinFunctionType, MethodType, BuiltinMethodType +import traceback +try: + import numpy + NUMPY_AVAILABLE = True +except: + NUMPY_AVAILABLE = False + +# python 3 support +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + + +def str_repr(s): + if six.PY2: + return repr(s.encode('utf-8')) + else: + return repr(s) + + +def MakeError(name, message): + """Returns PyJsException with PyJsError inside""" + return JsToPyException(ERRORS[name](Js(message))) + + +def to_python(val): + if not isinstance(val, PyJs): + return val + if isinstance(val, PyJsUndefined) or isinstance(val, PyJsNull): + return None + elif isinstance(val, PyJsNumber): + # this can be either float or long/int better to assume its int/long when a whole number... + v = val.value + try: + i = int(v) if v == v else v # nan... + return v if i != v else i + except: + return v + elif isinstance(val, (PyJsString, PyJsBoolean)): + return val.value + elif isinstance(val, PyObjectWrapper): + return val.__dict__['obj'] + elif isinstance(val, PyJsArray) and val.CONVERT_TO_PY_PRIMITIVES: + return to_list(val) + elif isinstance(val, PyJsObject) and val.CONVERT_TO_PY_PRIMITIVES: + return to_dict(val) + else: + return JsObjectWrapper(val) + + +def to_dict(js_obj, + known=None): # fixed recursion error in self referencing objects + res = {} + if known is None: + known = {} + if js_obj in known: + return known[js_obj] + known[js_obj] = res + for k in js_obj: + name = k.value + input = js_obj.get(name) + output = to_python(input) + if isinstance(output, JsObjectWrapper): + if output._obj.Class == 'Object': + output = to_dict(output._obj, known) + known[input] = output + elif output._obj.Class in [ + 'Array', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', + 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array' + ]: + output = to_list(output._obj) + known[input] = output + res[name] = output + return res + + +def to_list(js_obj, known=None): + res = len(js_obj) * [None] + if known is None: + known = {} + if js_obj in known: + return known[js_obj] + known[js_obj] = res + for k in js_obj: + try: + name = int(k.value) + except: + continue + input = js_obj.get(str(name)) + output = to_python(input) + if isinstance(output, JsObjectWrapper): + if output._obj.Class in [ + 'Array', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', + 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array', 'Arguments' + ]: + output = to_list(output._obj, known) + known[input] = output + elif output._obj.Class in ['Object']: + output = to_dict(output._obj) + known[input] = output + res[name] = output + return res + + +def HJs(val): + if hasattr(val, '__call__'): # + + @Js + def PyWrapper(this, arguments, var=None): + args = tuple(to_python(e) for e in arguments.to_list()) + try: + py_res = val.__call__(*args) + except Exception as e: + message = 'your Python function failed! ' + try: + message += e.message + except: + pass + raise MakeError('Error', message) + return py_wrap(py_res) + + try: + PyWrapper.func_name = val.__name__ + except: + pass + return PyWrapper + if isinstance(val, tuple): + val = list(val) + return Js(val) + + +def Js(val, Clamped=False): + '''Converts Py type to PyJs type''' + if isinstance(val, PyJs): + return val + elif val is None: + return undefined + elif isinstance(val, basestring): + return PyJsString(val, StringPrototype) + elif isinstance(val, bool): + return true if val else false + elif isinstance(val, float) or isinstance(val, int) or isinstance( + val, long) or (NUMPY_AVAILABLE and isinstance( + val, + (numpy.int8, numpy.uint8, numpy.int16, numpy.uint16, + numpy.int32, numpy.uint32, numpy.float32, numpy.float64))): + # This is supposed to speed things up. may not be the case + if val in NUM_BANK: + return NUM_BANK[val] + return PyJsNumber(float(val), NumberPrototype) + elif isinstance(val, FunctionType): + return PyJsFunction(val, FunctionPrototype) + #elif isinstance(val, ModuleType): + # mod = {} + # for name in dir(val): + # value = getattr(val, name) + # if isinstance(value, ModuleType): + # continue # prevent recursive module conversion + # try: + # jsval = HJs(value) + # except RuntimeError: + # print 'Could not convert %s to PyJs object!' % name + # continue + # mod[name] = jsval + # return Js(mod) + #elif isintance(val, ClassType): + + elif isinstance(val, dict): # convert to object + temp = PyJsObject({}, ObjectPrototype) + for k, v in six.iteritems(val): + temp.put(Js(k), Js(v)) + return temp + elif isinstance(val, (list, tuple)): #Convert to array + return PyJsArray(val, ArrayPrototype) + # convert to typedarray + elif isinstance(val, JsObjectWrapper): + return val.__dict__['_obj'] + elif NUMPY_AVAILABLE and isinstance(val, numpy.ndarray): + if val.dtype == numpy.int8: + return PyJsInt8Array(val, Int8ArrayPrototype) + elif val.dtype == numpy.uint8 and not Clamped: + return PyJsUint8Array(val, Uint8ArrayPrototype) + elif val.dtype == numpy.uint8 and Clamped: + return PyJsUint8ClampedArray(val, Uint8ClampedArrayPrototype) + elif val.dtype == numpy.int16: + return PyJsInt16Array(val, Int16ArrayPrototype) + elif val.dtype == numpy.uint16: + return PyJsUint16Array(val, Uint16ArrayPrototype) + + elif val.dtype == numpy.int32: + return PyJsInt32Array(val, Int32ArrayPrototype) + elif val.dtype == numpy.uint32: + return PyJsUint16Array(val, Uint32ArrayPrototype) + + elif val.dtype == numpy.float32: + return PyJsFloat32Array(val, Float32ArrayPrototype) + elif val.dtype == numpy.float64: + return PyJsFloat64Array(val, Float64ArrayPrototype) + else: # try to convert to js object + return py_wrap(val) + #raise RuntimeError('Cant convert python type to js (%s)' % repr(val)) + #try: + # obj = {} + # for name in dir(val): + # if name.startswith('_'): #dont wrap attrs that start with _ + # continue + # value = getattr(val, name) + # import types + # if not isinstance(value, (FunctionType, BuiltinFunctionType, MethodType, BuiltinMethodType, + # dict, int, basestring, bool, float, long, list, tuple)): + # continue + # obj[name] = HJs(value) + # return Js(obj) + #except: + # raise RuntimeError('Cant convert python type to js (%s)' % repr(val)) + + +def Type(val): + try: + return val.TYPE + except: + raise RuntimeError('Invalid type: ' + str(val)) + + +def is_data_descriptor(desc): + return desc and ('value' in desc or 'writable' in desc) + + +def is_accessor_descriptor(desc): + return desc and ('get' in desc or 'set' in desc) + + +def is_generic_descriptor(desc): + return desc and not (is_data_descriptor(desc) + or is_accessor_descriptor(desc)) + + +############################################################################## + + +class PyJs(object): + PRIMITIVES = frozenset( + ['String', 'Number', 'Boolean', 'Undefined', 'Null']) + TYPE = 'Object' + Class = None + extensible = True + prototype = None + own = {} + GlobalObject = None + IS_CHILD_SCOPE = False + CONVERT_TO_PY_PRIMITIVES = False + value = None + buff = None + + def __init__(self, value=None, prototype=None, extensible=False): + '''Constructor for Number String and Boolean''' + # I dont think this is needed anymore + # if self.Class=='String' and not isinstance(value, basestring): + # raise TypeError + # if self.Class=='Number': + # if not isinstance(value, float): + # if not (isinstance(value, int) or isinstance(value, long)): + # raise TypeError + # value = float(value) + # if self.Class=='Boolean' and not isinstance(value, bool): + # raise TypeError + self.value = value + self.extensible = extensible + self.prototype = prototype + self.own = {} + self.buff = None + + def is_undefined(self): + return self.Class == 'Undefined' + + def is_null(self): + return self.Class == 'Null' + + def is_primitive(self): + return self.TYPE in self.PRIMITIVES + + def is_object(self): + return not self.is_primitive() + + def _type(self): + return Type(self) + + def is_callable(self): + return hasattr(self, 'call') + + def get_own_property(self, prop): + return self.own.get(prop) + + def get_property(self, prop): + cand = self.get_own_property(prop) + if cand: + return cand + if self.prototype is not None: + return self.prototype.get_property(prop) + + def update_array(self): + for i in range(self.get('length').to_uint32()): + self.put(str(i), Js(self.buff[i])) + + def get(self, prop): #external use! + #prop = prop.value + if self.Class == 'Undefined' or self.Class == 'Null': + raise MakeError('TypeError', + 'Undefined and null dont have properties!') + if not isinstance(prop, basestring): + prop = prop.to_string().value + if not isinstance(prop, basestring): raise RuntimeError('Bug') + if NUMPY_AVAILABLE and prop.isdigit(): + if isinstance(self.buff, numpy.ndarray): + self.update_array() + cand = self.get_property(prop) + if cand is None: + return Js(None) + if is_data_descriptor(cand): + return cand['value'] + if cand['get'].is_undefined(): + return cand['get'] + return cand['get'].call(self) + + def can_put(self, prop): #to check + desc = self.get_own_property(prop) + if desc: #if we have this property + if is_accessor_descriptor(desc): + return desc['set'].is_callable( + ) # Check if setter method is defined + else: #data desc + return desc['writable'] + if self.prototype is not None: + return self.extensible + inherited = self.get_property(prop) + if inherited is None: + return self.extensible + if is_accessor_descriptor(inherited): + return not inherited['set'].is_undefined() + elif self.extensible: + return inherited['writable'] + return False + + def put(self, prop, val, op=None): #external use! + '''Just like in js: self.prop op= val + for example when op is '+' it will be self.prop+=val + op can be either None for simple assignment or one of: + * / % + - << >> & ^ |''' + if self.Class == 'Undefined' or self.Class == 'Null': + raise MakeError('TypeError', + 'Undefined and null dont have properties!') + if not isinstance(prop, basestring): + prop = prop.to_string().value + if NUMPY_AVAILABLE and prop.isdigit(): + if self.Class == 'Int8Array': + val = Js(numpy.int8(val.to_number().value)) + elif self.Class == 'Uint8Array': + val = Js(numpy.uint8(val.to_number().value)) + elif self.Class == 'Uint8ClampedArray': + if val < Js(numpy.uint8(0)): + val = Js(numpy.uint8(0)) + elif val > Js(numpy.uint8(255)): + val = Js(numpy.uint8(255)) + else: + val = Js(numpy.uint8(val.to_number().value)) + elif self.Class == 'Int16Array': + val = Js(numpy.int16(val.to_number().value)) + elif self.Class == 'Uint16Array': + val = Js(numpy.uint16(val.to_number().value)) + elif self.Class == 'Int32Array': + val = Js(numpy.int32(val.to_number().value)) + elif self.Class == 'Uint32Array': + val = Js(numpy.uint32(val.to_number().value)) + elif self.Class == 'Float32Array': + val = Js(numpy.float32(val.to_number().value)) + elif self.Class == 'Float64Array': + val = Js(numpy.float64(val.to_number().value)) + if isinstance(self.buff, numpy.ndarray): + self.buff[int(prop)] = int(val.to_number().value) + #we need to set the value to the incremented one + if op is not None: + val = getattr(self.get(prop), OP_METHODS[op])(val) + if not self.can_put(prop): + return val + own_desc = self.get_own_property(prop) + if is_data_descriptor(own_desc): + if self.Class in [ + 'Array', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', + 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array' + ]: + self.define_own_property(prop, {'value': val}) + else: + self.own[prop]['value'] = val + return val + desc = self.get_property(prop) + if is_accessor_descriptor(desc): + desc['set'].call(self, (val, )) + else: + new = { + 'value': val, + 'writable': True, + 'configurable': True, + 'enumerable': True + } + if self.Class in [ + 'Array', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', + 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array' + ]: + self.define_own_property(prop, new) + else: + self.own[prop] = new + return val + + def has_property(self, prop): + return self.get_property(prop) is not None + + def delete(self, prop): + if not isinstance(prop, basestring): + prop = prop.to_string().value + desc = self.get_own_property(prop) + if desc is None: + return Js(True) + if desc['configurable']: + del self.own[prop] + return Js(True) + return Js(False) + + def default_value( + self, hint=None + ): # made a mistake at the very early stage and made it to prefer string... caused lots! of problems + order = ('valueOf', 'toString') + if hint == 'String' or (hint is None and self.Class == 'Date'): + order = ('toString', 'valueOf') + for meth_name in order: + method = self.get(meth_name) + if method is not None and method.is_callable(): + cand = method.call(self) + if cand.is_primitive(): + return cand + raise MakeError('TypeError', + 'Cannot convert object to primitive value') + + def define_own_property(self, prop, + desc): #Internal use only. External through Object + # prop must be a Py string. Desc is either a descriptor or accessor. + #Messy method - raw translation from Ecma spec to prevent any bugs. # todo check this + current = self.get_own_property(prop) + + extensible = self.extensible + if not current: #We are creating a new property + if not extensible: + return False + if is_data_descriptor(desc) or is_generic_descriptor(desc): + DEFAULT_DATA_DESC = { + 'value': undefined, #undefined + 'writable': False, + 'enumerable': False, + 'configurable': False + } + DEFAULT_DATA_DESC.update(desc) + self.own[prop] = DEFAULT_DATA_DESC + else: + DEFAULT_ACCESSOR_DESC = { + 'get': undefined, #undefined + 'set': undefined, #undefined + 'enumerable': False, + 'configurable': False + } + DEFAULT_ACCESSOR_DESC.update(desc) + self.own[prop] = DEFAULT_ACCESSOR_DESC + return True + if not desc or desc == current: #We dont need to change anything. + return True + configurable = current['configurable'] + if not configurable: #Prevent changing configurable or enumerable + if desc.get('configurable'): + return False + if 'enumerable' in desc and desc['enumerable'] != current[ + 'enumerable']: + return False + if is_generic_descriptor(desc): + pass + elif is_data_descriptor(current) != is_data_descriptor(desc): + if not configurable: + return False + if is_data_descriptor(current): + del current['value'] + del current['writable'] + current['set'] = undefined #undefined + current['get'] = undefined #undefined + else: + del current['set'] + del current['get'] + current['value'] = undefined #undefined + current['writable'] = False + elif is_data_descriptor(current) and is_data_descriptor(desc): + if not configurable: + if not current['writable'] and desc.get('writable'): + return False + if not current['writable'] and 'value' in desc and current[ + 'value'] != desc['value']: + return False + elif is_accessor_descriptor(current) and is_accessor_descriptor(desc): + if not configurable: + if 'set' in desc and desc['set'] is not current['set']: + return False + if 'get' in desc and desc['get'] is not current['get']: + return False + current.update(desc) + return True + + #these methods will work only for Number class + def is_infinity(self): + assert self.Class == 'Number' + return self.value == float('inf') or self.value == -float('inf') + + def is_nan(self): + assert self.Class == 'Number' + return self.value != self.value #nan!=nan evaluates to true + + def is_finite(self): + return not (self.is_nan() or self.is_infinity()) + + #Type Conversions. to_type. All must return pyjs subclass instance + + def to_primitive(self, hint=None): + if self.is_primitive(): + return self + if hint is None and ( + self.Class == 'Number' or self.Class == 'Boolean' + ): # favour number for Class== Number or Boolean default = String + hint = 'Number' + return self.default_value(hint) + + def to_boolean(self): + typ = Type(self) + if typ == 'Boolean': #no need to convert + return self + elif typ == 'Null' or typ == 'Undefined': #they are both always false + return false + elif typ == 'Number' or typ == 'String': #false only for 0, '' and NaN + return Js(bool( + self.value + and self.value == self.value)) # test for nan (nan -> flase) + else: #object - always true + return true + + def to_number(self): + typ = Type(self) + if typ == 'Null': #null is 0 + return Js(0) + elif typ == 'Undefined': # undefined is NaN + return NaN + elif typ == 'Boolean': # 1 for true 0 for false + return Js(int(self.value)) + elif typ == 'Number': # or self.Class=='Number': # no need to convert + return self + elif typ == 'String': + s = self.value.strip() #Strip white space + if not s: # '' is simply 0 + return Js(0) + if 'x' in s or 'X' in s[:3]: #hex (positive only) + try: # try to convert + num = int(s, 16) + except ValueError: # could not convert > NaN + return NaN + return Js(num) + sign = 1 #get sign + if s[0] in '+-': + if s[0] == '-': + sign = -1 + s = s[1:] + if s == 'Infinity': #Check for infinity keyword. 'NaN' will be NaN anyway. + return Js(sign * float('inf')) + try: #decimal try + num = sign * float(s) # Converted + except ValueError: + return NaN # could not convert to decimal > return NaN + return Js(num) + else: #object - most likely it will be NaN. + return self.to_primitive('Number').to_number() + + def to_string(self): + typ = Type(self) + if typ == 'Null': + return Js('null') + elif typ == 'Undefined': + return Js('undefined') + elif typ == 'Boolean': + return Js('true') if self.value else Js('false') + elif typ == 'Number': #or self.Class=='Number': + if self.is_nan(): + return Js('NaN') + elif self.is_infinity(): + sign = '-' if self.value < 0 else '' + return Js(sign + 'Infinity') + elif isinstance(self.value, + long) or self.value.is_integer(): # dont print .0 + return Js(unicode(int(self.value))) + return Js(unicode(self.value)) # accurate enough + elif typ == 'String': + return self + else: #object + return self.to_primitive('String').to_string() + + def to_object(self): + typ = self.TYPE + if typ == 'Null' or typ == 'Undefined': + raise MakeError('TypeError', + 'undefined or null can\'t be converted to object') + elif typ == 'Boolean': # Unsure here... todo repair here + return Boolean.create(self) + elif typ == 'Number': #? + return Number.create(self) + elif typ == 'String': #? + return String.create(self) + else: #object + return self + + def to_int32(self): + num = self.to_number() + if num.is_nan() or num.is_infinity(): + return 0 + int32 = int(num.value) % 2**32 + return int(int32 - 2**32 if int32 >= 2**31 else int32) + + def strict_equality_comparison(self, other): + return PyJsStrictEq(self, other) + + def cok(self): + """Check object coercible""" + if self.Class in ('Undefined', 'Null'): + raise MakeError('TypeError', + 'undefined or null can\'t be converted to object') + + def to_int(self): + num = self.to_number() + if num.is_nan(): + return 0 + elif num.is_infinity(): + return 10**20 if num.value > 0 else -10**20 + return int(num.value) + + def to_uint32(self): + num = self.to_number() + if num.is_nan() or num.is_infinity(): + return 0 + return int(num.value) % 2**32 + + def to_uint16(self): + num = self.to_number() + if num.is_nan() or num.is_infinity(): + return 0 + return int(num.value) % 2**16 + + def to_int16(self): + num = self.to_number() + if num.is_nan() or num.is_infinity(): + return 0 + int16 = int(num.value) % 2**16 + return int(int16 - 2**16 if int16 >= 2**15 else int16) + + def same_as(self, other): + typ = Type(self) + if typ != other.Class: + return False + if typ == 'Undefined' or typ == 'Null': + return True + if typ == 'Boolean' or typ == 'Number' or typ == 'String': + return self.value == other.value + else: #object + return self is other #Id compare. + + #Not to be used by translation (only internal use) + def __getitem__(self, item): + return self.get( + str(item) if not isinstance(item, PyJs) else item.to_string(). + value) + + def __setitem__(self, item, value): + self.put( + str(item) if not isinstance(item, PyJs) else + item.to_string().value, Js(value)) + + def __len__(self): + try: + return self.get('length').to_uint32() + except: + raise TypeError( + 'This object (%s) does not have length property' % self.Class) + + #Oprators------------- + #Unary, other will be implemented as functions. Increments and decrements + # will be methods of Number class + def __neg__(self): #-u + return Js(-self.to_number().value) + + def __pos__(self): #+u + return self.to_number() + + def __invert__(self): #~u + return Js(Js(~self.to_int32()).to_int32()) + + def neg(self): # !u cant do 'not u' :( + return Js(not self.to_boolean().value) + + def __nonzero__(self): + return self.to_boolean().value + + def __bool__(self): + return self.to_boolean().value + + def typeof(self): + if self.is_callable(): + return Js('function') + typ = Type(self).lower() + if typ == 'null': + typ = 'object' + return Js(typ) + + #Bitwise operators + # <<, >>, &, ^, | + + # << + def __lshift__(self, other): + lnum = self.to_int32() + rnum = other.to_uint32() + shiftCount = rnum & 0x1F + return Js(Js(lnum << shiftCount).to_int32()) + + # >> + def __rshift__(self, other): + lnum = self.to_int32() + rnum = other.to_uint32() + shiftCount = rnum & 0x1F + return Js(Js(lnum >> shiftCount).to_int32()) + + # >>> + def pyjs_bshift(self, other): + lnum = self.to_uint32() + rnum = other.to_uint32() + shiftCount = rnum & 0x1F + return Js(Js(lnum >> shiftCount).to_uint32()) + + # & + def __and__(self, other): + lnum = self.to_int32() + rnum = other.to_int32() + return Js(Js(lnum & rnum).to_int32()) + + # ^ + def __xor__(self, other): + lnum = self.to_int32() + rnum = other.to_int32() + return Js(Js(lnum ^ rnum).to_int32()) + + # | + def __or__(self, other): + lnum = self.to_int32() + rnum = other.to_int32() + return Js(Js(lnum | rnum).to_int32()) + + # Additive operators + # + and - are implemented here + + # + + def __add__(self, other): + a = self.to_primitive() + b = other.to_primitive() + if a.TYPE == 'String' or b.TYPE == 'String': + return Js(a.to_string().value + b.to_string().value) + a = a.to_number() + b = b.to_number() + return Js(a.value + b.value) + + # - + def __sub__(self, other): + return Js(self.to_number().value - other.to_number().value) + + #Multiplicative operators + # *, / and % are implemented here + + # * + def __mul__(self, other): + return Js(self.to_number().value * other.to_number().value) + + # / + def __div__(self, other): + a = self.to_number().value + b = other.to_number().value + if b: + return Js(a / b) + if not a or a != a: + return NaN + return Infinity if a > 0 else -Infinity + + # % + def __mod__(self, other): + a = self.to_number().value + b = other.to_number().value + if abs(a) == float('inf') or not b: + return NaN + if abs(b) == float('inf'): + return Js(a) + pyres = Js(a % b) #different signs in python and javascript + #python has the same sign as b and js has the same + #sign as a. + if a < 0 and pyres.value > 0: + pyres.value -= abs(b) + elif a > 0 and pyres.value < 0: + pyres.value += abs(b) + return Js(pyres) + + #Comparisons (I dont implement === and !== here, these + # will be implemented as external functions later) + # <, <=, !=, ==, >=, > are implemented here. + + def abstract_relational_comparison(self, other, self_first=True): + ''' self= + def __ge__(self, other): + res = self.abstract_relational_comparison(other, True) + if res.is_undefined(): + return false + return res.neg() + + #> + def __gt__(self, other): + res = self.abstract_relational_comparison(other, False) + if res.is_undefined(): + return false + return res + + def abstract_equality_comparison(self, other): + ''' returns the result of JS == compare. + result is PyJs type: bool''' + tx, ty = self.TYPE, other.TYPE + if tx == ty: + if tx == 'Undefined' or tx == 'Null': + return true + if tx == 'Number' or tx == 'String' or tx == 'Boolean': + return Js(self.value == other.value) + return Js(self is other) # Object + elif (tx == 'Undefined' and ty == 'Null') or (ty == 'Undefined' + and tx == 'Null'): + return true + elif tx == 'Number' and ty == 'String': + return self.abstract_equality_comparison(other.to_number()) + elif tx == 'String' and ty == 'Number': + return self.to_number().abstract_equality_comparison(other) + elif tx == 'Boolean': + return self.to_number().abstract_equality_comparison(other) + elif ty == 'Boolean': + return self.abstract_equality_comparison(other.to_number()) + elif (tx == 'String' or tx == 'Number') and other.is_object(): + return self.abstract_equality_comparison(other.to_primitive()) + elif (ty == 'String' or ty == 'Number') and self.is_object(): + return self.to_primitive().abstract_equality_comparison(other) + else: + return false + + #== + def __eq__(self, other): + return self.abstract_equality_comparison(other) + + #!= + def __ne__(self, other): + return self.abstract_equality_comparison(other).neg() + + #Other methods (instanceof) + + def instanceof(self, other): + '''checks if self is instance of other''' + if not hasattr(other, 'has_instance'): + return false + return other.has_instance(self) + + #iteration + def __iter__(self): + #Returns a generator of all own enumerable properties + # since the size od self.own can change we need to use different method of iteration. + # SLOW! New items will NOT show up. + returned = {} + if not self.IS_CHILD_SCOPE: + cands = sorted( + name for name in self.own if self.own[name]['enumerable']) + else: + cands = sorted(name for name in self.own) + for cand in cands: + check = self.own.get(cand) + if check and check['enumerable']: + yield Js(cand) + + def contains(self, other): + if not self.is_object(): + raise MakeError( + 'TypeError', + "You can\'t use 'in' operator to search in non-objects") + return Js(self.has_property(other.to_string().value)) + + #Other Special methods + def __call__(self, *args): + '''Call a property prop as a function (this will be global object). + + NOTE: dont pass this and arguments here, these will be added + automatically!''' + if not self.is_callable(): + raise MakeError('TypeError', + '%s is not a function' % self.typeof()) + return self.call(self.GlobalObject, args) + + def create(self, *args): + '''Generally not a constructor, raise an error''' + raise MakeError('TypeError', '%s is not a constructor' % self.Class) + + def __unicode__(self): + return self.to_string().value + + def __repr__(self): + if self.Class == 'Object': + res = [] + for e in self: + res.append(str_repr(e.value) + ': ' + str_repr(self.get(e))) + return '{%s}' % ', '.join(res) + elif self.Class == 'String': + return str_repr(self.value) + elif self.Class in [ + 'Array', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', + 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array' + ]: + res = [] + for e in self: + res.append(repr(self.get(e))) + return '[%s]' % ', '.join(res) + else: + val = str_repr(self.to_string().value) + return val + + def _fuck_python3( + self + ): # hack to make object hashable in python 3 (__eq__ causes problems) + return object.__hash__(self) + + def callprop(self, prop, *args): + '''Call a property prop as a method (this will be self). + + NOTE: dont pass this and arguments here, these will be added + automatically!''' + if not isinstance(prop, basestring): + prop = prop.to_string().value + cand = self.get(prop) + if not cand.is_callable(): + raise MakeError('TypeError', + '%s is not a function' % cand.typeof()) + return cand.call(self, args) + + def to_python(self): + """returns equivalent python object. + for example if this object is javascript array then this method will return equivalent python array""" + return to_python(self) + + def to_py(self): + """returns equivalent python object. + for example if this object is javascript array then this method will return equivalent python array""" + return self.to_python() + + +if six.PY3: + PyJs.__hash__ = PyJs._fuck_python3 + PyJs.__truediv__ = PyJs.__div__ +#Define some more classes representing operators: + + +def PyJsStrictEq(a, b): + '''a===b''' + tx, ty = Type(a), Type(b) + if tx != ty: + return false + if tx == 'Undefined' or tx == 'Null': + return true + if a.is_primitive(): #string bool and number case + return Js(a.value == b.value) + if a.Class == b.Class == 'PyObjectWrapper': + return Js(a.obj == b.obj) + return Js(a is b) # object comparison + + +def PyJsStrictNeq(a, b): + ''' a!==b''' + return PyJsStrictEq(a, b).neg() + + +def PyJsBshift(a, b): + """a>>>b""" + return a.pyjs_bshift(b) + + +def PyJsComma(a, b): + return b + + +from .internals.simplex import JsException as PyJsException +import pyjsparser +pyjsparser.parser.ENABLE_JS2PY_ERRORS = lambda msg: MakeError('SyntaxError', msg) + + +class PyJsSwitchException(Exception): + pass + + +PyJs.MakeError = staticmethod(MakeError) + + +def JsToPyException(js): + temp = PyJsException() + temp.mes = js + return temp + + +def PyExceptionToJs(py): + return py.mes + + +#Scope class it will hold all the variables accessible to user +class Scope(PyJs): + Class = 'global' + extensible = True + IS_CHILD_SCOPE = True + + # todo speed up + # in order to speed up this very important class the top scope should behave differently than + # child scopes, child scope should not have this property descriptor thing because they cant be changed anyway + # they are all confugurable= False + + def __init__(self, scope, closure=None): + """Doc""" + self.prototype = closure + if closure is None: + # global, top level scope + self.own = {} + for k, v in six.iteritems(scope): + # set all the global items + self.define_own_property( + k, { + 'value': v, + 'configurable': False, + 'writable': False, + 'enumerable': False + }) + else: + # not global, less powerful but faster closure. + self.own = scope # simple dictionary which maps name directly to js object. + + def register(self, lval): + # registered keeps only global registered variables + if self.prototype is None: + # define in global scope + if lval in self.own: + self.own[lval]['configurable'] = False + else: + self.define_own_property( + lval, { + 'value': undefined, + 'configurable': False, + 'writable': True, + 'enumerable': True + }) + elif lval not in self.own: + # define in local scope since it has not been defined yet + self.own[lval] = undefined # default value + + def registers(self, lvals): + """register multiple variables""" + for lval in lvals: + self.register(lval) + + def put(self, lval, val, op=None): + if self.prototype is None: + # global scope put, simple + return PyJs.put(self, lval, val, op) + else: + # trying to put in local scope + # we dont know yet in which scope we should place this var + if lval in self.own: + if op: # increment operation + val = getattr(self.own[lval], OP_METHODS[op])(val) + self.own[lval] = val + return val + else: + #try to put in the lower scope since we cant put in this one (var wasn't registered) + return self.prototype.put(lval, val, op) + + def force_own_put(self, prop, val, configurable=False): + if self.prototype is None: # global scope + self.own[prop] = { + 'value': val, + 'writable': True, + 'enumerable': True, + 'configurable': configurable + } + else: + self.own[prop] = val + + def get(self, prop, throw=True): + #note prop is always a Py String + if not isinstance(prop, basestring): + prop = prop.to_string().value + if self.prototype is not None: + # fast local scope + cand = self.own.get(prop) + if cand is None: + return self.prototype.get(prop, throw) + return cand + # slow, global scope + if prop not in self.own: + if throw: + raise MakeError('ReferenceError', '%s is not defined' % prop) + return undefined + return PyJs.get(self, prop) + + def delete(self, lval): + if self.prototype is not None: + if lval in self.own: + return false + return self.prototype.delete(lval) + # we are in global scope here. Must exist and be configurable to delete + if lval not in self.own: + # this lval does not exist, why do you want to delete it??? + return true + if self.own[lval]['configurable']: + del self.own[lval] + return true + # not configurable, cant delete + return false + + def pyimport(self, name, module): + self.register(name) + self.put(name, py_wrap(module)) + + def __repr__(self): + return u'[Object Global]' + + def to_python(self): + return to_python(self) + + +class This(Scope): + IS_CHILD_SCOPE = False + + def get(self, prop, throw=False): + return Scope.get(self, prop, throw) + + +class JsObjectWrapper(object): + def __init__(self, obj): + self.__dict__['_obj'] = obj + + def __call__(self, *args): + args = tuple(Js(e) for e in args) + if '_prop_of' in self.__dict__: + parent, meth = self.__dict__['_prop_of'] + return to_python(parent._obj.callprop(meth, *args)) + return to_python(self._obj(*args)) + + def __getattr__(self, item): + if item == 'new' and self._obj.is_callable(): + # return instance initializer + def PyJsInstanceInit(*args): + args = tuple(Js(e) for e in args) + return self._obj.create(*args).to_python() + + return PyJsInstanceInit + cand = to_python(self._obj.get(str(item))) + # handling method calling... obj.meth(). Value of this in meth should be self + if isinstance(cand, self.__class__): + cand.__dict__['_prop_of'] = self, str(item) + return cand + + def __setattr__(self, item, value): + self._obj.put(str(item), Js(value)) + + def __getitem__(self, item): + cand = to_python(self._obj.get(str(item))) + if isinstance(cand, self.__class__): + cand.__dict__['_prop_of'] = self, str(item) + return cand + + def __setitem__(self, item, value): + self._obj.put(str(item), Js(value)) + + def __iter__(self): + if self._obj.Class in [ + 'Array', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', + 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array' + ]: + return iter(self.to_list()) + elif self._obj.Class == 'Object': + return iter(self.to_dict()) + else: + raise MakeError('TypeError', + '%s is not iterable in Python' % self._obj.Class) + + def __repr__(self): + if self._obj.is_primitive() or self._obj.is_callable(): + return repr(self._obj) + elif self._obj.Class in ('Array', 'Int8Array', 'Uint8Array', + 'Uint8ClampedArray', 'Int16Array', + 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array', 'Arguments'): + return repr(self.to_list()) + return repr(self.to_dict()) + + def __len__(self): + return len(self._obj) + + def __nonzero__(self): + return bool(self._obj) + + def __bool__(self): + return bool(self._obj) + + def to_dict(self): + return to_dict(self.__dict__['_obj']) + + def to_list(self): + return to_list(self.__dict__['_obj']) + + +class PyObjectWrapper(PyJs): + Class = 'PyObjectWrapper' + + def __init__(self, obj): + self.obj = obj + + def get(self, prop): + if not isinstance(prop, basestring): + prop = prop.to_string().value + try: + if prop.isdigit(): + return py_wrap(self.obj[int(prop)]) + return py_wrap(getattr(self.obj, prop)) + except: + return undefined + + def put(self, prop, val, op=None, throw=False): + if not isinstance(prop, basestring): + prop = prop.to_string().value + try: + if isinstance(op, bool): + raise ValueError("Op must be a string") + elif op is not None: + if op: # increment operation + val = getattr(self.get(prop), OP_METHODS[op])(val) + setattr(self.obj, prop, to_python(val)) + except AttributeError: + raise MakeError('TypeError', 'Read only object probably...') + return val + + def __call__(self, *args): + py_args = tuple(to_python(e) for e in args) + try: + py_res = self.obj.__call__(*py_args) + except Exception as e: + message = 'your Python function failed! ' + try: + message += e.message + except: + pass + raise MakeError('Error', message) + return py_wrap(py_res) + + def callprop(self, prop, *args): + py_args = tuple(to_python(e) for e in args) + if not isinstance(prop, basestring): + prop = prop.to_string().value + return self.get(prop)(*py_args) + + def delete(self, prop): + if not isinstance(prop, basestring): + prop = prop.to_string().value + try: + if prop.isdigit(): + del self.obj[int(prop)] + else: + delattr(self.obj, prop) + return true + except: + return false + + def __repr__(self): + return 'PyObjectWrapper(%s)' % str(self.obj) + + def to_python(self): + return self.obj + + def to_py(self): + return self.obj + + +def py_wrap(py): + if isinstance(py, (FunctionType, BuiltinFunctionType, MethodType, + BuiltinMethodType, dict, int, str, bool, float, list, + tuple, long, basestring)) or py is None: + return HJs(py) + return PyObjectWrapper(py) + + +############################################################################## +#Define types + + +#Object +class PyJsObject(PyJs): + Class = 'Object' + + def __init__(self, prop_descs={}, prototype=None, extensible=True): + self.prototype = prototype + self.extensible = extensible + self.own = {} + for prop, desc in six.iteritems(prop_descs): + self.define_own_property(prop, desc) + + def __repr__(self): + return repr(self.to_python().to_dict()) + + +ObjectPrototype = PyJsObject() + + +#Function +class PyJsFunction(PyJs): + Class = 'Function' + + def __init__(self, func, prototype=None, extensible=True, source=None): + cand = fix_js_args(func) + has_scope = cand is func + func = cand + self.argcount = six.get_function_code(func).co_argcount - 2 - has_scope + self.code = func + self.source = source if source else '{ [python code] }' + self.func_name = func.__name__ if not func.__name__.startswith( + 'PyJs_anonymous') else '' + self.extensible = extensible + self.prototype = prototype + self.own = {} + #set own property length to the number of arguments + self.define_own_property( + 'length', { + 'value': Js(self.argcount), + 'writable': False, + 'enumerable': False, + 'configurable': False + }) + + if self.func_name: + self.define_own_property( + 'name', { + 'value': Js(self.func_name), + 'writable': False, + 'enumerable': False, + 'configurable': True + }) + + # set own prototype + proto = Js({}) + # constructor points to this function + proto.define_own_property( + 'constructor', { + 'value': self, + 'writable': True, + 'enumerable': False, + 'configurable': True + }) + self.define_own_property( + 'prototype', { + 'value': proto, + 'writable': True, + 'enumerable': False, + 'configurable': False + }) + + def _set_name(self, name): + '''name is py type''' + if self.own.get('name'): + self.func_name = name + self.own['name']['value'] = Js(name) + + def construct(self, *args): + proto = self.get('prototype') + if not proto.is_object(): # set to standard prototype + proto = ObjectPrototype + obj = PyJsObject(prototype=proto) + cand = self.call(obj, *args) + return cand if cand.is_object() else obj + + def call(self, this, args=()): + '''Calls this function and returns a result + (converted to PyJs type so func can return python types) + + this must be a PyJs object and args must be a python tuple of PyJs objects. + + arguments object is passed automatically and will be equal to Js(args) + (tuple converted to arguments object).You dont need to worry about number + of arguments you provide if you supply less then missing ones will be set + to undefined (but not present in arguments object). + And if you supply too much then excess will not be passed + (but they will be present in arguments object). + ''' + if not hasattr(args, '__iter__'): #get rid of it later + args = (args, ) + args = tuple(Js(e) for e in args) # this wont be needed later + + arguments = PyJsArguments( + args, self) # tuple will be converted to arguments object. + arglen = self.argcount #function expects this number of args. + if len(args) > arglen: + args = args[0:arglen] + elif len(args) < arglen: + args += (undefined, ) * (arglen - len(args)) + args += this, arguments #append extra params to the arg list + try: + return Js(self.code(*args)) + except NotImplementedError: + raise + except RuntimeError as e: # maximum recursion + raise MakeError( + 'RangeError', e.message if + not isinstance(e, NotImplementedError) else 'Not implemented!') + + def has_instance(self, other): + # I am not sure here so instanceof may not work lol. + if not other.is_object(): + return false + proto = self.get('prototype') + if not proto.is_object(): + raise TypeError( + 'Function has non-object prototype in instanceof check') + while True: + other = other.prototype + if not other: # todo make sure that the condition is not None or null + return false + if other is proto: + return true + + def create(self, *args): + proto = self.get('prototype') + if not proto.is_object(): + proto = ObjectPrototype + new = PyJsObject(prototype=proto) + res = self.call(new, args) + if res.is_object(): + return res + return new + + +class PyJsBoundFunction(PyJsFunction): + def __init__(self, target, bound_this, bound_args): + self.target = target + self.bound_this = bound_this + self.bound_args = bound_args + self.argcount = target.argcount + self.code = target.code + self.source = target.source + self.func_name = target.func_name + self.extensible = True + self.prototype = FunctionPrototype + self.own = {} + # set own property length to the number of arguments + self.define_own_property( + 'length', { + 'value': target.get('length') - Js(len(self.bound_args)), + 'writable': False, + 'enumerable': False, + 'configurable': False + }) + + if self.func_name: + self.define_own_property( + 'name', { + 'value': Js(self.func_name), + 'writable': False, + 'enumerable': False, + 'configurable': True + }) + + # set own prototype + proto = Js({}) + # constructor points to this function + proto.define_own_property( + 'constructor', { + 'value': self, + 'writable': True, + 'enumerable': False, + 'configurable': True + }) + self.define_own_property( + 'prototype', { + 'value': proto, + 'writable': True, + 'enumerable': False, + 'configurable': False + }) + + def call(self, this, args=()): + return self.target.call(self.bound_this, self.bound_args + args) + + def has_instance(self, other): + return self.target.has_instance(other) + + +PyJs.PyJsBoundFunction = PyJsBoundFunction + +OP_METHODS = { + '*': '__mul__', + '/': '__div__', + '%': '__mod__', + '+': '__add__', + '-': '__sub__', + '<<': '__lshift__', + '>>': '__rshift__', + '&': '__and__', + '^': '__xor__', + '|': '__or__', + '>>>': 'pyjs_bshift' +} + + +def Empty(): + return Js(None) + + +#Number +class PyJsNumber(PyJs): #Note i dont implement +0 and -0. Just 0. + TYPE = 'Number' + Class = 'Number' + + +NumberPrototype = PyJsObject({}, ObjectPrototype) +NumberPrototype.Class = 'Number' +NumberPrototype.value = 0 + +Infinity = PyJsNumber(float('inf'), NumberPrototype) +NaN = PyJsNumber(float('nan'), NumberPrototype) +PyJs.NaN = NaN +PyJs.Infinity = Infinity + +# This dict aims to increase speed of string creation by storing character instances +CHAR_BANK = {} +NUM_BANK = {} +PyJs.CHAR_BANK = CHAR_BANK + + +#String +# Different than implementation design in order to improve performance +#for example I dont create separate property for each character in string, it would take ages. +class PyJsString(PyJs): + TYPE = 'String' + Class = 'String' + extensible = False + + def __init__(self, value=None, prototype=None): + '''Constructor for Number String and Boolean''' + if not isinstance(value, basestring): + raise TypeError # this will be internal error + self.value = value + self.prototype = prototype + self.own = {} + # this should be optimized because its mych slower than python str creation (about 50 times!) + # Dont create separate properties for every index. Just + self.own['length'] = { + 'value': Js(len(value)), + 'writable': False, + 'enumerable': False, + 'configurable': False + } + if len(value) == 1: + CHAR_BANK[value] = self #, 'writable': False, + # 'enumerable': True, 'configurable': False} + + def get(self, prop): + if not isinstance(prop, basestring): + prop = prop.to_string().value + try: + index = int(prop) + if index < 0: + return undefined + char = self.value[index] + if char not in CHAR_BANK: + Js(char) # this will add char to CHAR BANK + return CHAR_BANK[char] + except Exception: + pass + return PyJs.get(self, prop) + + def can_put(self, prop): + return False + + def __iter__(self): + for i in xrange(len(self.value)): + yield Js(i) # maybe create an int bank? + + +StringPrototype = PyJsObject({}, ObjectPrototype) +StringPrototype.Class = 'String' +StringPrototype.value = '' + +CHAR_BANK[''] = Js('') + + +#Boolean +class PyJsBoolean(PyJs): + TYPE = 'Boolean' + Class = 'Boolean' + + +BooleanPrototype = PyJsObject({}, ObjectPrototype) +BooleanPrototype.Class = 'Boolean' +BooleanPrototype.value = False + +true = PyJsBoolean(True, BooleanPrototype) +false = PyJsBoolean(False, BooleanPrototype) + + +#Undefined +class PyJsUndefined(PyJs): + TYPE = 'Undefined' + Class = 'Undefined' + + def __init__(self): + pass + + +undefined = PyJsUndefined() + + +#Null +class PyJsNull(PyJs): + TYPE = 'Null' + Class = 'Null' + + def __init__(self): + pass + + +null = PyJsNull() +PyJs.null = null + + +class PyJsArray(PyJs): + Class = 'Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsArrayBuffer(PyJs): + Class = 'ArrayBuffer' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsInt8Array(PyJs): + Class = 'Int8Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsUint8Array(PyJs): + Class = 'Uint8Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsUint8ClampedArray(PyJs): + Class = 'Uint8ClampedArray' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsInt16Array(PyJs): + Class = 'Int16Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsUint16Array(PyJs): + Class = 'Uint16Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsInt32Array(PyJs): + Class = 'Int32Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsUint32Array(PyJs): + Class = 'Uint32Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsFloat32Array(PyJs): + Class = 'Float32Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +class PyJsFloat64Array(PyJs): + Class = 'Float64Array' + + def __init__(self, arr=[], prototype=None): + self.extensible = True + self.prototype = prototype + self.own = { + 'length': { + 'value': Js(0), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + for i, e in enumerate(arr): + self.define_own_property( + str(i), { + 'value': Js(e), + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + + def define_own_property(self, prop, desc): + old_len_desc = self.get_own_property('length') + old_len = old_len_desc[ + 'value'].value # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc) + new_len = desc['value'].to_uint32() + if new_len != desc['value'].to_number().value: + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = Js(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + str(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = Js(old_len + 1) + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + elif prop.isdigit(): + index = int(int(prop) % 2**32) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc): + return False + if index >= old_len: + old_len_desc['value'] = Js(index + 1) + return True + else: + return PyJs.define_own_property(self, prop, desc) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + def __repr__(self): + return repr(self.to_python().to_list()) + + +ArrayPrototype = PyJsArray([], ObjectPrototype) + +ArrayBufferPrototype = PyJsArrayBuffer([], ObjectPrototype) + +Int8ArrayPrototype = PyJsInt8Array([], ObjectPrototype) + +Uint8ArrayPrototype = PyJsUint8Array([], ObjectPrototype) + +Uint8ClampedArrayPrototype = PyJsUint8ClampedArray([], ObjectPrototype) + +Int16ArrayPrototype = PyJsInt16Array([], ObjectPrototype) + +Uint16ArrayPrototype = PyJsUint16Array([], ObjectPrototype) + +Int32ArrayPrototype = PyJsInt32Array([], ObjectPrototype) + +Uint32ArrayPrototype = PyJsUint32Array([], ObjectPrototype) + +Float32ArrayPrototype = PyJsFloat32Array([], ObjectPrototype) + +Float64ArrayPrototype = PyJsFloat64Array([], ObjectPrototype) + + +class PyJsArguments(PyJs): + Class = 'Arguments' + + def __init__(self, args, callee): + self.own = {} + self.extensible = True + self.prototype = ObjectPrototype + self.define_own_property( + 'length', { + 'value': Js(len(args)), + 'writable': True, + 'enumerable': False, + 'configurable': True + }) + self.define_own_property( + 'callee', { + 'value': callee, + 'writable': True, + 'enumerable': False, + 'configurable': True + }) + for i, e in enumerate(args): + self.put(str(i), Js(e)) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + +#We can define function proto after number proto because func uses number in its init +FunctionPrototype = PyJsFunction(Empty, ObjectPrototype) +FunctionPrototype.own['name']['value'] = Js('') + +# I will not rewrite RegExp engine from scratch. I will use re because its much faster. +# I have to only make sure that I am handling all the differences correctly. +REGEXP_DB = {} + + +class PyJsRegExp(PyJs): + Class = 'RegExp' + extensible = True + + def __init__(self, regexp, prototype=None): + + self.prototype = prototype + self.glob = False + self.ignore_case = 0 + self.multiline = 0 + # self._cache = {'str':'NoStringEmpty23093', + # 'iterator': None, + # 'lastpos': -1, + # 'matches': {}} + flags = '' + if not regexp[-1] == '/': + #contains some flags (allowed are i, g, m + spl = regexp.rfind('/') + flags = set(regexp[spl + 1:]) + self.value = regexp[1:spl] + if 'g' in flags: + self.glob = True + if 'i' in flags: + self.ignore_case = re.IGNORECASE + if 'm' in flags: + self.multiline = re.MULTILINE + else: + self.value = regexp[1:-1] + + try: + if self.value in REGEXP_DB: + self.pat = REGEXP_DB[regexp] + else: + comp = 'None' + # we have to check whether pattern is valid. + # also this will speed up matching later + # todo critical fix patter conversion etc. ..!!!!! + # ugly hacks porting js reg exp to py reg exp works in 99% of cases ;) + possible_fixes = [(u'[]', u'[\0]'), (u'[^]', u'[^\0]'), + (u'nofix1791', u'nofix1791')] + reg = self.value + for fix, rep in possible_fixes: + comp = REGEXP_CONVERTER._interpret_regexp(reg, flags) + #print 'reg -> comp', reg, '->', comp + try: + self.pat = re.compile( + comp, self.ignore_case | self.multiline) + #print reg, '->', comp + break + except: + reg = reg.replace(fix, rep) + # print 'Fix', fix, '->', rep, '=', reg + else: + raise + REGEXP_DB[regexp] = self.pat + except: + #print 'Invalid pattern but fuck it', self.value, comp + raise MakeError( + 'SyntaxError', + 'Invalid RegExp pattern: %s -> %s' % (repr(self.value), + repr(comp))) + # now set own properties: + self.own = { + 'source': { + 'value': Js(self.value), + 'enumerable': False, + 'writable': False, + 'configurable': False + }, + 'global': { + 'value': Js(self.glob), + 'enumerable': False, + 'writable': False, + 'configurable': False + }, + 'ignoreCase': { + 'value': Js(bool(self.ignore_case)), + 'enumerable': False, + 'writable': False, + 'configurable': False + }, + 'multiline': { + 'value': Js(bool(self.multiline)), + 'enumerable': False, + 'writable': False, + 'configurable': False + }, + 'lastIndex': { + 'value': Js(0), + 'enumerable': False, + 'writable': True, + 'configurable': False + } + } + + def match(self, string, pos): + '''string is of course py string''' + return self.pat.match(string, pos) # way easier :) + # assert 0<=pos <= len(string) + # if not pos: + # return re.match(self.pat, string) + # else: + # if self._cache['str']==string: + # if pos>self._cache['lastpos']: + # for m in self._cache['iterator']: + # start = m.start() + # self._cache['lastpos'] = start + # self._cache['matches'][start] = m + # if start==pos: + # return m + # elif start>pos: + # return None + # self._cache['lastpos'] = len(string) + # return None + # else: + # return self._cache['matches'].get(pos) + # else: + # self._cache['str'] = string + # self._cache['matches'] = {} + # self._cache['lastpos'] = -1 + # self._cache['iterator'] = re.finditer(self.pat, string) + # return self.match(string, pos) + + +def JsRegExp(source): + # Takes regexp literal! + return PyJsRegExp(source, RegExpPrototype) + + +RegExpPrototype = PyJsRegExp('/(?:)/', ObjectPrototype) + +####Exceptions: +default_attrs = {'writable': True, 'enumerable': False, 'configurable': True} + + +def fill_in_props(obj, props, default_desc): + for prop, value in props.items(): + default_desc['value'] = Js(value) + obj.define_own_property(prop, default_desc) + + +class PyJsError(PyJs): + Class = 'Error' + extensible = True + + def __init__(self, message=None, prototype=None): + self.prototype = prototype + self.own = {} + if message is not None: + self.put('message', Js(message).to_string()) + self.own['message']['enumerable'] = False + + +ErrorPrototype = PyJsError(Js(''), ObjectPrototype) + + +@Js +def Error(message): + return PyJsError(None if message.is_undefined() else message, + ErrorPrototype) + + +Error.create = Error +err = {'name': 'Error', 'constructor': Error} +fill_in_props(ErrorPrototype, err, default_attrs) +Error.define_own_property( + 'prototype', { + 'value': ErrorPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + + +def define_error_type(name): + TypeErrorPrototype = PyJsError(None, ErrorPrototype) + + @Js + def TypeError(message): + return PyJsError(None if message.is_undefined() else message, + TypeErrorPrototype) + + err = {'name': name, 'constructor': TypeError} + fill_in_props(TypeErrorPrototype, err, default_attrs) + TypeError.define_own_property( + 'prototype', { + 'value': TypeErrorPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + ERRORS[name] = TypeError + + +ERRORS = {'Error': Error} +ERROR_NAMES = ['Eval', 'Type', 'Range', 'Reference', 'Syntax', 'URI'] + +for e in ERROR_NAMES: + define_error_type(e + 'Error') + +############################################################################## +# Import and fill prototypes here. + + +#this works only for data properties +def fill_prototype(prototype, Class, attrs, constructor=False): + for i in dir(Class): + e = getattr(Class, i) + if six.PY2: + if hasattr(e, '__func__'): + temp = PyJsFunction(e.__func__, FunctionPrototype) + attrs = dict((k, v) for k, v in attrs.iteritems()) + attrs['value'] = temp + prototype.define_own_property(i, attrs) + else: + if hasattr(e, '__call__') and not i.startswith('__'): + temp = PyJsFunction(e, FunctionPrototype) + attrs = dict((k, v) for k, v in attrs.items()) + attrs['value'] = temp + prototype.define_own_property(i, attrs) + if constructor: + attrs['value'] = constructor + prototype.define_own_property('constructor', attrs) + + +PyJs.undefined = undefined +PyJs.Js = staticmethod(Js) + +from .prototypes import jsfunction, jsobject, jsnumber, jsstring, jsboolean, jsarray, jsregexp, jserror, jsarraybuffer, jstypedarray + +#Object proto +fill_prototype(ObjectPrototype, jsobject.ObjectPrototype, default_attrs) + + +#Define __proto__ accessor (this cant be done by fill_prototype since) +@Js +def __proto__(): + return this.prototype if this.prototype is not None else null + + +getter = __proto__ + + +@Js +def __proto__(val): + if val.is_object(): + this.prototype = val + + +setter = __proto__ +ObjectPrototype.define_own_property('__proto__', { + 'set': setter, + 'get': getter, + 'enumerable': False, + 'configurable': True +}) + +#Function proto +fill_prototype(FunctionPrototype, jsfunction.FunctionPrototype, default_attrs) +#Number proto +fill_prototype(NumberPrototype, jsnumber.NumberPrototype, default_attrs) +#String proto +fill_prototype(StringPrototype, jsstring.StringPrototype, default_attrs) +#Boolean proto +fill_prototype(BooleanPrototype, jsboolean.BooleanPrototype, default_attrs) +#Array proto +fill_prototype(ArrayPrototype, jsarray.ArrayPrototype, default_attrs) +# ArrayBuffer proto +fill_prototype(ArrayBufferPrototype, jsarraybuffer.ArrayBufferPrototype, + default_attrs) +# Int8Array proto +fill_prototype(Int8ArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +# Uint8Array proto +fill_prototype(Uint8ArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +# Uint8ClampedArray proto +fill_prototype(Uint8ClampedArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +# Int16Array proto +fill_prototype(Int16ArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +# Uint16Array proto +fill_prototype(Uint16ArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +# Int32Array proto +fill_prototype(Int32ArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +# Uint32Array proto +fill_prototype(Uint32ArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +# Float32Array proto +fill_prototype(Float32ArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +# Float64Array proto +fill_prototype(Float64ArrayPrototype, jstypedarray.TypedArrayPrototype, + default_attrs) +#Error proto +fill_prototype(ErrorPrototype, jserror.ErrorPrototype, default_attrs) +#RegExp proto +fill_prototype(RegExpPrototype, jsregexp.RegExpPrototype, default_attrs) +# add exec to regexpfunction (cant add it automatically because of its name :( +RegExpPrototype.own['exec'] = RegExpPrototype.own['exec2'] +del RegExpPrototype.own['exec2'] + +######################################################################### +# Constructors + + +# String +@Js +def String(st): + if not len(arguments): + return Js('') + return arguments[0].to_string() + + +@Js +def string_constructor(): + temp = PyJsObject(prototype=StringPrototype) + temp.Class = 'String' + #temp.TYPE = 'String' + if not len(arguments): + temp.value = '' + else: + temp.value = arguments[0].to_string().value + for i, ch in enumerate(temp.value): # this will make things long... + temp.own[str(i)] = { + 'value': Js(ch), + 'writable': False, + 'enumerable': True, + 'configurable': True + } + temp.own['length'] = { + 'value': Js(len(temp.value)), + 'writable': False, + 'enumerable': False, + 'configurable': False + } + return temp + + +String.create = string_constructor + +# RegExp +REG_EXP_FLAGS = ('g', 'i', 'm') + + +@Js +def RegExp(pattern, flags): + if pattern.Class == 'RegExp': + if not flags.is_undefined(): + raise MakeError( + 'TypeError', + 'Cannot supply flags when constructing one RegExp from another' + ) + # return unchanged + return pattern + #pattern is not a regexp + if pattern.is_undefined(): + pattern = '' + else: + pattern = pattern.to_string().value + # try: + # pattern = REGEXP_CONVERTER._unescape_string(pattern.to_string().value) + # except: + # raise MakeError('SyntaxError', 'Invalid regexp') + flags = flags.to_string().value if not flags.is_undefined() else '' + for flag in flags: + if flag not in REG_EXP_FLAGS: + raise MakeError( + 'SyntaxError', + 'Invalid flags supplied to RegExp constructor "%s"' % flag) + if len(set(flags)) != len(flags): + raise MakeError( + 'SyntaxError', + 'Invalid flags supplied to RegExp constructor "%s"' % flags) + pattern = '/%s/' % (pattern if pattern else '(?:)') + flags + return JsRegExp(pattern) + + +RegExp.create = RegExp +PyJs.RegExp = RegExp + +# Number + + +@Js +def Number(): + if len(arguments): + return arguments[0].to_number() + else: + return Js(0) + + +@Js +def number_constructor(): + temp = PyJsObject(prototype=NumberPrototype) + temp.Class = 'Number' + #temp.TYPE = 'Number' + if len(arguments): + temp.value = arguments[0].to_number().value + else: + temp.value = 0 + return temp + + +Number.create = number_constructor + +# Boolean + + +@Js +def Boolean(value): + return value.to_boolean() + + +@Js +def boolean_constructor(value): + temp = PyJsObject(prototype=BooleanPrototype) + temp.Class = 'Boolean' + #temp.TYPE = 'Boolean' + temp.value = value.to_boolean().value + return temp + + +Boolean.create = boolean_constructor + +############################################################################## + + +def appengine(code): + try: + return translator.translate_js(code.decode('utf-8')) + except: + return traceback.format_exc() + + +builtins = ('true', 'false', 'null', 'undefined', 'Infinity', 'NaN') + +scope = dict(zip(builtins, [eval(e) for e in builtins])) + +JS_BUILTINS = dict((k, v) for k, v in scope.items()) + +# Fill in NUM_BANK +for e in xrange(-2**10, 2**14): + NUM_BANK[e] = Js(e) + +if __name__ == '__main__': + print(ObjectPrototype.get('toString').callprop('call')) + print(FunctionPrototype.own) + a = null - Js(49404) + x = a.put('ser', Js('der')) + print(Js(0) or Js('p') and Js(4.0000000000050000001)) + FunctionPrototype.put('Chuj', Js(409)) + for e in FunctionPrototype: + print('Obk', e.get('__proto__').get('__proto__').get('__proto__'), e) + import code + s = Js(4) + b = Js(6) + + s2 = Js(4) + o = ObjectPrototype + o.put('x', Js(100)) + var = Scope(scope) + e = code.InteractiveConsole(globals()) + #e.raw_input = interactor + e.interact() diff --git a/libs/js2py/constructors/__init__.py b/libs/js2py/constructors/__init__.py new file mode 100644 index 000000000..4bf956237 --- /dev/null +++ b/libs/js2py/constructors/__init__.py @@ -0,0 +1 @@ +__author__ = 'Piotr Dabkowski' \ No newline at end of file diff --git a/libs/js2py/constructors/jsarray.py b/libs/js2py/constructors/jsarray.py new file mode 100644 index 000000000..1550589d7 --- /dev/null +++ b/libs/js2py/constructors/jsarray.py @@ -0,0 +1,48 @@ +from ..base import * + + +@Js +def Array(): + if len(arguments) == 0 or len(arguments) > 1: + return arguments.to_list() + a = arguments[0] + if isinstance(a, PyJsNumber): + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js([]) + temp.put('length', a) + return temp + return [a] + + +Array.create = Array +Array.own['length']['value'] = Js(1) + + +@Js +def isArray(arg): + return arg.Class == 'Array' + + +Array.define_own_property('isArray', { + 'value': isArray, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + +Array.define_own_property( + 'prototype', { + 'value': ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +ArrayPrototype.define_own_property('constructor', { + 'value': Array, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) diff --git a/libs/js2py/constructors/jsarraybuffer.py b/libs/js2py/constructors/jsarraybuffer.py new file mode 100644 index 000000000..6da71aab3 --- /dev/null +++ b/libs/js2py/constructors/jsarraybuffer.py @@ -0,0 +1,41 @@ +# this is based on jsarray.py + +# todo check everything :) + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def ArrayBuffer(): + a = arguments[0] + if isinstance(a, PyJsNumber): + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(bytearray([0] * length)) + return temp + return Js(bytearray([0])) + + +ArrayBuffer.create = ArrayBuffer +ArrayBuffer.own['length']['value'] = Js(None) + +ArrayBuffer.define_own_property( + 'prototype', { + 'value': ArrayBufferPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +ArrayBufferPrototype.define_own_property( + 'constructor', { + 'value': ArrayBuffer, + 'enumerable': False, + 'writable': False, + 'configurable': True + }) diff --git a/libs/js2py/constructors/jsboolean.py b/libs/js2py/constructors/jsboolean.py new file mode 100644 index 000000000..743b110d6 --- /dev/null +++ b/libs/js2py/constructors/jsboolean.py @@ -0,0 +1,16 @@ +from ..base import * + +BooleanPrototype.define_own_property('constructor', { + 'value': Boolean, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + +Boolean.define_own_property( + 'prototype', { + 'value': BooleanPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) diff --git a/libs/js2py/constructors/jsdate.py b/libs/js2py/constructors/jsdate.py new file mode 100644 index 000000000..98de64319 --- /dev/null +++ b/libs/js2py/constructors/jsdate.py @@ -0,0 +1,405 @@ +from ..base import * +from .time_helpers import * + +TZ_OFFSET = (time.altzone // 3600) +ABS_OFFSET = abs(TZ_OFFSET) +TZ_NAME = time.tzname[1] +ISO_FORMAT = '%s-%s-%sT%s:%s:%s.%sZ' + + +@Js +def Date(year, month, date, hours, minutes, seconds, ms): + return now().to_string() + + +Date.Class = 'Date' + + +def now(): + return PyJsDate(int(time.time() * 1000), prototype=DatePrototype) + + +@Js +def UTC(year, month, date, hours, minutes, seconds, ms): # todo complete this + args = arguments + y = args[0].to_number() + m = args[1].to_number() + l = len(args) + dt = args[2].to_number() if l > 2 else Js(1) + h = args[3].to_number() if l > 3 else Js(0) + mi = args[4].to_number() if l > 4 else Js(0) + sec = args[5].to_number() if l > 5 else Js(0) + mili = args[6].to_number() if l > 6 else Js(0) + if not y.is_nan() and 0 <= y.value <= 99: + y = y + Js(1900) + t = TimeClip(MakeDate(MakeDay(y, m, dt), MakeTime(h, mi, sec, mili))) + return PyJsDate(t, prototype=DatePrototype) + + +@Js +def parse(string): + return PyJsDate( + TimeClip(parse_date(string.to_string().value)), + prototype=DatePrototype) + + +Date.define_own_property('now', { + 'value': Js(now), + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + +Date.define_own_property('parse', { + 'value': parse, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + +Date.define_own_property('UTC', { + 'value': UTC, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + + +class PyJsDate(PyJs): + Class = 'Date' + extensible = True + + def __init__(self, value, prototype=None): + self.value = value + self.own = {} + self.prototype = prototype + + # todo fix this problematic datetime part + def to_local_dt(self): + return datetime.datetime.utcfromtimestamp( + UTCToLocal(self.value) // 1000) + + def to_utc_dt(self): + return datetime.datetime.utcfromtimestamp(self.value // 1000) + + def local_strftime(self, pattern): + if self.value is NaN: + return 'Invalid Date' + try: + dt = self.to_local_dt() + except: + raise MakeError( + 'TypeError', + 'unsupported date range. Will fix in future versions') + try: + return dt.strftime(pattern) + except: + raise MakeError( + 'TypeError', + 'Could not generate date string from this date (limitations of python.datetime)' + ) + + def utc_strftime(self, pattern): + if self.value is NaN: + return 'Invalid Date' + try: + dt = self.to_utc_dt() + except: + raise MakeError( + 'TypeError', + 'unsupported date range. Will fix in future versions') + try: + return dt.strftime(pattern) + except: + raise MakeError( + 'TypeError', + 'Could not generate date string from this date (limitations of python.datetime)' + ) + + +def parse_date(py_string): # todo support all date string formats + try: + try: + dt = datetime.datetime.strptime(py_string, "%Y-%m-%dT%H:%M:%S.%fZ") + except: + dt = datetime.datetime.strptime(py_string, "%Y-%m-%dT%H:%M:%SZ") + return MakeDate( + MakeDay(Js(dt.year), Js(dt.month - 1), Js(dt.day)), + MakeTime( + Js(dt.hour), Js(dt.minute), Js(dt.second), + Js(dt.microsecond // 1000))) + except: + raise MakeError( + 'TypeError', + 'Could not parse date %s - unsupported date format. Currently only supported format is RFC3339 utc. Sorry!' + % py_string) + + +def date_constructor(*args): + if len(args) >= 2: + return date_constructor2(*args) + elif len(args) == 1: + return date_constructor1(args[0]) + else: + return date_constructor0() + + +def date_constructor0(): + return now() + + +def date_constructor1(value): + v = value.to_primitive() + if v._type() == 'String': + v = parse_date(v.value) + else: + v = v.to_int() + return PyJsDate(TimeClip(v), prototype=DatePrototype) + + +def date_constructor2(*args): + y = args[0].to_number() + m = args[1].to_number() + l = len(args) + dt = args[2].to_number() if l > 2 else Js(1) + h = args[3].to_number() if l > 3 else Js(0) + mi = args[4].to_number() if l > 4 else Js(0) + sec = args[5].to_number() if l > 5 else Js(0) + mili = args[6].to_number() if l > 6 else Js(0) + if not y.is_nan() and 0 <= y.value <= 99: + y = y + Js(1900) + t = TimeClip( + LocalToUTC(MakeDate(MakeDay(y, m, dt), MakeTime(h, mi, sec, mili)))) + return PyJsDate(t, prototype=DatePrototype) + + +Date.create = date_constructor + +DatePrototype = PyJsDate(float('nan'), prototype=ObjectPrototype) + + +def check_date(obj): + if obj.Class != 'Date': + raise MakeError('TypeError', 'this is not a Date object') + + +class DateProto: + def toString(): + check_date(this) + if this.value is NaN: + return 'Invalid Date' + offset = (UTCToLocal(this.value) - this.value) // msPerHour + return this.local_strftime( + '%a %b %d %Y %H:%M:%S GMT') + '%s00 (%s)' % (pad( + offset, 2, True), GetTimeZoneName(this.value)) + + def toDateString(): + check_date(this) + return this.local_strftime('%d %B %Y') + + def toTimeString(): + check_date(this) + return this.local_strftime('%H:%M:%S') + + def toLocaleString(): + check_date(this) + return this.local_strftime('%d %B %Y %H:%M:%S') + + def toLocaleDateString(): + check_date(this) + return this.local_strftime('%d %B %Y') + + def toLocaleTimeString(): + check_date(this) + return this.local_strftime('%H:%M:%S') + + def valueOf(): + check_date(this) + return this.value + + def getTime(): + check_date(this) + return this.value + + def getFullYear(): + check_date(this) + if this.value is NaN: + return NaN + return YearFromTime(UTCToLocal(this.value)) + + def getUTCFullYear(): + check_date(this) + if this.value is NaN: + return NaN + return YearFromTime(this.value) + + def getMonth(): + check_date(this) + if this.value is NaN: + return NaN + return MonthFromTime(UTCToLocal(this.value)) + + def getDate(): + check_date(this) + if this.value is NaN: + return NaN + return DateFromTime(UTCToLocal(this.value)) + + def getUTCMonth(): + check_date(this) + if this.value is NaN: + return NaN + return MonthFromTime(this.value) + + def getUTCDate(): + check_date(this) + if this.value is NaN: + return NaN + return DateFromTime(this.value) + + def getDay(): + check_date(this) + if this.value is NaN: + return NaN + return WeekDay(UTCToLocal(this.value)) + + def getUTCDay(): + check_date(this) + if this.value is NaN: + return NaN + return WeekDay(this.value) + + def getHours(): + check_date(this) + if this.value is NaN: + return NaN + return HourFromTime(UTCToLocal(this.value)) + + def getUTCHours(): + check_date(this) + if this.value is NaN: + return NaN + return HourFromTime(this.value) + + def getMinutes(): + check_date(this) + if this.value is NaN: + return NaN + return MinFromTime(UTCToLocal(this.value)) + + def getUTCMinutes(): + check_date(this) + if this.value is NaN: + return NaN + return MinFromTime(this.value) + + def getSeconds(): + check_date(this) + if this.value is NaN: + return NaN + return SecFromTime(UTCToLocal(this.value)) + + def getUTCSeconds(): + check_date(this) + if this.value is NaN: + return NaN + return SecFromTime(this.value) + + def getMilliseconds(): + check_date(this) + if this.value is NaN: + return NaN + return msFromTime(UTCToLocal(this.value)) + + def getUTCMilliseconds(): + check_date(this) + if this.value is NaN: + return NaN + return msFromTime(this.value) + + def getTimezoneOffset(): + check_date(this) + if this.value is NaN: + return NaN + return (this.value - UTCToLocal(this.value)) // 60000 + + def setTime(time): + check_date(this) + this.value = TimeClip(time.to_number().to_int()) + return this.value + + def setMilliseconds(ms): + check_date(this) + t = UTCToLocal(this.value) + tim = MakeTime( + HourFromTime(t), MinFromTime(t), SecFromTime(t), ms.to_int()) + u = TimeClip(LocalToUTC(MakeDate(Day(t), tim))) + this.value = u + return u + + def setUTCMilliseconds(ms): + check_date(this) + t = this.value + tim = MakeTime( + HourFromTime(t), MinFromTime(t), SecFromTime(t), ms.to_int()) + u = TimeClip(MakeDate(Day(t), tim)) + this.value = u + return u + + # todo Complete all setters! + + def toUTCString(): + check_date(this) + return this.utc_strftime('%d %B %Y %H:%M:%S') + + def toISOString(): + check_date(this) + t = this.value + year = YearFromTime(t) + month, day, hour, minute, second, milli = pad( + MonthFromTime(t) + 1), pad(DateFromTime(t)), pad( + HourFromTime(t)), pad(MinFromTime(t)), pad( + SecFromTime(t)), pad(msFromTime(t)) + return ISO_FORMAT % (unicode(year) if 0 <= year <= 9999 else pad( + year, 6, True), month, day, hour, minute, second, milli) + + def toJSON(key): + o = this.to_object() + tv = o.to_primitive('Number') + if tv.Class == 'Number' and not tv.is_finite(): + return this.null + toISO = o.get('toISOString') + if not toISO.is_callable(): + raise this.MakeError('TypeError', 'toISOString is not callable') + return toISO.call(o, ()) + + +def pad(num, n=2, sign=False): + '''returns n digit string representation of the num''' + s = unicode(abs(num)) + if len(s) < n: + s = '0' * (n - len(s)) + s + if not sign: + return s + if num >= 0: + return '+' + s + else: + return '-' + s + + +fill_prototype(DatePrototype, DateProto, default_attrs) + +Date.define_own_property( + 'prototype', { + 'value': DatePrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +DatePrototype.define_own_property('constructor', { + 'value': Date, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) diff --git a/libs/js2py/constructors/jsfloat32array.py b/libs/js2py/constructors/jsfloat32array.py new file mode 100644 index 000000000..3a1219167 --- /dev/null +++ b/libs/js2py/constructors/jsfloat32array.py @@ -0,0 +1,87 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Float32Array(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.float32)) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.float32)) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + temp = Js(numpy.array(array, dtype=numpy.float32)) + temp.put('length', Js(len(array))) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(a.obj) % 4 != 0: + raise MakeError( + 'RangeError', + 'Byte length of Float32Array should be a multiple of 4') + if len(arguments) > 1: + offset = int(arguments[1].value) + if offset % 4 != 0: + raise MakeError( + 'RangeError', + 'Start offset of Float32Array should be a multiple of 4') + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int((len(a.obj) - offset) / 4) + array = numpy.frombuffer( + a.obj, dtype=numpy.float32, count=length, offset=offset) + temp = Js(array) + temp.put('length', Js(length)) + temp.buff = array + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.float32)) + temp.put('length', Js(0)) + return temp + + +Float32Array.create = Float32Array +Float32Array.own['length']['value'] = Js(3) + +Float32Array.define_own_property( + 'prototype', { + 'value': Float32ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Float32ArrayPrototype.define_own_property( + 'constructor', { + 'value': Float32Array, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Float32ArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(4), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/jsfloat64array.py b/libs/js2py/constructors/jsfloat64array.py new file mode 100644 index 000000000..9ea5f052a --- /dev/null +++ b/libs/js2py/constructors/jsfloat64array.py @@ -0,0 +1,87 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Float64Array(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.float64)) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.float64)) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + temp = Js(numpy.array(array, dtype=numpy.float64)) + temp.put('length', Js(len(array))) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(a.obj) % 8 != 0: + raise MakeError( + 'RangeError', + 'Byte length of Float64Array should be a multiple of 8') + if len(arguments) > 1: + offset = int(arguments[1].value) + if offset % 8 != 0: + raise MakeError( + 'RangeError', + 'Start offset of Float64Array should be a multiple of 8') + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int((len(a.obj) - offset) / 8) + array = numpy.frombuffer( + a.obj, dtype=numpy.float64, count=length, offset=offset) + temp = Js(array) + temp.put('length', Js(length)) + temp.buff = array + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.float64)) + temp.put('length', Js(0)) + return temp + + +Float64Array.create = Float64Array +Float64Array.own['length']['value'] = Js(3) + +Float64Array.define_own_property( + 'prototype', { + 'value': Float64ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Float64ArrayPrototype.define_own_property( + 'constructor', { + 'value': Float64Array, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Float64ArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(8), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/jsfunction.py b/libs/js2py/constructors/jsfunction.py new file mode 100644 index 000000000..c4ace2c39 --- /dev/null +++ b/libs/js2py/constructors/jsfunction.py @@ -0,0 +1,52 @@ +from ..base import * +try: + from ..translators.translator import translate_js +except: + pass + + +@Js +def Function(): + # convert arguments to python list of strings + a = [e.to_string().value for e in arguments.to_list()] + body = ';' + args = () + if len(a): + body = '%s;' % a[-1] + args = a[:-1] + # translate this function to js inline function + js_func = '(function (%s) {%s})' % (','.join(args), body) + # now translate js inline to python function + py_func = translate_js(js_func, '') + # add set func scope to global scope + # a but messy solution but works :) + globals()['var'] = PyJs.GlobalObject + # define py function and return it + temp = executor(py_func, globals()) + temp.source = '{%s}' % body + temp.func_name = 'anonymous' + return temp + + +def executor(f, glob): + exec (f, globals()) + return globals()['PyJs_anonymous_0_'] + + +#new statement simply calls Function +Function.create = Function + +#set constructor property inside FunctionPrototype + +fill_in_props(FunctionPrototype, {'constructor': Function}, default_attrs) + +#attach prototype to Function constructor +Function.define_own_property( + 'prototype', { + 'value': FunctionPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) +#Fix Function length (its 0 and should be 1) +Function.own['length']['value'] = Js(1) diff --git a/libs/js2py/constructors/jsint16array.py b/libs/js2py/constructors/jsint16array.py new file mode 100644 index 000000000..c2864105d --- /dev/null +++ b/libs/js2py/constructors/jsint16array.py @@ -0,0 +1,87 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Int16Array(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.int16)) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.int16)) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + temp = Js(numpy.array(array, dtype=numpy.int16)) + temp.put('length', Js(len(array))) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(a.obj) % 2 != 0: + raise MakeError( + 'RangeError', + 'Byte length of Int16Array should be a multiple of 2') + if len(arguments) > 1: + offset = int(arguments[1].value) + if offset % 2 != 0: + raise MakeError( + 'RangeError', + 'Start offset of Int16Array should be a multiple of 2') + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int((len(a.obj) - offset) / 2) + array = numpy.frombuffer( + a.obj, dtype=numpy.int16, count=length, offset=offset) + temp = Js(array) + temp.put('length', Js(length)) + temp.buff = array + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.int16)) + temp.put('length', Js(0)) + return temp + + +Int16Array.create = Int16Array +Int16Array.own['length']['value'] = Js(3) + +Int16Array.define_own_property( + 'prototype', { + 'value': Int16ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Int16ArrayPrototype.define_own_property( + 'constructor', { + 'value': Int16Array, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Int16ArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(2), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/jsint32array.py b/libs/js2py/constructors/jsint32array.py new file mode 100644 index 000000000..2e8c4e846 --- /dev/null +++ b/libs/js2py/constructors/jsint32array.py @@ -0,0 +1,87 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Int32Array(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.int32)) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.int32)) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + temp = Js(numpy.array(array, dtype=numpy.int32)) + temp.put('length', Js(len(array))) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(a.obj) % 4 != 0: + raise MakeError( + 'RangeError', + 'Byte length of Int32Array should be a multiple of 4') + if len(arguments) > 1: + offset = int(arguments[1].value) + if offset % 4 != 0: + raise MakeError( + 'RangeError', + 'Start offset of Int32Array should be a multiple of 4') + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int((len(a.obj) - offset) / 4) + array = numpy.frombuffer( + a.obj, dtype=numpy.int32, count=length, offset=offset) + temp = Js(array) + temp.put('length', Js(length)) + temp.buff = array + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.int32)) + temp.put('length', Js(0)) + return temp + + +Int32Array.create = Int32Array +Int32Array.own['length']['value'] = Js(3) + +Int32Array.define_own_property( + 'prototype', { + 'value': Int32ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Int32ArrayPrototype.define_own_property( + 'constructor', { + 'value': Int32Array, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Int32ArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(4), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/jsint8array.py b/libs/js2py/constructors/jsint8array.py new file mode 100644 index 000000000..3396afea0 --- /dev/null +++ b/libs/js2py/constructors/jsint8array.py @@ -0,0 +1,79 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Int8Array(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.int8)) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.int8)) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + temp = Js(numpy.array(array, dtype=numpy.int8)) + temp.put('length', Js(len(array))) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(arguments) > 1: + offset = int(arguments[1].value) + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int(len(a.obj) - offset) + array = numpy.frombuffer( + a.obj, dtype=numpy.int8, count=length, offset=offset) + temp = Js(array) + temp.put('length', Js(length)) + temp.buff = array + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.int8)) + temp.put('length', Js(0)) + return temp + + +Int8Array.create = Int8Array +Int8Array.own['length']['value'] = Js(3) + +Int8Array.define_own_property( + 'prototype', { + 'value': Int8ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Int8ArrayPrototype.define_own_property( + 'constructor', { + 'value': Int8Array, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Int8ArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(1), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/jsmath.py b/libs/js2py/constructors/jsmath.py new file mode 100644 index 000000000..06751a3b2 --- /dev/null +++ b/libs/js2py/constructors/jsmath.py @@ -0,0 +1,157 @@ +from ..base import * +import math +import random + +Math = PyJsObject(prototype=ObjectPrototype) +Math.Class = 'Math' + +CONSTANTS = { + 'E': 2.7182818284590452354, + 'LN10': 2.302585092994046, + 'LN2': 0.6931471805599453, + 'LOG2E': 1.4426950408889634, + 'LOG10E': 0.4342944819032518, + 'PI': 3.1415926535897932, + 'SQRT1_2': 0.7071067811865476, + 'SQRT2': 1.4142135623730951 +} + +for constant, value in CONSTANTS.items(): + Math.define_own_property( + constant, { + 'value': Js(value), + 'writable': False, + 'enumerable': False, + 'configurable': False + }) + + +class MathFunctions: + def abs(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return abs(a) + + def acos(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + try: + return math.acos(a) + except: + return NaN + + def asin(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + try: + return math.asin(a) + except: + return NaN + + def atan(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return math.atan(a) + + def atan2(y, x): + a = x.to_number().value + b = y.to_number().value + if a != a or b != b: # it must be a nan + return NaN + return math.atan2(b, a) + + def ceil(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return math.ceil(a) + + def floor(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return math.floor(a) + + def round(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return round(a) + + def sin(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return math.sin(a) + + def cos(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return math.cos(a) + + def tan(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return math.tan(a) + + def log(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + try: + return math.log(a) + except: + return NaN + + def exp(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + return math.exp(a) + + def pow(x, y): + a = x.to_number().value + b = y.to_number().value + if a != a or b != b: # it must be a nan + return NaN + try: + return a**b + except: + return NaN + + def sqrt(x): + a = x.to_number().value + if a != a: # it must be a nan + return NaN + try: + return a**0.5 + except: + return NaN + + def min(): + if not len(arguments): + return Infinity + lis = tuple(e.to_number().value for e in arguments.to_list()) + if any(e != e for e in lis): # we dont want NaNs + return NaN + return min(*lis) + + def max(): + if not len(arguments): + return -Infinity + lis = tuple(e.to_number().value for e in arguments.to_list()) + if any(e != e for e in lis): # we dont want NaNs + return NaN + return max(*lis) + + def random(): + return random.random() + + +fill_prototype(Math, MathFunctions, default_attrs) diff --git a/libs/js2py/constructors/jsnumber.py b/libs/js2py/constructors/jsnumber.py new file mode 100644 index 000000000..9ba7c7c79 --- /dev/null +++ b/libs/js2py/constructors/jsnumber.py @@ -0,0 +1,23 @@ +from ..base import * + +CONSTS = { + 'prototype': NumberPrototype, + 'MAX_VALUE': 1.7976931348623157e308, + 'MIN_VALUE': 5.0e-324, + 'NaN': NaN, + 'NEGATIVE_INFINITY': float('-inf'), + 'POSITIVE_INFINITY': float('inf') +} + +fill_in_props(Number, CONSTS, { + 'enumerable': False, + 'writable': False, + 'configurable': False +}) + +NumberPrototype.define_own_property('constructor', { + 'value': Number, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) diff --git a/libs/js2py/constructors/jsobject.py b/libs/js2py/constructors/jsobject.py new file mode 100644 index 000000000..c4e0ada39 --- /dev/null +++ b/libs/js2py/constructors/jsobject.py @@ -0,0 +1,198 @@ +from ..base import * +import six + +#todo Double check everything is OK + + +@Js +def Object(): + val = arguments.get('0') + if val.is_null() or val.is_undefined(): + return PyJsObject(prototype=ObjectPrototype) + return val.to_object() + + +@Js +def object_constructor(): + if len(arguments): + val = arguments.get('0') + if val.TYPE == 'Object': + #Implementation dependent, but my will simply return :) + return val + elif val.TYPE in ('Number', 'String', 'Boolean'): + return val.to_object() + return PyJsObject(prototype=ObjectPrototype) + + +Object.create = object_constructor +Object.own['length']['value'] = Js(1) + + +class ObjectMethods: + def getPrototypeOf(obj): + if not obj.is_object(): + raise MakeError('TypeError', + 'Object.getPrototypeOf called on non-object') + return null if obj.prototype is None else obj.prototype + + def getOwnPropertyDescriptor(obj, prop): + if not obj.is_object(): + raise MakeError( + 'TypeError', + 'Object.getOwnPropertyDescriptor called on non-object') + return obj.own.get( + prop.to_string(). + value) # will return undefined if we dont have this prop + + def getOwnPropertyNames(obj): + if not obj.is_object(): + raise MakeError( + 'TypeError', + 'Object.getOwnPropertyDescriptor called on non-object') + return obj.own.keys() + + def create(obj): + if not (obj.is_object() or obj.is_null()): + raise MakeError('TypeError', + 'Object prototype may only be an Object or null') + temp = PyJsObject(prototype=(None if obj.is_null() else obj)) + if len(arguments) > 1 and not arguments[1].is_undefined(): + if six.PY2: + ObjectMethods.defineProperties.__func__(temp, arguments[1]) + else: + ObjectMethods.defineProperties(temp, arguments[1]) + return temp + + def defineProperty(obj, prop, attrs): + if not obj.is_object(): + raise MakeError('TypeError', + 'Object.defineProperty called on non-object') + name = prop.to_string().value + if not obj.define_own_property(name, ToPropertyDescriptor(attrs)): + raise MakeError('TypeError', 'Cannot redefine property: %s' % name) + return obj + + def defineProperties(obj, properties): + if not obj.is_object(): + raise MakeError('TypeError', + 'Object.defineProperties called on non-object') + props = properties.to_object() + for name in props: + desc = ToPropertyDescriptor(props.get(name.value)) + if not obj.define_own_property(name.value, desc): + raise MakeError( + 'TypeError', + 'Failed to define own property: %s' % name.value) + return obj + + def seal(obj): + if not obj.is_object(): + raise MakeError('TypeError', 'Object.seal called on non-object') + for desc in obj.own.values(): + desc['configurable'] = False + obj.extensible = False + return obj + + def freeze(obj): + if not obj.is_object(): + raise MakeError('TypeError', 'Object.freeze called on non-object') + for desc in obj.own.values(): + desc['configurable'] = False + if is_data_descriptor(desc): + desc['writable'] = False + obj.extensible = False + return obj + + def preventExtensions(obj): + if not obj.is_object(): + raise MakeError('TypeError', + 'Object.preventExtensions on non-object') + obj.extensible = False + return obj + + def isSealed(obj): + if not obj.is_object(): + raise MakeError('TypeError', + 'Object.isSealed called on non-object') + if obj.extensible: + return False + for desc in obj.own.values(): + if desc['configurable']: + return False + return True + + def isFrozen(obj): + if not obj.is_object(): + raise MakeError('TypeError', + 'Object.isFrozen called on non-object') + if obj.extensible: + return False + for desc in obj.own.values(): + if desc['configurable']: + return False + if is_data_descriptor(desc) and desc['writable']: + return False + return True + + def isExtensible(obj): + if not obj.is_object(): + raise MakeError('TypeError', + 'Object.isExtensible called on non-object') + return obj.extensible + + def keys(obj): + if not obj.is_object(): + raise MakeError('TypeError', 'Object.keys called on non-object') + return [e for e, d in six.iteritems(obj.own) if d.get('enumerable')] + + +# add methods attached to Object constructor +fill_prototype(Object, ObjectMethods, default_attrs) +# add constructor to prototype +fill_in_props(ObjectPrototype, {'constructor': Object}, default_attrs) +# add prototype property to the constructor. +Object.define_own_property( + 'prototype', { + 'value': ObjectPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +# some utility functions: + + +def ToPropertyDescriptor(obj): # page 38 (50 absolute) + if obj.TYPE != 'Object': + raise MakeError('TypeError', + 'Can\'t convert non-object to property descriptor') + desc = {} + if obj.has_property('enumerable'): + desc['enumerable'] = obj.get('enumerable').to_boolean().value + if obj.has_property('configurable'): + desc['configurable'] = obj.get('configurable').to_boolean().value + if obj.has_property('value'): + desc['value'] = obj.get('value') + if obj.has_property('writable'): + desc['writable'] = obj.get('writable').to_boolean().value + if obj.has_property('get'): + cand = obj.get('get') + if not (cand.is_undefined() or cand.is_callable()): + raise MakeError( + 'TypeError', + 'Invalid getter (it has to be a function or undefined)') + desc['get'] = cand + if obj.has_property('set'): + cand = obj.get('set') + if not (cand.is_undefined() or cand.is_callable()): + raise MakeError( + 'TypeError', + 'Invalid setter (it has to be a function or undefined)') + desc['set'] = cand + if ('get' in desc or 'set' in desc) and ('value' in desc + or 'writable' in desc): + raise MakeError( + 'TypeError', + 'Invalid property. A property cannot both have accessors and be writable or have a value.' + ) + return desc diff --git a/libs/js2py/constructors/jsregexp.py b/libs/js2py/constructors/jsregexp.py new file mode 100644 index 000000000..2dfc25cb9 --- /dev/null +++ b/libs/js2py/constructors/jsregexp.py @@ -0,0 +1,16 @@ +from ..base import * + +RegExpPrototype.define_own_property('constructor', { + 'value': RegExp, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + +RegExp.define_own_property( + 'prototype', { + 'value': RegExpPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) diff --git a/libs/js2py/constructors/jsstring.py b/libs/js2py/constructors/jsstring.py new file mode 100644 index 000000000..0650d0f59 --- /dev/null +++ b/libs/js2py/constructors/jsstring.py @@ -0,0 +1,40 @@ +from ..base import * +# python 3 support +import six +if six.PY3: + unichr = chr + + +@Js +def fromCharCode(): + args = arguments.to_list() + res = u'' + for e in args: + res += unichr(e.to_uint16()) + return this.Js(res) + + +fromCharCode.own['length']['value'] = Js(1) + +String.define_own_property( + 'fromCharCode', { + 'value': fromCharCode, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +String.define_own_property( + 'prototype', { + 'value': StringPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +StringPrototype.define_own_property('constructor', { + 'value': String, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) diff --git a/libs/js2py/constructors/jsuint16array.py b/libs/js2py/constructors/jsuint16array.py new file mode 100644 index 000000000..a61be246d --- /dev/null +++ b/libs/js2py/constructors/jsuint16array.py @@ -0,0 +1,87 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Uint16Array(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.uint16)) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.uint16)) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + temp = Js(numpy.array(array, dtype=numpy.uint16)) + temp.put('length', Js(len(array))) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(a.obj) % 2 != 0: + raise MakeError( + 'RangeError', + 'Byte length of Uint16Array should be a multiple of 2') + if len(arguments) > 1: + offset = int(arguments[1].value) + if offset % 2 != 0: + raise MakeError( + 'RangeError', + 'Start offset of Uint16Array should be a multiple of 2') + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int((len(a.obj) - offset) / 2) + array = numpy.frombuffer( + a.obj, dtype=numpy.uint16, count=length, offset=offset) + temp = Js(array) + temp.put('length', Js(length)) + temp.buff = array + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.uint16)) + temp.put('length', Js(0)) + return temp + + +Uint16Array.create = Uint16Array +Uint16Array.own['length']['value'] = Js(3) + +Uint16Array.define_own_property( + 'prototype', { + 'value': Uint16ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Uint16ArrayPrototype.define_own_property( + 'constructor', { + 'value': Uint16Array, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Uint16ArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(2), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/jsuint32array.py b/libs/js2py/constructors/jsuint32array.py new file mode 100644 index 000000000..c6f57c94d --- /dev/null +++ b/libs/js2py/constructors/jsuint32array.py @@ -0,0 +1,95 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Uint32Array(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.uint32)) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.uint32)) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + if len(arguments) > 1: + offset = int(arguments[1].value) + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = len(array) - offset + temp = Js( + numpy.array(array[offset:offset + length], dtype=numpy.uint32)) + temp.put('length', Js(length)) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(a.obj) % 4 != 0: + raise MakeError( + 'RangeError', + 'Byte length of Uint32Array should be a multiple of 4') + if len(arguments) > 1: + offset = int(arguments[1].value) + if offset % 4 != 0: + raise MakeError( + 'RangeError', + 'Start offset of Uint32Array should be a multiple of 4') + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int((len(a.obj) - offset) / 4) + temp = Js( + numpy.frombuffer( + a.obj, dtype=numpy.uint32, count=length, offset=offset)) + temp.put('length', Js(length)) + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.uint32)) + temp.put('length', Js(0)) + return temp + + +Uint32Array.create = Uint32Array +Uint32Array.own['length']['value'] = Js(3) + +Uint32Array.define_own_property( + 'prototype', { + 'value': Uint32ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Uint32ArrayPrototype.define_own_property( + 'constructor', { + 'value': Uint32Array, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Uint32ArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(4), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/jsuint8array.py b/libs/js2py/constructors/jsuint8array.py new file mode 100644 index 000000000..4b2199da2 --- /dev/null +++ b/libs/js2py/constructors/jsuint8array.py @@ -0,0 +1,79 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Uint8Array(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.uint8)) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.uint8)) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + temp = Js(numpy.array(array, dtype=numpy.uint8)) + temp.put('length', Js(len(array))) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(arguments) > 1: + offset = int(arguments[1].value) + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int(len(a.obj) - offset) + array = numpy.frombuffer( + a.obj, dtype=numpy.uint8, count=length, offset=offset) + temp = Js(array) + temp.put('length', Js(length)) + temp.buff = array + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.uint8)) + temp.put('length', Js(0)) + return temp + + +Uint8Array.create = Uint8Array +Uint8Array.own['length']['value'] = Js(3) + +Uint8Array.define_own_property( + 'prototype', { + 'value': Uint8ArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Uint8ArrayPrototype.define_own_property( + 'constructor', { + 'value': Uint8Array, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Uint8ArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(1), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/jsuint8clampedarray.py b/libs/js2py/constructors/jsuint8clampedarray.py new file mode 100644 index 000000000..7b5e350b2 --- /dev/null +++ b/libs/js2py/constructors/jsuint8clampedarray.py @@ -0,0 +1,79 @@ +# this is based on jsarray.py + +from ..base import * +try: + import numpy +except: + pass + + +@Js +def Uint8ClampedArray(): + TypedArray = (PyJsInt8Array, PyJsUint8Array, PyJsUint8ClampedArray, + PyJsInt16Array, PyJsUint16Array, PyJsInt32Array, + PyJsUint32Array, PyJsFloat32Array, PyJsFloat64Array) + a = arguments[0] + if isinstance(a, PyJsNumber): # length + length = a.to_uint32() + if length != a.value: + raise MakeError('RangeError', 'Invalid array length') + temp = Js(numpy.full(length, 0, dtype=numpy.uint8), Clamped=True) + temp.put('length', a) + return temp + elif isinstance(a, PyJsString): # object (string) + temp = Js(numpy.array(list(a.value), dtype=numpy.uint8), Clamped=True) + temp.put('length', Js(len(list(a.value)))) + return temp + elif isinstance(a, PyJsArray) or isinstance(a, TypedArray) or isinstance( + a, PyJsArrayBuffer): # object (Array, TypedArray) + array = a.to_list() + array = [(int(item.value) if item.value != None else 0) + for item in array] + temp = Js(numpy.array(array, dtype=numpy.uint8), Clamped=True) + temp.put('length', Js(len(array))) + return temp + elif isinstance(a, PyObjectWrapper): # object (ArrayBuffer, etc) + if len(arguments) > 1: + offset = int(arguments[1].value) + else: + offset = 0 + if len(arguments) > 2: + length = int(arguments[2].value) + else: + length = int(len(a.obj) - offset) + array = numpy.frombuffer( + a.obj, dtype=numpy.uint8, count=length, offset=offset) + temp = Js(array, Clamped=True) + temp.put('length', Js(length)) + temp.buff = array + return temp + temp = Js(numpy.full(0, 0, dtype=numpy.uint8), Clamped=True) + temp.put('length', Js(0)) + return temp + + +Uint8ClampedArray.create = Uint8ClampedArray +Uint8ClampedArray.own['length']['value'] = Js(3) + +Uint8ClampedArray.define_own_property( + 'prototype', { + 'value': Uint8ClampedArrayPrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +Uint8ClampedArrayPrototype.define_own_property( + 'constructor', { + 'value': Uint8ClampedArray, + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +Uint8ClampedArrayPrototype.define_own_property('BYTES_PER_ELEMENT', { + 'value': Js(1), + 'enumerable': False, + 'writable': False, + 'configurable': False +}) diff --git a/libs/js2py/constructors/time_helpers.py b/libs/js2py/constructors/time_helpers.py new file mode 100644 index 000000000..a744d8cac --- /dev/null +++ b/libs/js2py/constructors/time_helpers.py @@ -0,0 +1,207 @@ +# NOTE: t must be INT!!! +import time +import datetime +import warnings + +try: + from tzlocal import get_localzone + LOCAL_ZONE = get_localzone() +except: # except all problems... + warnings.warn( + 'Please install or fix tzlocal library (pip install tzlocal) in order to make Date object work better. Otherwise I will assume DST is in effect all the time' + ) + + class LOCAL_ZONE: + @staticmethod + def dst(*args): + return 1 + + +from js2py.base import MakeError +CUM = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365) +msPerDay = 86400000 +msPerYear = int(86400000 * 365.242) +msPerSecond = 1000 +msPerMinute = 60000 +msPerHour = 3600000 +HoursPerDay = 24 +MinutesPerHour = 60 +SecondsPerMinute = 60 +NaN = float('nan') +LocalTZA = -time.timezone * msPerSecond + + +def DaylightSavingTA(t): + if t is NaN: + return t + try: + return int( + LOCAL_ZONE.dst(datetime.datetime.utcfromtimestamp( + t // 1000)).seconds) * 1000 + except: + warnings.warn( + 'Invalid datetime date, assumed DST time, may be inaccurate...', + Warning) + return 1 + #raise MakeError('TypeError', 'date not supported by python.datetime. I will solve it in future versions') + + +def GetTimeZoneName(t): + return time.tzname[DaylightSavingTA(t) > 0] + + +def LocalToUTC(t): + return t - LocalTZA - DaylightSavingTA(t - LocalTZA) + + +def UTCToLocal(t): + return t + LocalTZA + DaylightSavingTA(t) + + +def Day(t): + return t // 86400000 + + +def TimeWithinDay(t): + return t % 86400000 + + +def DaysInYear(y): + if y % 4: + return 365 + elif y % 100: + return 366 + elif y % 400: + return 365 + else: + return 366 + + +def DayFromYear(y): + return 365 * (y - 1970) + (y - 1969) // 4 - (y - 1901) // 100 + ( + y - 1601) // 400 + + +def TimeFromYear(y): + return 86400000 * DayFromYear(y) + + +def YearFromTime(t): + guess = 1970 - t // 31556908800 # msPerYear + gt = TimeFromYear(guess) + if gt <= t: + while gt <= t: + guess += 1 + gt = TimeFromYear(guess) + return guess - 1 + else: + while gt > t: + guess -= 1 + gt = TimeFromYear(guess) + return guess + + +def DayWithinYear(t): + return Day(t) - DayFromYear(YearFromTime(t)) + + +def InLeapYear(t): + y = YearFromTime(t) + if y % 4: + return 0 + elif y % 100: + return 1 + elif y % 400: + return 0 + else: + return 1 + + +def MonthFromTime(t): + day = DayWithinYear(t) + leap = InLeapYear(t) + if day < 31: + return 0 + day -= leap + if day < 59: + return 1 + elif day < 90: + return 2 + elif day < 120: + return 3 + elif day < 151: + return 4 + elif day < 181: + return 5 + elif day < 212: + return 6 + elif day < 243: + return 7 + elif day < 273: + return 8 + elif day < 304: + return 9 + elif day < 334: + return 10 + else: + return 11 + + +def DateFromTime(t): + mon = MonthFromTime(t) + day = DayWithinYear(t) + return day - CUM[mon] - (1 if InLeapYear(t) and mon >= 2 else 0) + 1 + + +def WeekDay(t): + # 0 == sunday + return (Day(t) + 4) % 7 + + +def msFromTime(t): + return t % 1000 + + +def SecFromTime(t): + return (t // 1000) % 60 + + +def MinFromTime(t): + return (t // 60000) % 60 + + +def HourFromTime(t): + return (t // 3600000) % 24 + + +def MakeTime(hour, Min, sec, ms): + # takes PyJs objects and returns t + if not (hour.is_finite() and Min.is_finite() and sec.is_finite() + and ms.is_finite()): + return NaN + h, m, s, milli = hour.to_int(), Min.to_int(), sec.to_int(), ms.to_int() + return h * 3600000 + m * 60000 + s * 1000 + milli + + +def MakeDay(year, month, date): + # takes PyJs objects and returns t + if not (year.is_finite() and month.is_finite() and date.is_finite()): + return NaN + y, m, dt = year.to_int(), month.to_int(), date.to_int() + y += m // 12 + mn = m % 12 + d = DayFromYear(y) + CUM[mn] + dt - 1 + (1 if DaysInYear(y) == 366 + and mn >= 2 else 0) + return d # ms per day + + +def MakeDate(day, time): + return 86400000 * day + time + + +def TimeClip(t): + if t != t or abs(t) == float('inf'): + return NaN + if abs(t) > 8.64 * 10**15: + return NaN + return int(t) diff --git a/libs/js2py/es6/__init__.py b/libs/js2py/es6/__init__.py new file mode 100644 index 000000000..4a58d3f0b --- /dev/null +++ b/libs/js2py/es6/__init__.py @@ -0,0 +1,41 @@ +INITIALISED = False +babel = None +babelPresetEs2015 = None + + +def js6_to_js5(code): + global INITIALISED, babel, babelPresetEs2015 + if not INITIALISED: + import signal, warnings, time + warnings.warn( + '\nImporting babel.py for the first time - this can take some time. \nPlease note that currently Javascript 6 in Js2Py is unstable and slow. Use only for tiny scripts!' + ) + + from .babel import babel as _babel + babel = _babel.Object.babel + babelPresetEs2015 = _babel.Object.babelPresetEs2015 + + # very weird hack. Somehow this helps babel to initialise properly! + try: + babel.transform('warmup', {'presets': {}}) + signal.alarm(2) + + def kill_it(a, b): + raise KeyboardInterrupt('Better work next time!') + + signal.signal(signal.SIGALRM, kill_it) + babel.transform('stuckInALoop', { + 'presets': babelPresetEs2015 + }).code + for n in range(3): + time.sleep(1) + except: + print("Initialised babel!") + INITIALISED = True + return babel.transform(code, {'presets': babelPresetEs2015}).code + + +if __name__ == '__main__': + print(js6_to_js5('obj={}; obj.x = function() {return () => this}')) + print() + print(js6_to_js5('const a = 1;')) diff --git a/libs/js2py/es6/babel.js b/libs/js2py/es6/babel.js new file mode 100644 index 000000000..e088e470c --- /dev/null +++ b/libs/js2py/es6/babel.js @@ -0,0 +1,6 @@ +// run buildBabel in this folder to convert this code to python! +var babel = require("babel-core"); +var babelPresetEs2015 = require("babel-preset-es2015"); + +Object.babelPresetEs2015 = babelPresetEs2015; +Object.babel = babel; diff --git a/libs/js2py/es6/babel.py b/libs/js2py/es6/babel.py new file mode 100644 index 000000000..24623e64c --- /dev/null +++ b/libs/js2py/es6/babel.py @@ -0,0 +1,52077 @@ +__all__ = ['babel'] + +# Don't look below, you will not understand this Python code :) I don't. + +from js2py.pyjs import * +# setting scope +var = Scope( JS_BUILTINS ) +set_global_object(var) + +# Code follows: +var.registers([]) +@Js +def PyJs_anonymous_1_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'babel', u'require', u'babelPresetEs2015', u'exports', u'module']) + Js(u'use strict') + var.put(u'babel', var.get(u'require')(Js(u'babel-core'))) + var.put(u'babelPresetEs2015', var.get(u'require')(Js(u'babel-preset-es2015'))) + var.get(u'Object').put(u'babelPresetEs2015', var.get(u'babelPresetEs2015')) + var.get(u'Object').put(u'babel', var.get(u'babel')) +PyJs_anonymous_1_._set_name(u'anonymous') +PyJs_Object_2_ = Js({u'babel-core':Js(5.0),u'babel-preset-es2015':Js(95.0)}) +@Js +def PyJs_anonymous_3_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + @Js + def PyJs_anonymous_4_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return JsRegExp(u'/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g') + PyJs_anonymous_4_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_4_) +PyJs_anonymous_3_._set_name(u'anonymous') +PyJs_Object_5_ = Js({}) +@Js +def PyJs_anonymous_6_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'assembleStyles', u'require', u'exports', u'module']) + @Js + def PyJsHoisted_assembleStyles_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'styles']) + PyJs_Object_8_ = Js({u'reset':Js([Js(0.0), Js(0.0)]),u'bold':Js([Js(1.0), Js(22.0)]),u'dim':Js([Js(2.0), Js(22.0)]),u'italic':Js([Js(3.0), Js(23.0)]),u'underline':Js([Js(4.0), Js(24.0)]),u'inverse':Js([Js(7.0), Js(27.0)]),u'hidden':Js([Js(8.0), Js(28.0)]),u'strikethrough':Js([Js(9.0), Js(29.0)])}) + PyJs_Object_9_ = Js({u'black':Js([Js(30.0), Js(39.0)]),u'red':Js([Js(31.0), Js(39.0)]),u'green':Js([Js(32.0), Js(39.0)]),u'yellow':Js([Js(33.0), Js(39.0)]),u'blue':Js([Js(34.0), Js(39.0)]),u'magenta':Js([Js(35.0), Js(39.0)]),u'cyan':Js([Js(36.0), Js(39.0)]),u'white':Js([Js(37.0), Js(39.0)]),u'gray':Js([Js(90.0), Js(39.0)])}) + PyJs_Object_10_ = Js({u'bgBlack':Js([Js(40.0), Js(49.0)]),u'bgRed':Js([Js(41.0), Js(49.0)]),u'bgGreen':Js([Js(42.0), Js(49.0)]),u'bgYellow':Js([Js(43.0), Js(49.0)]),u'bgBlue':Js([Js(44.0), Js(49.0)]),u'bgMagenta':Js([Js(45.0), Js(49.0)]),u'bgCyan':Js([Js(46.0), Js(49.0)]),u'bgWhite':Js([Js(47.0), Js(49.0)])}) + PyJs_Object_7_ = Js({u'modifiers':PyJs_Object_8_,u'colors':PyJs_Object_9_,u'bgColors':PyJs_Object_10_}) + var.put(u'styles', PyJs_Object_7_) + var.get(u'styles').get(u'colors').put(u'grey', var.get(u'styles').get(u'colors').get(u'gray')) + @Js + def PyJs_anonymous_11_(groupName, this, arguments, var=var): + var = Scope({u'this':this, u'groupName':groupName, u'arguments':arguments}, var) + var.registers([u'groupName', u'group']) + var.put(u'group', var.get(u'styles').get(var.get(u'groupName'))) + @Js + def PyJs_anonymous_12_(styleName, this, arguments, var=var): + var = Scope({u'this':this, u'styleName':styleName, u'arguments':arguments}, var) + var.registers([u'style', u'styleName']) + var.put(u'style', var.get(u'group').get(var.get(u'styleName'))) + PyJs_Object_13_ = Js({u'open':((Js(u'\x1b[')+var.get(u'style').get(u'0'))+Js(u'm')),u'close':((Js(u'\x1b[')+var.get(u'style').get(u'1'))+Js(u'm'))}) + var.get(u'styles').put(var.get(u'styleName'), var.get(u'group').put(var.get(u'styleName'), PyJs_Object_13_)) + PyJs_anonymous_12_._set_name(u'anonymous') + var.get(u'Object').callprop(u'keys', var.get(u'group')).callprop(u'forEach', PyJs_anonymous_12_) + PyJs_Object_14_ = Js({u'value':var.get(u'group'),u'enumerable':Js(False)}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'styles'), var.get(u'groupName'), PyJs_Object_14_) + PyJs_anonymous_11_._set_name(u'anonymous') + var.get(u'Object').callprop(u'keys', var.get(u'styles')).callprop(u'forEach', PyJs_anonymous_11_) + return var.get(u'styles') + PyJsHoisted_assembleStyles_.func_name = u'assembleStyles' + var.put(u'assembleStyles', PyJsHoisted_assembleStyles_) + Js(u'use strict') + pass + PyJs_Object_15_ = Js({u'enumerable':var.get(u'true'),u'get':var.get(u'assembleStyles')}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'module'), Js(u'exports'), PyJs_Object_15_) +PyJs_anonymous_6_._set_name(u'anonymous') +PyJs_Object_16_ = Js({}) +@Js +def PyJs_anonymous_17_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'defs', u'_esutils2', u'exports', u'_jsTokens2', u'_esutils', u'require', u'NEWLINE', u'module', u'BRACKET', u'JSX_TAG', u'_chalk', u'getTokenType', u'_interopRequireDefault', u'highlight', u'_jsTokens', u'_chalk2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_22_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_22_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_highlight_(text, this, arguments, var=var): + var = Scope({u'this':this, u'text':text, u'arguments':arguments}, var) + var.registers([u'text']) + @Js + def PyJs_anonymous_24_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'_len', u'_key', u'args', u'type', u'colorize']) + #for JS loop + var.put(u'_len', var.get(u'arguments').get(u'length')) + var.put(u'args', var.get(u'Array')(var.get(u'_len'))) + var.put(u'_key', Js(0.0)) + while (var.get(u'_key')')), var.get(u'maybeHighlight')(var.get(u'defs').get(u'gutter'), var.get(u'gutter')), var.get(u'line'), var.get(u'markerLine')]).callprop(u'join', Js(u'')) + else: + return ((Js(u' ')+var.get(u'maybeHighlight')(var.get(u'defs').get(u'gutter'), var.get(u'gutter')))+var.get(u'line')) + PyJs_anonymous_21_._set_name(u'anonymous') + var.put(u'frame', var.get(u'lines').callprop(u'slice', var.get(u'start'), var.get(u'end')).callprop(u'map', PyJs_anonymous_21_).callprop(u'join', Js(u'\n'))) + if var.get(u'highlighted'): + return var.get(u'_chalk2').get(u'default').callprop(u'reset', var.get(u'frame')) + else: + return var.get(u'frame') + PyJs_anonymous_18_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_18_) + var.put(u'_jsTokens', var.get(u'require')(Js(u'js-tokens'))) + var.put(u'_jsTokens2', var.get(u'_interopRequireDefault')(var.get(u'_jsTokens'))) + var.put(u'_esutils', var.get(u'require')(Js(u'esutils'))) + var.put(u'_esutils2', var.get(u'_interopRequireDefault')(var.get(u'_esutils'))) + var.put(u'_chalk', var.get(u'require')(Js(u'chalk'))) + var.put(u'_chalk2', var.get(u'_interopRequireDefault')(var.get(u'_chalk'))) + pass + PyJs_Object_23_ = Js({u'keyword':var.get(u'_chalk2').get(u'default').get(u'cyan'),u'capitalized':var.get(u'_chalk2').get(u'default').get(u'yellow'),u'jsx_tag':var.get(u'_chalk2').get(u'default').get(u'yellow'),u'punctuator':var.get(u'_chalk2').get(u'default').get(u'yellow'),u'number':var.get(u'_chalk2').get(u'default').get(u'magenta'),u'string':var.get(u'_chalk2').get(u'default').get(u'green'),u'regex':var.get(u'_chalk2').get(u'default').get(u'magenta'),u'comment':var.get(u'_chalk2').get(u'default').get(u'grey'),u'invalid':var.get(u'_chalk2').get(u'default').get(u'white').get(u'bgRed').get(u'bold'),u'gutter':var.get(u'_chalk2').get(u'default').get(u'grey'),u'marker':var.get(u'_chalk2').get(u'default').get(u'red').get(u'bold')}) + var.put(u'defs', PyJs_Object_23_) + var.put(u'NEWLINE', JsRegExp(u'/\\r\\n|[\\n\\r\\u2028\\u2029]/')) + var.put(u'JSX_TAG', JsRegExp(u'/^[a-z][\\w-]*$/i')) + var.put(u'BRACKET', JsRegExp(u'/^[()\\[\\]{}]$/')) + pass + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_17_._set_name(u'anonymous') +PyJs_Object_26_ = Js({u'chalk':Js(265.0),u'esutils':Js(276.0),u'js-tokens':Js(282.0)}) +@Js +def PyJs_anonymous_27_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./lib/api/node.js'))) +PyJs_anonymous_27_._set_name(u'anonymous') +PyJs_Object_28_ = Js({u'./lib/api/node.js':Js(6.0)}) +@Js +def PyJs_anonymous_29_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_isFunction', u'_fs', u'_pipeline2', u'_file', u'_babelTemplate', u'_buildExternalHelpers', u'transformFile', u'_interopRequireDefault', u'_babelTraverse', u'_pipeline', u'transform', u'_fs2', u'_babelMessages', u'exports', u'_babelTraverse2', u'_interopRequireWildcard', u'Plugin', u'_babelTypes', u'analyse', u'pipeline', u'_util', u'util', u'module', u'_optionManager2', u'_isFunction2', u'_config', u'transformFileSync', u'messages', u'_optionManager', u'transformFromAst', u't', u'_package', u'require']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_42_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_42_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_transformFileSync_(filename, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'filename':filename}, var) + var.registers([u'opts', u'filename']) + PyJs_Object_45_ = Js({}) + var.put(u'opts', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_45_)) + var.get(u'opts').put(u'filename', var.get(u'filename')) + return var.get(u'transform')(var.get(u'_fs2').get(u'default').callprop(u'readFileSync', var.get(u'filename'), Js(u'utf8')), var.get(u'opts')) + PyJsHoisted_transformFileSync_.func_name = u'transformFileSync' + var.put(u'transformFileSync', PyJsHoisted_transformFileSync_) + @Js + def PyJsHoisted_transformFile_(filename, opts, callback, this, arguments, var=var): + var = Scope({u'this':this, u'callback':callback, u'arguments':arguments, u'opts':opts, u'filename':filename}, var) + var.registers([u'callback', u'opts', u'filename']) + if PyJsComma(Js(0.0),var.get(u'_isFunction2').get(u'default'))(var.get(u'opts')): + var.put(u'callback', var.get(u'opts')) + PyJs_Object_43_ = Js({}) + var.put(u'opts', PyJs_Object_43_) + var.get(u'opts').put(u'filename', var.get(u'filename')) + @Js + def PyJs_anonymous_44_(err, code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'err':err}, var) + var.registers([u'code', u'result', u'err']) + var.put(u'result', PyJsComma(Js(0.0), Js(None))) + if var.get(u'err').neg(): + try: + var.put(u'result', var.get(u'transform')(var.get(u'code'), var.get(u'opts'))) + except PyJsException as PyJsTempException: + PyJsHolder_5f657272_67108312 = var.own.get(u'_err') + var.force_own_put(u'_err', PyExceptionToJs(PyJsTempException)) + try: + var.put(u'err', var.get(u'_err')) + finally: + if PyJsHolder_5f657272_67108312 is not None: + var.own[u'_err'] = PyJsHolder_5f657272_67108312 + else: + del var.own[u'_err'] + del PyJsHolder_5f657272_67108312 + if var.get(u'err'): + var.get(u'callback')(var.get(u'err')) + else: + var.get(u'callback')(var.get(u"null"), var.get(u'result')) + PyJs_anonymous_44_._set_name(u'anonymous') + var.get(u'_fs2').get(u'default').callprop(u'readFile', var.get(u'filename'), PyJs_anonymous_44_) + PyJsHoisted_transformFile_.func_name = u'transformFile' + var.put(u'transformFile', PyJsHoisted_transformFile_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_41_ = Js({}) + var.put(u'newObj', PyJs_Object_41_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_Plugin_(alias, this, arguments, var=var): + var = Scope({u'this':this, u'alias':alias, u'arguments':arguments}, var) + var.registers([u'alias']) + PyJsTempException = JsToPyException(var.get(u'Error').create(((Js(u'The (')+var.get(u'alias'))+Js(u') Babel 5 plugin is being run with Babel 6.')))) + raise PyJsTempException + PyJsHoisted_Plugin_.func_name = u'Plugin' + var.put(u'Plugin', PyJsHoisted_Plugin_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + def PyJs_LONG_30_(var=var): + return var.get(u'exports').put(u'OptionManager', var.get(u'exports').put(u'traverse', var.get(u'exports').put(u'types', var.get(u'exports').put(u'messages', var.get(u'exports').put(u'util', var.get(u'exports').put(u'version', var.get(u'exports').put(u'template', var.get(u'exports').put(u'buildExternalHelpers', var.get(u'exports').put(u'options', var.get(u'exports').put(u'File', var.get(u'undefined'))))))))))) + var.get(u'exports').put(u'transformFromAst', var.get(u'exports').put(u'transform', var.get(u'exports').put(u'analyse', var.get(u'exports').put(u'Pipeline', PyJs_LONG_30_())))) + var.put(u'_file', var.get(u'require')(Js(u'../transformation/file'))) + @Js + def PyJs_get_32_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_32_}, var) + var.registers([]) + return var.get(u'_interopRequireDefault')(var.get(u'_file')).get(u'default') + PyJs_get_32_._set_name(u'get') + PyJs_Object_31_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_32_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'File'), PyJs_Object_31_) + var.put(u'_config', var.get(u'require')(Js(u'../transformation/file/options/config'))) + @Js + def PyJs_get_34_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_34_}, var) + var.registers([]) + return var.get(u'_interopRequireDefault')(var.get(u'_config')).get(u'default') + PyJs_get_34_._set_name(u'get') + PyJs_Object_33_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_34_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'options'), PyJs_Object_33_) + var.put(u'_buildExternalHelpers', var.get(u'require')(Js(u'../tools/build-external-helpers'))) + @Js + def PyJs_get_36_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_36_}, var) + var.registers([]) + return var.get(u'_interopRequireDefault')(var.get(u'_buildExternalHelpers')).get(u'default') + PyJs_get_36_._set_name(u'get') + PyJs_Object_35_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_36_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'buildExternalHelpers'), PyJs_Object_35_) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + @Js + def PyJs_get_38_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_38_}, var) + var.registers([]) + return var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate')).get(u'default') + PyJs_get_38_._set_name(u'get') + PyJs_Object_37_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_38_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'template'), PyJs_Object_37_) + var.put(u'_package', var.get(u'require')(Js(u'../../package'))) + @Js + def PyJs_get_40_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_40_}, var) + var.registers([]) + return var.get(u'_package').get(u'version') + PyJs_get_40_._set_name(u'get') + PyJs_Object_39_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_40_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'version'), PyJs_Object_39_) + var.get(u'exports').put(u'Plugin', var.get(u'Plugin')) + var.get(u'exports').put(u'transformFile', var.get(u'transformFile')) + var.get(u'exports').put(u'transformFileSync', var.get(u'transformFileSync')) + var.put(u'_isFunction', var.get(u'require')(Js(u'lodash/isFunction'))) + var.put(u'_isFunction2', var.get(u'_interopRequireDefault')(var.get(u'_isFunction'))) + var.put(u'_fs', var.get(u'require')(Js(u'fs'))) + var.put(u'_fs2', var.get(u'_interopRequireDefault')(var.get(u'_fs'))) + var.put(u'_util', var.get(u'require')(Js(u'../util'))) + var.put(u'util', var.get(u'_interopRequireWildcard')(var.get(u'_util'))) + var.put(u'_babelMessages', var.get(u'require')(Js(u'babel-messages'))) + var.put(u'messages', var.get(u'_interopRequireWildcard')(var.get(u'_babelMessages'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_babelTraverse', var.get(u'require')(Js(u'babel-traverse'))) + var.put(u'_babelTraverse2', var.get(u'_interopRequireDefault')(var.get(u'_babelTraverse'))) + var.put(u'_optionManager', var.get(u'require')(Js(u'../transformation/file/options/option-manager'))) + var.put(u'_optionManager2', var.get(u'_interopRequireDefault')(var.get(u'_optionManager'))) + var.put(u'_pipeline', var.get(u'require')(Js(u'../transformation/pipeline'))) + var.put(u'_pipeline2', var.get(u'_interopRequireDefault')(var.get(u'_pipeline'))) + pass + pass + var.get(u'exports').put(u'util', var.get(u'util')) + var.get(u'exports').put(u'messages', var.get(u'messages')) + var.get(u'exports').put(u'types', var.get(u't')) + var.get(u'exports').put(u'traverse', var.get(u'_babelTraverse2').get(u'default')) + var.get(u'exports').put(u'OptionManager', var.get(u'_optionManager2').get(u'default')) + pass + var.get(u'exports').put(u'Pipeline', var.get(u'_pipeline2').get(u'default')) + var.put(u'pipeline', var.get(u'_pipeline2').get(u'default').create()) + var.put(u'analyse', var.get(u'exports').put(u'analyse', var.get(u'pipeline').get(u'analyse').callprop(u'bind', var.get(u'pipeline')))) + var.put(u'transform', var.get(u'exports').put(u'transform', var.get(u'pipeline').get(u'transform').callprop(u'bind', var.get(u'pipeline')))) + var.put(u'transformFromAst', var.get(u'exports').put(u'transformFromAst', var.get(u'pipeline').get(u'transformFromAst').callprop(u'bind', var.get(u'pipeline')))) + pass + pass +PyJs_anonymous_29_._set_name(u'anonymous') +PyJs_Object_46_ = Js({u'../../package':Js(28.0),u'../tools/build-external-helpers':Js(11.0),u'../transformation/file':Js(12.0),u'../transformation/file/options/config':Js(16.0),u'../transformation/file/options/option-manager':Js(18.0),u'../transformation/pipeline':Js(23.0),u'../util':Js(26.0),u'babel-messages':Js(57.0),u'babel-template':Js(221.0),u'babel-traverse':Js(225.0),u'babel-types':Js(258.0),u'fs':Js(523.0),u'lodash/isFunction':Js(463.0)}) +@Js +def PyJs_anonymous_47_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_mergeWith', u'require', u'module', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'_mergeWith2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_50_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_50_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + @Js + def PyJs_anonymous_48_(dest, src, this, arguments, var=var): + var = Scope({u'dest':dest, u'src':src, u'this':this, u'arguments':arguments}, var) + var.registers([u'dest', u'src']) + if (var.get(u'dest').neg() or var.get(u'src').neg()): + return var.get('undefined') + @Js + def PyJs_anonymous_49_(a, b, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'b':b, u'arguments':arguments}, var) + var.registers([u'a', u'_isArray', u'b', u'_iterator', u'item', u'newArray', u'_i', u'_ref']) + if (var.get(u'b') and var.get(u'Array').callprop(u'isArray', var.get(u'a'))): + var.put(u'newArray', var.get(u'b').callprop(u'slice', Js(0.0))) + #for JS loop + var.put(u'_iterator', var.get(u'a')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'item', var.get(u'_ref')) + if (var.get(u'newArray').callprop(u'indexOf', var.get(u'item'))Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else var.get(u'process').callprop(u'cwd'))) + if PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'_module2').get(u'default').typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'_module2').get(u'default'))),Js(u'object')): + return var.get(u"null") + var.put(u'relativeMod', var.get(u'relativeModules').get(var.get(u'relative'))) + if var.get(u'relativeMod').neg(): + var.put(u'relativeMod', var.get(u'_module2').get(u'default').create()) + var.put(u'filename', var.get(u'_path2').get(u'default').callprop(u'join', var.get(u'relative'), Js(u'.babelrc'))) + var.get(u'relativeMod').put(u'id', var.get(u'filename')) + var.get(u'relativeMod').put(u'filename', var.get(u'filename')) + var.get(u'relativeMod').put(u'paths', var.get(u'_module2').get(u'default').callprop(u'_nodeModulePaths', var.get(u'relative'))) + var.get(u'relativeModules').put(var.get(u'relative'), var.get(u'relativeMod')) + try: + return var.get(u'_module2').get(u'default').callprop(u'_resolveFilename', var.get(u'loc'), var.get(u'relativeMod')) + except PyJsException as PyJsTempException: + PyJsHolder_657272_57087007 = var.own.get(u'err') + var.force_own_put(u'err', PyExceptionToJs(PyJsTempException)) + try: + return var.get(u"null") + finally: + if PyJsHolder_657272_57087007 is not None: + var.own[u'err'] = PyJsHolder_657272_57087007 + else: + del var.own[u'err'] + del PyJsHolder_657272_57087007 + PyJs_anonymous_58_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_58_) + var.put(u'_module', var.get(u'require')(Js(u'module'))) + var.put(u'_module2', var.get(u'_interopRequireDefault')(var.get(u'_module'))) + var.put(u'_path', var.get(u'require')(Js(u'path'))) + var.put(u'_path2', var.get(u'_interopRequireDefault')(var.get(u'_path'))) + pass + PyJs_Object_60_ = Js({}) + var.put(u'relativeModules', PyJs_Object_60_) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) + PyJs_anonymous_57_._set_name(u'anonymous') + PyJs_anonymous_57_.callprop(u'call', var.get(u"this"), var.get(u'require')(Js(u'_process'))) +PyJs_anonymous_56_._set_name(u'anonymous') +PyJs_Object_61_ = Js({u'_process':Js(531.0),u'babel-runtime/helpers/typeof':Js(114.0),u'module':Js(523.0),u'path':Js(530.0)}) +@Js +def PyJs_anonymous_62_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_map', u'_inherits3', u'_inherits2', u'require', u'_possibleConstructorReturn3', u'_possibleConstructorReturn2', u'module', u'Store', u'_interopRequireDefault', u'_classCallCheck3', u'_classCallCheck2', u'_map2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_63_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_63_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_map', var.get(u'require')(Js(u'babel-runtime/core-js/map'))) + var.put(u'_map2', var.get(u'_interopRequireDefault')(var.get(u'_map'))) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_possibleConstructorReturn2', var.get(u'require')(Js(u'babel-runtime/helpers/possibleConstructorReturn'))) + var.put(u'_possibleConstructorReturn3', var.get(u'_interopRequireDefault')(var.get(u'_possibleConstructorReturn2'))) + var.put(u'_inherits2', var.get(u'require')(Js(u'babel-runtime/helpers/inherits'))) + var.put(u'_inherits3', var.get(u'_interopRequireDefault')(var.get(u'_inherits2'))) + pass + @Js + def PyJs_anonymous_64_(_Map, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'_Map':_Map}, var) + var.registers([u'Store', u'_Map']) + @Js + def PyJsHoisted_Store_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'_this']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Store')) + var.put(u'_this', PyJsComma(Js(0.0),var.get(u'_possibleConstructorReturn3').get(u'default'))(var.get(u"this"), var.get(u'_Map').callprop(u'call', var.get(u"this")))) + PyJs_Object_65_ = Js({}) + var.get(u'_this').put(u'dynamicData', PyJs_Object_65_) + return var.get(u'_this') + PyJsHoisted_Store_.func_name = u'Store' + var.put(u'Store', PyJsHoisted_Store_) + PyJsComma(Js(0.0),var.get(u'_inherits3').get(u'default'))(var.get(u'Store'), var.get(u'_Map')) + pass + @Js + def PyJs_setDynamic_66_(key, fn, this, arguments, var=var): + var = Scope({u'this':this, u'setDynamic':PyJs_setDynamic_66_, u'fn':fn, u'key':key, u'arguments':arguments}, var) + var.registers([u'fn', u'key']) + var.get(u"this").get(u'dynamicData').put(var.get(u'key'), var.get(u'fn')) + PyJs_setDynamic_66_._set_name(u'setDynamic') + var.get(u'Store').get(u'prototype').put(u'setDynamic', PyJs_setDynamic_66_) + @Js + def PyJs_get_67_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key, u'get':PyJs_get_67_}, var) + var.registers([u'key', u'val']) + if var.get(u"this").callprop(u'has', var.get(u'key')): + return var.get(u'_Map').get(u'prototype').get(u'get').callprop(u'call', var.get(u"this"), var.get(u'key')) + else: + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u"this").get(u'dynamicData'), var.get(u'key')): + var.put(u'val', var.get(u"this").get(u'dynamicData').callprop(var.get(u'key'))) + var.get(u"this").callprop(u'set', var.get(u'key'), var.get(u'val')) + return var.get(u'val') + PyJs_get_67_._set_name(u'get') + var.get(u'Store').get(u'prototype').put(u'get', PyJs_get_67_) + return var.get(u'Store') + PyJs_anonymous_64_._set_name(u'anonymous') + var.put(u'Store', PyJs_anonymous_64_(var.get(u'_map2').get(u'default'))) + var.get(u'exports').put(u'default', var.get(u'Store')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_62_._set_name(u'anonymous') +PyJs_Object_68_ = Js({u'babel-runtime/core-js/map':Js(98.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-runtime/helpers/inherits':Js(111.0),u'babel-runtime/helpers/possibleConstructorReturn':Js(113.0)}) +@Js +def PyJs_anonymous_69_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_each', u'_babelTemplate', u'module', u'_babelHelpers', u'buildGlobal', u'_interopRequireDefault', u'buildVar', u'_each2', u'_babelTemplate2', u'_babelMessages', u'exports', u'_interopRequireWildcard', u'buildUmd', u'_babelTypes', u'_babelGenerator', u'buildHelpers', u'_babelGenerator2', u'buildUmdWrapper', u'require', u'messages', u'helpers', u't']) + @Js + def PyJsHoisted_buildVar_(namespace, builder, this, arguments, var=var): + var = Scope({u'this':this, u'builder':builder, u'namespace':namespace, u'arguments':arguments}, var) + var.registers([u'body', u'builder', u'namespace']) + var.put(u'body', Js([])) + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'namespace'), var.get(u't').callprop(u'objectExpression', Js([])))]))) + var.get(u'builder')(var.get(u'body')) + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u'namespace'))) + return var.get(u't').callprop(u'program', var.get(u'body')) + PyJsHoisted_buildVar_.func_name = u'buildVar' + var.put(u'buildVar', PyJsHoisted_buildVar_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_74_ = Js({}) + var.put(u'newObj', PyJs_Object_74_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_buildUmd_(namespace, builder, this, arguments, var=var): + var = Scope({u'this':this, u'builder':builder, u'namespace':namespace, u'arguments':arguments}, var) + var.registers([u'body', u'builder', u'namespace']) + var.put(u'body', Js([])) + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'namespace'), var.get(u't').callprop(u'identifier', Js(u'global')))]))) + var.get(u'builder')(var.get(u'body')) + PyJs_Object_77_ = Js({u'FACTORY_PARAMETERS':var.get(u't').callprop(u'identifier', Js(u'global')),u'BROWSER_ARGUMENTS':var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', Js(u'root')), var.get(u'namespace')), var.get(u't').callprop(u'objectExpression', Js([]))),u'COMMON_ARGUMENTS':var.get(u't').callprop(u'identifier', Js(u'exports')),u'AMD_ARGUMENTS':var.get(u't').callprop(u'arrayExpression', Js([var.get(u't').callprop(u'stringLiteral', Js(u'exports'))])),u'FACTORY_BODY':var.get(u'body'),u'UMD_ROOT':var.get(u't').callprop(u'identifier', Js(u'this'))}) + return var.get(u't').callprop(u'program', Js([var.get(u'buildUmdWrapper')(PyJs_Object_77_)])) + PyJsHoisted_buildUmd_.func_name = u'buildUmd' + var.put(u'buildUmd', PyJsHoisted_buildUmd_) + @Js + def PyJsHoisted_buildHelpers_(body, namespace, whitelist, this, arguments, var=var): + var = Scope({u'body':body, u'this':this, u'whitelist':whitelist, u'namespace':namespace, u'arguments':arguments}, var) + var.registers([u'body', u'whitelist', u'namespace']) + @Js + def PyJs_anonymous_78_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name', u'key']) + if (var.get(u'whitelist') and (var.get(u'whitelist').callprop(u'indexOf', var.get(u'name'))Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else Js(u'global'))) + var.put(u'namespace', var.get(u't').callprop(u'identifier', Js(u'babelHelpers'))) + @Js + def PyJs_builder_71_(body, this, arguments, var=var): + var = Scope({u'body':body, u'this':this, u'builder':PyJs_builder_71_, u'arguments':arguments}, var) + var.registers([u'body']) + return var.get(u'buildHelpers')(var.get(u'body'), var.get(u'namespace'), var.get(u'whitelist')) + PyJs_builder_71_._set_name(u'builder') + var.put(u'builder', PyJs_builder_71_) + var.put(u'tree', PyJsComma(Js(0.0), Js(None))) + PyJs_Object_72_ = Js({u'global':var.get(u'buildGlobal'),u'umd':var.get(u'buildUmd'),u'var':var.get(u'buildVar')}) + var.put(u'build', PyJs_Object_72_.get(var.get(u'outputType'))) + if var.get(u'build'): + var.put(u'tree', var.get(u'build')(var.get(u'namespace'), var.get(u'builder'))) + else: + PyJsTempException = JsToPyException(var.get(u'Error').create(var.get(u'messages').callprop(u'get', Js(u'unsupportedOutputType'), var.get(u'outputType')))) + raise PyJsTempException + return PyJsComma(Js(0.0),var.get(u'_babelGenerator2').get(u'default'))(var.get(u'tree')).get(u'code') + PyJs_anonymous_70_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_70_) + var.put(u'_babelHelpers', var.get(u'require')(Js(u'babel-helpers'))) + var.put(u'helpers', var.get(u'_interopRequireWildcard')(var.get(u'_babelHelpers'))) + var.put(u'_babelGenerator', var.get(u'require')(Js(u'babel-generator'))) + var.put(u'_babelGenerator2', var.get(u'_interopRequireDefault')(var.get(u'_babelGenerator'))) + var.put(u'_babelMessages', var.get(u'require')(Js(u'babel-messages'))) + var.put(u'messages', var.get(u'_interopRequireWildcard')(var.get(u'_babelMessages'))) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + var.put(u'_babelTemplate2', var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate'))) + var.put(u'_each', var.get(u'require')(Js(u'lodash/each'))) + var.put(u'_each2', var.get(u'_interopRequireDefault')(var.get(u'_each'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + def PyJs_LONG_75_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (root, factory) {\n if (typeof define === "function" && define.amd) {\n define(AMD_ARGUMENTS, factory);\n } else if (typeof exports === "object") {\n factory(COMMON_ARGUMENTS);\n } else {\n factory(BROWSER_ARGUMENTS);\n }\n })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n FACTORY_BODY\n });\n')) + var.put(u'buildUmdWrapper', PyJs_LONG_75_()) + pass + pass + pass + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_69_._set_name(u'anonymous') +PyJs_Object_79_ = Js({u'babel-generator':Js(40.0),u'babel-helpers':Js(56.0),u'babel-messages':Js(57.0),u'babel-template':Js(221.0),u'babel-types':Js(258.0),u'lodash/each':Js(443.0)}) +@Js +def PyJs_anonymous_80_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_81_(process, this, arguments, var=var): + var = Scope({u'process':process, u'this':this, u'arguments':arguments}, var) + var.registers([u'_resolve', u'_store', u'_sourceMap', u'_shadowFunctions2', u'_babelHelpers', u'_logger2', u'_interopRequireDefault', u'_convertSourceMap', u'_getIterator3', u'_getIterator2', u'_shadowFunctions', u'_babelCodeFrame2', u'_typeof2', u'_typeof3', u'metadataVisitor', u'INTERNAL_PLUGINS', u'_possibleConstructorReturn3', u'_possibleConstructorReturn2', u'_babylon', u'_create2', u'errorVisitor', u'_metadata', u'_store2', u'_assign2', u'shebangRegex', u'_blockHoist', u'_classCallCheck3', u'_classCallCheck2', u'_pluginPass2', u'_sourceMap2', u'_create', u'_convertSourceMap2', u'process', u'_babelTypes', u'_babelTraverse2', u'_interopRequireWildcard', u'_inherits3', u'_inherits2', u'_pluginPass', u'_assign', u'_babelCodeFrame', u'_babelGenerator', u'_logger', u'_util', u'_defaults2', u'_path2', u'_optionManager2', u'_babelTraverse', u'util', u'_babelGenerator2', u'_blockHoist2', u'_babelHelpers2', u'_defaults', u'_optionManager', u't', u'File', u'_resolve2', u'_path']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_83_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_83_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_82_ = Js({}) + var.put(u'newObj', PyJs_Object_82_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'File', var.get(u'undefined')) + var.put(u'_typeof2', var.get(u'require')(Js(u'babel-runtime/helpers/typeof'))) + var.put(u'_typeof3', var.get(u'_interopRequireDefault')(var.get(u'_typeof2'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_create', var.get(u'require')(Js(u'babel-runtime/core-js/object/create'))) + var.put(u'_create2', var.get(u'_interopRequireDefault')(var.get(u'_create'))) + var.put(u'_assign', var.get(u'require')(Js(u'babel-runtime/core-js/object/assign'))) + var.put(u'_assign2', var.get(u'_interopRequireDefault')(var.get(u'_assign'))) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_possibleConstructorReturn2', var.get(u'require')(Js(u'babel-runtime/helpers/possibleConstructorReturn'))) + var.put(u'_possibleConstructorReturn3', var.get(u'_interopRequireDefault')(var.get(u'_possibleConstructorReturn2'))) + var.put(u'_inherits2', var.get(u'require')(Js(u'babel-runtime/helpers/inherits'))) + var.put(u'_inherits3', var.get(u'_interopRequireDefault')(var.get(u'_inherits2'))) + var.put(u'_babelHelpers', var.get(u'require')(Js(u'babel-helpers'))) + var.put(u'_babelHelpers2', var.get(u'_interopRequireDefault')(var.get(u'_babelHelpers'))) + var.put(u'_metadata', var.get(u'require')(Js(u'./metadata'))) + var.put(u'metadataVisitor', var.get(u'_interopRequireWildcard')(var.get(u'_metadata'))) + var.put(u'_convertSourceMap', var.get(u'require')(Js(u'convert-source-map'))) + var.put(u'_convertSourceMap2', var.get(u'_interopRequireDefault')(var.get(u'_convertSourceMap'))) + var.put(u'_optionManager', var.get(u'require')(Js(u'./options/option-manager'))) + var.put(u'_optionManager2', var.get(u'_interopRequireDefault')(var.get(u'_optionManager'))) + var.put(u'_pluginPass', var.get(u'require')(Js(u'../plugin-pass'))) + var.put(u'_pluginPass2', var.get(u'_interopRequireDefault')(var.get(u'_pluginPass'))) + var.put(u'_babelTraverse', var.get(u'require')(Js(u'babel-traverse'))) + var.put(u'_babelTraverse2', var.get(u'_interopRequireDefault')(var.get(u'_babelTraverse'))) + var.put(u'_sourceMap', var.get(u'require')(Js(u'source-map'))) + var.put(u'_sourceMap2', var.get(u'_interopRequireDefault')(var.get(u'_sourceMap'))) + var.put(u'_babelGenerator', var.get(u'require')(Js(u'babel-generator'))) + var.put(u'_babelGenerator2', var.get(u'_interopRequireDefault')(var.get(u'_babelGenerator'))) + var.put(u'_babelCodeFrame', var.get(u'require')(Js(u'babel-code-frame'))) + var.put(u'_babelCodeFrame2', var.get(u'_interopRequireDefault')(var.get(u'_babelCodeFrame'))) + var.put(u'_defaults', var.get(u'require')(Js(u'lodash/defaults'))) + var.put(u'_defaults2', var.get(u'_interopRequireDefault')(var.get(u'_defaults'))) + var.put(u'_logger', var.get(u'require')(Js(u'./logger'))) + var.put(u'_logger2', var.get(u'_interopRequireDefault')(var.get(u'_logger'))) + var.put(u'_store', var.get(u'require')(Js(u'../../store'))) + var.put(u'_store2', var.get(u'_interopRequireDefault')(var.get(u'_store'))) + var.put(u'_babylon', var.get(u'require')(Js(u'babylon'))) + var.put(u'_util', var.get(u'require')(Js(u'../../util'))) + var.put(u'util', var.get(u'_interopRequireWildcard')(var.get(u'_util'))) + var.put(u'_path', var.get(u'require')(Js(u'path'))) + var.put(u'_path2', var.get(u'_interopRequireDefault')(var.get(u'_path'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_resolve', var.get(u'require')(Js(u'../../helpers/resolve'))) + var.put(u'_resolve2', var.get(u'_interopRequireDefault')(var.get(u'_resolve'))) + var.put(u'_blockHoist', var.get(u'require')(Js(u'../internal-plugins/block-hoist'))) + var.put(u'_blockHoist2', var.get(u'_interopRequireDefault')(var.get(u'_blockHoist'))) + var.put(u'_shadowFunctions', var.get(u'require')(Js(u'../internal-plugins/shadow-functions'))) + var.put(u'_shadowFunctions2', var.get(u'_interopRequireDefault')(var.get(u'_shadowFunctions'))) + pass + pass + var.put(u'shebangRegex', JsRegExp(u'/^#!.*/')) + var.put(u'INTERNAL_PLUGINS', Js([Js([var.get(u'_blockHoist2').get(u'default')]), Js([var.get(u'_shadowFunctions2').get(u'default')])])) + @Js + def PyJs_enter_85_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'enter':PyJs_enter_85_}, var) + var.registers([u'loc', u'state', u'path']) + var.put(u'loc', var.get(u'path').get(u'node').get(u'loc')) + if var.get(u'loc'): + var.get(u'state').put(u'loc', var.get(u'loc')) + var.get(u'path').callprop(u'stop') + PyJs_enter_85_._set_name(u'enter') + PyJs_Object_84_ = Js({u'enter':PyJs_enter_85_}) + var.put(u'errorVisitor', PyJs_Object_84_) + @Js + def PyJs_anonymous_86_(_Store, this, arguments, var=var): + var = Scope({u'this':this, u'_Store':_Store, u'arguments':arguments}, var) + var.registers([u'_Store', u'File']) + @Js + def PyJsHoisted_File_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'pipeline', u'_this', u'opts']) + PyJs_Object_87_ = Js({}) + var.put(u'opts', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else PyJs_Object_87_)) + var.put(u'pipeline', var.get(u'arguments').get(u'1')) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'File')) + var.put(u'_this', PyJsComma(Js(0.0),var.get(u'_possibleConstructorReturn3').get(u'default'))(var.get(u"this"), var.get(u'_Store').callprop(u'call', var.get(u"this")))) + var.get(u'_this').put(u'pipeline', var.get(u'pipeline')) + var.get(u'_this').put(u'log', var.get(u'_logger2').get(u'default').create(var.get(u'_this'), (var.get(u'opts').get(u'filename') or Js(u'unknown')))) + var.get(u'_this').put(u'opts', var.get(u'_this').callprop(u'initOptions', var.get(u'opts'))) + PyJs_Object_88_ = Js({u'sourceType':var.get(u'_this').get(u'opts').get(u'sourceType'),u'sourceFileName':var.get(u'_this').get(u'opts').get(u'filename'),u'plugins':Js([])}) + var.get(u'_this').put(u'parserOpts', PyJs_Object_88_) + var.get(u'_this').put(u'pluginVisitors', Js([])) + var.get(u'_this').put(u'pluginPasses', Js([])) + var.get(u'_this').callprop(u'buildPluginsForOptions', var.get(u'_this').get(u'opts')) + if var.get(u'_this').get(u'opts').get(u'passPerPreset'): + var.get(u'_this').put(u'perPresetOpts', Js([])) + @Js + def PyJs_anonymous_89_(presetOpts, this, arguments, var=var): + var = Scope({u'this':this, u'presetOpts':presetOpts, u'arguments':arguments}, var) + var.registers([u'presetOpts', u'perPresetOpts']) + var.put(u'perPresetOpts', PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u'_this').get(u'opts')), var.get(u'presetOpts'))) + var.get(u'_this').get(u'perPresetOpts').callprop(u'push', var.get(u'perPresetOpts')) + var.get(u'_this').callprop(u'buildPluginsForOptions', var.get(u'perPresetOpts')) + PyJs_anonymous_89_._set_name(u'anonymous') + var.get(u'_this').get(u'opts').get(u'presets').callprop(u'forEach', PyJs_anonymous_89_) + PyJs_Object_92_ = Js({u'exported':Js([]),u'specifiers':Js([])}) + PyJs_Object_91_ = Js({u'imports':Js([]),u'exports':PyJs_Object_92_}) + PyJs_Object_90_ = Js({u'usedHelpers':Js([]),u'marked':Js([]),u'modules':PyJs_Object_91_}) + var.get(u'_this').put(u'metadata', PyJs_Object_90_) + PyJs_Object_93_ = Js({}) + var.get(u'_this').put(u'dynamicImportTypes', PyJs_Object_93_) + PyJs_Object_94_ = Js({}) + var.get(u'_this').put(u'dynamicImportIds', PyJs_Object_94_) + var.get(u'_this').put(u'dynamicImports', Js([])) + PyJs_Object_95_ = Js({}) + var.get(u'_this').put(u'declarations', PyJs_Object_95_) + PyJs_Object_96_ = Js({}) + var.get(u'_this').put(u'usedHelpers', PyJs_Object_96_) + var.get(u'_this').put(u'path', var.get(u"null")) + PyJs_Object_97_ = Js({}) + var.get(u'_this').put(u'ast', PyJs_Object_97_) + var.get(u'_this').put(u'code', Js(u'')) + var.get(u'_this').put(u'shebang', Js(u'')) + var.get(u'_this').put(u'hub', var.get(u'_babelTraverse').get(u'Hub').create(var.get(u'_this'))) + return var.get(u'_this') + PyJsHoisted_File_.func_name = u'File' + var.put(u'File', PyJsHoisted_File_) + PyJsComma(Js(0.0),var.get(u'_inherits3').get(u'default'))(var.get(u'File'), var.get(u'_Store')) + pass + @Js + def PyJs_getMetadata_98_(this, arguments, var=var): + var = Scope({u'this':this, u'getMetadata':PyJs_getMetadata_98_, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'_i', u'_ref', u'has']) + var.put(u'has', Js(False)) + #for JS loop + var.put(u'_iterator', var.get(u"this").get(u'ast').get(u'program').get(u'body')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'node', var.get(u'_ref')) + if var.get(u't').callprop(u'isModuleDeclaration', var.get(u'node')): + var.put(u'has', var.get(u'true')) + break + + if var.get(u'has'): + var.get(u"this").get(u'path').callprop(u'traverse', var.get(u'metadataVisitor'), var.get(u"this")) + PyJs_getMetadata_98_._set_name(u'getMetadata') + var.get(u'File').get(u'prototype').put(u'getMetadata', PyJs_getMetadata_98_) + @Js + def PyJs_initOptions_99_(opts, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'opts':opts, u'initOptions':PyJs_initOptions_99_}, var) + var.registers([u'basenameRelative', u'opts']) + var.put(u'opts', var.get(u'_optionManager2').get(u'default').create(var.get(u"this").get(u'log'), var.get(u"this").get(u'pipeline')).callprop(u'init', var.get(u'opts'))) + if var.get(u'opts').get(u'inputSourceMap'): + var.get(u'opts').put(u'sourceMaps', var.get(u'true')) + if var.get(u'opts').get(u'moduleId'): + var.get(u'opts').put(u'moduleIds', var.get(u'true')) + var.get(u'opts').put(u'basename', var.get(u'_path2').get(u'default').callprop(u'basename', var.get(u'opts').get(u'filename'), var.get(u'_path2').get(u'default').callprop(u'extname', var.get(u'opts').get(u'filename')))) + var.get(u'opts').put(u'ignore', var.get(u'util').callprop(u'arrayify', var.get(u'opts').get(u'ignore'), var.get(u'util').get(u'regexify'))) + if var.get(u'opts').get(u'only'): + var.get(u'opts').put(u'only', var.get(u'util').callprop(u'arrayify', var.get(u'opts').get(u'only'), var.get(u'util').get(u'regexify'))) + PyJs_Object_100_ = Js({u'moduleRoot':var.get(u'opts').get(u'sourceRoot')}) + PyJsComma(Js(0.0),var.get(u'_defaults2').get(u'default'))(var.get(u'opts'), PyJs_Object_100_) + PyJs_Object_101_ = Js({u'sourceRoot':var.get(u'opts').get(u'moduleRoot')}) + PyJsComma(Js(0.0),var.get(u'_defaults2').get(u'default'))(var.get(u'opts'), PyJs_Object_101_) + PyJs_Object_102_ = Js({u'filenameRelative':var.get(u'opts').get(u'filename')}) + PyJsComma(Js(0.0),var.get(u'_defaults2').get(u'default'))(var.get(u'opts'), PyJs_Object_102_) + var.put(u'basenameRelative', var.get(u'_path2').get(u'default').callprop(u'basename', var.get(u'opts').get(u'filenameRelative'))) + PyJs_Object_103_ = Js({u'sourceFileName':var.get(u'basenameRelative'),u'sourceMapTarget':var.get(u'basenameRelative')}) + PyJsComma(Js(0.0),var.get(u'_defaults2').get(u'default'))(var.get(u'opts'), PyJs_Object_103_) + return var.get(u'opts') + PyJs_initOptions_99_._set_name(u'initOptions') + var.get(u'File').get(u'prototype').put(u'initOptions', PyJs_initOptions_99_) + @Js + def PyJs_buildPluginsForOptions_104_(opts, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'opts':opts, u'buildPluginsForOptions':PyJs_buildPluginsForOptions_104_}, var) + var.registers([u'pluginOpts', u'_isArray2', u'plugin', u'_i2', u'_ref2', u'opts', u'plugins', u'currentPluginPasses', u'ref', u'currentPluginVisitors', u'_iterator2']) + if var.get(u'Array').callprop(u'isArray', var.get(u'opts').get(u'plugins')).neg(): + return var.get('undefined') + var.put(u'plugins', var.get(u'opts').get(u'plugins').callprop(u'concat', var.get(u'INTERNAL_PLUGINS'))) + var.put(u'currentPluginVisitors', Js([])) + var.put(u'currentPluginPasses', Js([])) + #for JS loop + var.put(u'_iterator2', var.get(u'plugins')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'ref', var.get(u'_ref2')) + var.put(u'plugin', var.get(u'ref').get(u'0')) + var.put(u'pluginOpts', var.get(u'ref').get(u'1')) + var.get(u'currentPluginVisitors').callprop(u'push', var.get(u'plugin').get(u'visitor')) + var.get(u'currentPluginPasses').callprop(u'push', var.get(u'_pluginPass2').get(u'default').create(var.get(u"this"), var.get(u'plugin'), var.get(u'pluginOpts'))) + if var.get(u'plugin').get(u'manipulateOptions'): + var.get(u'plugin').callprop(u'manipulateOptions', var.get(u'opts'), var.get(u"this").get(u'parserOpts'), var.get(u"this")) + + var.get(u"this").get(u'pluginVisitors').callprop(u'push', var.get(u'currentPluginVisitors')) + var.get(u"this").get(u'pluginPasses').callprop(u'push', var.get(u'currentPluginPasses')) + PyJs_buildPluginsForOptions_104_._set_name(u'buildPluginsForOptions') + var.get(u'File').get(u'prototype').put(u'buildPluginsForOptions', PyJs_buildPluginsForOptions_104_) + @Js + def PyJs_getModuleName_105_(this, arguments, var=var): + var = Scope({u'this':this, u'getModuleName':PyJs_getModuleName_105_, u'arguments':arguments}, var) + var.registers([u'moduleName', u'sourceRootRegEx', u'opts', u'filenameRelative']) + var.put(u'opts', var.get(u"this").get(u'opts')) + if var.get(u'opts').get(u'moduleIds').neg(): + return var.get(u"null") + if ((var.get(u'opts').get(u'moduleId')!=var.get(u"null")) and var.get(u'opts').get(u'getModuleId').neg()): + return var.get(u'opts').get(u'moduleId') + var.put(u'filenameRelative', var.get(u'opts').get(u'filenameRelative')) + var.put(u'moduleName', Js(u'')) + if (var.get(u'opts').get(u'moduleRoot')!=var.get(u"null")): + var.put(u'moduleName', (var.get(u'opts').get(u'moduleRoot')+Js(u'/'))) + if var.get(u'opts').get(u'filenameRelative').neg(): + return (var.get(u'moduleName')+var.get(u'opts').get(u'filename').callprop(u'replace', JsRegExp(u'/^\\//'), Js(u''))) + if (var.get(u'opts').get(u'sourceRoot')!=var.get(u"null")): + var.put(u'sourceRootRegEx', var.get(u'RegExp').create(((Js(u'^')+var.get(u'opts').get(u'sourceRoot'))+Js(u'/?')))) + var.put(u'filenameRelative', var.get(u'filenameRelative').callprop(u'replace', var.get(u'sourceRootRegEx'), Js(u''))) + var.put(u'filenameRelative', var.get(u'filenameRelative').callprop(u'replace', JsRegExp(u'/\\.(\\w*?)$/'), Js(u''))) + var.put(u'moduleName', var.get(u'filenameRelative'), u'+') + var.put(u'moduleName', var.get(u'moduleName').callprop(u'replace', JsRegExp(u'/\\\\/g'), Js(u'/'))) + if var.get(u'opts').get(u'getModuleId'): + return (var.get(u'opts').callprop(u'getModuleId', var.get(u'moduleName')) or var.get(u'moduleName')) + else: + return var.get(u'moduleName') + PyJs_getModuleName_105_._set_name(u'getModuleName') + var.get(u'File').get(u'prototype').put(u'getModuleName', PyJs_getModuleName_105_) + @Js + def PyJs_resolveModuleSource_106_(source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'resolveModuleSource':PyJs_resolveModuleSource_106_, u'arguments':arguments}, var) + var.registers([u'resolveModuleSource', u'source']) + var.put(u'resolveModuleSource', var.get(u"this").get(u'opts').get(u'resolveModuleSource')) + if var.get(u'resolveModuleSource'): + var.put(u'source', var.get(u'resolveModuleSource')(var.get(u'source'), var.get(u"this").get(u'opts').get(u'filename'))) + return var.get(u'source') + PyJs_resolveModuleSource_106_._set_name(u'resolveModuleSource') + var.get(u'File').get(u'prototype').put(u'resolveModuleSource', PyJs_resolveModuleSource_106_) + @Js + def PyJs_addImport_107_(source, imported, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'imported':imported, u'arguments':arguments, u'addImport':PyJs_addImport_107_}, var) + var.registers([u'specifiers', u'imported', u'name', u'alias', u'source', u'declar', u'id']) + var.put(u'name', (var.get(u'arguments').get(u'2') if ((var.get(u'arguments').get(u'length')>Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else var.get(u'imported'))) + var.put(u'alias', ((var.get(u'source')+Js(u':'))+var.get(u'imported'))) + var.put(u'id', var.get(u"this").get(u'dynamicImportIds').get(var.get(u'alias'))) + if var.get(u'id').neg(): + var.put(u'source', var.get(u"this").callprop(u'resolveModuleSource', var.get(u'source'))) + var.put(u'id', var.get(u"this").get(u'dynamicImportIds').put(var.get(u'alias'), var.get(u"this").get(u'scope').callprop(u'generateUidIdentifier', var.get(u'name')))) + var.put(u'specifiers', Js([])) + if PyJsStrictEq(var.get(u'imported'),Js(u'*')): + var.get(u'specifiers').callprop(u'push', var.get(u't').callprop(u'importNamespaceSpecifier', var.get(u'id'))) + else: + if PyJsStrictEq(var.get(u'imported'),Js(u'default')): + var.get(u'specifiers').callprop(u'push', var.get(u't').callprop(u'importDefaultSpecifier', var.get(u'id'))) + else: + var.get(u'specifiers').callprop(u'push', var.get(u't').callprop(u'importSpecifier', var.get(u'id'), var.get(u't').callprop(u'identifier', var.get(u'imported')))) + var.put(u'declar', var.get(u't').callprop(u'importDeclaration', var.get(u'specifiers'), var.get(u't').callprop(u'stringLiteral', var.get(u'source')))) + var.get(u'declar').put(u'_blockHoist', Js(3.0)) + var.get(u"this").get(u'path').callprop(u'unshiftContainer', Js(u'body'), var.get(u'declar')) + return var.get(u'id') + PyJs_addImport_107_._set_name(u'addImport') + var.get(u'File').get(u'prototype').put(u'addImport', PyJs_addImport_107_) + @Js + def PyJs_addHelper_108_(name, this, arguments, var=var): + var = Scope({u'this':this, u'addHelper':PyJs_addHelper_108_, u'name':name, u'arguments':arguments}, var) + var.registers([u'uid', u'generator', u'res', u'declar', u'runtime', u'ref', u'name']) + var.put(u'declar', var.get(u"this").get(u'declarations').get(var.get(u'name'))) + if var.get(u'declar'): + return var.get(u'declar') + if var.get(u"this").get(u'usedHelpers').get(var.get(u'name')).neg(): + var.get(u"this").get(u'metadata').get(u'usedHelpers').callprop(u'push', var.get(u'name')) + var.get(u"this").get(u'usedHelpers').put(var.get(u'name'), var.get(u'true')) + var.put(u'generator', var.get(u"this").callprop(u'get', Js(u'helperGenerator'))) + var.put(u'runtime', var.get(u"this").callprop(u'get', Js(u'helpersNamespace'))) + if var.get(u'generator'): + var.put(u'res', var.get(u'generator')(var.get(u'name'))) + if var.get(u'res'): + return var.get(u'res') + else: + if var.get(u'runtime'): + return var.get(u't').callprop(u'memberExpression', var.get(u'runtime'), var.get(u't').callprop(u'identifier', var.get(u'name'))) + var.put(u'ref', PyJsComma(Js(0.0),var.get(u'_babelHelpers2').get(u'default'))(var.get(u'name'))) + var.put(u'uid', var.get(u"this").get(u'declarations').put(var.get(u'name'), var.get(u"this").get(u'scope').callprop(u'generateUidIdentifier', var.get(u'name')))) + if (var.get(u't').callprop(u'isFunctionExpression', var.get(u'ref')) and var.get(u'ref').get(u'id').neg()): + var.get(u'ref').get(u'body').put(u'_compact', var.get(u'true')) + var.get(u'ref').put(u'_generated', var.get(u'true')) + var.get(u'ref').put(u'id', var.get(u'uid')) + var.get(u'ref').put(u'type', Js(u'FunctionDeclaration')) + var.get(u"this").get(u'path').callprop(u'unshiftContainer', Js(u'body'), var.get(u'ref')) + else: + var.get(u'ref').put(u'_compact', var.get(u'true')) + PyJs_Object_109_ = Js({u'id':var.get(u'uid'),u'init':var.get(u'ref'),u'unique':var.get(u'true')}) + var.get(u"this").get(u'scope').callprop(u'push', PyJs_Object_109_) + return var.get(u'uid') + PyJs_addHelper_108_._set_name(u'addHelper') + var.get(u'File').get(u'prototype').put(u'addHelper', PyJs_addHelper_108_) + @Js + def PyJs_addTemplateObject_110_(helperName, strings, raw, this, arguments, var=var): + var = Scope({u'this':this, u'helperName':helperName, u'raw':raw, u'arguments':arguments, u'addTemplateObject':PyJs_addTemplateObject_110_, u'strings':strings}, var) + var.registers([u'name', u'helperName', u'raw', u'init', u'declar', u'stringIds', u'helperId', u'strings', u'uid']) + @Js + def PyJs_anonymous_111_(string, this, arguments, var=var): + var = Scope({u'this':this, u'string':string, u'arguments':arguments}, var) + var.registers([u'string']) + return var.get(u'string').get(u'value') + PyJs_anonymous_111_._set_name(u'anonymous') + var.put(u'stringIds', var.get(u'raw').get(u'elements').callprop(u'map', PyJs_anonymous_111_)) + var.put(u'name', ((((var.get(u'helperName')+Js(u'_'))+var.get(u'raw').get(u'elements').get(u'length'))+Js(u'_'))+var.get(u'stringIds').callprop(u'join', Js(u',')))) + var.put(u'declar', var.get(u"this").get(u'declarations').get(var.get(u'name'))) + if var.get(u'declar'): + return var.get(u'declar') + var.put(u'uid', var.get(u"this").get(u'declarations').put(var.get(u'name'), var.get(u"this").get(u'scope').callprop(u'generateUidIdentifier', Js(u'templateObject')))) + var.put(u'helperId', var.get(u"this").callprop(u'addHelper', var.get(u'helperName'))) + var.put(u'init', var.get(u't').callprop(u'callExpression', var.get(u'helperId'), Js([var.get(u'strings'), var.get(u'raw')]))) + var.get(u'init').put(u'_compact', var.get(u'true')) + PyJs_Object_112_ = Js({u'id':var.get(u'uid'),u'init':var.get(u'init'),u'_blockHoist':Js(1.9)}) + var.get(u"this").get(u'scope').callprop(u'push', PyJs_Object_112_) + return var.get(u'uid') + PyJs_addTemplateObject_110_._set_name(u'addTemplateObject') + var.get(u'File').get(u'prototype').put(u'addTemplateObject', PyJs_addTemplateObject_110_) + @Js + def PyJs_buildCodeFrameError_113_(node, msg, this, arguments, var=var): + var = Scope({u'node':node, u'msg':msg, u'buildCodeFrameError':PyJs_buildCodeFrameError_113_, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'loc', u'msg', u'err', u'Error']) + var.put(u'Error', (var.get(u'arguments').get(u'2') if ((var.get(u'arguments').get(u'length')>Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else var.get(u'SyntaxError'))) + var.put(u'loc', (var.get(u'node') and (var.get(u'node').get(u'loc') or var.get(u'node').get(u'_loc')))) + var.put(u'err', var.get(u'Error').create(var.get(u'msg'))) + if var.get(u'loc'): + var.get(u'err').put(u'loc', var.get(u'loc').get(u'start')) + else: + PyJsComma(Js(0.0),var.get(u'_babelTraverse2').get(u'default'))(var.get(u'node'), var.get(u'errorVisitor'), var.get(u"this").get(u'scope'), var.get(u'err')) + var.get(u'err').put(u'message', Js(u' (This is an error on an internal node. Probably an internal error'), u'+') + if var.get(u'err').get(u'loc'): + var.get(u'err').put(u'message', Js(u'. Location has been estimated.'), u'+') + var.get(u'err').put(u'message', Js(u')'), u'+') + return var.get(u'err') + PyJs_buildCodeFrameError_113_._set_name(u'buildCodeFrameError') + var.get(u'File').get(u'prototype').put(u'buildCodeFrameError', PyJs_buildCodeFrameError_113_) + @Js + def PyJs_mergeSourceMap_114_(map, this, arguments, var=var): + var = Scope({u'this':this, u'map':map, u'arguments':arguments, u'mergeSourceMap':PyJs_mergeSourceMap_114_}, var) + var.registers([u'_ret', u'map', u'inputMap']) + var.put(u'inputMap', var.get(u"this").get(u'opts').get(u'inputSourceMap')) + if var.get(u'inputMap'): + @Js + def PyJs_anonymous_115_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'mergedGenerator', u'source', u'mergedMap', u'outputMapConsumer', u'inputMapConsumer']) + var.put(u'inputMapConsumer', var.get(u'_sourceMap2').get(u'default').get(u'SourceMapConsumer').create(var.get(u'inputMap'))) + var.put(u'outputMapConsumer', var.get(u'_sourceMap2').get(u'default').get(u'SourceMapConsumer').create(var.get(u'map'))) + PyJs_Object_116_ = Js({u'file':var.get(u'inputMapConsumer').get(u'file'),u'sourceRoot':var.get(u'inputMapConsumer').get(u'sourceRoot')}) + var.put(u'mergedGenerator', var.get(u'_sourceMap2').get(u'default').get(u'SourceMapGenerator').create(PyJs_Object_116_)) + var.put(u'source', var.get(u'outputMapConsumer').get(u'sources').get(u'0')) + @Js + def PyJs_anonymous_117_(mapping, this, arguments, var=var): + var = Scope({u'this':this, u'mapping':mapping, u'arguments':arguments}, var) + var.registers([u'generatedPosition', u'mapping']) + PyJs_Object_118_ = Js({u'line':var.get(u'mapping').get(u'generatedLine'),u'column':var.get(u'mapping').get(u'generatedColumn'),u'source':var.get(u'source')}) + var.put(u'generatedPosition', var.get(u'outputMapConsumer').callprop(u'generatedPositionFor', PyJs_Object_118_)) + if (var.get(u'generatedPosition').get(u'column')!=var.get(u"null")): + PyJs_Object_120_ = Js({u'line':var.get(u'mapping').get(u'originalLine'),u'column':var.get(u'mapping').get(u'originalColumn')}) + PyJs_Object_119_ = Js({u'source':var.get(u'mapping').get(u'source'),u'original':(var.get(u"null") if (var.get(u'mapping').get(u'source')==var.get(u"null")) else PyJs_Object_120_),u'generated':var.get(u'generatedPosition')}) + var.get(u'mergedGenerator').callprop(u'addMapping', PyJs_Object_119_) + PyJs_anonymous_117_._set_name(u'anonymous') + var.get(u'inputMapConsumer').callprop(u'eachMapping', PyJs_anonymous_117_) + var.put(u'mergedMap', var.get(u'mergedGenerator').callprop(u'toJSON')) + var.get(u'inputMap').put(u'mappings', var.get(u'mergedMap').get(u'mappings')) + PyJs_Object_121_ = Js({u'v':var.get(u'inputMap')}) + return PyJs_Object_121_ + PyJs_anonymous_115_._set_name(u'anonymous') + var.put(u'_ret', PyJs_anonymous_115_()) + if PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'_ret',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'_ret'))),Js(u'object')): + return var.get(u'_ret').get(u'v') + else: + return var.get(u'map') + PyJs_mergeSourceMap_114_._set_name(u'mergeSourceMap') + var.get(u'File').get(u'prototype').put(u'mergeSourceMap', PyJs_mergeSourceMap_114_) + @Js + def PyJs_parse_122_(code, this, arguments, var=var): + var = Scope({u'this':this, u'parse':PyJs_parse_122_, u'code':code, u'arguments':arguments}, var) + var.registers([u'code', u'ast', u'parser', u'parseCode', u'dirname', u'parserOpts']) + var.put(u'parseCode', var.get(u'_babylon').get(u'parse')) + var.put(u'parserOpts', var.get(u"this").get(u'opts').get(u'parserOpts')) + if var.get(u'parserOpts'): + PyJs_Object_123_ = Js({}) + var.put(u'parserOpts', PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(PyJs_Object_123_, var.get(u"this").get(u'parserOpts'), var.get(u'parserOpts'))) + if var.get(u'parserOpts').get(u'parser'): + if PyJsStrictEq(var.get(u'parserOpts').get(u'parser').typeof(),Js(u'string')): + var.put(u'dirname', (var.get(u'_path2').get(u'default').callprop(u'dirname', var.get(u"this").get(u'opts').get(u'filename')) or var.get(u'process').callprop(u'cwd'))) + var.put(u'parser', PyJsComma(Js(0.0),var.get(u'_resolve2').get(u'default'))(var.get(u'parserOpts').get(u'parser'), var.get(u'dirname'))) + if var.get(u'parser'): + var.put(u'parseCode', var.get(u'require')(var.get(u'parser')).get(u'parse')) + else: + PyJsTempException = JsToPyException(var.get(u'Error').create((((Js(u"Couldn't find parser ")+var.get(u'parserOpts').get(u'parser'))+Js(u' with "parse" method relative to directory '))+var.get(u'dirname')))) + raise PyJsTempException + else: + var.put(u'parseCode', var.get(u'parserOpts').get(u'parser')) + @Js + def PyJs_parse_125_(source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'parse':PyJs_parse_125_, u'arguments':arguments}, var) + var.registers([u'source']) + return PyJsComma(Js(0.0),var.get(u'_babylon').get(u'parse'))(var.get(u'source'), var.get(u'parserOpts')) + PyJs_parse_125_._set_name(u'parse') + PyJs_Object_124_ = Js({u'parse':PyJs_parse_125_}) + var.get(u'parserOpts').put(u'parser', PyJs_Object_124_) + var.get(u"this").get(u'log').callprop(u'debug', Js(u'Parse start')) + var.put(u'ast', var.get(u'parseCode')(var.get(u'code'), (var.get(u'parserOpts') or var.get(u"this").get(u'parserOpts')))) + var.get(u"this").get(u'log').callprop(u'debug', Js(u'Parse stop')) + return var.get(u'ast') + PyJs_parse_122_._set_name(u'parse') + var.get(u'File').get(u'prototype').put(u'parse', PyJs_parse_122_) + @Js + def PyJs__addAst_126_(ast, this, arguments, var=var): + var = Scope({u'this':this, u'_addAst':PyJs__addAst_126_, u'arguments':arguments, u'ast':ast}, var) + var.registers([u'ast']) + PyJs_Object_127_ = Js({u'hub':var.get(u"this").get(u'hub'),u'parentPath':var.get(u"null"),u'parent':var.get(u'ast'),u'container':var.get(u'ast'),u'key':Js(u'program')}) + var.get(u"this").put(u'path', var.get(u'_babelTraverse').get(u'NodePath').callprop(u'get', PyJs_Object_127_).callprop(u'setContext')) + var.get(u"this").put(u'scope', var.get(u"this").get(u'path').get(u'scope')) + var.get(u"this").put(u'ast', var.get(u'ast')) + var.get(u"this").callprop(u'getMetadata') + PyJs__addAst_126_._set_name(u'_addAst') + var.get(u'File').get(u'prototype').put(u'_addAst', PyJs__addAst_126_) + @Js + def PyJs_addAst_128_(ast, this, arguments, var=var): + var = Scope({u'this':this, u'addAst':PyJs_addAst_128_, u'arguments':arguments, u'ast':ast}, var) + var.registers([u'ast']) + var.get(u"this").get(u'log').callprop(u'debug', Js(u'Start set AST')) + var.get(u"this").callprop(u'_addAst', var.get(u'ast')) + var.get(u"this").get(u'log').callprop(u'debug', Js(u'End set AST')) + PyJs_addAst_128_._set_name(u'addAst') + var.get(u'File').get(u'prototype').put(u'addAst', PyJs_addAst_128_) + @Js + def PyJs_transform_129_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'transform':PyJs_transform_129_}, var) + var.registers([u'i', u'visitor', u'pluginPasses']) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'pass', var.get(u'_ref3')) + var.put(u'plugin', var.get(u'pass').get(u'plugin')) + var.put(u'fn', var.get(u'plugin').get(var.get(u'key'))) + if var.get(u'fn'): + var.get(u'fn').callprop(u'call', var.get(u'pass'), var.get(u"this")) + + PyJs_call_135_._set_name(u'call') + var.get(u'File').get(u'prototype').put(u'call', PyJs_call_135_) + @Js + def PyJs_parseInputSourceMap_136_(code, this, arguments, var=var): + var = Scope({u'this':this, u'parseInputSourceMap':PyJs_parseInputSourceMap_136_, u'code':code, u'arguments':arguments}, var) + var.registers([u'code', u'inputMap', u'opts']) + var.put(u'opts', var.get(u"this").get(u'opts')) + if PyJsStrictNeq(var.get(u'opts').get(u'inputSourceMap'),Js(False)): + var.put(u'inputMap', var.get(u'_convertSourceMap2').get(u'default').callprop(u'fromSource', var.get(u'code'))) + if var.get(u'inputMap'): + var.get(u'opts').put(u'inputSourceMap', var.get(u'inputMap').callprop(u'toObject')) + var.put(u'code', var.get(u'_convertSourceMap2').get(u'default').callprop(u'removeComments', var.get(u'code'))) + return var.get(u'code') + PyJs_parseInputSourceMap_136_._set_name(u'parseInputSourceMap') + var.get(u'File').get(u'prototype').put(u'parseInputSourceMap', PyJs_parseInputSourceMap_136_) + @Js + def PyJs_parseShebang_137_(this, arguments, var=var): + var = Scope({u'this':this, u'parseShebang':PyJs_parseShebang_137_, u'arguments':arguments}, var) + var.registers([u'shebangMatch']) + var.put(u'shebangMatch', var.get(u'shebangRegex').callprop(u'exec', var.get(u"this").get(u'code'))) + if var.get(u'shebangMatch'): + var.get(u"this").put(u'shebang', var.get(u'shebangMatch').get(u'0')) + var.get(u"this").put(u'code', var.get(u"this").get(u'code').callprop(u'replace', var.get(u'shebangRegex'), Js(u''))) + PyJs_parseShebang_137_._set_name(u'parseShebang') + var.get(u'File').get(u'prototype').put(u'parseShebang', PyJs_parseShebang_137_) + @Js + def PyJs_makeResult_138_(_ref4, this, arguments, var=var): + var = Scope({u'this':this, u'makeResult':PyJs_makeResult_138_, u'_ref4':_ref4, u'arguments':arguments}, var) + var.registers([u'ignored', u'code', u'map', u'_ref4', u'ast', u'result']) + var.put(u'code', var.get(u'_ref4').get(u'code')) + var.put(u'map', var.get(u'_ref4').get(u'map')) + var.put(u'ast', var.get(u'_ref4').get(u'ast')) + var.put(u'ignored', var.get(u'_ref4').get(u'ignored')) + PyJs_Object_139_ = Js({u'metadata':var.get(u"null"),u'options':var.get(u"this").get(u'opts'),u'ignored':var.get(u'ignored').neg().neg(),u'code':var.get(u"null"),u'ast':var.get(u"null"),u'map':(var.get(u'map') or var.get(u"null"))}) + var.put(u'result', PyJs_Object_139_) + if var.get(u"this").get(u'opts').get(u'code'): + var.get(u'result').put(u'code', var.get(u'code')) + if var.get(u"this").get(u'opts').get(u'ast'): + var.get(u'result').put(u'ast', var.get(u'ast')) + if var.get(u"this").get(u'opts').get(u'metadata'): + var.get(u'result').put(u'metadata', var.get(u"this").get(u'metadata')) + return var.get(u'result') + PyJs_makeResult_138_._set_name(u'makeResult') + var.get(u'File').get(u'prototype').put(u'makeResult', PyJs_makeResult_138_) + @Js + def PyJs_generate_140_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'generate':PyJs_generate_140_}, var) + var.registers([u'_result', u'generator', u'ast', u'result', u'dirname', u'gen', u'opts']) + var.put(u'opts', var.get(u"this").get(u'opts')) + var.put(u'ast', var.get(u"this").get(u'ast')) + PyJs_Object_141_ = Js({u'ast':var.get(u'ast')}) + var.put(u'result', PyJs_Object_141_) + if var.get(u'opts').get(u'code').neg(): + return var.get(u"this").callprop(u'makeResult', var.get(u'result')) + var.put(u'gen', var.get(u'_babelGenerator2').get(u'default')) + if var.get(u'opts').get(u'generatorOpts').get(u'generator'): + var.put(u'gen', var.get(u'opts').get(u'generatorOpts').get(u'generator')) + if PyJsStrictEq(var.get(u'gen',throw=False).typeof(),Js(u'string')): + var.put(u'dirname', (var.get(u'_path2').get(u'default').callprop(u'dirname', var.get(u"this").get(u'opts').get(u'filename')) or var.get(u'process').callprop(u'cwd'))) + var.put(u'generator', PyJsComma(Js(0.0),var.get(u'_resolve2').get(u'default'))(var.get(u'gen'), var.get(u'dirname'))) + if var.get(u'generator'): + var.put(u'gen', var.get(u'require')(var.get(u'generator')).get(u'print')) + else: + PyJsTempException = JsToPyException(var.get(u'Error').create((((Js(u"Couldn't find generator ")+var.get(u'gen'))+Js(u' with "print" method relative to directory '))+var.get(u'dirname')))) + raise PyJsTempException + var.get(u"this").get(u'log').callprop(u'debug', Js(u'Generation start')) + var.put(u'_result', var.get(u'gen')(var.get(u'ast'), (PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'opts'), var.get(u'opts').get(u'generatorOpts')) if var.get(u'opts').get(u'generatorOpts') else var.get(u'opts')), var.get(u"this").get(u'code'))) + var.get(u'result').put(u'code', var.get(u'_result').get(u'code')) + var.get(u'result').put(u'map', var.get(u'_result').get(u'map')) + var.get(u"this").get(u'log').callprop(u'debug', Js(u'Generation end')) + if var.get(u"this").get(u'shebang'): + var.get(u'result').put(u'code', ((var.get(u"this").get(u'shebang')+Js(u'\n'))+var.get(u'result').get(u'code'))) + if var.get(u'result').get(u'map'): + var.get(u'result').put(u'map', var.get(u"this").callprop(u'mergeSourceMap', var.get(u'result').get(u'map'))) + if (PyJsStrictEq(var.get(u'opts').get(u'sourceMaps'),Js(u'inline')) or PyJsStrictEq(var.get(u'opts').get(u'sourceMaps'),Js(u'both'))): + var.get(u'result').put(u'code', (Js(u'\n')+var.get(u'_convertSourceMap2').get(u'default').callprop(u'fromObject', var.get(u'result').get(u'map')).callprop(u'toComment')), u'+') + if PyJsStrictEq(var.get(u'opts').get(u'sourceMaps'),Js(u'inline')): + var.get(u'result').put(u'map', var.get(u"null")) + return var.get(u"this").callprop(u'makeResult', var.get(u'result')) + PyJs_generate_140_._set_name(u'generate') + var.get(u'File').get(u'prototype').put(u'generate', PyJs_generate_140_) + return var.get(u'File') + PyJs_anonymous_86_._set_name(u'anonymous') + var.put(u'File', PyJs_anonymous_86_(var.get(u'_store2').get(u'default'))) + var.get(u'exports').put(u'default', var.get(u'File')) + var.get(u'exports').put(u'File', var.get(u'File')) + PyJs_anonymous_81_._set_name(u'anonymous') + PyJs_anonymous_81_.callprop(u'call', var.get(u"this"), var.get(u'require')(Js(u'_process'))) +PyJs_anonymous_80_._set_name(u'anonymous') +PyJs_Object_142_ = Js({u'../../helpers/resolve':Js(9.0),u'../../store':Js(10.0),u'../../util':Js(26.0),u'../internal-plugins/block-hoist':Js(21.0),u'../internal-plugins/shadow-functions':Js(22.0),u'../plugin-pass':Js(24.0),u'./logger':Js(13.0),u'./metadata':Js(14.0),u'./options/option-manager':Js(18.0),u'_process':Js(531.0),u'babel-code-frame':Js(4.0),u'babel-generator':Js(40.0),u'babel-helpers':Js(56.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/object/assign':Js(100.0),u'babel-runtime/core-js/object/create':Js(101.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-runtime/helpers/inherits':Js(111.0),u'babel-runtime/helpers/possibleConstructorReturn':Js(113.0),u'babel-runtime/helpers/typeof':Js(114.0),u'babel-traverse':Js(225.0),u'babel-types':Js(258.0),u'babylon':Js(262.0),u'convert-source-map':Js(267.0),u'lodash/defaults':Js(442.0),u'path':Js(530.0),u'source-map':Js(519.0)}) +@Js +def PyJs_anonymous_143_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'seenDeprecatedMessages', u'require', u'module', u'_node2', u'_node', u'verboseDebug', u'_interopRequireDefault', u'generalDebug', u'_classCallCheck3', u'_classCallCheck2', u'Logger']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_144_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_144_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_node', var.get(u'require')(Js(u'debug/node'))) + var.put(u'_node2', var.get(u'_interopRequireDefault')(var.get(u'_node'))) + pass + var.put(u'verboseDebug', PyJsComma(Js(0.0),var.get(u'_node2').get(u'default'))(Js(u'babel:verbose'))) + var.put(u'generalDebug', PyJsComma(Js(0.0),var.get(u'_node2').get(u'default'))(Js(u'babel'))) + var.put(u'seenDeprecatedMessages', Js([])) + @Js + def PyJs_anonymous_145_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'Logger']) + @Js + def PyJsHoisted_Logger_(file, filename, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'file':file, u'filename':filename}, var) + var.registers([u'file', u'filename']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Logger')) + var.get(u"this").put(u'filename', var.get(u'filename')) + var.get(u"this").put(u'file', var.get(u'file')) + PyJsHoisted_Logger_.func_name = u'Logger' + var.put(u'Logger', PyJsHoisted_Logger_) + pass + @Js + def PyJs__buildMessage_146_(msg, this, arguments, var=var): + var = Scope({u'msg':msg, u'this':this, u'_buildMessage':PyJs__buildMessage_146_, u'arguments':arguments}, var) + var.registers([u'msg', u'parts']) + var.put(u'parts', (Js(u'[BABEL] ')+var.get(u"this").get(u'filename'))) + if var.get(u'msg'): + var.put(u'parts', (Js(u': ')+var.get(u'msg')), u'+') + return var.get(u'parts') + PyJs__buildMessage_146_._set_name(u'_buildMessage') + var.get(u'Logger').get(u'prototype').put(u'_buildMessage', PyJs__buildMessage_146_) + @Js + def PyJs_warn_147_(msg, this, arguments, var=var): + var = Scope({u'msg':msg, u'this':this, u'warn':PyJs_warn_147_, u'arguments':arguments}, var) + var.registers([u'msg']) + var.get(u'console').callprop(u'warn', var.get(u"this").callprop(u'_buildMessage', var.get(u'msg'))) + PyJs_warn_147_._set_name(u'warn') + var.get(u'Logger').get(u'prototype').put(u'warn', PyJs_warn_147_) + @Js + def PyJs_error_148_(msg, this, arguments, var=var): + var = Scope({u'msg':msg, u'this':this, u'arguments':arguments, u'error':PyJs_error_148_}, var) + var.registers([u'msg', u'Constructor']) + var.put(u'Constructor', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else var.get(u'Error'))) + PyJsTempException = JsToPyException(var.get(u'Constructor').create(var.get(u"this").callprop(u'_buildMessage', var.get(u'msg')))) + raise PyJsTempException + PyJs_error_148_._set_name(u'error') + var.get(u'Logger').get(u'prototype').put(u'error', PyJs_error_148_) + @Js + def PyJs_deprecate_149_(msg, this, arguments, var=var): + var = Scope({u'msg':msg, u'this':this, u'deprecate':PyJs_deprecate_149_, u'arguments':arguments}, var) + var.registers([u'msg']) + if (var.get(u"this").get(u'file').get(u'opts') and var.get(u"this").get(u'file').get(u'opts').get(u'suppressDeprecationMessages')): + return var.get('undefined') + var.put(u'msg', var.get(u"this").callprop(u'_buildMessage', var.get(u'msg'))) + if (var.get(u'seenDeprecatedMessages').callprop(u'indexOf', var.get(u'msg'))>=Js(0.0)): + return var.get('undefined') + var.get(u'seenDeprecatedMessages').callprop(u'push', var.get(u'msg')) + var.get(u'console').callprop(u'error', var.get(u'msg')) + PyJs_deprecate_149_._set_name(u'deprecate') + var.get(u'Logger').get(u'prototype').put(u'deprecate', PyJs_deprecate_149_) + @Js + def PyJs_verbose_150_(msg, this, arguments, var=var): + var = Scope({u'msg':msg, u'this':this, u'arguments':arguments, u'verbose':PyJs_verbose_150_}, var) + var.registers([u'msg']) + if var.get(u'verboseDebug').get(u'enabled'): + var.get(u'verboseDebug')(var.get(u"this").callprop(u'_buildMessage', var.get(u'msg'))) + PyJs_verbose_150_._set_name(u'verbose') + var.get(u'Logger').get(u'prototype').put(u'verbose', PyJs_verbose_150_) + @Js + def PyJs_debug_151_(msg, this, arguments, var=var): + var = Scope({u'msg':msg, u'this':this, u'arguments':arguments, u'debug':PyJs_debug_151_}, var) + var.registers([u'msg']) + if var.get(u'generalDebug').get(u'enabled'): + var.get(u'generalDebug')(var.get(u"this").callprop(u'_buildMessage', var.get(u'msg'))) + PyJs_debug_151_._set_name(u'debug') + var.get(u'Logger').get(u'prototype').put(u'debug', PyJs_debug_151_) + @Js + def PyJs_deopt_152_(node, msg, this, arguments, var=var): + var = Scope({u'node':node, u'msg':msg, u'this':this, u'arguments':arguments, u'deopt':PyJs_deopt_152_}, var) + var.registers([u'node', u'msg']) + var.get(u"this").callprop(u'debug', var.get(u'msg')) + PyJs_deopt_152_._set_name(u'deopt') + var.get(u'Logger').get(u'prototype').put(u'deopt', PyJs_deopt_152_) + return var.get(u'Logger') + PyJs_anonymous_145_._set_name(u'anonymous') + var.put(u'Logger', PyJs_anonymous_145_()) + var.get(u'exports').put(u'default', var.get(u'Logger')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_143_._set_name(u'anonymous') +PyJs_Object_153_ = Js({u'babel-runtime/helpers/classCallCheck':Js(110.0),u'debug/node':Js(270.0)}) +@Js +def PyJs_anonymous_154_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'ExportDeclaration', u'ModuleDeclaration', u'_interopRequireWildcard', u'ImportDeclaration', u'require', u'_babelTypes', u'module', u't', u'_interopRequireDefault', u'Scope', u'_getIterator2', u'_getIterator3']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_156_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_156_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_Scope_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'path').callprop(u'skip') + PyJsHoisted_Scope_.func_name = u'Scope' + var.put(u'Scope', PyJsHoisted_Scope_) + @Js + def PyJsHoisted_ExportDeclaration_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'file':file}, var) + var.registers([u'node', u'specifier', u'exports', u'name', u'_i2', u'_ref2', u'source', u'declar', u'_isArray2', u'exported', u'file', u'path', u'bindings', u'local', u'_iterator2']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'source', (var.get(u'node').get(u'source').get(u'value') if var.get(u'node').get(u'source') else var.get(u"null"))) + var.put(u'exports', var.get(u'file').get(u'metadata').get(u'modules').get(u'exports')) + var.put(u'declar', var.get(u'path').callprop(u'get', Js(u'declaration'))) + if var.get(u'declar').callprop(u'isStatement'): + var.put(u'bindings', var.get(u'declar').callprop(u'getBindingIdentifiers')) + for PyJsTemp in var.get(u'bindings'): + var.put(u'name', PyJsTemp) + var.get(u'exports').get(u'exported').callprop(u'push', var.get(u'name')) + PyJs_Object_165_ = Js({u'kind':Js(u'local'),u'local':var.get(u'name'),u'exported':(Js(u'default') if var.get(u'path').callprop(u'isExportDefaultDeclaration') else var.get(u'name'))}) + var.get(u'exports').get(u'specifiers').callprop(u'push', PyJs_Object_165_) + if (var.get(u'path').callprop(u'isExportNamedDeclaration') and var.get(u'node').get(u'specifiers')): + #for JS loop + var.put(u'_iterator2', var.get(u'node').get(u'specifiers')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'specifier', var.get(u'_ref2')) + var.put(u'exported', var.get(u'specifier').get(u'exported').get(u'name')) + var.get(u'exports').get(u'exported').callprop(u'push', var.get(u'exported')) + if var.get(u't').callprop(u'isExportDefaultSpecifier', var.get(u'specifier')): + PyJs_Object_166_ = Js({u'kind':Js(u'external'),u'local':var.get(u'exported'),u'exported':var.get(u'exported'),u'source':var.get(u'source')}) + var.get(u'exports').get(u'specifiers').callprop(u'push', PyJs_Object_166_) + if var.get(u't').callprop(u'isExportNamespaceSpecifier', var.get(u'specifier')): + PyJs_Object_167_ = Js({u'kind':Js(u'external-namespace'),u'exported':var.get(u'exported'),u'source':var.get(u'source')}) + var.get(u'exports').get(u'specifiers').callprop(u'push', PyJs_Object_167_) + var.put(u'local', var.get(u'specifier').get(u'local')) + if var.get(u'local').neg(): + continue + if var.get(u'source'): + PyJs_Object_168_ = Js({u'kind':Js(u'external'),u'local':var.get(u'local').get(u'name'),u'exported':var.get(u'exported'),u'source':var.get(u'source')}) + var.get(u'exports').get(u'specifiers').callprop(u'push', PyJs_Object_168_) + if var.get(u'source').neg(): + PyJs_Object_169_ = Js({u'kind':Js(u'local'),u'local':var.get(u'local').get(u'name'),u'exported':var.get(u'exported')}) + var.get(u'exports').get(u'specifiers').callprop(u'push', PyJs_Object_169_) + + if var.get(u'path').callprop(u'isExportAllDeclaration'): + PyJs_Object_170_ = Js({u'kind':Js(u'external-all'),u'source':var.get(u'source')}) + var.get(u'exports').get(u'specifiers').callprop(u'push', PyJs_Object_170_) + PyJsHoisted_ExportDeclaration_.func_name = u'ExportDeclaration' + var.put(u'ExportDeclaration', PyJsHoisted_ExportDeclaration_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_155_ = Js({}) + var.put(u'newObj', PyJs_Object_155_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'ImportDeclaration', var.get(u'exports').put(u'ModuleDeclaration', var.get(u'undefined'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'ExportDeclaration', var.get(u'ExportDeclaration')) + var.get(u'exports').put(u'Scope', var.get(u'Scope')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + @Js + def PyJs_enter_158_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'file':file, u'enter':PyJs_enter_158_}, var) + var.registers([u'node', u'path', u'file']) + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'node').get(u'source'): + var.get(u'node').get(u'source').put(u'value', var.get(u'file').callprop(u'resolveModuleSource', var.get(u'node').get(u'source').get(u'value'))) + PyJs_enter_158_._set_name(u'enter') + PyJs_Object_157_ = Js({u'enter':PyJs_enter_158_}) + var.put(u'ModuleDeclaration', var.get(u'exports').put(u'ModuleDeclaration', PyJs_Object_157_)) + @Js + def PyJs_exit_160_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'exit':PyJs_exit_160_, u'arguments':arguments, u'file':file}, var) + var.registers([u'node', u'specifiers', u'_isArray', u'imported', u'file', u'specifier', u'_i', u'importedName', u'_iterator', u'_ref', u'path', u'local']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'specifiers', Js([])) + var.put(u'imported', Js([])) + PyJs_Object_161_ = Js({u'source':var.get(u'node').get(u'source').get(u'value'),u'imported':var.get(u'imported'),u'specifiers':var.get(u'specifiers')}) + var.get(u'file').get(u'metadata').get(u'modules').get(u'imports').callprop(u'push', PyJs_Object_161_) + #for JS loop + var.put(u'_iterator', var.get(u'path').callprop(u'get', Js(u'specifiers'))) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'specifier', var.get(u'_ref')) + var.put(u'local', var.get(u'specifier').get(u'node').get(u'local').get(u'name')) + if var.get(u'specifier').callprop(u'isImportDefaultSpecifier'): + var.get(u'imported').callprop(u'push', Js(u'default')) + PyJs_Object_162_ = Js({u'kind':Js(u'named'),u'imported':Js(u'default'),u'local':var.get(u'local')}) + var.get(u'specifiers').callprop(u'push', PyJs_Object_162_) + if var.get(u'specifier').callprop(u'isImportSpecifier'): + var.put(u'importedName', var.get(u'specifier').get(u'node').get(u'imported').get(u'name')) + var.get(u'imported').callprop(u'push', var.get(u'importedName')) + PyJs_Object_163_ = Js({u'kind':Js(u'named'),u'imported':var.get(u'importedName'),u'local':var.get(u'local')}) + var.get(u'specifiers').callprop(u'push', PyJs_Object_163_) + if var.get(u'specifier').callprop(u'isImportNamespaceSpecifier'): + var.get(u'imported').callprop(u'push', Js(u'*')) + PyJs_Object_164_ = Js({u'kind':Js(u'namespace'),u'local':var.get(u'local')}) + var.get(u'specifiers').callprop(u'push', PyJs_Object_164_) + + PyJs_exit_160_._set_name(u'exit') + PyJs_Object_159_ = Js({u'exit':PyJs_exit_160_}) + var.put(u'ImportDeclaration', var.get(u'exports').put(u'ImportDeclaration', PyJs_Object_159_)) + pass + pass +PyJs_anonymous_154_._set_name(u'anonymous') +PyJs_Object_171_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_172_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_173_(process, this, arguments, var=var): + var = Scope({u'process':process, u'this':this, u'arguments':arguments}, var) + var.registers([u'_resolve', u'existsCache', u'exists', u'_fs', u'process', u'buildConfigChain', u'_json2', u'_interopRequireDefault', u'_fs2', u'BABELIGNORE_FILENAME', u'_json', u'PACKAGE_FILENAME', u'jsonCache', u'_classCallCheck3', u'_classCallCheck2', u'_assign', u'BABELRC_FILENAME', u'_pathIsAbsolute2', u'_path2', u'_assign2', u'_resolve2', u'_pathIsAbsolute', u'ConfigChainBuilder', u'_path']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_174_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_174_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_buildConfigChain_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'builder', u'log', u'opts', u'filename']) + PyJs_Object_177_ = Js({}) + var.put(u'opts', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else PyJs_Object_177_)) + var.put(u'log', var.get(u'arguments').get(u'1')) + var.put(u'filename', var.get(u'opts').get(u'filename')) + var.put(u'builder', var.get(u'ConfigChainBuilder').create(var.get(u'log'))) + if PyJsStrictNeq(var.get(u'opts').get(u'babelrc'),Js(False)): + var.get(u'builder').callprop(u'findConfigs', var.get(u'filename')) + PyJs_Object_178_ = Js({u'options':var.get(u'opts'),u'alias':Js(u'base'),u'dirname':(var.get(u'filename') and var.get(u'_path2').get(u'default').callprop(u'dirname', var.get(u'filename')))}) + var.get(u'builder').callprop(u'mergeConfig', PyJs_Object_178_) + return var.get(u'builder').get(u'configs') + PyJsHoisted_buildConfigChain_.func_name = u'buildConfigChain' + var.put(u'buildConfigChain', PyJsHoisted_buildConfigChain_) + @Js + def PyJsHoisted_exists_(filename, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'filename':filename}, var) + var.registers([u'cached', u'filename']) + var.put(u'cached', var.get(u'existsCache').get(var.get(u'filename'))) + if (var.get(u'cached')==var.get(u"null")): + return var.get(u'existsCache').put(var.get(u'filename'), var.get(u'_fs2').get(u'default').callprop(u'existsSync', var.get(u'filename'))) + else: + return var.get(u'cached') + PyJsHoisted_exists_.func_name = u'exists' + var.put(u'exists', PyJsHoisted_exists_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_assign', var.get(u'require')(Js(u'babel-runtime/core-js/object/assign'))) + var.put(u'_assign2', var.get(u'_interopRequireDefault')(var.get(u'_assign'))) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.get(u'exports').put(u'default', var.get(u'buildConfigChain')) + var.put(u'_resolve', var.get(u'require')(Js(u'../../../helpers/resolve'))) + var.put(u'_resolve2', var.get(u'_interopRequireDefault')(var.get(u'_resolve'))) + var.put(u'_json', var.get(u'require')(Js(u'json5'))) + var.put(u'_json2', var.get(u'_interopRequireDefault')(var.get(u'_json'))) + var.put(u'_pathIsAbsolute', var.get(u'require')(Js(u'path-is-absolute'))) + var.put(u'_pathIsAbsolute2', var.get(u'_interopRequireDefault')(var.get(u'_pathIsAbsolute'))) + var.put(u'_path', var.get(u'require')(Js(u'path'))) + var.put(u'_path2', var.get(u'_interopRequireDefault')(var.get(u'_path'))) + var.put(u'_fs', var.get(u'require')(Js(u'fs'))) + var.put(u'_fs2', var.get(u'_interopRequireDefault')(var.get(u'_fs'))) + pass + PyJs_Object_175_ = Js({}) + var.put(u'existsCache', PyJs_Object_175_) + PyJs_Object_176_ = Js({}) + var.put(u'jsonCache', PyJs_Object_176_) + var.put(u'BABELIGNORE_FILENAME', Js(u'.babelignore')) + var.put(u'BABELRC_FILENAME', Js(u'.babelrc')) + var.put(u'PACKAGE_FILENAME', Js(u'package.json')) + pass + pass + @Js + def PyJs_anonymous_179_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'ConfigChainBuilder']) + @Js + def PyJsHoisted_ConfigChainBuilder_(log, this, arguments, var=var): + var = Scope({u'this':this, u'log':log, u'arguments':arguments}, var) + var.registers([u'log']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'ConfigChainBuilder')) + var.get(u"this").put(u'resolvedConfigs', Js([])) + var.get(u"this").put(u'configs', Js([])) + var.get(u"this").put(u'log', var.get(u'log')) + PyJsHoisted_ConfigChainBuilder_.func_name = u'ConfigChainBuilder' + var.put(u'ConfigChainBuilder', PyJsHoisted_ConfigChainBuilder_) + pass + @Js + def PyJs_findConfigs_180_(loc, this, arguments, var=var): + var = Scope({u'this':this, u'loc':loc, u'arguments':arguments, u'findConfigs':PyJs_findConfigs_180_}, var) + var.registers([u'loc', u'ignoreLoc', u'foundIgnore', u'pkgLoc', u'foundConfig', u'configLoc']) + if var.get(u'loc').neg(): + return var.get('undefined') + if PyJsComma(Js(0.0),var.get(u'_pathIsAbsolute2').get(u'default'))(var.get(u'loc')).neg(): + var.put(u'loc', var.get(u'_path2').get(u'default').callprop(u'join', var.get(u'process').callprop(u'cwd'), var.get(u'loc'))) + var.put(u'foundConfig', Js(False)) + var.put(u'foundIgnore', Js(False)) + while PyJsStrictNeq(var.get(u'loc'),var.put(u'loc', var.get(u'_path2').get(u'default').callprop(u'dirname', var.get(u'loc')))): + if var.get(u'foundConfig').neg(): + var.put(u'configLoc', var.get(u'_path2').get(u'default').callprop(u'join', var.get(u'loc'), var.get(u'BABELRC_FILENAME'))) + if var.get(u'exists')(var.get(u'configLoc')): + var.get(u"this").callprop(u'addConfig', var.get(u'configLoc')) + var.put(u'foundConfig', var.get(u'true')) + var.put(u'pkgLoc', var.get(u'_path2').get(u'default').callprop(u'join', var.get(u'loc'), var.get(u'PACKAGE_FILENAME'))) + if (var.get(u'foundConfig').neg() and var.get(u'exists')(var.get(u'pkgLoc'))): + var.put(u'foundConfig', var.get(u"this").callprop(u'addConfig', var.get(u'pkgLoc'), Js(u'babel'), var.get(u'JSON'))) + if var.get(u'foundIgnore').neg(): + var.put(u'ignoreLoc', var.get(u'_path2').get(u'default').callprop(u'join', var.get(u'loc'), var.get(u'BABELIGNORE_FILENAME'))) + if var.get(u'exists')(var.get(u'ignoreLoc')): + var.get(u"this").callprop(u'addIgnoreConfig', var.get(u'ignoreLoc')) + var.put(u'foundIgnore', var.get(u'true')) + if (var.get(u'foundIgnore') and var.get(u'foundConfig')): + return var.get('undefined') + PyJs_findConfigs_180_._set_name(u'findConfigs') + var.get(u'ConfigChainBuilder').get(u'prototype').put(u'findConfigs', PyJs_findConfigs_180_) + @Js + def PyJs_addIgnoreConfig_181_(loc, this, arguments, var=var): + var = Scope({u'this':this, u'loc':loc, u'arguments':arguments, u'addIgnoreConfig':PyJs_addIgnoreConfig_181_}, var) + var.registers([u'loc', u'lines', u'file']) + var.put(u'file', var.get(u'_fs2').get(u'default').callprop(u'readFileSync', var.get(u'loc'), Js(u'utf8'))) + var.put(u'lines', var.get(u'file').callprop(u'split', Js(u'\n'))) + @Js + def PyJs_anonymous_182_(line, this, arguments, var=var): + var = Scope({u'this':this, u'line':line, u'arguments':arguments}, var) + var.registers([u'line']) + return var.get(u'line').neg().neg() + PyJs_anonymous_182_._set_name(u'anonymous') + @Js + def PyJs_anonymous_183_(line, this, arguments, var=var): + var = Scope({u'this':this, u'line':line, u'arguments':arguments}, var) + var.registers([u'line']) + return var.get(u'line').callprop(u'replace', JsRegExp(u'/#(.*?)$/'), Js(u'')).callprop(u'trim') + PyJs_anonymous_183_._set_name(u'anonymous') + var.put(u'lines', var.get(u'lines').callprop(u'map', PyJs_anonymous_183_).callprop(u'filter', PyJs_anonymous_182_)) + if var.get(u'lines').get(u'length'): + PyJs_Object_185_ = Js({u'ignore':var.get(u'lines')}) + PyJs_Object_184_ = Js({u'options':PyJs_Object_185_,u'alias':var.get(u'loc'),u'dirname':var.get(u'_path2').get(u'default').callprop(u'dirname', var.get(u'loc'))}) + var.get(u"this").callprop(u'mergeConfig', PyJs_Object_184_) + PyJs_addIgnoreConfig_181_._set_name(u'addIgnoreConfig') + var.get(u'ConfigChainBuilder').get(u'prototype').put(u'addIgnoreConfig', PyJs_addIgnoreConfig_181_) + @Js + def PyJs_addConfig_186_(loc, key, this, arguments, var=var): + var = Scope({u'this':this, u'loc':loc, u'addConfig':PyJs_addConfig_186_, u'arguments':arguments, u'key':key}, var) + var.registers([u'content', u'loc', u'json', u'options', u'key']) + var.put(u'json', (var.get(u'arguments').get(u'2') if ((var.get(u'arguments').get(u'length')>Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else var.get(u'_json2').get(u'default'))) + if (var.get(u"this").get(u'resolvedConfigs').callprop(u'indexOf', var.get(u'loc'))>=Js(0.0)): + return Js(False) + var.get(u"this").get(u'resolvedConfigs').callprop(u'push', var.get(u'loc')) + var.put(u'content', var.get(u'_fs2').get(u'default').callprop(u'readFileSync', var.get(u'loc'), Js(u'utf8'))) + var.put(u'options', PyJsComma(Js(0.0), Js(None))) + try: + var.put(u'options', var.get(u'jsonCache').put(var.get(u'content'), (var.get(u'jsonCache').get(var.get(u'content')) or var.get(u'json').callprop(u'parse', var.get(u'content'))))) + if var.get(u'key'): + var.put(u'options', var.get(u'options').get(var.get(u'key'))) + except PyJsException as PyJsTempException: + PyJsHolder_657272_93340872 = var.own.get(u'err') + var.force_own_put(u'err', PyExceptionToJs(PyJsTempException)) + try: + var.get(u'err').put(u'message', ((var.get(u'loc')+Js(u': Error while parsing JSON - '))+var.get(u'err').get(u'message'))) + PyJsTempException = JsToPyException(var.get(u'err')) + raise PyJsTempException + finally: + if PyJsHolder_657272_93340872 is not None: + var.own[u'err'] = PyJsHolder_657272_93340872 + else: + del var.own[u'err'] + del PyJsHolder_657272_93340872 + PyJs_Object_187_ = Js({u'options':var.get(u'options'),u'alias':var.get(u'loc'),u'dirname':var.get(u'_path2').get(u'default').callprop(u'dirname', var.get(u'loc'))}) + var.get(u"this").callprop(u'mergeConfig', PyJs_Object_187_) + return var.get(u'options').neg().neg() + PyJs_addConfig_186_._set_name(u'addConfig') + var.get(u'ConfigChainBuilder').get(u'prototype').put(u'addConfig', PyJs_addConfig_186_) + @Js + def PyJs_mergeConfig_188_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments, u'mergeConfig':PyJs_mergeConfig_188_}, var) + var.registers([u'loc', u'envOpts', u'alias', u'envKey', u'extendsLoc', u'_ref', u'dirname', u'options']) + var.put(u'options', var.get(u'_ref').get(u'options')) + var.put(u'alias', var.get(u'_ref').get(u'alias')) + var.put(u'loc', var.get(u'_ref').get(u'loc')) + var.put(u'dirname', var.get(u'_ref').get(u'dirname')) + if var.get(u'options').neg(): + return Js(False) + PyJs_Object_189_ = Js({}) + var.put(u'options', PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(PyJs_Object_189_, var.get(u'options'))) + var.put(u'dirname', (var.get(u'dirname') or var.get(u'process').callprop(u'cwd'))) + var.put(u'loc', (var.get(u'loc') or var.get(u'alias'))) + if var.get(u'options').get(u'extends'): + var.put(u'extendsLoc', PyJsComma(Js(0.0),var.get(u'_resolve2').get(u'default'))(var.get(u'options').get(u'extends'), var.get(u'dirname'))) + if var.get(u'extendsLoc'): + var.get(u"this").callprop(u'addConfig', var.get(u'extendsLoc')) + else: + if var.get(u"this").get(u'log'): + var.get(u"this").get(u'log').callprop(u'error', (((Js(u"Couldn't resolve extends clause of ")+var.get(u'options').get(u'extends'))+Js(u' in '))+var.get(u'alias'))) + var.get(u'options').delete(u'extends') + PyJs_Object_190_ = Js({u'options':var.get(u'options'),u'alias':var.get(u'alias'),u'loc':var.get(u'loc'),u'dirname':var.get(u'dirname')}) + var.get(u"this").get(u'configs').callprop(u'push', PyJs_Object_190_) + var.put(u'envOpts', PyJsComma(Js(0.0), Js(None))) + var.put(u'envKey', ((var.get(u'process').get(u'env').get(u'BABEL_ENV') or var.get(u'process').get(u'env').get(u'NODE_ENV')) or Js(u'development'))) + if var.get(u'options').get(u'env'): + var.put(u'envOpts', var.get(u'options').get(u'env').get(var.get(u'envKey'))) + var.get(u'options').delete(u'env') + PyJs_Object_191_ = Js({u'options':var.get(u'envOpts'),u'alias':((var.get(u'alias')+Js(u'.env.'))+var.get(u'envKey')),u'dirname':var.get(u'dirname')}) + var.get(u"this").callprop(u'mergeConfig', PyJs_Object_191_) + PyJs_mergeConfig_188_._set_name(u'mergeConfig') + var.get(u'ConfigChainBuilder').get(u'prototype').put(u'mergeConfig', PyJs_mergeConfig_188_) + return var.get(u'ConfigChainBuilder') + PyJs_anonymous_179_._set_name(u'anonymous') + var.put(u'ConfigChainBuilder', PyJs_anonymous_179_()) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) + PyJs_anonymous_173_._set_name(u'anonymous') + PyJs_anonymous_173_.callprop(u'call', var.get(u"this"), var.get(u'require')(Js(u'_process'))) +PyJs_anonymous_172_._set_name(u'anonymous') +PyJs_Object_192_ = Js({u'../../../helpers/resolve':Js(9.0),u'_process':Js(531.0),u'babel-runtime/core-js/object/assign':Js(100.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'fs':Js(523.0),u'json5':Js(284.0),u'path':Js(530.0),u'path-is-absolute':Js(499.0)}) +@Js +def PyJs_anonymous_193_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + PyJs_Object_195_ = Js({u'type':Js(u'filename'),u'description':Js(u'filename to use when reading from stdin - this will be used in source-maps, errors etc'),u'default':Js(u'unknown'),u'shorthand':Js(u'f')}) + PyJs_Object_196_ = Js({u'hidden':var.get(u'true'),u'type':Js(u'string')}) + PyJs_Object_197_ = Js({u'hidden':var.get(u'true')}) + PyJs_Object_199_ = Js({}) + PyJs_Object_198_ = Js({u'hidden':var.get(u'true'),u'default':PyJs_Object_199_}) + PyJs_Object_200_ = Js({u'description':Js(u''),u'hidden':var.get(u'true')}) + PyJs_Object_201_ = Js({u'type':Js(u'boolean'),u'default':Js(False),u'description':Js(u'retain line numbers - will result in really ugly code')}) + PyJs_Object_202_ = Js({u'description':Js(u'enable/disable ANSI syntax highlighting of code frames (on by default)'),u'type':Js(u'boolean'),u'default':var.get(u'true')}) + PyJs_Object_203_ = Js({u'type':Js(u'boolean'),u'default':Js(False),u'hidden':var.get(u'true')}) + PyJs_Object_204_ = Js({u'type':Js(u'list'),u'description':Js(u''),u'default':Js([])}) + PyJs_Object_205_ = Js({u'type':Js(u'list'),u'default':Js([]),u'description':Js(u'')}) + PyJs_Object_206_ = Js({u'type':Js(u'list'),u'description':Js(u'list of glob paths to **not** compile'),u'default':Js([])}) + PyJs_Object_207_ = Js({u'type':Js(u'list'),u'description':Js(u'list of glob paths to **only** compile')}) + PyJs_Object_208_ = Js({u'hidden':var.get(u'true'),u'default':var.get(u'true'),u'type':Js(u'boolean')}) + PyJs_Object_209_ = Js({u'hidden':var.get(u'true'),u'default':var.get(u'true'),u'type':Js(u'boolean')}) + PyJs_Object_210_ = Js({u'hidden':var.get(u'true'),u'default':var.get(u'true'),u'type':Js(u'boolean')}) + PyJs_Object_211_ = Js({u'type':Js(u'string'),u'hidden':var.get(u'true')}) + PyJs_Object_212_ = Js({u'type':Js(u'boolean'),u'default':var.get(u'true'),u'description':Js(u'write comments to generated output (true by default)')}) + PyJs_Object_213_ = Js({u'hidden':var.get(u'true'),u'description':Js(u'optional callback to control whether a comment should be inserted, when this is used the comments option is ignored')}) + PyJs_Object_214_ = Js({u'hidden':var.get(u'true'),u'description':Js(u'optional callback to wrap all visitor methods')}) + PyJs_Object_215_ = Js({u'type':Js(u'booleanString'),u'default':Js(u'auto'),u'description':Js(u'do not include superfluous whitespace characters and line terminators [true|false|auto]')}) + PyJs_Object_216_ = Js({u'type':Js(u'boolean'),u'default':Js(False),u'description':Js(u'save as much bytes when printing [true|false]')}) + PyJs_Object_217_ = Js({u'alias':Js(u'sourceMaps'),u'hidden':var.get(u'true')}) + PyJs_Object_218_ = Js({u'type':Js(u'booleanString'),u'description':Js(u'[true|false|inline]'),u'default':Js(False),u'shorthand':Js(u's')}) + PyJs_Object_219_ = Js({u'type':Js(u'string'),u'description':Js(u'set `file` on returned source map')}) + PyJs_Object_220_ = Js({u'type':Js(u'string'),u'description':Js(u'set `sources[0]` on returned source map')}) + PyJs_Object_221_ = Js({u'type':Js(u'filename'),u'description':Js(u'the root from which all sources are relative')}) + PyJs_Object_222_ = Js({u'description':Js(u'Whether or not to look up .babelrc and .babelignore files'),u'type':Js(u'boolean'),u'default':var.get(u'true')}) + PyJs_Object_223_ = Js({u'description':Js(u''),u'default':Js(u'module')}) + PyJs_Object_224_ = Js({u'type':Js(u'string'),u'description':Js(u'print a comment before any injected non-user code')}) + PyJs_Object_225_ = Js({u'type':Js(u'string'),u'description':Js(u'print a comment after any injected non-user code')}) + PyJs_Object_226_ = Js({u'hidden':var.get(u'true')}) + PyJs_Object_227_ = Js({u'hidden':var.get(u'true')}) + PyJs_Object_228_ = Js({u'type':Js(u'filename'),u'description':Js(u'optional prefix for the AMD module formatter that will be prepend to the filename on module definitions')}) + PyJs_Object_229_ = Js({u'type':Js(u'boolean'),u'default':Js(False),u'shorthand':Js(u'M'),u'description':Js(u'insert an explicit id for modules')}) + PyJs_Object_230_ = Js({u'description':Js(u'specify a custom name for module ids'),u'type':Js(u'string')}) + PyJs_Object_231_ = Js({u'description':Js(u'Whether to spawn a traversal pass per a preset. By default all presets are merged.'),u'type':Js(u'boolean'),u'default':Js(False),u'hidden':var.get(u'true')}) + PyJs_Object_232_ = Js({u'description':Js(u'Options to pass into the parser, or to change parsers (parserOpts.parser)'),u'default':Js(False)}) + PyJs_Object_233_ = Js({u'description':Js(u'Options to pass into the generator, or to change generators (generatorOpts.generator)'),u'default':Js(False)}) + PyJs_Object_194_ = Js({u'filename':PyJs_Object_195_,u'filenameRelative':PyJs_Object_196_,u'inputSourceMap':PyJs_Object_197_,u'env':PyJs_Object_198_,u'mode':PyJs_Object_200_,u'retainLines':PyJs_Object_201_,u'highlightCode':PyJs_Object_202_,u'suppressDeprecationMessages':PyJs_Object_203_,u'presets':PyJs_Object_204_,u'plugins':PyJs_Object_205_,u'ignore':PyJs_Object_206_,u'only':PyJs_Object_207_,u'code':PyJs_Object_208_,u'metadata':PyJs_Object_209_,u'ast':PyJs_Object_210_,u'extends':PyJs_Object_211_,u'comments':PyJs_Object_212_,u'shouldPrintComment':PyJs_Object_213_,u'wrapPluginVisitorMethod':PyJs_Object_214_,u'compact':PyJs_Object_215_,u'minified':PyJs_Object_216_,u'sourceMap':PyJs_Object_217_,u'sourceMaps':PyJs_Object_218_,u'sourceMapTarget':PyJs_Object_219_,u'sourceFileName':PyJs_Object_220_,u'sourceRoot':PyJs_Object_221_,u'babelrc':PyJs_Object_222_,u'sourceType':PyJs_Object_223_,u'auxiliaryCommentBefore':PyJs_Object_224_,u'auxiliaryCommentAfter':PyJs_Object_225_,u'resolveModuleSource':PyJs_Object_226_,u'getModuleId':PyJs_Object_227_,u'moduleRoot':PyJs_Object_228_,u'moduleIds':PyJs_Object_229_,u'moduleId':PyJs_Object_230_,u'passPerPreset':PyJs_Object_231_,u'parserOpts':PyJs_Object_232_,u'generatorOpts':PyJs_Object_233_}) + var.get(u'module').put(u'exports', PyJs_Object_194_) +PyJs_anonymous_193_._set_name(u'anonymous') +PyJs_Object_234_ = Js({}) +@Js +def PyJs_anonymous_235_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_config', u'_interopRequireWildcard', u'_parsers', u'require', u'exports', u'module', u'normaliseOptions', u'parsers', u'_config2', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_236_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_236_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_normaliseOptions_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'opt', u'val', u'parser', u'options', u'key']) + PyJs_Object_238_ = Js({}) + var.put(u'options', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else PyJs_Object_238_)) + for PyJsTemp in var.get(u'options'): + var.put(u'key', PyJsTemp) + var.put(u'val', var.get(u'options').get(var.get(u'key'))) + if (var.get(u'val')==var.get(u"null")): + continue + var.put(u'opt', var.get(u'_config2').get(u'default').get(var.get(u'key'))) + if (var.get(u'opt') and var.get(u'opt').get(u'alias')): + var.put(u'opt', var.get(u'_config2').get(u'default').get(var.get(u'opt').get(u'alias'))) + if var.get(u'opt').neg(): + continue + var.put(u'parser', var.get(u'parsers').get(var.get(u'opt').get(u'type'))) + if var.get(u'parser'): + var.put(u'val', var.get(u'parser')(var.get(u'val'))) + var.get(u'options').put(var.get(u'key'), var.get(u'val')) + return var.get(u'options') + PyJsHoisted_normaliseOptions_.func_name = u'normaliseOptions' + var.put(u'normaliseOptions', PyJsHoisted_normaliseOptions_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_237_ = Js({}) + var.put(u'newObj', PyJs_Object_237_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'config', var.get(u'undefined')) + var.get(u'exports').put(u'normaliseOptions', var.get(u'normaliseOptions')) + var.put(u'_parsers', var.get(u'require')(Js(u'./parsers'))) + var.put(u'parsers', var.get(u'_interopRequireWildcard')(var.get(u'_parsers'))) + var.put(u'_config', var.get(u'require')(Js(u'./config'))) + var.put(u'_config2', var.get(u'_interopRequireDefault')(var.get(u'_config'))) + pass + pass + var.get(u'exports').put(u'config', var.get(u'_config2').get(u'default')) + pass +PyJs_anonymous_235_._set_name(u'anonymous') +PyJs_Object_239_ = Js({u'./config':Js(16.0),u'./parsers':Js(19.0)}) +@Js +def PyJs_anonymous_240_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_241_(process, this, arguments, var=var): + var = Scope({u'process':process, u'this':this, u'arguments':arguments}, var) + var.registers([u'_resolve', u'_plugin2', u'_plugin3', u'_interopRequireDefault', u'_merge', u'_clone', u'_getIterator2', u'_getIterator3', u'_path2', u'_typeof2', u'_typeof3', u'process', u'_node', u'_removed', u'_objectWithoutProperties2', u'_classCallCheck3', u'_classCallCheck2', u'_babelMessages', u'_stringify2', u'OptionManager', u'_interopRequireWildcard', u'_assign', u'_config3', u'_config2', u'_buildConfigChain2', u'_merge2', u'_assign2', u'_resolve2', u'_index', u'messages', u'_cloneDeepWith2', u'_clone2', u'_stringify', u'_objectWithoutProperties3', u'context', u'_removed2', u'_path', u'_cloneDeepWith', u'_buildConfigChain']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_243_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_243_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_242_ = Js({}) + var.put(u'newObj', PyJs_Object_242_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_objectWithoutProperties2', var.get(u'require')(Js(u'babel-runtime/helpers/objectWithoutProperties'))) + var.put(u'_objectWithoutProperties3', var.get(u'_interopRequireDefault')(var.get(u'_objectWithoutProperties2'))) + var.put(u'_stringify', var.get(u'require')(Js(u'babel-runtime/core-js/json/stringify'))) + var.put(u'_stringify2', var.get(u'_interopRequireDefault')(var.get(u'_stringify'))) + var.put(u'_assign', var.get(u'require')(Js(u'babel-runtime/core-js/object/assign'))) + var.put(u'_assign2', var.get(u'_interopRequireDefault')(var.get(u'_assign'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_typeof2', var.get(u'require')(Js(u'babel-runtime/helpers/typeof'))) + var.put(u'_typeof3', var.get(u'_interopRequireDefault')(var.get(u'_typeof2'))) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_node', var.get(u'require')(Js(u'../../../api/node'))) + var.put(u'context', var.get(u'_interopRequireWildcard')(var.get(u'_node'))) + var.put(u'_plugin2', var.get(u'require')(Js(u'../../plugin'))) + var.put(u'_plugin3', var.get(u'_interopRequireDefault')(var.get(u'_plugin2'))) + var.put(u'_babelMessages', var.get(u'require')(Js(u'babel-messages'))) + var.put(u'messages', var.get(u'_interopRequireWildcard')(var.get(u'_babelMessages'))) + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u'_resolve', var.get(u'require')(Js(u'../../../helpers/resolve'))) + var.put(u'_resolve2', var.get(u'_interopRequireDefault')(var.get(u'_resolve'))) + var.put(u'_cloneDeepWith', var.get(u'require')(Js(u'lodash/cloneDeepWith'))) + var.put(u'_cloneDeepWith2', var.get(u'_interopRequireDefault')(var.get(u'_cloneDeepWith'))) + var.put(u'_clone', var.get(u'require')(Js(u'lodash/clone'))) + var.put(u'_clone2', var.get(u'_interopRequireDefault')(var.get(u'_clone'))) + var.put(u'_merge', var.get(u'require')(Js(u'../../../helpers/merge'))) + var.put(u'_merge2', var.get(u'_interopRequireDefault')(var.get(u'_merge'))) + var.put(u'_config2', var.get(u'require')(Js(u'./config'))) + var.put(u'_config3', var.get(u'_interopRequireDefault')(var.get(u'_config2'))) + var.put(u'_removed', var.get(u'require')(Js(u'./removed'))) + var.put(u'_removed2', var.get(u'_interopRequireDefault')(var.get(u'_removed'))) + var.put(u'_buildConfigChain', var.get(u'require')(Js(u'./build-config-chain'))) + var.put(u'_buildConfigChain2', var.get(u'_interopRequireDefault')(var.get(u'_buildConfigChain'))) + var.put(u'_path', var.get(u'require')(Js(u'path'))) + var.put(u'_path2', var.get(u'_interopRequireDefault')(var.get(u'_path'))) + pass + pass + @Js + def PyJs_anonymous_244_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'OptionManager']) + @Js + def PyJsHoisted_OptionManager_(log, this, arguments, var=var): + var = Scope({u'this':this, u'log':log, u'arguments':arguments}, var) + var.registers([u'log']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'OptionManager')) + var.get(u"this").put(u'resolvedConfigs', Js([])) + var.get(u"this").put(u'options', var.get(u'OptionManager').callprop(u'createBareOptions')) + var.get(u"this").put(u'log', var.get(u'log')) + PyJsHoisted_OptionManager_.func_name = u'OptionManager' + var.put(u'OptionManager', PyJsHoisted_OptionManager_) + pass + @Js + def PyJs_memoisePluginContainer_245_(fn, loc, i, alias, this, arguments, var=var): + var = Scope({u'loc':loc, u'arguments':arguments, u'alias':alias, u'i':i, u'memoisePluginContainer':PyJs_memoisePluginContainer_245_, u'this':this, u'fn':fn}, var) + var.registers([u'_plugin', u'_isArray', u'obj', u'loc', u'i', u'cache', u'alias', u'_i', u'_iterator', u'_ref', u'fn']) + #for JS loop + var.put(u'_iterator', var.get(u'OptionManager').get(u'memoisedPlugins')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'cache', var.get(u'_ref')) + if PyJsStrictEq(var.get(u'cache').get(u'container'),var.get(u'fn')): + return var.get(u'cache').get(u'plugin') + + var.put(u'obj', PyJsComma(Js(0.0), Js(None))) + if PyJsStrictEq(var.get(u'fn',throw=False).typeof(),Js(u'function')): + var.put(u'obj', var.get(u'fn')(var.get(u'context'))) + else: + var.put(u'obj', var.get(u'fn')) + if PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'obj',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'obj'))),Js(u'object')): + var.put(u'_plugin', var.get(u'_plugin3').get(u'default').create(var.get(u'obj'), var.get(u'alias'))) + PyJs_Object_246_ = Js({u'container':var.get(u'fn'),u'plugin':var.get(u'_plugin')}) + var.get(u'OptionManager').get(u'memoisedPlugins').callprop(u'push', PyJs_Object_246_) + return var.get(u'_plugin') + else: + PyJsTempException = JsToPyException(var.get(u'TypeError').create(((var.get(u'messages').callprop(u'get', Js(u'pluginNotObject'), var.get(u'loc'), var.get(u'i'), (Js(u'undefined') if PyJsStrictEq(var.get(u'obj',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'obj'))))+var.get(u'loc'))+var.get(u'i')))) + raise PyJsTempException + PyJs_memoisePluginContainer_245_._set_name(u'memoisePluginContainer') + var.get(u'OptionManager').put(u'memoisePluginContainer', PyJs_memoisePluginContainer_245_) + @Js + def PyJs_createBareOptions_247_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'createBareOptions':PyJs_createBareOptions_247_}, var) + var.registers([u'_key', u'opt', u'opts']) + PyJs_Object_248_ = Js({}) + var.put(u'opts', PyJs_Object_248_) + for PyJsTemp in var.get(u'_config3').get(u'default'): + var.put(u'_key', PyJsTemp) + var.put(u'opt', var.get(u'_config3').get(u'default').get(var.get(u'_key'))) + var.get(u'opts').put(var.get(u'_key'), PyJsComma(Js(0.0),var.get(u'_clone2').get(u'default'))(var.get(u'opt').get(u'default'))) + return var.get(u'opts') + PyJs_createBareOptions_247_._set_name(u'createBareOptions') + var.get(u'OptionManager').put(u'createBareOptions', PyJs_createBareOptions_247_) + @Js + def PyJs_normalisePlugin_249_(plugin, loc, i, alias, this, arguments, var=var): + var = Scope({u'loc':loc, u'normalisePlugin':PyJs_normalisePlugin_249_, u'arguments':arguments, u'alias':alias, u'i':i, u'plugin':plugin, u'this':this}, var) + var.registers([u'i', u'loc', u'alias', u'plugin']) + var.put(u'plugin', (var.get(u'plugin').get(u'default') if var.get(u'plugin').get(u'__esModule') else var.get(u'plugin'))) + if var.get(u'plugin').instanceof(var.get(u'_plugin3').get(u'default')).neg(): + if (PyJsStrictEq(var.get(u'plugin',throw=False).typeof(),Js(u'function')) or PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'plugin',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'plugin'))),Js(u'object'))): + var.put(u'plugin', var.get(u'OptionManager').callprop(u'memoisePluginContainer', var.get(u'plugin'), var.get(u'loc'), var.get(u'i'), var.get(u'alias'))) + else: + PyJsTempException = JsToPyException(var.get(u'TypeError').create(var.get(u'messages').callprop(u'get', Js(u'pluginNotFunction'), var.get(u'loc'), var.get(u'i'), (Js(u'undefined') if PyJsStrictEq(var.get(u'plugin',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'plugin')))))) + raise PyJsTempException + var.get(u'plugin').callprop(u'init', var.get(u'loc'), var.get(u'i')) + return var.get(u'plugin') + PyJs_normalisePlugin_249_._set_name(u'normalisePlugin') + var.get(u'OptionManager').put(u'normalisePlugin', PyJs_normalisePlugin_249_) + @Js + def PyJs_normalisePlugins_250_(loc, dirname, plugins, this, arguments, var=var): + var = Scope({u'loc':loc, u'this':this, u'normalisePlugins':PyJs_normalisePlugins_250_, u'arguments':arguments, u'plugins':plugins, u'dirname':dirname}, var) + var.registers([u'loc', u'dirname', u'plugins']) + @Js + def PyJs_anonymous_251_(val, i, this, arguments, var=var): + var = Scope({u'i':i, u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val', u'plugin', u'i', u'pluginLoc', u'alias', u'options']) + var.put(u'plugin', PyJsComma(Js(0.0), Js(None))) + var.put(u'options', PyJsComma(Js(0.0), Js(None))) + if var.get(u'val').neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Falsy value found in plugins'))) + raise PyJsTempException + if var.get(u'Array').callprop(u'isArray', var.get(u'val')): + var.put(u'plugin', var.get(u'val').get(u'0')) + var.put(u'options', var.get(u'val').get(u'1')) + else: + var.put(u'plugin', var.get(u'val')) + var.put(u'alias', (var.get(u'plugin') if PyJsStrictEq(var.get(u'plugin',throw=False).typeof(),Js(u'string')) else ((var.get(u'loc')+Js(u'$'))+var.get(u'i')))) + if PyJsStrictEq(var.get(u'plugin',throw=False).typeof(),Js(u'string')): + var.put(u'pluginLoc', (PyJsComma(Js(0.0),var.get(u'_resolve2').get(u'default'))((Js(u'babel-plugin-')+var.get(u'plugin')), var.get(u'dirname')) or PyJsComma(Js(0.0),var.get(u'_resolve2').get(u'default'))(var.get(u'plugin'), var.get(u'dirname')))) + if var.get(u'pluginLoc'): + var.put(u'plugin', var.get(u'require')(var.get(u'pluginLoc'))) + else: + PyJsTempException = JsToPyException(var.get(u'ReferenceError').create(var.get(u'messages').callprop(u'get', Js(u'pluginUnknown'), var.get(u'plugin'), var.get(u'loc'), var.get(u'i'), var.get(u'dirname')))) + raise PyJsTempException + var.put(u'plugin', var.get(u'OptionManager').callprop(u'normalisePlugin', var.get(u'plugin'), var.get(u'loc'), var.get(u'i'), var.get(u'alias'))) + return Js([var.get(u'plugin'), var.get(u'options')]) + PyJs_anonymous_251_._set_name(u'anonymous') + return var.get(u'plugins').callprop(u'map', PyJs_anonymous_251_) + PyJs_normalisePlugins_250_._set_name(u'normalisePlugins') + var.get(u'OptionManager').put(u'normalisePlugins', PyJs_normalisePlugins_250_) + @Js + def PyJs_mergeOptions_252_(_ref2, this, arguments, var=var): + var = Scope({u'this':this, u'mergeOptions':PyJs_mergeOptions_252_, u'_ref2':_ref2, u'arguments':arguments}, var) + var.registers([u'loc', u'presetConfigErr', u'dirname', u'option', u'_this', u'unknownOptErr', u'_ref2', u'extendingOpts', u'alias', u'_key2', u'rawOpts', u'opts']) + var.put(u'_this', var.get(u"this")) + var.put(u'rawOpts', var.get(u'_ref2').get(u'options')) + var.put(u'extendingOpts', var.get(u'_ref2').get(u'extending')) + var.put(u'alias', var.get(u'_ref2').get(u'alias')) + var.put(u'loc', var.get(u'_ref2').get(u'loc')) + var.put(u'dirname', var.get(u'_ref2').get(u'dirname')) + var.put(u'alias', (var.get(u'alias') or Js(u'foreign'))) + if var.get(u'rawOpts').neg(): + return var.get('undefined') + if (PyJsStrictNeq((Js(u'undefined') if PyJsStrictEq(var.get(u'rawOpts',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'rawOpts'))),Js(u'object')) or var.get(u'Array').callprop(u'isArray', var.get(u'rawOpts'))): + var.get(u"this").get(u'log').callprop(u'error', (Js(u'Invalid options type for ')+var.get(u'alias')), var.get(u'TypeError')) + @Js + def PyJs_anonymous_253_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val']) + if var.get(u'val').instanceof(var.get(u'_plugin3').get(u'default')): + return var.get(u'val') + PyJs_anonymous_253_._set_name(u'anonymous') + var.put(u'opts', PyJsComma(Js(0.0),var.get(u'_cloneDeepWith2').get(u'default'))(var.get(u'rawOpts'), PyJs_anonymous_253_)) + var.put(u'dirname', (var.get(u'dirname') or var.get(u'process').callprop(u'cwd'))) + var.put(u'loc', (var.get(u'loc') or var.get(u'alias'))) + for PyJsTemp in var.get(u'opts'): + var.put(u'_key2', PyJsTemp) + var.put(u'option', var.get(u'_config3').get(u'default').get(var.get(u'_key2'))) + if (var.get(u'option').neg() and var.get(u"this").get(u'log')): + if var.get(u'_removed2').get(u'default').get(var.get(u'_key2')): + var.get(u"this").get(u'log').callprop(u'error', (((((Js(u'Using removed Babel 5 option: ')+var.get(u'alias'))+Js(u'.'))+var.get(u'_key2'))+Js(u' - '))+var.get(u'_removed2').get(u'default').get(var.get(u'_key2')).get(u'message')), var.get(u'ReferenceError')) + else: + var.put(u'unknownOptErr', ((((Js(u'Unknown option: ')+var.get(u'alias'))+Js(u'.'))+var.get(u'_key2'))+Js(u'. Check out http://babeljs.io/docs/usage/options/ for more information about options.'))) + var.put(u'presetConfigErr', Js(u"A common cause of this error is the presence of a configuration options object without the corresponding preset name. Example:\n\nInvalid:\n `{ presets: [{option: value}] }`\nValid:\n `{ presets: [['presetName', {option: value}]] }`\n\nFor more detailed information on preset configuration, please see http://babeljs.io/docs/plugins/#pluginpresets-options.")) + var.get(u"this").get(u'log').callprop(u'error', ((var.get(u'unknownOptErr')+Js(u'\n\n'))+var.get(u'presetConfigErr')), var.get(u'ReferenceError')) + PyJsComma(Js(0.0),var.get(u'_index').get(u'normaliseOptions'))(var.get(u'opts')) + if var.get(u'opts').get(u'plugins'): + var.get(u'opts').put(u'plugins', var.get(u'OptionManager').callprop(u'normalisePlugins', var.get(u'loc'), var.get(u'dirname'), var.get(u'opts').get(u'plugins'))) + if var.get(u'opts').get(u'presets'): + if var.get(u'opts').get(u'passPerPreset'): + @Js + def PyJs_anonymous_254_(preset, presetLoc, this, arguments, var=var): + var = Scope({u'presetLoc':presetLoc, u'this':this, u'preset':preset, u'arguments':arguments}, var) + var.registers([u'presetLoc', u'preset']) + PyJs_Object_255_ = Js({u'options':var.get(u'preset'),u'extending':var.get(u'preset'),u'alias':var.get(u'presetLoc'),u'loc':var.get(u'presetLoc'),u'dirname':var.get(u'dirname')}) + var.get(u'_this').callprop(u'mergeOptions', PyJs_Object_255_) + PyJs_anonymous_254_._set_name(u'anonymous') + var.get(u'opts').put(u'presets', var.get(u"this").callprop(u'resolvePresets', var.get(u'opts').get(u'presets'), var.get(u'dirname'), PyJs_anonymous_254_)) + else: + var.get(u"this").callprop(u'mergePresets', var.get(u'opts').get(u'presets'), var.get(u'dirname')) + var.get(u'opts').delete(u'presets') + if PyJsStrictEq(var.get(u'rawOpts'),var.get(u'extendingOpts')): + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'extendingOpts'), var.get(u'opts')) + else: + PyJsComma(Js(0.0),var.get(u'_merge2').get(u'default'))((var.get(u'extendingOpts') or var.get(u"this").get(u'options')), var.get(u'opts')) + PyJs_mergeOptions_252_._set_name(u'mergeOptions') + var.get(u'OptionManager').get(u'prototype').put(u'mergeOptions', PyJs_mergeOptions_252_) + @Js + def PyJs_mergePresets_256_(presets, dirname, this, arguments, var=var): + var = Scope({u'this':this, u'mergePresets':PyJs_mergePresets_256_, u'presets':presets, u'dirname':dirname, u'arguments':arguments}, var) + var.registers([u'presets', u'dirname', u'_this2']) + var.put(u'_this2', var.get(u"this")) + @Js + def PyJs_anonymous_257_(presetOpts, presetLoc, this, arguments, var=var): + var = Scope({u'presetLoc':presetLoc, u'this':this, u'presetOpts':presetOpts, u'arguments':arguments}, var) + var.registers([u'presetLoc', u'presetOpts']) + PyJs_Object_258_ = Js({u'options':var.get(u'presetOpts'),u'alias':var.get(u'presetLoc'),u'loc':var.get(u'presetLoc'),u'dirname':var.get(u'_path2').get(u'default').callprop(u'dirname', (var.get(u'presetLoc') or Js(u'')))}) + var.get(u'_this2').callprop(u'mergeOptions', PyJs_Object_258_) + PyJs_anonymous_257_._set_name(u'anonymous') + var.get(u"this").callprop(u'resolvePresets', var.get(u'presets'), var.get(u'dirname'), PyJs_anonymous_257_) + PyJs_mergePresets_256_._set_name(u'mergePresets') + var.get(u'OptionManager').get(u'prototype').put(u'mergePresets', PyJs_mergePresets_256_) + @Js + def PyJs_resolvePresets_259_(presets, dirname, onResolve, this, arguments, var=var): + var = Scope({u'this':this, u'presets':presets, u'onResolve':onResolve, u'arguments':arguments, u'dirname':dirname, u'resolvePresets':PyJs_resolvePresets_259_}, var) + var.registers([u'onResolve', u'presets', u'dirname']) + @Js + def PyJs_anonymous_260_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val', u'_val', u'matches', u'rest', u'presetLoc', u'presetPath', u'_val2', u'__esModule', u'options', u'orgName']) + var.put(u'options', PyJsComma(Js(0.0), Js(None))) + if var.get(u'Array').callprop(u'isArray', var.get(u'val')): + if (var.get(u'val').get(u'length')>Js(2.0)): + PyJsTempException = JsToPyException(var.get(u'Error').create(((Js(u'Unexpected extra options ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'val').callprop(u'slice', Js(2.0))))+Js(u' passed to preset.')))) + raise PyJsTempException + var.put(u'_val', var.get(u'val')) + var.put(u'val', var.get(u'_val').get(u'0')) + var.put(u'options', var.get(u'_val').get(u'1')) + var.put(u'presetLoc', PyJsComma(Js(0.0), Js(None))) + try: + if PyJsStrictEq(var.get(u'val',throw=False).typeof(),Js(u'string')): + var.put(u'presetLoc', (PyJsComma(Js(0.0),var.get(u'_resolve2').get(u'default'))((Js(u'babel-preset-')+var.get(u'val')), var.get(u'dirname')) or PyJsComma(Js(0.0),var.get(u'_resolve2').get(u'default'))(var.get(u'val'), var.get(u'dirname')))) + if var.get(u'presetLoc').neg(): + var.put(u'matches', var.get(u'val').callprop(u'match', JsRegExp(u'/^(@[^/]+)\\/(.+)$/'))) + if var.get(u'matches'): + var.put(u'orgName', var.get(u'matches').get(u'1')) + var.put(u'presetPath', var.get(u'matches').get(u'2')) + var.put(u'val', ((var.get(u'orgName')+Js(u'/babel-preset-'))+var.get(u'presetPath'))) + var.put(u'presetLoc', PyJsComma(Js(0.0),var.get(u'_resolve2').get(u'default'))(var.get(u'val'), var.get(u'dirname'))) + if var.get(u'presetLoc').neg(): + PyJsTempException = JsToPyException(var.get(u'Error').create((((Js(u"Couldn't find preset ")+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'val')))+Js(u' relative to directory '))+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'dirname'))))) + raise PyJsTempException + var.put(u'val', var.get(u'require')(var.get(u'presetLoc'))) + if (PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'val',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'val'))),Js(u'object')) and var.get(u'val').get(u'__esModule')): + if var.get(u'val').get(u'default'): + var.put(u'val', var.get(u'val').get(u'default')) + else: + var.put(u'_val2', var.get(u'val')) + var.put(u'__esModule', var.get(u'_val2').get(u'__esModule')) + var.put(u'rest', PyJsComma(Js(0.0),var.get(u'_objectWithoutProperties3').get(u'default'))(var.get(u'_val2'), Js([Js(u'__esModule')]))) + var.put(u'val', var.get(u'rest')) + if (PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'val',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'val'))),Js(u'object')) and var.get(u'val').get(u'buildPreset')): + var.put(u'val', var.get(u'val').get(u'buildPreset')) + if (PyJsStrictNeq(var.get(u'val',throw=False).typeof(),Js(u'function')) and PyJsStrictNeq(var.get(u'options'),var.get(u'undefined'))): + PyJsTempException = JsToPyException(var.get(u'Error').create(((((Js(u'Options ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'options')))+Js(u' passed to '))+(var.get(u'presetLoc') or Js(u'a preset')))+Js(u' which does not accept options.')))) + raise PyJsTempException + if PyJsStrictEq(var.get(u'val',throw=False).typeof(),Js(u'function')): + var.put(u'val', var.get(u'val')(var.get(u'context'), var.get(u'options'))) + if PyJsStrictNeq((Js(u'undefined') if PyJsStrictEq(var.get(u'val',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'val'))),Js(u'object')): + PyJsTempException = JsToPyException(var.get(u'Error').create(((Js(u'Unsupported preset format: ')+var.get(u'val'))+Js(u'.')))) + raise PyJsTempException + (var.get(u'onResolve') and var.get(u'onResolve')(var.get(u'val'), var.get(u'presetLoc'))) + except PyJsException as PyJsTempException: + PyJsHolder_65_49729099 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + if var.get(u'presetLoc'): + var.get(u'e').put(u'message', ((Js(u' (While processing preset: ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'presetLoc')))+Js(u')')), u'+') + PyJsTempException = JsToPyException(var.get(u'e')) + raise PyJsTempException + finally: + if PyJsHolder_65_49729099 is not None: + var.own[u'e'] = PyJsHolder_65_49729099 + else: + del var.own[u'e'] + del PyJsHolder_65_49729099 + return var.get(u'val') + PyJs_anonymous_260_._set_name(u'anonymous') + return var.get(u'presets').callprop(u'map', PyJs_anonymous_260_) + PyJs_resolvePresets_259_._set_name(u'resolvePresets') + var.get(u'OptionManager').get(u'prototype').put(u'resolvePresets', PyJs_resolvePresets_259_) + @Js + def PyJs_normaliseOptions_261_(this, arguments, var=var): + var = Scope({u'this':this, u'normaliseOptions':PyJs_normaliseOptions_261_, u'arguments':arguments}, var) + var.registers([u'_key3', u'val', u'option', u'opts']) + var.put(u'opts', var.get(u"this").get(u'options')) + for PyJsTemp in var.get(u'_config3').get(u'default'): + var.put(u'_key3', PyJsTemp) + var.put(u'option', var.get(u'_config3').get(u'default').get(var.get(u'_key3'))) + var.put(u'val', var.get(u'opts').get(var.get(u'_key3'))) + if (var.get(u'val').neg() and var.get(u'option').get(u'optional')): + continue + if var.get(u'option').get(u'alias'): + var.get(u'opts').put(var.get(u'option').get(u'alias'), (var.get(u'opts').get(var.get(u'option').get(u'alias')) or var.get(u'val'))) + else: + var.get(u'opts').put(var.get(u'_key3'), var.get(u'val')) + PyJs_normaliseOptions_261_._set_name(u'normaliseOptions') + var.get(u'OptionManager').get(u'prototype').put(u'normaliseOptions', PyJs_normaliseOptions_261_) + @Js + def PyJs_init_262_(this, arguments, var=var): + var = Scope({u'this':this, u'init':PyJs_init_262_, u'arguments':arguments}, var) + var.registers([u'_config', u'_isArray2', u'_ref3', u'_i2', u'opts', u'_iterator2']) + PyJs_Object_263_ = Js({}) + var.put(u'opts', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else PyJs_Object_263_)) + #for JS loop + var.put(u'_iterator2', PyJsComma(Js(0.0),var.get(u'_buildConfigChain2').get(u'default'))(var.get(u'opts'), var.get(u"this").get(u'log'))) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i2').get(u'value')) + var.put(u'_config', var.get(u'_ref3')) + var.get(u"this").callprop(u'mergeOptions', var.get(u'_config')) + + var.get(u"this").callprop(u'normaliseOptions', var.get(u'opts')) + return var.get(u"this").get(u'options') + PyJs_init_262_._set_name(u'init') + var.get(u'OptionManager').get(u'prototype').put(u'init', PyJs_init_262_) + return var.get(u'OptionManager') + PyJs_anonymous_244_._set_name(u'anonymous') + var.put(u'OptionManager', PyJs_anonymous_244_()) + var.get(u'exports').put(u'default', var.get(u'OptionManager')) + var.get(u'OptionManager').put(u'memoisedPlugins', Js([])) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) + PyJs_anonymous_241_._set_name(u'anonymous') + PyJs_anonymous_241_.callprop(u'call', var.get(u"this"), var.get(u'require')(Js(u'_process'))) +PyJs_anonymous_240_._set_name(u'anonymous') +PyJs_Object_264_ = Js({u'../../../api/node':Js(6.0),u'../../../helpers/merge':Js(7.0),u'../../../helpers/resolve':Js(9.0),u'../../plugin':Js(25.0),u'./build-config-chain':Js(15.0),u'./config':Js(16.0),u'./index':Js(17.0),u'./removed':Js(20.0),u'_process':Js(531.0),u'babel-messages':Js(57.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/json/stringify':Js(97.0),u'babel-runtime/core-js/object/assign':Js(100.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-runtime/helpers/objectWithoutProperties':Js(112.0),u'babel-runtime/helpers/typeof':Js(114.0),u'lodash/clone':Js(438.0),u'lodash/cloneDeepWith':Js(440.0),u'path':Js(530.0)}) +@Js +def PyJs_anonymous_265_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'util', u'exports', u'_interopRequireWildcard', u'require', u'list', u'_util', u'filename', u'_slash', u'booleanString', u'boolean', u'module', u'_slash2', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_267_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_267_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_booleanString_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val']) + return var.get(u'util').callprop(u'booleanify', var.get(u'val')) + PyJsHoisted_booleanString_.func_name = u'booleanString' + var.put(u'booleanString', PyJsHoisted_booleanString_) + @Js + def PyJsHoisted_boolean_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val']) + return var.get(u'val').neg().neg() + PyJsHoisted_boolean_.func_name = u'boolean' + var.put(u'boolean', PyJsHoisted_boolean_) + @Js + def PyJsHoisted_list_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val']) + return var.get(u'util').callprop(u'list', var.get(u'val')) + PyJsHoisted_list_.func_name = u'list' + var.put(u'list', PyJsHoisted_list_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_266_ = Js({}) + var.put(u'newObj', PyJs_Object_266_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'filename', var.get(u'undefined')) + var.get(u'exports').put(u'boolean', var.get(u'boolean')) + var.get(u'exports').put(u'booleanString', var.get(u'booleanString')) + var.get(u'exports').put(u'list', var.get(u'list')) + var.put(u'_slash', var.get(u'require')(Js(u'slash'))) + var.put(u'_slash2', var.get(u'_interopRequireDefault')(var.get(u'_slash'))) + var.put(u'_util', var.get(u'require')(Js(u'../../../util'))) + var.put(u'util', var.get(u'_interopRequireWildcard')(var.get(u'_util'))) + pass + pass + var.put(u'filename', var.get(u'exports').put(u'filename', var.get(u'_slash2').get(u'default'))) + pass + pass + pass +PyJs_anonymous_265_._set_name(u'anonymous') +PyJs_Object_268_ = Js({u'../../../util':Js(26.0),u'slash':Js(508.0)}) +@Js +def PyJs_anonymous_269_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + PyJs_Object_271_ = Js({u'message':Js(u'Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`')}) + PyJs_Object_272_ = Js({u'message':Js(u'Put the specific transforms you want in the `plugins` option')}) + PyJs_Object_273_ = Js({u'message':Js(u'This is not a necessary option in Babel 6')}) + PyJs_Object_274_ = Js({u'message':Js(u'Put the specific transforms you want in the `plugins` option')}) + PyJs_Object_275_ = Js({u'message':Js(u'Use the `external-helpers` plugin instead. Check out http://babeljs.io/docs/plugins/external-helpers/')}) + PyJs_Object_276_ = Js({u'message':Js(u'')}) + PyJs_Object_277_ = Js({u'message':Js(u'use the `pragma` option in the `react-jsx` plugin . Check out http://babeljs.io/docs/plugins/transform-react-jsx/')}) + PyJs_Object_278_ = Js({u'message':Js(u'Specify the `loose` option for the relevant plugin you are using or use a preset that sets the option.')}) + PyJs_Object_279_ = Js({u'message':Js(u'Not required anymore as this is enabled by default')}) + PyJs_Object_280_ = Js({u'message':Js(u'Use the corresponding module transform plugin in the `plugins` option. Check out http://babeljs.io/docs/plugins/#modules')}) + PyJs_Object_281_ = Js({u'message':Js(u'Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. Also check out the react preset http://babeljs.io/docs/plugins/preset-react/')}) + PyJs_Object_282_ = Js({u'message':Js(u'Put the specific transforms you want in the `plugins` option')}) + PyJs_Object_283_ = Js({u'message':Js(u'Use the `sourceMapTarget` option')}) + PyJs_Object_284_ = Js({u'message':Js(u'Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets')}) + PyJs_Object_285_ = Js({u'message':Js(u'Put the specific transforms you want in the `plugins` option')}) + PyJs_Object_270_ = Js({u'auxiliaryComment':PyJs_Object_271_,u'blacklist':PyJs_Object_272_,u'breakConfig':PyJs_Object_273_,u'experimental':PyJs_Object_274_,u'externalHelpers':PyJs_Object_275_,u'extra':PyJs_Object_276_,u'jsxPragma':PyJs_Object_277_,u'loose':PyJs_Object_278_,u'metadataUsedHelpers':PyJs_Object_279_,u'modules':PyJs_Object_280_,u'nonStandard':PyJs_Object_281_,u'optional':PyJs_Object_282_,u'sourceMapName':PyJs_Object_283_,u'stage':PyJs_Object_284_,u'whitelist':PyJs_Object_285_}) + var.get(u'module').put(u'exports', PyJs_Object_270_) +PyJs_anonymous_269_._set_name(u'anonymous') +PyJs_Object_286_ = Js({}) +@Js +def PyJs_anonymous_287_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_plugin', u'exports', u'_plugin2', u'require', u'module', u'_sortBy2', u'_interopRequireDefault', u'_sortBy']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_288_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_288_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_plugin', var.get(u'require')(Js(u'../plugin'))) + var.put(u'_plugin2', var.get(u'_interopRequireDefault')(var.get(u'_plugin'))) + var.put(u'_sortBy', var.get(u'require')(Js(u'lodash/sortBy'))) + var.put(u'_sortBy2', var.get(u'_interopRequireDefault')(var.get(u'_sortBy'))) + pass + @Js + def PyJs_exit_292_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'exit':PyJs_exit_292_, u'arguments':arguments}, var) + var.registers([u'node', u'hasChange', u'_ref', u'bodyNode', u'i']) + var.put(u'node', var.get(u'_ref').get(u'node')) + var.put(u'hasChange', Js(False)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_316_)) + var.get(u'opts').put(u'code', Js(False)) + var.get(u'opts').put(u'mode', Js(u'lint')) + return var.get(u"this").callprop(u'transform', var.get(u'code'), var.get(u'opts')) + PyJs_lint_315_._set_name(u'lint') + var.get(u'Pipeline').get(u'prototype').put(u'lint', PyJs_lint_315_) + @Js + def PyJs_pretransform_317_(code, opts, this, arguments, var=var): + var = Scope({u'this':this, u'pretransform':PyJs_pretransform_317_, u'code':code, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'code', u'opts', u'file']) + var.put(u'file', var.get(u'_file2').get(u'default').create(var.get(u'opts'), var.get(u"this"))) + @Js + def PyJs_anonymous_318_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'file').callprop(u'addCode', var.get(u'code')) + var.get(u'file').callprop(u'parseCode', var.get(u'code')) + return var.get(u'file') + PyJs_anonymous_318_._set_name(u'anonymous') + return var.get(u'file').callprop(u'wrap', var.get(u'code'), PyJs_anonymous_318_) + PyJs_pretransform_317_._set_name(u'pretransform') + var.get(u'Pipeline').get(u'prototype').put(u'pretransform', PyJs_pretransform_317_) + @Js + def PyJs_transform_319_(code, opts, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'opts':opts, u'transform':PyJs_transform_319_}, var) + var.registers([u'code', u'opts', u'file']) + var.put(u'file', var.get(u'_file2').get(u'default').create(var.get(u'opts'), var.get(u"this"))) + @Js + def PyJs_anonymous_320_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'file').callprop(u'addCode', var.get(u'code')) + var.get(u'file').callprop(u'parseCode', var.get(u'code')) + return var.get(u'file').callprop(u'transform') + PyJs_anonymous_320_._set_name(u'anonymous') + return var.get(u'file').callprop(u'wrap', var.get(u'code'), PyJs_anonymous_320_) + PyJs_transform_319_._set_name(u'transform') + var.get(u'Pipeline').get(u'prototype').put(u'transform', PyJs_transform_319_) + @Js + def PyJs_analyse_321_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'analyse':PyJs_analyse_321_, u'arguments':arguments}, var) + var.registers([u'visitor', u'code', u'opts']) + PyJs_Object_322_ = Js({}) + var.put(u'opts', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_322_)) + var.put(u'visitor', var.get(u'arguments').get(u'2')) + var.get(u'opts').put(u'code', Js(False)) + if var.get(u'visitor'): + var.get(u'opts').put(u'plugins', (var.get(u'opts').get(u'plugins') or Js([]))) + PyJs_Object_323_ = Js({u'visitor':var.get(u'visitor')}) + var.get(u'opts').get(u'plugins').callprop(u'push', var.get(u'_plugin2').get(u'default').create(PyJs_Object_323_)) + return var.get(u"this").callprop(u'transform', var.get(u'code'), var.get(u'opts')).get(u'metadata') + PyJs_analyse_321_._set_name(u'analyse') + var.get(u'Pipeline').get(u'prototype').put(u'analyse', PyJs_analyse_321_) + @Js + def PyJs_transformFromAst_324_(ast, code, opts, this, arguments, var=var): + var = Scope({u'code':code, u'ast':ast, u'this':this, u'transformFromAst':PyJs_transformFromAst_324_, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'code', u'opts', u'file', u'ast']) + var.put(u'ast', PyJsComma(Js(0.0),var.get(u'_normalizeAst2').get(u'default'))(var.get(u'ast'))) + var.put(u'file', var.get(u'_file2').get(u'default').create(var.get(u'opts'), var.get(u"this"))) + @Js + def PyJs_anonymous_325_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'file').callprop(u'addCode', var.get(u'code')) + var.get(u'file').callprop(u'addAst', var.get(u'ast')) + return var.get(u'file').callprop(u'transform') + PyJs_anonymous_325_._set_name(u'anonymous') + return var.get(u'file').callprop(u'wrap', var.get(u'code'), PyJs_anonymous_325_) + PyJs_transformFromAst_324_._set_name(u'transformFromAst') + var.get(u'Pipeline').get(u'prototype').put(u'transformFromAst', PyJs_transformFromAst_324_) + return var.get(u'Pipeline') + PyJs_anonymous_314_._set_name(u'anonymous') + var.put(u'Pipeline', PyJs_anonymous_314_()) + var.get(u'exports').put(u'default', var.get(u'Pipeline')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_312_._set_name(u'anonymous') +PyJs_Object_326_ = Js({u'../helpers/normalize-ast':Js(8.0),u'./file':Js(12.0),u'./plugin':Js(25.0),u'babel-runtime/helpers/classCallCheck':Js(110.0)}) +@Js +def PyJs_anonymous_327_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_store', u'_inherits3', u'_inherits2', u'require', u'_file6', u'_possibleConstructorReturn3', u'_possibleConstructorReturn2', u'module', u'_file5', u'_store2', u'PluginPass', u'_interopRequireDefault', u'_classCallCheck3', u'_classCallCheck2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_328_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_328_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_possibleConstructorReturn2', var.get(u'require')(Js(u'babel-runtime/helpers/possibleConstructorReturn'))) + var.put(u'_possibleConstructorReturn3', var.get(u'_interopRequireDefault')(var.get(u'_possibleConstructorReturn2'))) + var.put(u'_inherits2', var.get(u'require')(Js(u'babel-runtime/helpers/inherits'))) + var.put(u'_inherits3', var.get(u'_interopRequireDefault')(var.get(u'_inherits2'))) + var.put(u'_store', var.get(u'require')(Js(u'../store'))) + var.put(u'_store2', var.get(u'_interopRequireDefault')(var.get(u'_store'))) + var.put(u'_file5', var.get(u'require')(Js(u'./file'))) + var.put(u'_file6', var.get(u'_interopRequireDefault')(var.get(u'_file5'))) + pass + @Js + def PyJs_anonymous_329_(_Store, this, arguments, var=var): + var = Scope({u'this':this, u'_Store':_Store, u'arguments':arguments}, var) + var.registers([u'PluginPass', u'_Store']) + @Js + def PyJsHoisted_PluginPass_(file, plugin, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'file':file, u'plugin':plugin}, var) + var.registers([u'file', u'options', u'_this', u'plugin']) + PyJs_Object_330_ = Js({}) + var.put(u'options', (var.get(u'arguments').get(u'2') if ((var.get(u'arguments').get(u'length')>Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else PyJs_Object_330_)) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'PluginPass')) + var.put(u'_this', PyJsComma(Js(0.0),var.get(u'_possibleConstructorReturn3').get(u'default'))(var.get(u"this"), var.get(u'_Store').callprop(u'call', var.get(u"this")))) + var.get(u'_this').put(u'plugin', var.get(u'plugin')) + var.get(u'_this').put(u'key', var.get(u'plugin').get(u'key')) + var.get(u'_this').put(u'file', var.get(u'file')) + var.get(u'_this').put(u'opts', var.get(u'options')) + return var.get(u'_this') + PyJsHoisted_PluginPass_.func_name = u'PluginPass' + var.put(u'PluginPass', PyJsHoisted_PluginPass_) + PyJsComma(Js(0.0),var.get(u'_inherits3').get(u'default'))(var.get(u'PluginPass'), var.get(u'_Store')) + pass + @Js + def PyJs_addHelper_331_(this, arguments, var=var): + var = Scope({u'this':this, u'addHelper':PyJs_addHelper_331_, u'arguments':arguments}, var) + var.registers([u'_file']) + pass + return var.put(u'_file', var.get(u"this").get(u'file')).get(u'addHelper').callprop(u'apply', var.get(u'_file'), var.get(u'arguments')) + PyJs_addHelper_331_._set_name(u'addHelper') + var.get(u'PluginPass').get(u'prototype').put(u'addHelper', PyJs_addHelper_331_) + @Js + def PyJs_addImport_332_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'addImport':PyJs_addImport_332_}, var) + var.registers([u'_file2']) + pass + return var.put(u'_file2', var.get(u"this").get(u'file')).get(u'addImport').callprop(u'apply', var.get(u'_file2'), var.get(u'arguments')) + PyJs_addImport_332_._set_name(u'addImport') + var.get(u'PluginPass').get(u'prototype').put(u'addImport', PyJs_addImport_332_) + @Js + def PyJs_getModuleName_333_(this, arguments, var=var): + var = Scope({u'this':this, u'getModuleName':PyJs_getModuleName_333_, u'arguments':arguments}, var) + var.registers([u'_file3']) + pass + return var.put(u'_file3', var.get(u"this").get(u'file')).get(u'getModuleName').callprop(u'apply', var.get(u'_file3'), var.get(u'arguments')) + PyJs_getModuleName_333_._set_name(u'getModuleName') + var.get(u'PluginPass').get(u'prototype').put(u'getModuleName', PyJs_getModuleName_333_) + @Js + def PyJs_buildCodeFrameError_334_(this, arguments, var=var): + var = Scope({u'this':this, u'buildCodeFrameError':PyJs_buildCodeFrameError_334_, u'arguments':arguments}, var) + var.registers([u'_file4']) + pass + return var.put(u'_file4', var.get(u"this").get(u'file')).get(u'buildCodeFrameError').callprop(u'apply', var.get(u'_file4'), var.get(u'arguments')) + PyJs_buildCodeFrameError_334_._set_name(u'buildCodeFrameError') + var.get(u'PluginPass').get(u'prototype').put(u'buildCodeFrameError', PyJs_buildCodeFrameError_334_) + return var.get(u'PluginPass') + PyJs_anonymous_329_._set_name(u'anonymous') + var.put(u'PluginPass', PyJs_anonymous_329_(var.get(u'_store2').get(u'default'))) + var.get(u'exports').put(u'default', var.get(u'PluginPass')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_327_._set_name(u'anonymous') +PyJs_Object_335_ = Js({u'../store':Js(10.0),u'./file':Js(12.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-runtime/helpers/inherits':Js(111.0),u'babel-runtime/helpers/possibleConstructorReturn':Js(113.0)}) +@Js +def PyJs_anonymous_336_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_store', u'module', u'_clone', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'_babelTraverse', u'_possibleConstructorReturn3', u'_possibleConstructorReturn2', u'_store2', u'_optionManager2', u'_classCallCheck3', u'_classCallCheck2', u'_optionManager', u'exports', u'_babelTraverse2', u'_interopRequireWildcard', u'Plugin', u'_inherits3', u'_inherits2', u'_assign', u'_assign2', u'require', u'messages', u'GLOBAL_VISITOR_PROPS', u'_clone2', u'_babelMessages']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_338_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_338_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_337_ = Js({}) + var.put(u'newObj', PyJs_Object_337_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_possibleConstructorReturn2', var.get(u'require')(Js(u'babel-runtime/helpers/possibleConstructorReturn'))) + var.put(u'_possibleConstructorReturn3', var.get(u'_interopRequireDefault')(var.get(u'_possibleConstructorReturn2'))) + var.put(u'_inherits2', var.get(u'require')(Js(u'babel-runtime/helpers/inherits'))) + var.put(u'_inherits3', var.get(u'_interopRequireDefault')(var.get(u'_inherits2'))) + var.put(u'_optionManager', var.get(u'require')(Js(u'./file/options/option-manager'))) + var.put(u'_optionManager2', var.get(u'_interopRequireDefault')(var.get(u'_optionManager'))) + var.put(u'_babelMessages', var.get(u'require')(Js(u'babel-messages'))) + var.put(u'messages', var.get(u'_interopRequireWildcard')(var.get(u'_babelMessages'))) + var.put(u'_store', var.get(u'require')(Js(u'../store'))) + var.put(u'_store2', var.get(u'_interopRequireDefault')(var.get(u'_store'))) + var.put(u'_babelTraverse', var.get(u'require')(Js(u'babel-traverse'))) + var.put(u'_babelTraverse2', var.get(u'_interopRequireDefault')(var.get(u'_babelTraverse'))) + var.put(u'_assign', var.get(u'require')(Js(u'lodash/assign'))) + var.put(u'_assign2', var.get(u'_interopRequireDefault')(var.get(u'_assign'))) + var.put(u'_clone', var.get(u'require')(Js(u'lodash/clone'))) + var.put(u'_clone2', var.get(u'_interopRequireDefault')(var.get(u'_clone'))) + pass + pass + var.put(u'GLOBAL_VISITOR_PROPS', Js([Js(u'enter'), Js(u'exit')])) + @Js + def PyJs_anonymous_339_(_Store, this, arguments, var=var): + var = Scope({u'this':this, u'_Store':_Store, u'arguments':arguments}, var) + var.registers([u'_Store', u'Plugin']) + @Js + def PyJsHoisted_Plugin_(plugin, key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key, u'plugin':plugin}, var) + var.registers([u'key', u'_this', u'plugin']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Plugin')) + var.put(u'_this', PyJsComma(Js(0.0),var.get(u'_possibleConstructorReturn3').get(u'default'))(var.get(u"this"), var.get(u'_Store').callprop(u'call', var.get(u"this")))) + var.get(u'_this').put(u'initialized', Js(False)) + PyJs_Object_340_ = Js({}) + var.get(u'_this').put(u'raw', PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(PyJs_Object_340_, var.get(u'plugin'))) + var.get(u'_this').put(u'key', (var.get(u'_this').callprop(u'take', Js(u'name')) or var.get(u'key'))) + var.get(u'_this').put(u'manipulateOptions', var.get(u'_this').callprop(u'take', Js(u'manipulateOptions'))) + var.get(u'_this').put(u'post', var.get(u'_this').callprop(u'take', Js(u'post'))) + var.get(u'_this').put(u'pre', var.get(u'_this').callprop(u'take', Js(u'pre'))) + PyJs_Object_341_ = Js({}) + var.get(u'_this').put(u'visitor', var.get(u'_this').callprop(u'normaliseVisitor', (PyJsComma(Js(0.0),var.get(u'_clone2').get(u'default'))(var.get(u'_this').callprop(u'take', Js(u'visitor'))) or PyJs_Object_341_))) + return var.get(u'_this') + PyJsHoisted_Plugin_.func_name = u'Plugin' + var.put(u'Plugin', PyJsHoisted_Plugin_) + PyJsComma(Js(0.0),var.get(u'_inherits3').get(u'default'))(var.get(u'Plugin'), var.get(u'_Store')) + pass + @Js + def PyJs_take_342_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key, u'take':PyJs_take_342_}, var) + var.registers([u'key', u'val']) + var.put(u'val', var.get(u"this").get(u'raw').get(var.get(u'key'))) + var.get(u"this").get(u'raw').delete(var.get(u'key')) + return var.get(u'val') + PyJs_take_342_._set_name(u'take') + var.get(u'Plugin').get(u'prototype').put(u'take', PyJs_take_342_) + @Js + def PyJs_chain_343_(target, key, this, arguments, var=var): + var = Scope({u'this':this, u'chain':PyJs_chain_343_, u'target':target, u'key':key, u'arguments':arguments}, var) + var.registers([u'fns', u'target', u'key']) + if var.get(u'target').get(var.get(u'key')).neg(): + return var.get(u"this").get(var.get(u'key')) + if var.get(u"this").get(var.get(u'key')).neg(): + return var.get(u'target').get(var.get(u'key')) + var.put(u'fns', Js([var.get(u'target').get(var.get(u'key')), var.get(u"this").get(var.get(u'key'))])) + @Js + def PyJs_anonymous_344_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'_isArray', u'_iterator', u'val', u'_len', u'args', u'ret', u'_key', u'_i', u'_ref', u'fn']) + var.put(u'val', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'_len', var.get(u'arguments').get(u'length')) + var.put(u'args', var.get(u'Array')(var.get(u'_len'))) + var.put(u'_key', Js(0.0)) + while (var.get(u'_key')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'fn', var.get(u'_ref')) + if var.get(u'fn'): + var.put(u'ret', var.get(u'fn').callprop(u'apply', var.get(u"this"), var.get(u'args'))) + if (var.get(u'ret')!=var.get(u"null")): + var.put(u'val', var.get(u'ret')) + + return var.get(u'val') + PyJs_anonymous_344_._set_name(u'anonymous') + return PyJs_anonymous_344_ + PyJs_chain_343_._set_name(u'chain') + var.get(u'Plugin').get(u'prototype').put(u'chain', PyJs_chain_343_) + @Js + def PyJs_maybeInherit_345_(loc, this, arguments, var=var): + var = Scope({u'this':this, u'loc':loc, u'arguments':arguments, u'maybeInherit':PyJs_maybeInherit_345_}, var) + var.registers([u'inherits', u'loc']) + var.put(u'inherits', var.get(u"this").callprop(u'take', Js(u'inherits'))) + if var.get(u'inherits').neg(): + return var.get('undefined') + var.put(u'inherits', var.get(u'_optionManager2').get(u'default').callprop(u'normalisePlugin', var.get(u'inherits'), var.get(u'loc'), Js(u'inherits'))) + var.get(u"this").put(u'manipulateOptions', var.get(u"this").callprop(u'chain', var.get(u'inherits'), Js(u'manipulateOptions'))) + var.get(u"this").put(u'post', var.get(u"this").callprop(u'chain', var.get(u'inherits'), Js(u'post'))) + var.get(u"this").put(u'pre', var.get(u"this").callprop(u'chain', var.get(u'inherits'), Js(u'pre'))) + var.get(u"this").put(u'visitor', var.get(u'_babelTraverse2').get(u'default').get(u'visitors').callprop(u'merge', Js([var.get(u'inherits').get(u'visitor'), var.get(u"this").get(u'visitor')]))) + PyJs_maybeInherit_345_._set_name(u'maybeInherit') + var.get(u'Plugin').get(u'prototype').put(u'maybeInherit', PyJs_maybeInherit_345_) + @Js + def PyJs_init_346_(loc, i, this, arguments, var=var): + var = Scope({u'i':i, u'loc':loc, u'init':PyJs_init_346_, u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'loc', u'key']) + if var.get(u"this").get(u'initialized'): + return var.get('undefined') + var.get(u"this").put(u'initialized', var.get(u'true')) + var.get(u"this").callprop(u'maybeInherit', var.get(u'loc')) + for PyJsTemp in var.get(u"this").get(u'raw'): + var.put(u'key', PyJsTemp) + PyJsTempException = JsToPyException(var.get(u'Error').create(var.get(u'messages').callprop(u'get', Js(u'pluginInvalidProperty'), var.get(u'loc'), var.get(u'i'), var.get(u'key')))) + raise PyJsTempException + PyJs_init_346_._set_name(u'init') + var.get(u'Plugin').get(u'prototype').put(u'init', PyJs_init_346_) + @Js + def PyJs_normaliseVisitor_347_(visitor, this, arguments, var=var): + var = Scope({u'this':this, u'visitor':visitor, u'normaliseVisitor':PyJs_normaliseVisitor_347_, u'arguments':arguments}, var) + var.registers([u'_isArray2', u'visitor', u'_i2', u'_ref2', u'key', u'_iterator2']) + #for JS loop + var.put(u'_iterator2', var.get(u'GLOBAL_VISITOR_PROPS')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'key', var.get(u'_ref2')) + if var.get(u'visitor').get(var.get(u'key')): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"Plugins aren't allowed to specify catch-all enter/exit handlers. Please target individual nodes."))) + raise PyJsTempException + + var.get(u'_babelTraverse2').get(u'default').callprop(u'explode', var.get(u'visitor')) + return var.get(u'visitor') + PyJs_normaliseVisitor_347_._set_name(u'normaliseVisitor') + var.get(u'Plugin').get(u'prototype').put(u'normaliseVisitor', PyJs_normaliseVisitor_347_) + return var.get(u'Plugin') + PyJs_anonymous_339_._set_name(u'anonymous') + var.put(u'Plugin', PyJs_anonymous_339_(var.get(u'_store2').get(u'default'))) + var.get(u'exports').put(u'default', var.get(u'Plugin')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_336_._set_name(u'anonymous') +PyJs_Object_348_ = Js({u'../store':Js(10.0),u'./file/options/option-manager':Js(18.0),u'babel-messages':Js(57.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-runtime/helpers/inherits':Js(111.0),u'babel-runtime/helpers/possibleConstructorReturn':Js(113.0),u'babel-traverse':Js(225.0),u'lodash/assign':Js(435.0),u'lodash/clone':Js(438.0)}) +@Js +def PyJs_anonymous_349_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_shouldIgnore', u'_startsWith', u'module', u'_isString2', u'_slash2', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'_isBoolean', u'_isRegExp2', u'shouldIgnore', u'_slash', u'booleanify', u'_isRegExp', u'_minimatch2', u'exports', u'_escapeRegExp2', u'_minimatch', u'_includes2', u'_util', u'canCompile', u'_path2', u'arrayify', u'_escapeRegExp', u'_isString', u'_startsWith2', u'list', u'regexify', u'_includes', u'require', u'_isBoolean2', u'_path']) + @Js + def PyJsHoisted__shouldIgnore_(pattern, filename, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'arguments':arguments, u'filename':filename}, var) + var.registers([u'pattern', u'filename']) + if PyJsStrictEq(var.get(u'pattern',throw=False).typeof(),Js(u'function')): + return var.get(u'pattern')(var.get(u'filename')) + else: + return var.get(u'pattern').callprop(u'test', var.get(u'filename')) + PyJsHoisted__shouldIgnore_.func_name = u'_shouldIgnore' + var.put(u'_shouldIgnore', PyJsHoisted__shouldIgnore_) + @Js + def PyJsHoisted_shouldIgnore_(filename, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'filename':filename}, var) + var.registers([u'_isArray', u'_pattern', u'_iterator', u'_isArray2', u'pattern', u'_i2', u'_ref2', u'ignore', u'only', u'_i', u'_ref', u'filename', u'_iterator2']) + var.put(u'ignore', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else Js([]))) + var.put(u'only', var.get(u'arguments').get(u'2')) + var.put(u'filename', var.get(u'filename').callprop(u'replace', JsRegExp(u'/\\\\/g'), Js(u'/'))) + if var.get(u'only'): + #for JS loop + var.put(u'_iterator', var.get(u'only')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'pattern', var.get(u'_ref')) + if var.get(u'_shouldIgnore')(var.get(u'pattern'), var.get(u'filename')): + return Js(False) + + return var.get(u'true') + else: + if var.get(u'ignore').get(u'length'): + #for JS loop + var.put(u'_iterator2', var.get(u'ignore')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'_pattern', var.get(u'_ref2')) + if var.get(u'_shouldIgnore')(var.get(u'_pattern'), var.get(u'filename')): + return var.get(u'true') + + return Js(False) + PyJsHoisted_shouldIgnore_.func_name = u'shouldIgnore' + var.put(u'shouldIgnore', PyJsHoisted_shouldIgnore_) + @Js + def PyJsHoisted_list_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val']) + if var.get(u'val').neg(): + return Js([]) + else: + if var.get(u'Array').callprop(u'isArray', var.get(u'val')): + return var.get(u'val') + else: + if PyJsStrictEq(var.get(u'val',throw=False).typeof(),Js(u'string')): + return var.get(u'val').callprop(u'split', Js(u',')) + else: + return Js([var.get(u'val')]) + PyJsHoisted_list_.func_name = u'list' + var.put(u'list', PyJsHoisted_list_) + @Js + def PyJsHoisted_regexify_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'regex', u'val']) + if var.get(u'val').neg(): + return var.get(u'RegExp').create(JsRegExp(u'/.^/')) + if var.get(u'Array').callprop(u'isArray', var.get(u'val')): + var.put(u'val', var.get(u'RegExp').create(var.get(u'val').callprop(u'map', var.get(u'_escapeRegExp2').get(u'default')).callprop(u'join', Js(u'|')), Js(u'i'))) + if PyJsStrictEq(var.get(u'val',throw=False).typeof(),Js(u'string')): + var.put(u'val', PyJsComma(Js(0.0),var.get(u'_slash2').get(u'default'))(var.get(u'val'))) + if (PyJsComma(Js(0.0),var.get(u'_startsWith2').get(u'default'))(var.get(u'val'), Js(u'./')) or PyJsComma(Js(0.0),var.get(u'_startsWith2').get(u'default'))(var.get(u'val'), Js(u'*/'))): + var.put(u'val', var.get(u'val').callprop(u'slice', Js(2.0))) + if PyJsComma(Js(0.0),var.get(u'_startsWith2').get(u'default'))(var.get(u'val'), Js(u'**/')): + var.put(u'val', var.get(u'val').callprop(u'slice', Js(3.0))) + PyJs_Object_355_ = Js({u'nocase':var.get(u'true')}) + var.put(u'regex', var.get(u'_minimatch2').get(u'default').callprop(u'makeRe', var.get(u'val'), PyJs_Object_355_)) + return var.get(u'RegExp').create(var.get(u'regex').get(u'source').callprop(u'slice', Js(1.0), (-Js(1.0))), Js(u'i')) + if PyJsComma(Js(0.0),var.get(u'_isRegExp2').get(u'default'))(var.get(u'val')): + return var.get(u'val') + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'illegal type for regexify'))) + raise PyJsTempException + PyJsHoisted_regexify_.func_name = u'regexify' + var.put(u'regexify', PyJsHoisted_regexify_) + @Js + def PyJsHoisted_booleanify_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val']) + if (PyJsStrictEq(var.get(u'val'),Js(u'true')) or (var.get(u'val')==Js(1.0))): + return var.get(u'true') + if ((PyJsStrictEq(var.get(u'val'),Js(u'false')) or (var.get(u'val')==Js(0.0))) or var.get(u'val').neg()): + return Js(False) + return var.get(u'val') + PyJsHoisted_booleanify_.func_name = u'booleanify' + var.put(u'booleanify', PyJsHoisted_booleanify_) + @Js + def PyJsHoisted_canCompile_(filename, altExts, this, arguments, var=var): + var = Scope({u'this':this, u'altExts':altExts, u'arguments':arguments, u'filename':filename}, var) + var.registers([u'ext', u'exts', u'altExts', u'filename']) + var.put(u'exts', (var.get(u'altExts') or var.get(u'canCompile').get(u'EXTENSIONS'))) + var.put(u'ext', var.get(u'_path2').get(u'default').callprop(u'extname', var.get(u'filename'))) + return PyJsComma(Js(0.0),var.get(u'_includes2').get(u'default'))(var.get(u'exts'), var.get(u'ext')) + PyJsHoisted_canCompile_.func_name = u'canCompile' + var.put(u'canCompile', PyJsHoisted_canCompile_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_354_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_354_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_arrayify_(val, mapFn, this, arguments, var=var): + var = Scope({u'this':this, u'mapFn':mapFn, u'arguments':arguments, u'val':val}, var) + var.registers([u'mapFn', u'val']) + if var.get(u'val').neg(): + return Js([]) + if PyJsComma(Js(0.0),var.get(u'_isBoolean2').get(u'default'))(var.get(u'val')): + return var.get(u'arrayify')(Js([var.get(u'val')]), var.get(u'mapFn')) + if PyJsComma(Js(0.0),var.get(u'_isString2').get(u'default'))(var.get(u'val')): + return var.get(u'arrayify')(var.get(u'list')(var.get(u'val')), var.get(u'mapFn')) + if var.get(u'Array').callprop(u'isArray', var.get(u'val')): + if var.get(u'mapFn'): + var.put(u'val', var.get(u'val').callprop(u'map', var.get(u'mapFn'))) + return var.get(u'val') + return Js([var.get(u'val')]) + PyJsHoisted_arrayify_.func_name = u'arrayify' + var.put(u'arrayify', PyJsHoisted_arrayify_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'inspect', var.get(u'exports').put(u'inherits', var.get(u'undefined'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_util', var.get(u'require')(Js(u'util'))) + @Js + def PyJs_get_351_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_351_}, var) + var.registers([]) + return var.get(u'_util').get(u'inherits') + PyJs_get_351_._set_name(u'get') + PyJs_Object_350_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_351_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'inherits'), PyJs_Object_350_) + @Js + def PyJs_get_353_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_353_}, var) + var.registers([]) + return var.get(u'_util').get(u'inspect') + PyJs_get_353_._set_name(u'get') + PyJs_Object_352_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_353_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'inspect'), PyJs_Object_352_) + var.get(u'exports').put(u'canCompile', var.get(u'canCompile')) + var.get(u'exports').put(u'list', var.get(u'list')) + var.get(u'exports').put(u'regexify', var.get(u'regexify')) + var.get(u'exports').put(u'arrayify', var.get(u'arrayify')) + var.get(u'exports').put(u'booleanify', var.get(u'booleanify')) + var.get(u'exports').put(u'shouldIgnore', var.get(u'shouldIgnore')) + var.put(u'_escapeRegExp', var.get(u'require')(Js(u'lodash/escapeRegExp'))) + var.put(u'_escapeRegExp2', var.get(u'_interopRequireDefault')(var.get(u'_escapeRegExp'))) + var.put(u'_startsWith', var.get(u'require')(Js(u'lodash/startsWith'))) + var.put(u'_startsWith2', var.get(u'_interopRequireDefault')(var.get(u'_startsWith'))) + var.put(u'_isBoolean', var.get(u'require')(Js(u'lodash/isBoolean'))) + var.put(u'_isBoolean2', var.get(u'_interopRequireDefault')(var.get(u'_isBoolean'))) + var.put(u'_minimatch', var.get(u'require')(Js(u'minimatch'))) + var.put(u'_minimatch2', var.get(u'_interopRequireDefault')(var.get(u'_minimatch'))) + var.put(u'_includes', var.get(u'require')(Js(u'lodash/includes'))) + var.put(u'_includes2', var.get(u'_interopRequireDefault')(var.get(u'_includes'))) + var.put(u'_isString', var.get(u'require')(Js(u'lodash/isString'))) + var.put(u'_isString2', var.get(u'_interopRequireDefault')(var.get(u'_isString'))) + var.put(u'_isRegExp', var.get(u'require')(Js(u'lodash/isRegExp'))) + var.put(u'_isRegExp2', var.get(u'_interopRequireDefault')(var.get(u'_isRegExp'))) + var.put(u'_path', var.get(u'require')(Js(u'path'))) + var.put(u'_path2', var.get(u'_interopRequireDefault')(var.get(u'_path'))) + var.put(u'_slash', var.get(u'require')(Js(u'slash'))) + var.put(u'_slash2', var.get(u'_interopRequireDefault')(var.get(u'_slash'))) + pass + pass + var.get(u'canCompile').put(u'EXTENSIONS', Js([Js(u'.js'), Js(u'.jsx'), Js(u'.es6'), Js(u'.es')])) + pass + pass + pass + pass + pass + pass +PyJs_anonymous_349_._set_name(u'anonymous') +PyJs_Object_356_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'lodash/escapeRegExp':Js(445.0),u'lodash/includes':Js(456.0),u'lodash/isBoolean':Js(461.0),u'lodash/isRegExp':Js(470.0),u'lodash/isString':Js(471.0),u'lodash/startsWith':Js(486.0),u'minimatch':Js(27.0),u'path':Js(530.0),u'slash':Js(508.0),u'util':Js(534.0)}) +@Js +def PyJs_anonymous_357_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'Minimatch', u'qmark', u'module', u'parse', u'regExpEscape', u'path', u'minimatch', u'reSpecials', u'make', u'twoStarNoDot', u'match', u'exports', u'star', u'plTypes', u'charSet', u'parseNegate', u'twoStarDot', u'expand', u'SUBPARSE', u'globUnescape', u'braceExpand', u'makeRe', u'GLOBSTAR', u'slashSplit', u'filter', u'ext', u'require']) + @Js + def PyJsHoisted_minimatch_(p, pattern, options, this, arguments, var=var): + var = Scope({u'this':this, u'p':p, u'options':options, u'arguments':arguments, u'pattern':pattern}, var) + var.registers([u'p', u'options', u'pattern']) + if PyJsStrictNeq(var.get(u'pattern',throw=False).typeof(),Js(u'string')): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'glob pattern string required'))) + raise PyJsTempException + if var.get(u'options').neg(): + PyJs_Object_379_ = Js({}) + var.put(u'options', PyJs_Object_379_) + if (var.get(u'options').get(u'nocomment').neg() and PyJsStrictEq(var.get(u'pattern').callprop(u'charAt', Js(0.0)),Js(u'#'))): + return Js(False) + if PyJsStrictEq(var.get(u'pattern').callprop(u'trim'),Js(u'')): + return PyJsStrictEq(var.get(u'p'),Js(u'')) + return var.get(u'Minimatch').create(var.get(u'pattern'), var.get(u'options')).callprop(u'match', var.get(u'p')) + PyJsHoisted_minimatch_.func_name = u'minimatch' + var.put(u'minimatch', PyJsHoisted_minimatch_) + @Js + def PyJsHoisted_globUnescape_(s, this, arguments, var=var): + var = Scope({u'this':this, u's':s, u'arguments':arguments}, var) + var.registers([u's']) + return var.get(u's').callprop(u'replace', JsRegExp(u'/\\\\(.)/g'), Js(u'$1')) + PyJsHoisted_globUnescape_.func_name = u'globUnescape' + var.put(u'globUnescape', PyJsHoisted_globUnescape_) + @Js + def PyJsHoisted_makeRe_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'twoStar', u'set', u'flags', u'options', u're']) + if (var.get(u"this").get(u'regexp') or PyJsStrictEq(var.get(u"this").get(u'regexp'),Js(False))): + return var.get(u"this").get(u'regexp') + var.put(u'set', var.get(u"this").get(u'set')) + if var.get(u'set').get(u'length').neg(): + var.get(u"this").put(u'regexp', Js(False)) + return var.get(u"this").get(u'regexp') + var.put(u'options', var.get(u"this").get(u'options')) + var.put(u'twoStar', (var.get(u'star') if var.get(u'options').get(u'noglobstar') else (var.get(u'twoStarDot') if var.get(u'options').get(u'dot') else var.get(u'twoStarNoDot')))) + var.put(u'flags', (Js(u'i') if var.get(u'options').get(u'nocase') else Js(u''))) + @Js + def PyJs_anonymous_392_(pattern, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'arguments':arguments}, var) + var.registers([u'pattern']) + @Js + def PyJs_anonymous_393_(p, this, arguments, var=var): + var = Scope({u'this':this, u'p':p, u'arguments':arguments}, var) + var.registers([u'p']) + return (var.get(u'twoStar') if PyJsStrictEq(var.get(u'p'),var.get(u'GLOBSTAR')) else (var.get(u'regExpEscape')(var.get(u'p')) if PyJsStrictEq(var.get(u'p',throw=False).typeof(),Js(u'string')) else var.get(u'p').get(u'_src'))) + PyJs_anonymous_393_._set_name(u'anonymous') + return var.get(u'pattern').callprop(u'map', PyJs_anonymous_393_).callprop(u'join', Js(u'\\/')) + PyJs_anonymous_392_._set_name(u'anonymous') + var.put(u're', var.get(u'set').callprop(u'map', PyJs_anonymous_392_).callprop(u'join', Js(u'|'))) + var.put(u're', ((Js(u'^(?:')+var.get(u're'))+Js(u')$'))) + if var.get(u"this").get(u'negate'): + var.put(u're', ((Js(u'^(?!')+var.get(u're'))+Js(u').*$'))) + try: + var.get(u"this").put(u'regexp', var.get(u'RegExp').create(var.get(u're'), var.get(u'flags'))) + except PyJsException as PyJsTempException: + PyJsHolder_6578_58961032 = var.own.get(u'ex') + var.force_own_put(u'ex', PyExceptionToJs(PyJsTempException)) + try: + var.get(u"this").put(u'regexp', Js(False)) + finally: + if PyJsHolder_6578_58961032 is not None: + var.own[u'ex'] = PyJsHolder_6578_58961032 + else: + del var.own[u'ex'] + del PyJsHolder_6578_58961032 + return var.get(u"this").get(u'regexp') + PyJsHoisted_makeRe_.func_name = u'makeRe' + var.put(u'makeRe', PyJsHoisted_makeRe_) + @Js + def PyJsHoisted_regExpEscape_(s, this, arguments, var=var): + var = Scope({u'this':this, u's':s, u'arguments':arguments}, var) + var.registers([u's']) + return var.get(u's').callprop(u'replace', JsRegExp(u'/[-[\\]{}()*+?.,\\\\^$|#\\s]/g'), Js(u'\\$&')) + PyJsHoisted_regExpEscape_.func_name = u'regExpEscape' + var.put(u'regExpEscape', PyJsHoisted_regExpEscape_) + @Js + def PyJsHoisted_Minimatch_(pattern, options, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'options':options, u'arguments':arguments}, var) + var.registers([u'pattern', u'options']) + if var.get(u"this").instanceof(var.get(u'Minimatch')).neg(): + return var.get(u'Minimatch').create(var.get(u'pattern'), var.get(u'options')) + if PyJsStrictNeq(var.get(u'pattern',throw=False).typeof(),Js(u'string')): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'glob pattern string required'))) + raise PyJsTempException + if var.get(u'options').neg(): + PyJs_Object_380_ = Js({}) + var.put(u'options', PyJs_Object_380_) + var.put(u'pattern', var.get(u'pattern').callprop(u'trim')) + if PyJsStrictNeq(var.get(u'path').get(u'sep'),Js(u'/')): + var.put(u'pattern', var.get(u'pattern').callprop(u'split', var.get(u'path').get(u'sep')).callprop(u'join', Js(u'/'))) + var.get(u"this").put(u'options', var.get(u'options')) + var.get(u"this").put(u'set', Js([])) + var.get(u"this").put(u'pattern', var.get(u'pattern')) + var.get(u"this").put(u'regexp', var.get(u"null")) + var.get(u"this").put(u'negate', Js(False)) + var.get(u"this").put(u'comment', Js(False)) + var.get(u"this").put(u'empty', Js(False)) + var.get(u"this").callprop(u'make') + PyJsHoisted_Minimatch_.func_name = u'Minimatch' + var.put(u'Minimatch', PyJsHoisted_Minimatch_) + @Js + def PyJsHoisted_make_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'pattern', u'set', u'options']) + if var.get(u"this").get(u'_made'): + return var.get('undefined') + var.put(u'pattern', var.get(u"this").get(u'pattern')) + var.put(u'options', var.get(u"this").get(u'options')) + if (var.get(u'options').get(u'nocomment').neg() and PyJsStrictEq(var.get(u'pattern').callprop(u'charAt', Js(0.0)),Js(u'#'))): + var.get(u"this").put(u'comment', var.get(u'true')) + return var.get('undefined') + if var.get(u'pattern').neg(): + var.get(u"this").put(u'empty', var.get(u'true')) + return var.get('undefined') + var.get(u"this").callprop(u'parseNegate') + var.put(u'set', var.get(u"this").put(u'globSet', var.get(u"this").callprop(u'braceExpand'))) + if var.get(u'options').get(u'debug'): + var.get(u"this").put(u'debug', var.get(u'console').get(u'error')) + var.get(u"this").callprop(u'debug', var.get(u"this").get(u'pattern'), var.get(u'set')) + @Js + def PyJs_anonymous_382_(s, this, arguments, var=var): + var = Scope({u'this':this, u's':s, u'arguments':arguments}, var) + var.registers([u's']) + return var.get(u's').callprop(u'split', var.get(u'slashSplit')) + PyJs_anonymous_382_._set_name(u'anonymous') + var.put(u'set', var.get(u"this").put(u'globParts', var.get(u'set').callprop(u'map', PyJs_anonymous_382_))) + var.get(u"this").callprop(u'debug', var.get(u"this").get(u'pattern'), var.get(u'set')) + @Js + def PyJs_anonymous_383_(s, si, set, this, arguments, var=var): + var = Scope({u'this':this, u's':s, u'set':set, u'si':si, u'arguments':arguments}, var) + var.registers([u's', u'set', u'si']) + return var.get(u's').callprop(u'map', var.get(u"this").get(u'parse'), var.get(u"this")) + PyJs_anonymous_383_._set_name(u'anonymous') + var.put(u'set', var.get(u'set').callprop(u'map', PyJs_anonymous_383_, var.get(u"this"))) + var.get(u"this").callprop(u'debug', var.get(u"this").get(u'pattern'), var.get(u'set')) + @Js + def PyJs_anonymous_384_(s, this, arguments, var=var): + var = Scope({u'this':this, u's':s, u'arguments':arguments}, var) + var.registers([u's']) + return PyJsStrictEq(var.get(u's').callprop(u'indexOf', Js(False)),(-Js(1.0))) + PyJs_anonymous_384_._set_name(u'anonymous') + var.put(u'set', var.get(u'set').callprop(u'filter', PyJs_anonymous_384_)) + var.get(u"this").callprop(u'debug', var.get(u"this").get(u'pattern'), var.get(u'set')) + var.get(u"this").put(u'set', var.get(u'set')) + PyJsHoisted_make_.func_name = u'make' + var.put(u'make', PyJsHoisted_make_) + @Js + def PyJsHoisted_charSet_(s, this, arguments, var=var): + var = Scope({u'this':this, u's':s, u'arguments':arguments}, var) + var.registers([u's']) + @Js + def PyJs_anonymous_366_(set, c, this, arguments, var=var): + var = Scope({u'this':this, u'c':c, u'set':set, u'arguments':arguments}, var) + var.registers([u'c', u'set']) + var.get(u'set').put(var.get(u'c'), var.get(u'true')) + return var.get(u'set') + PyJs_anonymous_366_._set_name(u'anonymous') + PyJs_Object_367_ = Js({}) + return var.get(u's').callprop(u'split', Js(u'')).callprop(u'reduce', PyJs_anonymous_366_, PyJs_Object_367_) + PyJsHoisted_charSet_.func_name = u'charSet' + var.put(u'charSet', PyJsHoisted_charSet_) + @Js + def PyJsHoisted_filter_(pattern, options, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'options':options, u'arguments':arguments}, var) + var.registers([u'pattern', u'options']) + PyJs_Object_368_ = Js({}) + var.put(u'options', (var.get(u'options') or PyJs_Object_368_)) + @Js + def PyJs_anonymous_369_(p, i, list, this, arguments, var=var): + var = Scope({u'i':i, u'p':p, u'this':this, u'list':list, u'arguments':arguments}, var) + var.registers([u'i', u'p', u'list']) + return var.get(u'minimatch')(var.get(u'p'), var.get(u'pattern'), var.get(u'options')) + PyJs_anonymous_369_._set_name(u'anonymous') + return PyJs_anonymous_369_ + PyJsHoisted_filter_.func_name = u'filter' + var.put(u'filter', PyJsHoisted_filter_) + @Js + def PyJsHoisted_ext_(a, b, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'b':b, u'arguments':arguments}, var) + var.registers([u'a', u'b', u't']) + PyJs_Object_370_ = Js({}) + var.put(u'a', (var.get(u'a') or PyJs_Object_370_)) + PyJs_Object_371_ = Js({}) + var.put(u'b', (var.get(u'b') or PyJs_Object_371_)) + PyJs_Object_372_ = Js({}) + var.put(u't', PyJs_Object_372_) + @Js + def PyJs_anonymous_373_(k, this, arguments, var=var): + var = Scope({u'this':this, u'k':k, u'arguments':arguments}, var) + var.registers([u'k']) + var.get(u't').put(var.get(u'k'), var.get(u'b').get(var.get(u'k'))) + PyJs_anonymous_373_._set_name(u'anonymous') + var.get(u'Object').callprop(u'keys', var.get(u'b')).callprop(u'forEach', PyJs_anonymous_373_) + @Js + def PyJs_anonymous_374_(k, this, arguments, var=var): + var = Scope({u'this':this, u'k':k, u'arguments':arguments}, var) + var.registers([u'k']) + var.get(u't').put(var.get(u'k'), var.get(u'a').get(var.get(u'k'))) + PyJs_anonymous_374_._set_name(u'anonymous') + var.get(u'Object').callprop(u'keys', var.get(u'a')).callprop(u'forEach', PyJs_anonymous_374_) + return var.get(u't') + PyJsHoisted_ext_.func_name = u'ext' + var.put(u'ext', PyJsHoisted_ext_) + @Js + def PyJsHoisted_parseNegate_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'pattern', u'l', u'negateOffset', u'negate', u'options']) + var.put(u'pattern', var.get(u"this").get(u'pattern')) + var.put(u'negate', Js(False)) + var.put(u'options', var.get(u"this").get(u'options')) + var.put(u'negateOffset', Js(0.0)) + if var.get(u'options').get(u'nonegate'): + return var.get('undefined') + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'l', var.get(u'pattern').get(u'length')) + while ((var.get(u'i')(Js(1024.0)*Js(64.0))): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'pattern is too long'))) + raise PyJsTempException + var.put(u'options', var.get(u"this").get(u'options')) + if (var.get(u'options').get(u'noglobstar').neg() and PyJsStrictEq(var.get(u'pattern'),Js(u'**'))): + return var.get(u'GLOBSTAR') + if PyJsStrictEq(var.get(u'pattern'),Js(u'')): + return Js(u'') + var.put(u're', Js(u'')) + var.put(u'hasMagic', var.get(u'options').get(u'nocase').neg().neg()) + var.put(u'escaping', Js(False)) + var.put(u'patternListStack', Js([])) + var.put(u'negativeLists', Js([])) + pass + var.put(u'inClass', Js(False)) + var.put(u'reClassStart', (-Js(1.0))) + var.put(u'classStart', (-Js(1.0))) + var.put(u'patternStart', (Js(u'') if PyJsStrictEq(var.get(u'pattern').callprop(u'charAt', Js(0.0)),Js(u'.')) else (Js(u'(?!(?:^|\\/)\\.{1,2}(?:$|\\/))') if var.get(u'options').get(u'dot') else Js(u'(?!\\.)')))) + var.put(u'self', var.get(u"this")) + pass + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'len', var.get(u'pattern').get(u'length')) + while ((var.get(u'i')(-Js(1.0))): + try: + var.put(u'nl', var.get(u'negativeLists').get(var.get(u'n'))) + var.put(u'nlBefore', var.get(u're').callprop(u'slice', Js(0.0), var.get(u'nl').get(u'reStart'))) + var.put(u'nlFirst', var.get(u're').callprop(u'slice', var.get(u'nl').get(u'reStart'), (var.get(u'nl').get(u'reEnd')-Js(8.0)))) + var.put(u'nlLast', var.get(u're').callprop(u'slice', (var.get(u'nl').get(u'reEnd')-Js(8.0)), var.get(u'nl').get(u'reEnd'))) + var.put(u'nlAfter', var.get(u're').callprop(u'slice', var.get(u'nl').get(u'reEnd'))) + var.put(u'nlLast', var.get(u'nlAfter'), u'+') + var.put(u'openParensBefore', (var.get(u'nlBefore').callprop(u'split', Js(u'(')).get(u'length')-Js(1.0))) + var.put(u'cleanAfter', var.get(u'nlAfter')) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(0.0)): + try: + var.put(u'filename', var.get(u'f').get(var.get(u'i'))) + if var.get(u'filename'): + break + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')>> no match, partial?'), var.get(u'file'), var.get(u'fr'), var.get(u'pattern'), var.get(u'pr')) + if PyJsStrictEq(var.get(u'fr'),var.get(u'fl')): + return var.get(u'true') + return Js(False) + pass + if PyJsStrictEq(var.get(u'p',throw=False).typeof(),Js(u'string')): + if var.get(u'options').get(u'nocase'): + var.put(u'hit', PyJsStrictEq(var.get(u'f').callprop(u'toLowerCase'),var.get(u'p').callprop(u'toLowerCase'))) + else: + var.put(u'hit', PyJsStrictEq(var.get(u'f'),var.get(u'p'))) + var.get(u"this").callprop(u'debug', Js(u'string match'), var.get(u'p'), var.get(u'f'), var.get(u'hit')) + else: + var.put(u'hit', var.get(u'f').callprop(u'match', var.get(u'p'))) + var.get(u"this").callprop(u'debug', Js(u'pattern match'), var.get(u'p'), var.get(u'f'), var.get(u'hit')) + if var.get(u'hit').neg(): + return Js(False) + finally: + PyJsComma((var.put(u'fi',Js(var.get(u'fi').to_number())+Js(1))-Js(1)),(var.put(u'pi',Js(var.get(u'pi').to_number())+Js(1))-Js(1))) + if (PyJsStrictEq(var.get(u'fi'),var.get(u'fl')) and PyJsStrictEq(var.get(u'pi'),var.get(u'pl'))): + return var.get(u'true') + else: + if PyJsStrictEq(var.get(u'fi'),var.get(u'fl')): + return var.get(u'partial') + else: + if PyJsStrictEq(var.get(u'pi'),var.get(u'pl')): + var.put(u'emptyFileEnd', (PyJsStrictEq(var.get(u'fi'),(var.get(u'fl')-Js(1.0))) and PyJsStrictEq(var.get(u'file').get(var.get(u'fi')),Js(u'')))) + return var.get(u'emptyFileEnd') + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'wtf?'))) + raise PyJsTempException + PyJs_anonymous_397_._set_name(u'anonymous') + var.get(u'Minimatch').get(u'prototype').put(u'matchOne', PyJs_anonymous_397_) + pass + pass +PyJs_anonymous_357_._set_name(u'anonymous') +PyJs_Object_399_ = Js({u'brace-expansion':Js(264.0),u'path':Js(530.0)}) +@Js +def PyJs_anonymous_400_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_402_ = Js({u'raw':Js(u'babel-core'),u'scope':var.get(u"null"),u'escapedName':Js(u'babel-core'),u'name':Js(u'babel-core'),u'rawSpec':Js(u''),u'spec':Js(u'latest'),u'type':Js(u'tag')}) + PyJs_Object_403_ = Js({u'host':Js(u'packages-18-east.internal.npmjs.com'),u'tmp':Js(u'tmp/babel-core-6.18.2.tgz_1478035855416_0.08754534856416285')}) + PyJs_Object_404_ = Js({u'name':Js(u'hzoo'),u'email':Js(u'hi@henryzoo.com')}) + PyJs_Object_405_ = Js({u'brace-expansion':Js(u'1.1.5')}) + PyJs_Object_406_ = Js({u'raw':Js(u'babel-core'),u'scope':var.get(u"null"),u'escapedName':Js(u'babel-core'),u'name':Js(u'babel-core'),u'rawSpec':Js(u''),u'spec':Js(u'latest'),u'type':Js(u'tag')}) + PyJs_Object_407_ = Js({u'name':Js(u'Sebastian McKenzie'),u'email':Js(u'sebmck@gmail.com')}) + PyJs_Object_408_ = Js({u'babel-code-frame':Js(u'^6.16.0'),u'babel-generator':Js(u'^6.18.0'),u'babel-helpers':Js(u'^6.16.0'),u'babel-messages':Js(u'^6.8.0'),u'babel-register':Js(u'^6.18.0'),u'babel-runtime':Js(u'^6.9.1'),u'babel-template':Js(u'^6.16.0'),u'babel-traverse':Js(u'^6.18.0'),u'babel-types':Js(u'^6.18.0'),u'babylon':Js(u'^6.11.0'),u'convert-source-map':Js(u'^1.1.0'),u'debug':Js(u'^2.1.1'),u'json5':Js(u'^0.5.0'),u'lodash':Js(u'^4.2.0'),u'minimatch':Js(u'^3.0.2'),u'path-is-absolute':Js(u'^1.0.0'),u'private':Js(u'^0.1.6'),u'slash':Js(u'^1.0.0'),u'source-map':Js(u'^0.5.0')}) + PyJs_Object_409_ = Js({u'babel-helper-fixtures':Js(u'^6.18.2'),u'babel-helper-transform-fixture-test-runner':Js(u'^6.18.2'),u'babel-polyfill':Js(u'^6.16.0')}) + PyJs_Object_410_ = Js({}) + PyJs_Object_411_ = Js({u'shasum':Js(u'd8bb14dd6986fa4f3566a26ceda3964fa0e04e5b'),u'tarball':Js(u'https://registry.npmjs.org/babel-core/-/babel-core-6.18.2.tgz')}) + PyJs_Object_412_ = Js({u'name':Js(u'amasad'),u'email':Js(u'amjad.masad@gmail.com')}) + PyJs_Object_413_ = Js({u'name':Js(u'hzoo'),u'email':Js(u'hi@henryzoo.com')}) + PyJs_Object_414_ = Js({u'name':Js(u'jmm'),u'email':Js(u'npm-public@jessemccarthy.net')}) + PyJs_Object_415_ = Js({u'name':Js(u'loganfsmyth'),u'email':Js(u'loganfsmyth@gmail.com')}) + PyJs_Object_416_ = Js({u'name':Js(u'sebmck'),u'email':Js(u'sebmck@gmail.com')}) + PyJs_Object_417_ = Js({u'name':Js(u'thejameskyle'),u'email':Js(u'me@thejameskyle.com')}) + PyJs_Object_418_ = Js({}) + PyJs_Object_419_ = Js({u'type':Js(u'git'),u'url':Js(u'https://github.com/babel/babel/tree/master/packages/babel-core')}) + PyJs_Object_420_ = Js({u'bench':Js(u'make bench'),u'test':Js(u'make test')}) + PyJs_Object_401_ = Js({u'_args':Js([Js([PyJs_Object_402_, Js(u'/Users/PiotrDabkowski/PycharmProjects/Js2Py/js2py/es6')])]),u'_from':Js(u'babel-core@latest'),u'_id':Js(u'babel-core@6.18.2'),u'_inCache':var.get(u'true'),u'_location':Js(u'/babel-core'),u'_nodeVersion':Js(u'6.8.1'),u'_npmOperationalInternal':PyJs_Object_403_,u'_npmUser':PyJs_Object_404_,u'_npmVersion':Js(u'3.10.9'),u'_phantomChildren':PyJs_Object_405_,u'_requested':PyJs_Object_406_,u'_requiredBy':Js([Js(u'#USER'), Js(u'/babel-cli'), Js(u'/babel-register'), Js(u'/babelify')]),u'_resolved':Js(u'https://registry.npmjs.org/babel-core/-/babel-core-6.18.2.tgz'),u'_shasum':Js(u'd8bb14dd6986fa4f3566a26ceda3964fa0e04e5b'),u'_shrinkwrap':var.get(u"null"),u'_spec':Js(u'babel-core'),u'_where':Js(u'/Users/PiotrDabkowski/PycharmProjects/Js2Py/js2py/es6'),u'author':PyJs_Object_407_,u'dependencies':PyJs_Object_408_,u'description':Js(u'Babel compiler core.'),u'devDependencies':PyJs_Object_409_,u'directories':PyJs_Object_410_,u'dist':PyJs_Object_411_,u'homepage':Js(u'https://babeljs.io/'),u'keywords':Js([Js(u'6to5'), Js(u'babel'), Js(u'classes'), Js(u'const'), Js(u'es6'), Js(u'harmony'), Js(u'let'), Js(u'modules'), Js(u'transpile'), Js(u'transpiler'), Js(u'var')]),u'license':Js(u'MIT'),u'maintainers':Js([PyJs_Object_412_, PyJs_Object_413_, PyJs_Object_414_, PyJs_Object_415_, PyJs_Object_416_, PyJs_Object_417_]),u'name':Js(u'babel-core'),u'optionalDependencies':PyJs_Object_418_,u'readme':Js(u'ERROR: No README data found!'),u'repository':PyJs_Object_419_,u'scripts':PyJs_Object_420_,u'version':Js(u'6.18.2')}) + var.get(u'module').put(u'exports', PyJs_Object_401_) +PyJs_anonymous_400_._set_name(u'anonymous') +PyJs_Object_421_ = Js({}) +@Js +def PyJs_anonymous_422_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'Buffer', u'require', u'_trimEnd2', u'module', u'_trimEnd', u'_interopRequireDefault', u'SPACES_RE', u'_classCallCheck2', u'_classCallCheck3']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_423_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_423_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_trimEnd', var.get(u'require')(Js(u'lodash/trimEnd'))) + var.put(u'_trimEnd2', var.get(u'_interopRequireDefault')(var.get(u'_trimEnd'))) + pass + var.put(u'SPACES_RE', JsRegExp(u'/^[ \\t]+$/')) + @Js + def PyJs_anonymous_424_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'Buffer']) + @Js + def PyJsHoisted_Buffer_(map, this, arguments, var=var): + var = Scope({u'this':this, u'map':map, u'arguments':arguments}, var) + var.registers([u'map']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Buffer')) + var.get(u"this").put(u'_map', var.get(u"null")) + var.get(u"this").put(u'_buf', Js([])) + var.get(u"this").put(u'_last', Js(u'')) + var.get(u"this").put(u'_queue', Js([])) + PyJs_Object_425_ = Js({u'line':Js(1.0),u'column':Js(0.0)}) + var.get(u"this").put(u'_position', PyJs_Object_425_) + PyJs_Object_426_ = Js({u'identifierName':var.get(u"null"),u'line':var.get(u"null"),u'column':var.get(u"null"),u'filename':var.get(u"null")}) + var.get(u"this").put(u'_sourcePosition', PyJs_Object_426_) + var.get(u"this").put(u'_map', var.get(u'map')) + PyJsHoisted_Buffer_.func_name = u'Buffer' + var.put(u'Buffer', PyJsHoisted_Buffer_) + pass + @Js + def PyJs_get_427_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_427_}, var) + var.registers([]) + var.get(u"this").callprop(u'_flush') + PyJs_Object_428_ = Js({u'code':PyJsComma(Js(0.0),var.get(u'_trimEnd2').get(u'default'))(var.get(u"this").get(u'_buf').callprop(u'join', Js(u''))),u'map':(var.get(u"this").get(u'_map').callprop(u'get') if var.get(u"this").get(u'_map') else var.get(u"null"))}) + return PyJs_Object_428_ + PyJs_get_427_._set_name(u'get') + var.get(u'Buffer').get(u'prototype').put(u'get', PyJs_get_427_) + @Js + def PyJs_append_429_(str, this, arguments, var=var): + var = Scope({u'this':this, u'append':PyJs_append_429_, u'arguments':arguments, u'str':str}, var) + var.registers([u'identifierName', u'column', u'filename', u'str', u'line', u'_sourcePosition']) + var.get(u"this").callprop(u'_flush') + var.put(u'_sourcePosition', var.get(u"this").get(u'_sourcePosition')) + var.put(u'line', var.get(u'_sourcePosition').get(u'line')) + var.put(u'column', var.get(u'_sourcePosition').get(u'column')) + var.put(u'filename', var.get(u'_sourcePosition').get(u'filename')) + var.put(u'identifierName', var.get(u'_sourcePosition').get(u'identifierName')) + var.get(u"this").callprop(u'_append', var.get(u'str'), var.get(u'line'), var.get(u'column'), var.get(u'identifierName'), var.get(u'filename')) + PyJs_append_429_._set_name(u'append') + var.get(u'Buffer').get(u'prototype').put(u'append', PyJs_append_429_) + @Js + def PyJs_queue_430_(str, this, arguments, var=var): + var = Scope({u'this':this, u'queue':PyJs_queue_430_, u'arguments':arguments, u'str':str}, var) + var.registers([u'identifierName', u'column', u'filename', u'_sourcePosition2', u'str', u'line']) + if PyJsStrictEq(var.get(u'str'),Js(u'\n')): + while ((var.get(u"this").get(u'_queue').get(u'length')>Js(0.0)) and var.get(u'SPACES_RE').callprop(u'test', var.get(u"this").get(u'_queue').get(u'0').get(u'0'))): + var.get(u"this").get(u'_queue').callprop(u'shift') + var.put(u'_sourcePosition2', var.get(u"this").get(u'_sourcePosition')) + var.put(u'line', var.get(u'_sourcePosition2').get(u'line')) + var.put(u'column', var.get(u'_sourcePosition2').get(u'column')) + var.put(u'filename', var.get(u'_sourcePosition2').get(u'filename')) + var.put(u'identifierName', var.get(u'_sourcePosition2').get(u'identifierName')) + var.get(u"this").get(u'_queue').callprop(u'unshift', Js([var.get(u'str'), var.get(u'line'), var.get(u'column'), var.get(u'identifierName'), var.get(u'filename')])) + PyJs_queue_430_._set_name(u'queue') + var.get(u'Buffer').get(u'prototype').put(u'queue', PyJs_queue_430_) + @Js + def PyJs__flush_431_(this, arguments, var=var): + var = Scope({u'this':this, u'_flush':PyJs__flush_431_, u'arguments':arguments}, var) + var.registers([u'item']) + var.put(u'item', PyJsComma(Js(0.0), Js(None))) + while var.put(u'item', var.get(u"this").get(u'_queue').callprop(u'pop')): + var.get(u"this").get(u'_append').callprop(u'apply', var.get(u"this"), var.get(u'item')) + PyJs__flush_431_._set_name(u'_flush') + var.get(u'Buffer').get(u'prototype').put(u'_flush', PyJs__flush_431_) + @Js + def PyJs__append_432_(str, line, column, identifierName, filename, this, arguments, var=var): + var = Scope({u'this':this, u'_append':PyJs__append_432_, u'str':str, u'identifierName':identifierName, u'column':column, u'arguments':arguments, u'line':line, u'filename':filename}, var) + var.registers([u'identifierName', u'i', u'filename', u'column', u'str', u'line']) + if (var.get(u"this").get(u'_map') and PyJsStrictNeq(var.get(u'str').get(u'0'),Js(u'\n'))): + var.get(u"this").get(u'_map').callprop(u'mark', var.get(u"this").get(u'_position').get(u'line'), var.get(u"this").get(u'_position').get(u'column'), var.get(u'line'), var.get(u'column'), var.get(u'identifierName'), var.get(u'filename')) + var.get(u"this").get(u'_buf').callprop(u'push', var.get(u'str')) + var.get(u"this").put(u'_last', var.get(u'str').get((var.get(u'str').get(u'length')-Js(1.0)))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(0.0)) and PyJsStrictEq(var.get(u"this").get(u'_queue').get(u'0').get(u'0'),Js(u'\n'))): + var.get(u"this").get(u'_queue').callprop(u'shift') + PyJs_removeTrailingNewline_433_._set_name(u'removeTrailingNewline') + var.get(u'Buffer').get(u'prototype').put(u'removeTrailingNewline', PyJs_removeTrailingNewline_433_) + @Js + def PyJs_removeLastSemicolon_434_(this, arguments, var=var): + var = Scope({u'this':this, u'removeLastSemicolon':PyJs_removeLastSemicolon_434_, u'arguments':arguments}, var) + var.registers([]) + if ((var.get(u"this").get(u'_queue').get(u'length')>Js(0.0)) and PyJsStrictEq(var.get(u"this").get(u'_queue').get(u'0').get(u'0'),Js(u';'))): + var.get(u"this").get(u'_queue').callprop(u'shift') + PyJs_removeLastSemicolon_434_._set_name(u'removeLastSemicolon') + var.get(u'Buffer').get(u'prototype').put(u'removeLastSemicolon', PyJs_removeLastSemicolon_434_) + @Js + def PyJs_endsWith_435_(suffix, this, arguments, var=var): + var = Scope({u'this':this, u'endsWith':PyJs_endsWith_435_, u'suffix':suffix, u'arguments':arguments}, var) + var.registers([u'end', u'last', u'suffix', u'str']) + if PyJsStrictEq(var.get(u'suffix').get(u'length'),Js(1.0)): + var.put(u'last', PyJsComma(Js(0.0), Js(None))) + if (var.get(u"this").get(u'_queue').get(u'length')>Js(0.0)): + var.put(u'str', var.get(u"this").get(u'_queue').get(u'0').get(u'0')) + var.put(u'last', var.get(u'str').get((var.get(u'str').get(u'length')-Js(1.0)))) + else: + var.put(u'last', var.get(u"this").get(u'_last')) + return PyJsStrictEq(var.get(u'last'),var.get(u'suffix')) + @Js + def PyJs_anonymous_436_(acc, item, this, arguments, var=var): + var = Scope({u'acc':acc, u'item':item, u'this':this, u'arguments':arguments}, var) + var.registers([u'acc', u'item']) + return (var.get(u'item').get(u'0')+var.get(u'acc')) + PyJs_anonymous_436_._set_name(u'anonymous') + var.put(u'end', (var.get(u"this").get(u'_last')+var.get(u"this").get(u'_queue').callprop(u'reduce', PyJs_anonymous_436_, Js(u'')))) + if (var.get(u'suffix').get(u'length')<=var.get(u'end').get(u'length')): + return PyJsStrictEq(var.get(u'end').callprop(u'slice', (-var.get(u'suffix').get(u'length'))),var.get(u'suffix')) + return Js(False) + PyJs_endsWith_435_._set_name(u'endsWith') + var.get(u'Buffer').get(u'prototype').put(u'endsWith', PyJs_endsWith_435_) + @Js + def PyJs_hasContent_437_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'hasContent':PyJs_hasContent_437_}, var) + var.registers([]) + return ((var.get(u"this").get(u'_queue').get(u'length')>Js(0.0)) or var.get(u"this").get(u'_last').neg().neg()) + PyJs_hasContent_437_._set_name(u'hasContent') + var.get(u'Buffer').get(u'prototype').put(u'hasContent', PyJs_hasContent_437_) + @Js + def PyJs_source_438_(prop, loc, this, arguments, var=var): + var = Scope({u'this':this, u'loc':loc, u'source':PyJs_source_438_, u'arguments':arguments, u'prop':prop}, var) + var.registers([u'loc', u'pos', u'prop']) + if (var.get(u'prop') and var.get(u'loc').neg()): + return var.get('undefined') + var.put(u'pos', (var.get(u'loc').get(var.get(u'prop')) if var.get(u'loc') else var.get(u"null"))) + var.get(u"this").get(u'_sourcePosition').put(u'identifierName', ((var.get(u'loc') and var.get(u'loc').get(u'identifierName')) or var.get(u"null"))) + var.get(u"this").get(u'_sourcePosition').put(u'line', (var.get(u'pos').get(u'line') if var.get(u'pos') else var.get(u"null"))) + var.get(u"this").get(u'_sourcePosition').put(u'column', (var.get(u'pos').get(u'column') if var.get(u'pos') else var.get(u"null"))) + var.get(u"this").get(u'_sourcePosition').put(u'filename', ((var.get(u'loc') and var.get(u'loc').get(u'filename')) or var.get(u"null"))) + PyJs_source_438_._set_name(u'source') + var.get(u'Buffer').get(u'prototype').put(u'source', PyJs_source_438_) + @Js + def PyJs_withSource_439_(prop, loc, cb, this, arguments, var=var): + var = Scope({u'loc':loc, u'this':this, u'cb':cb, u'prop':prop, u'withSource':PyJs_withSource_439_, u'arguments':arguments}, var) + var.registers([u'originalColumn', u'originalIdentifierName', u'loc', u'cb', u'prop', u'originalLine', u'originalFilename']) + if var.get(u"this").get(u'_map').neg(): + return var.get(u'cb')() + var.put(u'originalLine', var.get(u"this").get(u'_sourcePosition').get(u'line')) + var.put(u'originalColumn', var.get(u"this").get(u'_sourcePosition').get(u'column')) + var.put(u'originalFilename', var.get(u"this").get(u'_sourcePosition').get(u'filename')) + var.put(u'originalIdentifierName', var.get(u"this").get(u'_sourcePosition').get(u'identifierName')) + var.get(u"this").callprop(u'source', var.get(u'prop'), var.get(u'loc')) + var.get(u'cb')() + var.get(u"this").get(u'_sourcePosition').put(u'line', var.get(u'originalLine')) + var.get(u"this").get(u'_sourcePosition').put(u'column', var.get(u'originalColumn')) + var.get(u"this").get(u'_sourcePosition').put(u'filename', var.get(u'originalFilename')) + var.get(u"this").get(u'_sourcePosition').put(u'identifierName', var.get(u'originalIdentifierName')) + PyJs_withSource_439_._set_name(u'withSource') + var.get(u'Buffer').get(u'prototype').put(u'withSource', PyJs_withSource_439_) + @Js + def PyJs_getCurrentColumn_440_(this, arguments, var=var): + var = Scope({u'this':this, u'getCurrentColumn':PyJs_getCurrentColumn_440_, u'arguments':arguments}, var) + var.registers([u'lastIndex', u'extra']) + @Js + def PyJs_anonymous_441_(acc, item, this, arguments, var=var): + var = Scope({u'acc':acc, u'item':item, u'this':this, u'arguments':arguments}, var) + var.registers([u'acc', u'item']) + return (var.get(u'item').get(u'0')+var.get(u'acc')) + PyJs_anonymous_441_._set_name(u'anonymous') + var.put(u'extra', var.get(u"this").get(u'_queue').callprop(u'reduce', PyJs_anonymous_441_, Js(u''))) + var.put(u'lastIndex', var.get(u'extra').callprop(u'lastIndexOf', Js(u'\n'))) + return ((var.get(u"this").get(u'_position').get(u'column')+var.get(u'extra').get(u'length')) if PyJsStrictEq(var.get(u'lastIndex'),(-Js(1.0))) else ((var.get(u'extra').get(u'length')-Js(1.0))-var.get(u'lastIndex'))) + PyJs_getCurrentColumn_440_._set_name(u'getCurrentColumn') + var.get(u'Buffer').get(u'prototype').put(u'getCurrentColumn', PyJs_getCurrentColumn_440_) + @Js + def PyJs_getCurrentLine_442_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getCurrentLine':PyJs_getCurrentLine_442_}, var) + var.registers([u'count', u'i', u'extra']) + @Js + def PyJs_anonymous_443_(acc, item, this, arguments, var=var): + var = Scope({u'acc':acc, u'item':item, u'this':this, u'arguments':arguments}, var) + var.registers([u'acc', u'item']) + return (var.get(u'item').get(u'0')+var.get(u'acc')) + PyJs_anonymous_443_._set_name(u'anonymous') + var.put(u'extra', var.get(u"this").get(u'_queue').callprop(u'reduce', PyJs_anonymous_443_, Js(u''))) + var.put(u'count', Js(0.0)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')')) + PyJsHoisted_TypeParameterInstantiation_.func_name = u'TypeParameterInstantiation' + var.put(u'TypeParameterInstantiation', PyJsHoisted_TypeParameterInstantiation_) + @Js + def PyJsHoisted_TypeParameter_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'_variance', var.get(u'node')) + var.get(u"this").callprop(u'word', var.get(u'node').get(u'name')) + if var.get(u'node').get(u'bound'): + var.get(u"this").callprop(u'print', var.get(u'node').get(u'bound'), var.get(u'node')) + if var.get(u'node').get(u'default'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'=')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'default'), var.get(u'node')) + PyJsHoisted_TypeParameter_.func_name = u'TypeParameter' + var.put(u'TypeParameter', PyJsHoisted_TypeParameter_) + @Js + def PyJsHoisted_ExistentialTypeParam_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'token', Js(u'*')) + PyJsHoisted_ExistentialTypeParam_.func_name = u'ExistentialTypeParam' + var.put(u'ExistentialTypeParam', PyJsHoisted_ExistentialTypeParam_) + @Js + def PyJsHoisted_FunctionTypeParam_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'name'), var.get(u'node')) + if var.get(u'node').get(u'optional'): + var.get(u"this").callprop(u'token', Js(u'?')) + var.get(u"this").callprop(u'token', Js(u':')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'typeAnnotation'), var.get(u'node')) + PyJsHoisted_FunctionTypeParam_.func_name = u'FunctionTypeParam' + var.put(u'FunctionTypeParam', PyJsHoisted_FunctionTypeParam_) + @Js + def PyJsHoisted_orSeparator_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'|')) + var.get(u"this").callprop(u'space') + PyJsHoisted_orSeparator_.func_name = u'orSeparator' + var.put(u'orSeparator', PyJsHoisted_orSeparator_) + @Js + def PyJsHoisted_UnionTypeAnnotation_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + PyJs_Object_469_ = Js({u'separator':var.get(u'orSeparator')}) + var.get(u"this").callprop(u'printJoin', var.get(u'node').get(u'types'), var.get(u'node'), PyJs_Object_469_) + PyJsHoisted_UnionTypeAnnotation_.func_name = u'UnionTypeAnnotation' + var.put(u'UnionTypeAnnotation', PyJsHoisted_UnionTypeAnnotation_) + @Js + def PyJsHoisted_DeclareModuleExports_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', Js(u'declare')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'module')) + var.get(u"this").callprop(u'token', Js(u'.')) + var.get(u"this").callprop(u'word', Js(u'exports')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'typeAnnotation'), var.get(u'node')) + PyJsHoisted_DeclareModuleExports_.func_name = u'DeclareModuleExports' + var.put(u'DeclareModuleExports', PyJsHoisted_DeclareModuleExports_) + @Js + def PyJsHoisted_TypeCastExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'(')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'expression'), var.get(u'node')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'typeAnnotation'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u')')) + PyJsHoisted_TypeCastExpression_.func_name = u'TypeCastExpression' + var.put(u'TypeCastExpression', PyJsHoisted_TypeCastExpression_) + @Js + def PyJsHoisted_BooleanLiteralTypeAnnotation_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', (Js(u'true') if var.get(u'node').get(u'value') else Js(u'false'))) + PyJsHoisted_BooleanLiteralTypeAnnotation_.func_name = u'BooleanLiteralTypeAnnotation' + var.put(u'BooleanLiteralTypeAnnotation', PyJsHoisted_BooleanLiteralTypeAnnotation_) + @Js + def PyJsHoisted_VoidTypeAnnotation_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'word', Js(u'void')) + PyJsHoisted_VoidTypeAnnotation_.func_name = u'VoidTypeAnnotation' + var.put(u'VoidTypeAnnotation', PyJsHoisted_VoidTypeAnnotation_) + @Js + def PyJsHoisted_ObjectTypeProperty_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u'node').get(u'static'): + var.get(u"this").callprop(u'word', Js(u'static')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'_variance', var.get(u'node')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'key'), var.get(u'node')) + if var.get(u'node').get(u'optional'): + var.get(u"this").callprop(u'token', Js(u'?')) + var.get(u"this").callprop(u'token', Js(u':')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'value'), var.get(u'node')) + PyJsHoisted_ObjectTypeProperty_.func_name = u'ObjectTypeProperty' + var.put(u'ObjectTypeProperty', PyJsHoisted_ObjectTypeProperty_) + @Js + def PyJsHoisted_IntersectionTypeAnnotation_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + PyJs_Object_465_ = Js({u'separator':var.get(u'andSeparator')}) + var.get(u"this").callprop(u'printJoin', var.get(u'node').get(u'types'), var.get(u'node'), PyJs_Object_465_) + PyJsHoisted_IntersectionTypeAnnotation_.func_name = u'IntersectionTypeAnnotation' + var.put(u'IntersectionTypeAnnotation', PyJsHoisted_IntersectionTypeAnnotation_) + @Js + def PyJsHoisted_ObjectTypeCallProperty_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u'node').get(u'static'): + var.get(u"this").callprop(u'word', Js(u'static')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'value'), var.get(u'node')) + PyJsHoisted_ObjectTypeCallProperty_.func_name = u'ObjectTypeCallProperty' + var.put(u'ObjectTypeCallProperty', PyJsHoisted_ObjectTypeCallProperty_) + @Js + def PyJsHoisted_TupleTypeAnnotation_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'[')) + var.get(u"this").callprop(u'printList', var.get(u'node').get(u'types'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u']')) + PyJsHoisted_TupleTypeAnnotation_.func_name = u'TupleTypeAnnotation' + var.put(u'TupleTypeAnnotation', PyJsHoisted_TupleTypeAnnotation_) + @Js + def PyJsHoisted_TypeAnnotation_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u':')) + var.get(u"this").callprop(u'space') + if var.get(u'node').get(u'optional'): + var.get(u"this").callprop(u'token', Js(u'?')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'typeAnnotation'), var.get(u'node')) + PyJsHoisted_TypeAnnotation_.func_name = u'TypeAnnotation' + var.put(u'TypeAnnotation', PyJsHoisted_TypeAnnotation_) + @Js + def PyJsHoisted__variance_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if PyJsStrictEq(var.get(u'node').get(u'variance'),Js(u'plus')): + var.get(u"this").callprop(u'token', Js(u'+')) + else: + if PyJsStrictEq(var.get(u'node').get(u'variance'),Js(u'minus')): + var.get(u"this").callprop(u'token', Js(u'-')) + PyJsHoisted__variance_.func_name = u'_variance' + var.put(u'_variance', PyJsHoisted__variance_) + @Js + def PyJsHoisted_FunctionTypeAnnotation_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'typeParameters'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u'(')) + var.get(u"this").callprop(u'printList', var.get(u'node').get(u'params'), var.get(u'node')) + if var.get(u'node').get(u'rest'): + if var.get(u'node').get(u'params').get(u'length'): + var.get(u"this").callprop(u'token', Js(u',')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'...')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'rest'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u')')) + if (PyJsStrictEq(var.get(u'parent').get(u'type'),Js(u'ObjectTypeCallProperty')) or PyJsStrictEq(var.get(u'parent').get(u'type'),Js(u'DeclareFunction'))): + var.get(u"this").callprop(u'token', Js(u':')) + else: + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'=>')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'returnType'), var.get(u'node')) + PyJsHoisted_FunctionTypeAnnotation_.func_name = u'FunctionTypeAnnotation' + var.put(u'FunctionTypeAnnotation', PyJsHoisted_FunctionTypeAnnotation_) + @Js + def PyJsHoisted_DeclareModule_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', Js(u'declare')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'module')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'id'), var.get(u'node')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'body'), var.get(u'node')) + PyJsHoisted_DeclareModule_.func_name = u'DeclareModule' + var.put(u'DeclareModule', PyJsHoisted_DeclareModule_) + @Js + def PyJsHoisted_NullableTypeAnnotation_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'?')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'typeAnnotation'), var.get(u'node')) + PyJsHoisted_NullableTypeAnnotation_.func_name = u'NullableTypeAnnotation' + var.put(u'NullableTypeAnnotation', PyJsHoisted_NullableTypeAnnotation_) + @Js + def PyJsHoisted_andSeparator_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'&')) + var.get(u"this").callprop(u'space') + PyJsHoisted_andSeparator_.func_name = u'andSeparator' + var.put(u'andSeparator', PyJsHoisted_andSeparator_) + @Js + def PyJsHoisted_BooleanTypeAnnotation_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'word', Js(u'boolean')) + PyJsHoisted_BooleanTypeAnnotation_.func_name = u'BooleanTypeAnnotation' + var.put(u'BooleanTypeAnnotation', PyJsHoisted_BooleanTypeAnnotation_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'AnyTypeAnnotation', var.get(u'AnyTypeAnnotation')) + var.get(u'exports').put(u'ArrayTypeAnnotation', var.get(u'ArrayTypeAnnotation')) + var.get(u'exports').put(u'BooleanTypeAnnotation', var.get(u'BooleanTypeAnnotation')) + var.get(u'exports').put(u'BooleanLiteralTypeAnnotation', var.get(u'BooleanLiteralTypeAnnotation')) + var.get(u'exports').put(u'NullLiteralTypeAnnotation', var.get(u'NullLiteralTypeAnnotation')) + var.get(u'exports').put(u'DeclareClass', var.get(u'DeclareClass')) + var.get(u'exports').put(u'DeclareFunction', var.get(u'DeclareFunction')) + var.get(u'exports').put(u'DeclareInterface', var.get(u'DeclareInterface')) + var.get(u'exports').put(u'DeclareModule', var.get(u'DeclareModule')) + var.get(u'exports').put(u'DeclareModuleExports', var.get(u'DeclareModuleExports')) + var.get(u'exports').put(u'DeclareTypeAlias', var.get(u'DeclareTypeAlias')) + var.get(u'exports').put(u'DeclareVariable', var.get(u'DeclareVariable')) + var.get(u'exports').put(u'ExistentialTypeParam', var.get(u'ExistentialTypeParam')) + var.get(u'exports').put(u'FunctionTypeAnnotation', var.get(u'FunctionTypeAnnotation')) + var.get(u'exports').put(u'FunctionTypeParam', var.get(u'FunctionTypeParam')) + var.get(u'exports').put(u'InterfaceExtends', var.get(u'InterfaceExtends')) + var.get(u'exports').put(u'_interfaceish', var.get(u'_interfaceish')) + var.get(u'exports').put(u'_variance', var.get(u'_variance')) + var.get(u'exports').put(u'InterfaceDeclaration', var.get(u'InterfaceDeclaration')) + var.get(u'exports').put(u'IntersectionTypeAnnotation', var.get(u'IntersectionTypeAnnotation')) + var.get(u'exports').put(u'MixedTypeAnnotation', var.get(u'MixedTypeAnnotation')) + var.get(u'exports').put(u'EmptyTypeAnnotation', var.get(u'EmptyTypeAnnotation')) + var.get(u'exports').put(u'NullableTypeAnnotation', var.get(u'NullableTypeAnnotation')) + var.put(u'_types', var.get(u'require')(Js(u'./types'))) + @Js + def PyJs_get_462_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_462_}, var) + var.registers([]) + return var.get(u'_types').get(u'NumericLiteral') + PyJs_get_462_._set_name(u'get') + PyJs_Object_461_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_462_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'NumericLiteralTypeAnnotation'), PyJs_Object_461_) + @Js + def PyJs_get_464_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_464_}, var) + var.registers([]) + return var.get(u'_types').get(u'StringLiteral') + PyJs_get_464_._set_name(u'get') + PyJs_Object_463_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_464_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'StringLiteralTypeAnnotation'), PyJs_Object_463_) + var.get(u'exports').put(u'NumberTypeAnnotation', var.get(u'NumberTypeAnnotation')) + var.get(u'exports').put(u'StringTypeAnnotation', var.get(u'StringTypeAnnotation')) + var.get(u'exports').put(u'ThisTypeAnnotation', var.get(u'ThisTypeAnnotation')) + var.get(u'exports').put(u'TupleTypeAnnotation', var.get(u'TupleTypeAnnotation')) + var.get(u'exports').put(u'TypeofTypeAnnotation', var.get(u'TypeofTypeAnnotation')) + var.get(u'exports').put(u'TypeAlias', var.get(u'TypeAlias')) + var.get(u'exports').put(u'TypeAnnotation', var.get(u'TypeAnnotation')) + var.get(u'exports').put(u'TypeParameter', var.get(u'TypeParameter')) + var.get(u'exports').put(u'TypeParameterInstantiation', var.get(u'TypeParameterInstantiation')) + var.get(u'exports').put(u'ObjectTypeAnnotation', var.get(u'ObjectTypeAnnotation')) + var.get(u'exports').put(u'ObjectTypeCallProperty', var.get(u'ObjectTypeCallProperty')) + var.get(u'exports').put(u'ObjectTypeIndexer', var.get(u'ObjectTypeIndexer')) + var.get(u'exports').put(u'ObjectTypeProperty', var.get(u'ObjectTypeProperty')) + var.get(u'exports').put(u'QualifiedTypeIdentifier', var.get(u'QualifiedTypeIdentifier')) + var.get(u'exports').put(u'UnionTypeAnnotation', var.get(u'UnionTypeAnnotation')) + var.get(u'exports').put(u'TypeCastExpression', var.get(u'TypeCastExpression')) + var.get(u'exports').put(u'VoidTypeAnnotation', var.get(u'VoidTypeAnnotation')) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + var.get(u'exports').put(u'ClassImplements', var.get(u'InterfaceExtends')) + var.get(u'exports').put(u'GenericTypeAnnotation', var.get(u'InterfaceExtends')) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + var.get(u'exports').put(u'TypeParameterDeclaration', var.get(u'TypeParameterInstantiation')) + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_460_._set_name(u'anonymous') +PyJs_Object_470_ = Js({u'./types':Js(39.0)}) +@Js +def PyJs_anonymous_471_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'JSXSpreadAttribute', u'exports', u'JSXOpeningElement', u'JSXMemberExpression', u'JSXClosingElement', u'module', u'JSXElement', u'JSXAttribute', u'JSXNamespacedName', u'JSXText', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'JSXExpressionContainer', u'spaceSeparator', u'JSXEmptyExpression', u'JSXIdentifier']) + @Js + def PyJsHoisted_JSXSpreadAttribute_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'{')) + var.get(u"this").callprop(u'token', Js(u'...')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'argument'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u'}')) + PyJsHoisted_JSXSpreadAttribute_.func_name = u'JSXSpreadAttribute' + var.put(u'JSXSpreadAttribute', PyJsHoisted_JSXSpreadAttribute_) + @Js + def PyJsHoisted_JSXOpeningElement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'<')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'name'), var.get(u'node')) + if (var.get(u'node').get(u'attributes').get(u'length')>Js(0.0)): + var.get(u"this").callprop(u'space') + PyJs_Object_473_ = Js({u'separator':var.get(u'spaceSeparator')}) + var.get(u"this").callprop(u'printJoin', var.get(u'node').get(u'attributes'), var.get(u'node'), PyJs_Object_473_) + if var.get(u'node').get(u'selfClosing'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'/>')) + else: + var.get(u"this").callprop(u'token', Js(u'>')) + PyJsHoisted_JSXOpeningElement_.func_name = u'JSXOpeningElement' + var.put(u'JSXOpeningElement', PyJsHoisted_JSXOpeningElement_) + @Js + def PyJsHoisted_JSXMemberExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'object'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u'.')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'property'), var.get(u'node')) + PyJsHoisted_JSXMemberExpression_.func_name = u'JSXMemberExpression' + var.put(u'JSXMemberExpression', PyJsHoisted_JSXMemberExpression_) + @Js + def PyJsHoisted_JSXClosingElement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'')) + PyJsHoisted_JSXClosingElement_.func_name = u'JSXClosingElement' + var.put(u'JSXClosingElement', PyJsHoisted_JSXClosingElement_) + @Js + def PyJsHoisted_JSXElement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'_i', u'child', u'_ref', u'open']) + var.put(u'open', var.get(u'node').get(u'openingElement')) + var.get(u"this").callprop(u'print', var.get(u'open'), var.get(u'node')) + if var.get(u'open').get(u'selfClosing'): + return var.get('undefined') + var.get(u"this").callprop(u'indent') + #for JS loop + var.put(u'_iterator', var.get(u'node').get(u'children')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'child', var.get(u'_ref')) + var.get(u"this").callprop(u'print', var.get(u'child'), var.get(u'node')) + + var.get(u"this").callprop(u'dedent') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'closingElement'), var.get(u'node')) + PyJsHoisted_JSXElement_.func_name = u'JSXElement' + var.put(u'JSXElement', PyJsHoisted_JSXElement_) + @Js + def PyJsHoisted_JSXAttribute_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'name'), var.get(u'node')) + if var.get(u'node').get(u'value'): + var.get(u"this").callprop(u'token', Js(u'=')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'value'), var.get(u'node')) + PyJsHoisted_JSXAttribute_.func_name = u'JSXAttribute' + var.put(u'JSXAttribute', PyJsHoisted_JSXAttribute_) + @Js + def PyJsHoisted_JSXNamespacedName_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'namespace'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u':')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'name'), var.get(u'node')) + PyJsHoisted_JSXNamespacedName_.func_name = u'JSXNamespacedName' + var.put(u'JSXNamespacedName', PyJsHoisted_JSXNamespacedName_) + @Js + def PyJsHoisted_JSXText_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', var.get(u'node').get(u'value')) + PyJsHoisted_JSXText_.func_name = u'JSXText' + var.put(u'JSXText', PyJsHoisted_JSXText_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_472_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_472_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_JSXExpressionContainer_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'{')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'expression'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u'}')) + PyJsHoisted_JSXExpressionContainer_.func_name = u'JSXExpressionContainer' + var.put(u'JSXExpressionContainer', PyJsHoisted_JSXExpressionContainer_) + @Js + def PyJsHoisted_spaceSeparator_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'space') + PyJsHoisted_spaceSeparator_.func_name = u'spaceSeparator' + var.put(u'spaceSeparator', PyJsHoisted_spaceSeparator_) + @Js + def PyJsHoisted_JSXEmptyExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + pass + PyJsHoisted_JSXEmptyExpression_.func_name = u'JSXEmptyExpression' + var.put(u'JSXEmptyExpression', PyJsHoisted_JSXEmptyExpression_) + @Js + def PyJsHoisted_JSXIdentifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', var.get(u'node').get(u'name')) + PyJsHoisted_JSXIdentifier_.func_name = u'JSXIdentifier' + var.put(u'JSXIdentifier', PyJsHoisted_JSXIdentifier_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'JSXAttribute', var.get(u'JSXAttribute')) + var.get(u'exports').put(u'JSXIdentifier', var.get(u'JSXIdentifier')) + var.get(u'exports').put(u'JSXNamespacedName', var.get(u'JSXNamespacedName')) + var.get(u'exports').put(u'JSXMemberExpression', var.get(u'JSXMemberExpression')) + var.get(u'exports').put(u'JSXSpreadAttribute', var.get(u'JSXSpreadAttribute')) + var.get(u'exports').put(u'JSXExpressionContainer', var.get(u'JSXExpressionContainer')) + var.get(u'exports').put(u'JSXText', var.get(u'JSXText')) + var.get(u'exports').put(u'JSXElement', var.get(u'JSXElement')) + var.get(u'exports').put(u'JSXOpeningElement', var.get(u'JSXOpeningElement')) + var.get(u'exports').put(u'JSXClosingElement', var.get(u'JSXClosingElement')) + var.get(u'exports').put(u'JSXEmptyExpression', var.get(u'JSXEmptyExpression')) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_471_._set_name(u'anonymous') +PyJs_Object_474_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0)}) +@Js +def PyJs_anonymous_475_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'ArrowFunctionExpression', u'_interopRequireWildcard', u'require', u'_babelTypes', u'FunctionExpression', u'module', u't', u'hasTypes', u'_params', u'_method']) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_476_ = Js({}) + var.put(u'newObj', PyJs_Object_476_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_ArrowFunctionExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'firstParam']) + if var.get(u'node').get(u'async'): + var.get(u"this").callprop(u'word', Js(u'async')) + var.get(u"this").callprop(u'space') + var.put(u'firstParam', var.get(u'node').get(u'params').get(u'0')) + if ((PyJsStrictEq(var.get(u'node').get(u'params').get(u'length'),Js(1.0)) and var.get(u't').callprop(u'isIdentifier', var.get(u'firstParam'))) and var.get(u'hasTypes')(var.get(u'node'), var.get(u'firstParam')).neg()): + var.get(u"this").callprop(u'print', var.get(u'firstParam'), var.get(u'node')) + else: + var.get(u"this").callprop(u'_params', var.get(u'node')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'=>')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'body'), var.get(u'node')) + PyJsHoisted_ArrowFunctionExpression_.func_name = u'ArrowFunctionExpression' + var.put(u'ArrowFunctionExpression', PyJsHoisted_ArrowFunctionExpression_) + @Js + def PyJsHoisted_FunctionExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u'node').get(u'async'): + var.get(u"this").callprop(u'word', Js(u'async')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'function')) + if var.get(u'node').get(u'generator'): + var.get(u"this").callprop(u'token', Js(u'*')) + if var.get(u'node').get(u'id'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'id'), var.get(u'node')) + else: + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'_params', var.get(u'node')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'body'), var.get(u'node')) + PyJsHoisted_FunctionExpression_.func_name = u'FunctionExpression' + var.put(u'FunctionExpression', PyJsHoisted_FunctionExpression_) + @Js + def PyJsHoisted_hasTypes_(node, param, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'param':param}, var) + var.registers([u'node', u'param']) + return ((((var.get(u'node').get(u'typeParameters') or var.get(u'node').get(u'returnType')) or var.get(u'param').get(u'typeAnnotation')) or var.get(u'param').get(u'optional')) or var.get(u'param').get(u'trailingComments')) + PyJsHoisted_hasTypes_.func_name = u'hasTypes' + var.put(u'hasTypes', PyJsHoisted_hasTypes_) + @Js + def PyJsHoisted__params_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'_this']) + var.put(u'_this', var.get(u"this")) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'typeParameters'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u'(')) + @Js + def PyJs_iterator_478_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'iterator':PyJs_iterator_478_}, var) + var.registers([u'node']) + if var.get(u'node').get(u'optional'): + var.get(u'_this').callprop(u'token', Js(u'?')) + var.get(u'_this').callprop(u'print', var.get(u'node').get(u'typeAnnotation'), var.get(u'node')) + PyJs_iterator_478_._set_name(u'iterator') + PyJs_Object_477_ = Js({u'iterator':PyJs_iterator_478_}) + var.get(u"this").callprop(u'printList', var.get(u'node').get(u'params'), var.get(u'node'), PyJs_Object_477_) + var.get(u"this").callprop(u'token', Js(u')')) + if var.get(u'node').get(u'returnType'): + var.get(u"this").callprop(u'print', var.get(u'node').get(u'returnType'), var.get(u'node')) + PyJsHoisted__params_.func_name = u'_params' + var.put(u'_params', PyJsHoisted__params_) + @Js + def PyJsHoisted__method_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'kind', u'key']) + var.put(u'kind', var.get(u'node').get(u'kind')) + var.put(u'key', var.get(u'node').get(u'key')) + if (PyJsStrictEq(var.get(u'kind'),Js(u'method')) or PyJsStrictEq(var.get(u'kind'),Js(u'init'))): + if var.get(u'node').get(u'generator'): + var.get(u"this").callprop(u'token', Js(u'*')) + if (PyJsStrictEq(var.get(u'kind'),Js(u'get')) or PyJsStrictEq(var.get(u'kind'),Js(u'set'))): + var.get(u"this").callprop(u'word', var.get(u'kind')) + var.get(u"this").callprop(u'space') + if var.get(u'node').get(u'async'): + var.get(u"this").callprop(u'word', Js(u'async')) + var.get(u"this").callprop(u'space') + if var.get(u'node').get(u'computed'): + var.get(u"this").callprop(u'token', Js(u'[')) + var.get(u"this").callprop(u'print', var.get(u'key'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u']')) + else: + var.get(u"this").callprop(u'print', var.get(u'key'), var.get(u'node')) + var.get(u"this").callprop(u'_params', var.get(u'node')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'body'), var.get(u'node')) + PyJsHoisted__method_.func_name = u'_method' + var.put(u'_method', PyJsHoisted__method_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'FunctionDeclaration', var.get(u'undefined')) + var.get(u'exports').put(u'_params', var.get(u'_params')) + var.get(u'exports').put(u'_method', var.get(u'_method')) + var.get(u'exports').put(u'FunctionExpression', var.get(u'FunctionExpression')) + var.get(u'exports').put(u'ArrowFunctionExpression', var.get(u'ArrowFunctionExpression')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + var.get(u'exports').put(u'FunctionDeclaration', var.get(u'FunctionExpression')) + pass + pass +PyJs_anonymous_475_._set_name(u'anonymous') +PyJs_Object_479_ = Js({u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_480_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'ExportDeclaration', u'ExportNamespaceSpecifier', u'_interopRequireWildcard', u'ExportDefaultDeclaration', u'ImportDeclaration', u'ExportSpecifier', u'ImportSpecifier', u'_babelTypes', u'require', u'module', u'ImportDefaultSpecifier', u'ExportNamedDeclaration', u't', u'ImportNamespaceSpecifier', u'ExportDefaultSpecifier', u'ExportAllDeclaration']) + @Js + def PyJsHoisted_ExportNamespaceSpecifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'*')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'as')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'exported'), var.get(u'node')) + PyJsHoisted_ExportNamespaceSpecifier_.func_name = u'ExportNamespaceSpecifier' + var.put(u'ExportNamespaceSpecifier', PyJsHoisted_ExportNamespaceSpecifier_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_481_ = Js({}) + var.put(u'newObj', PyJs_Object_481_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_ExportDefaultDeclaration_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'word', Js(u'export')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'default')) + var.get(u"this").callprop(u'space') + var.get(u'ExportDeclaration').callprop(u'apply', var.get(u"this"), var.get(u'arguments')) + PyJsHoisted_ExportDefaultDeclaration_.func_name = u'ExportDefaultDeclaration' + var.put(u'ExportDefaultDeclaration', PyJsHoisted_ExportDefaultDeclaration_) + @Js + def PyJsHoisted_ImportDeclaration_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'specifiers', u'first']) + var.get(u"this").callprop(u'word', Js(u'import')) + var.get(u"this").callprop(u'space') + if (PyJsStrictEq(var.get(u'node').get(u'importKind'),Js(u'type')) or PyJsStrictEq(var.get(u'node').get(u'importKind'),Js(u'typeof'))): + var.get(u"this").callprop(u'word', var.get(u'node').get(u'importKind')) + var.get(u"this").callprop(u'space') + var.put(u'specifiers', var.get(u'node').get(u'specifiers').callprop(u'slice', Js(0.0))) + if (var.get(u'specifiers') and var.get(u'specifiers').get(u'length')): + while var.get(u'true'): + var.put(u'first', var.get(u'specifiers').get(u'0')) + if (var.get(u't').callprop(u'isImportDefaultSpecifier', var.get(u'first')) or var.get(u't').callprop(u'isImportNamespaceSpecifier', var.get(u'first'))): + var.get(u"this").callprop(u'print', var.get(u'specifiers').callprop(u'shift'), var.get(u'node')) + if var.get(u'specifiers').get(u'length'): + var.get(u"this").callprop(u'token', Js(u',')) + var.get(u"this").callprop(u'space') + else: + break + if var.get(u'specifiers').get(u'length'): + var.get(u"this").callprop(u'token', Js(u'{')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'printList', var.get(u'specifiers'), var.get(u'node')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'}')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'from')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'source'), var.get(u'node')) + var.get(u"this").callprop(u'semicolon') + PyJsHoisted_ImportDeclaration_.func_name = u'ImportDeclaration' + var.put(u'ImportDeclaration', PyJsHoisted_ImportDeclaration_) + @Js + def PyJsHoisted_ExportSpecifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'local'), var.get(u'node')) + if (var.get(u'node').get(u'exported') and PyJsStrictNeq(var.get(u'node').get(u'local').get(u'name'),var.get(u'node').get(u'exported').get(u'name'))): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'as')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'exported'), var.get(u'node')) + PyJsHoisted_ExportSpecifier_.func_name = u'ExportSpecifier' + var.put(u'ExportSpecifier', PyJsHoisted_ExportSpecifier_) + @Js + def PyJsHoisted_ImportSpecifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'imported'), var.get(u'node')) + if (var.get(u'node').get(u'local') and PyJsStrictNeq(var.get(u'node').get(u'local').get(u'name'),var.get(u'node').get(u'imported').get(u'name'))): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'as')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'local'), var.get(u'node')) + PyJsHoisted_ImportSpecifier_.func_name = u'ImportSpecifier' + var.put(u'ImportSpecifier', PyJsHoisted_ImportSpecifier_) + @Js + def PyJsHoisted_ExportDeclaration_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'specifiers', u'declar', u'first', u'hasSpecial']) + if var.get(u'node').get(u'declaration'): + var.put(u'declar', var.get(u'node').get(u'declaration')) + var.get(u"this").callprop(u'print', var.get(u'declar'), var.get(u'node')) + if var.get(u't').callprop(u'isStatement', var.get(u'declar')).neg(): + var.get(u"this").callprop(u'semicolon') + else: + if PyJsStrictEq(var.get(u'node').get(u'exportKind'),Js(u'type')): + var.get(u"this").callprop(u'word', Js(u'type')) + var.get(u"this").callprop(u'space') + var.put(u'specifiers', var.get(u'node').get(u'specifiers').callprop(u'slice', Js(0.0))) + var.put(u'hasSpecial', Js(False)) + while var.get(u'true'): + var.put(u'first', var.get(u'specifiers').get(u'0')) + if (var.get(u't').callprop(u'isExportDefaultSpecifier', var.get(u'first')) or var.get(u't').callprop(u'isExportNamespaceSpecifier', var.get(u'first'))): + var.put(u'hasSpecial', var.get(u'true')) + var.get(u"this").callprop(u'print', var.get(u'specifiers').callprop(u'shift'), var.get(u'node')) + if var.get(u'specifiers').get(u'length'): + var.get(u"this").callprop(u'token', Js(u',')) + var.get(u"this").callprop(u'space') + else: + break + if (var.get(u'specifiers').get(u'length') or (var.get(u'specifiers').get(u'length').neg() and var.get(u'hasSpecial').neg())): + var.get(u"this").callprop(u'token', Js(u'{')) + if var.get(u'specifiers').get(u'length'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'printList', var.get(u'specifiers'), var.get(u'node')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'}')) + if var.get(u'node').get(u'source'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'from')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'source'), var.get(u'node')) + var.get(u"this").callprop(u'semicolon') + PyJsHoisted_ExportDeclaration_.func_name = u'ExportDeclaration' + var.put(u'ExportDeclaration', PyJsHoisted_ExportDeclaration_) + @Js + def PyJsHoisted_ImportDefaultSpecifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'local'), var.get(u'node')) + PyJsHoisted_ImportDefaultSpecifier_.func_name = u'ImportDefaultSpecifier' + var.put(u'ImportDefaultSpecifier', PyJsHoisted_ImportDefaultSpecifier_) + @Js + def PyJsHoisted_ExportNamedDeclaration_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'word', Js(u'export')) + var.get(u"this").callprop(u'space') + var.get(u'ExportDeclaration').callprop(u'apply', var.get(u"this"), var.get(u'arguments')) + PyJsHoisted_ExportNamedDeclaration_.func_name = u'ExportNamedDeclaration' + var.put(u'ExportNamedDeclaration', PyJsHoisted_ExportNamedDeclaration_) + @Js + def PyJsHoisted_ExportAllDeclaration_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', Js(u'export')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'*')) + if var.get(u'node').get(u'exported'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'as')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'exported'), var.get(u'node')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'from')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'source'), var.get(u'node')) + var.get(u"this").callprop(u'semicolon') + PyJsHoisted_ExportAllDeclaration_.func_name = u'ExportAllDeclaration' + var.put(u'ExportAllDeclaration', PyJsHoisted_ExportAllDeclaration_) + @Js + def PyJsHoisted_ImportNamespaceSpecifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'token', Js(u'*')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'as')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'local'), var.get(u'node')) + PyJsHoisted_ImportNamespaceSpecifier_.func_name = u'ImportNamespaceSpecifier' + var.put(u'ImportNamespaceSpecifier', PyJsHoisted_ImportNamespaceSpecifier_) + @Js + def PyJsHoisted_ExportDefaultSpecifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'exported'), var.get(u'node')) + PyJsHoisted_ExportDefaultSpecifier_.func_name = u'ExportDefaultSpecifier' + var.put(u'ExportDefaultSpecifier', PyJsHoisted_ExportDefaultSpecifier_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'ImportSpecifier', var.get(u'ImportSpecifier')) + var.get(u'exports').put(u'ImportDefaultSpecifier', var.get(u'ImportDefaultSpecifier')) + var.get(u'exports').put(u'ExportDefaultSpecifier', var.get(u'ExportDefaultSpecifier')) + var.get(u'exports').put(u'ExportSpecifier', var.get(u'ExportSpecifier')) + var.get(u'exports').put(u'ExportNamespaceSpecifier', var.get(u'ExportNamespaceSpecifier')) + var.get(u'exports').put(u'ExportAllDeclaration', var.get(u'ExportAllDeclaration')) + var.get(u'exports').put(u'ExportNamedDeclaration', var.get(u'ExportNamedDeclaration')) + var.get(u'exports').put(u'ExportDefaultDeclaration', var.get(u'ExportDefaultDeclaration')) + var.get(u'exports').put(u'ImportDeclaration', var.get(u'ImportDeclaration')) + var.get(u'exports').put(u'ImportNamespaceSpecifier', var.get(u'ImportNamespaceSpecifier')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_480_._set_name(u'anonymous') +PyJs_Object_482_ = Js({u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_483_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'ForOfStatement', u'LabeledStatement', u'ForAwaitStatement', u'module', u'DebuggerStatement', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'VariableDeclaration', u'ForStatement', u'getLastStatement', u'ContinueStatement', u'DoWhileStatement', u'SwitchStatement', u'CatchClause', u'buildLabelStatement', u'BreakStatement', u'buildForXStatement', u'exports', u'_interopRequireWildcard', u'_babelTypes', u'TryStatement', u'ForInStatement', u'SwitchCase', u'constDeclarationIdent', u'ThrowStatement', u'WithStatement', u'WhileStatement', u'variableDeclarationIdent', u't', u'ReturnStatement', u'VariableDeclarator', u'require', u'IfStatement']) + @Js + def PyJsHoisted_ForStatement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', Js(u'for')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'(')) + (var.get(u"this").put(u'inForStatementInitCounter',Js(var.get(u"this").get(u'inForStatementInitCounter').to_number())+Js(1))-Js(1)) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'init'), var.get(u'node')) + (var.get(u"this").put(u'inForStatementInitCounter',Js(var.get(u"this").get(u'inForStatementInitCounter').to_number())-Js(1))+Js(1)) + var.get(u"this").callprop(u'token', Js(u';')) + if var.get(u'node').get(u'test'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'test'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u';')) + if var.get(u'node').get(u'update'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'update'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u')')) + var.get(u"this").callprop(u'printBlock', var.get(u'node')) + PyJsHoisted_ForStatement_.func_name = u'ForStatement' + var.put(u'ForStatement', PyJsHoisted_ForStatement_) + @Js + def PyJsHoisted_constDeclarationIdent_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i']) + var.get(u"this").callprop(u'token', Js(u',')) + var.get(u"this").callprop(u'newline') + if var.get(u"this").callprop(u'endsWith', Js(u'\n')): + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else Js(u'label'))) + @Js + def PyJs_anonymous_488_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'terminatorState', u'label']) + var.get(u"this").callprop(u'word', var.get(u'prefix')) + var.put(u'label', var.get(u'node').get(var.get(u'key'))) + if var.get(u'label'): + var.get(u"this").callprop(u'space') + var.put(u'terminatorState', var.get(u"this").callprop(u'startTerminatorless')) + var.get(u"this").callprop(u'print', var.get(u'label'), var.get(u'node')) + var.get(u"this").callprop(u'endTerminatorless', var.get(u'terminatorState')) + var.get(u"this").callprop(u'semicolon') + PyJs_anonymous_488_._set_name(u'anonymous') + return PyJs_anonymous_488_ + PyJsHoisted_buildLabelStatement_.func_name = u'buildLabelStatement' + var.put(u'buildLabelStatement', PyJsHoisted_buildLabelStatement_) + @Js + def PyJsHoisted_TryStatement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', Js(u'try')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'block'), var.get(u'node')) + var.get(u"this").callprop(u'space') + if var.get(u'node').get(u'handlers'): + var.get(u"this").callprop(u'print', var.get(u'node').get(u'handlers').get(u'0'), var.get(u'node')) + else: + var.get(u"this").callprop(u'print', var.get(u'node').get(u'handler'), var.get(u'node')) + if var.get(u'node').get(u'finalizer'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'finally')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'finalizer'), var.get(u'node')) + PyJsHoisted_TryStatement_.func_name = u'TryStatement' + var.put(u'TryStatement', PyJsHoisted_TryStatement_) + @Js + def PyJsHoisted_DebuggerStatement_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'word', Js(u'debugger')) + var.get(u"this").callprop(u'semicolon') + PyJsHoisted_DebuggerStatement_.func_name = u'DebuggerStatement' + var.put(u'DebuggerStatement', PyJsHoisted_DebuggerStatement_) + @Js + def PyJsHoisted_SwitchStatement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', Js(u'switch')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'(')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'discriminant'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u')')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'{')) + @Js + def PyJs_addNewlines_490_(leading, cas, this, arguments, var=var): + var = Scope({u'cas':cas, u'leading':leading, u'this':this, u'arguments':arguments, u'addNewlines':PyJs_addNewlines_490_}, var) + var.registers([u'cas', u'leading']) + if (var.get(u'leading').neg() and PyJsStrictEq(var.get(u'node').get(u'cases').get((var.get(u'node').get(u'cases').get(u'length')-Js(1.0))),var.get(u'cas'))): + return (-Js(1.0)) + PyJs_addNewlines_490_._set_name(u'addNewlines') + PyJs_Object_489_ = Js({u'indent':var.get(u'true'),u'addNewlines':PyJs_addNewlines_490_}) + var.get(u"this").callprop(u'printSequence', var.get(u'node').get(u'cases'), var.get(u'node'), PyJs_Object_489_) + var.get(u"this").callprop(u'token', Js(u'}')) + PyJsHoisted_SwitchStatement_.func_name = u'SwitchStatement' + var.put(u'SwitchStatement', PyJsHoisted_SwitchStatement_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_485_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_485_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_variableDeclarationIdent_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i']) + var.get(u"this").callprop(u'token', Js(u',')) + var.get(u"this").callprop(u'newline') + if var.get(u"this").callprop(u'endsWith', Js(u'\n')): + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'declar', var.get(u'_ref')) + if var.get(u'declar').get(u'init'): + var.put(u'hasInits', var.get(u'true')) + + var.put(u'separator', PyJsComma(Js(0.0), Js(None))) + if var.get(u'hasInits'): + var.put(u'separator', (var.get(u'constDeclarationIdent') if PyJsStrictEq(var.get(u'node').get(u'kind'),Js(u'const')) else var.get(u'variableDeclarationIdent'))) + PyJs_Object_492_ = Js({u'separator':var.get(u'separator')}) + var.get(u"this").callprop(u'printList', var.get(u'node').get(u'declarations'), var.get(u'node'), PyJs_Object_492_) + if var.get(u't').callprop(u'isFor', var.get(u'parent')): + if (PyJsStrictEq(var.get(u'parent').get(u'left'),var.get(u'node')) or PyJsStrictEq(var.get(u'parent').get(u'init'),var.get(u'node'))): + return var.get('undefined') + var.get(u"this").callprop(u'semicolon') + PyJsHoisted_VariableDeclaration_.func_name = u'VariableDeclaration' + var.put(u'VariableDeclaration', PyJsHoisted_VariableDeclaration_) + @Js + def PyJsHoisted_SwitchCase_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u'node').get(u'test'): + var.get(u"this").callprop(u'word', Js(u'case')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'test'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u':')) + else: + var.get(u"this").callprop(u'word', Js(u'default')) + var.get(u"this").callprop(u'token', Js(u':')) + if var.get(u'node').get(u'consequent').get(u'length'): + var.get(u"this").callprop(u'newline') + PyJs_Object_491_ = Js({u'indent':var.get(u'true')}) + var.get(u"this").callprop(u'printSequence', var.get(u'node').get(u'consequent'), var.get(u'node'), PyJs_Object_491_) + PyJsHoisted_SwitchCase_.func_name = u'SwitchCase' + var.put(u'SwitchCase', PyJsHoisted_SwitchCase_) + @Js + def PyJsHoisted_VariableDeclarator_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'id'), var.get(u'node')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'id').get(u'typeAnnotation'), var.get(u'node')) + if var.get(u'node').get(u'init'): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'=')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'init'), var.get(u'node')) + PyJsHoisted_VariableDeclarator_.func_name = u'VariableDeclarator' + var.put(u'VariableDeclarator', PyJsHoisted_VariableDeclarator_) + @Js + def PyJsHoisted_IfStatement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'needsBlock']) + var.get(u"this").callprop(u'word', Js(u'if')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'(')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'test'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u')')) + var.get(u"this").callprop(u'space') + var.put(u'needsBlock', (var.get(u'node').get(u'alternate') and var.get(u't').callprop(u'isIfStatement', var.get(u'getLastStatement')(var.get(u'node').get(u'consequent'))))) + if var.get(u'needsBlock'): + var.get(u"this").callprop(u'token', Js(u'{')) + var.get(u"this").callprop(u'newline') + var.get(u"this").callprop(u'indent') + var.get(u"this").callprop(u'printAndIndentOnComments', var.get(u'node').get(u'consequent'), var.get(u'node')) + if var.get(u'needsBlock'): + var.get(u"this").callprop(u'dedent') + var.get(u"this").callprop(u'newline') + var.get(u"this").callprop(u'token', Js(u'}')) + if var.get(u'node').get(u'alternate'): + if var.get(u"this").callprop(u'endsWith', Js(u'}')): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', Js(u'else')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'printAndIndentOnComments', var.get(u'node').get(u'alternate'), var.get(u'node')) + PyJsHoisted_IfStatement_.func_name = u'IfStatement' + var.put(u'IfStatement', PyJsHoisted_IfStatement_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'ThrowStatement', var.get(u'exports').put(u'BreakStatement', var.get(u'exports').put(u'ReturnStatement', var.get(u'exports').put(u'ContinueStatement', var.get(u'exports').put(u'ForAwaitStatement', var.get(u'exports').put(u'ForOfStatement', var.get(u'exports').put(u'ForInStatement', var.get(u'undefined')))))))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'WithStatement', var.get(u'WithStatement')) + var.get(u'exports').put(u'IfStatement', var.get(u'IfStatement')) + var.get(u'exports').put(u'ForStatement', var.get(u'ForStatement')) + var.get(u'exports').put(u'WhileStatement', var.get(u'WhileStatement')) + var.get(u'exports').put(u'DoWhileStatement', var.get(u'DoWhileStatement')) + var.get(u'exports').put(u'LabeledStatement', var.get(u'LabeledStatement')) + var.get(u'exports').put(u'TryStatement', var.get(u'TryStatement')) + var.get(u'exports').put(u'CatchClause', var.get(u'CatchClause')) + var.get(u'exports').put(u'SwitchStatement', var.get(u'SwitchStatement')) + var.get(u'exports').put(u'SwitchCase', var.get(u'SwitchCase')) + var.get(u'exports').put(u'DebuggerStatement', var.get(u'DebuggerStatement')) + var.get(u'exports').put(u'VariableDeclaration', var.get(u'VariableDeclaration')) + var.get(u'exports').put(u'VariableDeclarator', var.get(u'VariableDeclarator')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + pass + pass + pass + @Js + def PyJs_buildForXStatement_486_(op, this, arguments, var=var): + var = Scope({u'this':this, u'buildForXStatement':PyJs_buildForXStatement_486_, u'arguments':arguments, u'op':op}, var) + var.registers([u'op']) + @Js + def PyJs_anonymous_487_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', Js(u'for')) + var.get(u"this").callprop(u'space') + if PyJsStrictEq(var.get(u'op'),Js(u'await')): + var.get(u"this").callprop(u'word', Js(u'await')) + var.get(u"this").callprop(u'space') + var.put(u'op', Js(u'of')) + var.get(u"this").callprop(u'token', Js(u'(')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'left'), var.get(u'node')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'word', var.get(u'op')) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'node').get(u'right'), var.get(u'node')) + var.get(u"this").callprop(u'token', Js(u')')) + var.get(u"this").callprop(u'printBlock', var.get(u'node')) + PyJs_anonymous_487_._set_name(u'anonymous') + return PyJs_anonymous_487_ + PyJs_buildForXStatement_486_._set_name(u'buildForXStatement') + var.put(u'buildForXStatement', PyJs_buildForXStatement_486_) + var.put(u'ForInStatement', var.get(u'exports').put(u'ForInStatement', var.get(u'buildForXStatement')(Js(u'in')))) + var.put(u'ForOfStatement', var.get(u'exports').put(u'ForOfStatement', var.get(u'buildForXStatement')(Js(u'of')))) + var.put(u'ForAwaitStatement', var.get(u'exports').put(u'ForAwaitStatement', var.get(u'buildForXStatement')(Js(u'await')))) + pass + pass + var.put(u'ContinueStatement', var.get(u'exports').put(u'ContinueStatement', var.get(u'buildLabelStatement')(Js(u'continue')))) + var.put(u'ReturnStatement', var.get(u'exports').put(u'ReturnStatement', var.get(u'buildLabelStatement')(Js(u'return'), Js(u'argument')))) + var.put(u'BreakStatement', var.get(u'exports').put(u'BreakStatement', var.get(u'buildLabelStatement')(Js(u'break')))) + var.put(u'ThrowStatement', var.get(u'exports').put(u'ThrowStatement', var.get(u'buildLabelStatement')(Js(u'throw'), Js(u'argument')))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_483_._set_name(u'anonymous') +PyJs_Object_493_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_494_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'TaggedTemplateExpression', u'TemplateElement', u'TemplateLiteral']) + @Js + def PyJsHoisted_TemplateElement_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'value', u'parent', u'isFirst', u'isLast']) + var.put(u'isFirst', PyJsStrictEq(var.get(u'parent').get(u'quasis').get(u'0'),var.get(u'node'))) + var.put(u'isLast', PyJsStrictEq(var.get(u'parent').get(u'quasis').get((var.get(u'parent').get(u'quasis').get(u'length')-Js(1.0))),var.get(u'node'))) + var.put(u'value', (((Js(u'`') if var.get(u'isFirst') else Js(u'}'))+var.get(u'node').get(u'value').get(u'raw'))+(Js(u'`') if var.get(u'isLast') else Js(u'${')))) + if var.get(u'isFirst').neg(): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', var.get(u'value')) + if var.get(u'isLast').neg(): + var.get(u"this").callprop(u'space') + PyJsHoisted_TemplateElement_.func_name = u'TemplateElement' + var.put(u'TemplateElement', PyJsHoisted_TemplateElement_) + @Js + def PyJsHoisted_TaggedTemplateExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'tag'), var.get(u'node')) + var.get(u"this").callprop(u'print', var.get(u'node').get(u'quasi'), var.get(u'node')) + PyJsHoisted_TaggedTemplateExpression_.func_name = u'TaggedTemplateExpression' + var.put(u'TaggedTemplateExpression', PyJsHoisted_TaggedTemplateExpression_) + @Js + def PyJsHoisted_TemplateLiteral_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'quasis', u'i', u'node']) + var.put(u'quasis', var.get(u'node').get(u'quasis')) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(0.0)): + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'print', var.get(u'elem'), var.get(u'node')) + if (var.get(u'i')<(var.get(u'len')-Js(1.0))): + var.get(u"this").callprop(u'token', Js(u',')) + else: + var.get(u"this").callprop(u'token', Js(u',')) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + var.get(u"this").callprop(u'token', Js(u']')) + PyJsHoisted_ArrayExpression_.func_name = u'ArrayExpression' + var.put(u'ArrayExpression', PyJsHoisted_ArrayExpression_) + @Js + def PyJsHoisted_BooleanLiteral_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', (Js(u'true') if var.get(u'node').get(u'value') else Js(u'false'))) + PyJsHoisted_BooleanLiteral_.func_name = u'BooleanLiteral' + var.put(u'BooleanLiteral', PyJsHoisted_BooleanLiteral_) + @Js + def PyJsHoisted_NumericLiteral_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'raw']) + var.put(u'raw', var.get(u"this").callprop(u'getPossibleRaw', var.get(u'node'))) + var.get(u"this").callprop(u'number', ((var.get(u'node').get(u'value')+Js(u'')) if (var.get(u'raw')==var.get(u"null")) else var.get(u'raw'))) + PyJsHoisted_NumericLiteral_.func_name = u'NumericLiteral' + var.put(u'NumericLiteral', PyJsHoisted_NumericLiteral_) + @Js + def PyJsHoisted_ObjectExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'props']) + var.put(u'props', var.get(u'node').get(u'properties')) + var.get(u"this").callprop(u'token', Js(u'{')) + var.get(u"this").callprop(u'printInnerComments', var.get(u'node')) + if var.get(u'props').get(u'length'): + var.get(u"this").callprop(u'space') + PyJs_Object_499_ = Js({u'indent':var.get(u'true'),u'statement':var.get(u'true')}) + var.get(u"this").callprop(u'printList', var.get(u'props'), var.get(u'node'), PyJs_Object_499_) + var.get(u"this").callprop(u'space') + var.get(u"this").callprop(u'token', Js(u'}')) + PyJsHoisted_ObjectExpression_.func_name = u'ObjectExpression' + var.put(u'ObjectExpression', PyJsHoisted_ObjectExpression_) + @Js + def PyJsHoisted_RegExpLiteral_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'word', (((Js(u'/')+var.get(u'node').get(u'pattern'))+Js(u'/'))+var.get(u'node').get(u'flags'))) + PyJsHoisted_RegExpLiteral_.func_name = u'RegExpLiteral' + var.put(u'RegExpLiteral', PyJsHoisted_RegExpLiteral_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_497_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_497_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_Identifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u'node').get(u'variance'): + if PyJsStrictEq(var.get(u'node').get(u'variance'),Js(u'plus')): + var.get(u"this").callprop(u'token', Js(u'+')) + else: + if PyJsStrictEq(var.get(u'node').get(u'variance'),Js(u'minus')): + var.get(u"this").callprop(u'token', Js(u'-')) + var.get(u"this").callprop(u'word', var.get(u'node').get(u'name')) + PyJsHoisted_Identifier_.func_name = u'Identifier' + var.put(u'Identifier', PyJsHoisted_Identifier_) + @Js + def PyJsHoisted_NullLiteral_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'word', Js(u'null')) + PyJsHoisted_NullLiteral_.func_name = u'NullLiteral' + var.put(u'NullLiteral', PyJsHoisted_NullLiteral_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'ArrayPattern', var.get(u'exports').put(u'ObjectPattern', var.get(u'exports').put(u'RestProperty', var.get(u'exports').put(u'SpreadProperty', var.get(u'exports').put(u'SpreadElement', var.get(u'undefined')))))) + var.get(u'exports').put(u'Identifier', var.get(u'Identifier')) + var.get(u'exports').put(u'RestElement', var.get(u'RestElement')) + var.get(u'exports').put(u'ObjectExpression', var.get(u'ObjectExpression')) + var.get(u'exports').put(u'ObjectMethod', var.get(u'ObjectMethod')) + var.get(u'exports').put(u'ObjectProperty', var.get(u'ObjectProperty')) + var.get(u'exports').put(u'ArrayExpression', var.get(u'ArrayExpression')) + var.get(u'exports').put(u'RegExpLiteral', var.get(u'RegExpLiteral')) + var.get(u'exports').put(u'BooleanLiteral', var.get(u'BooleanLiteral')) + var.get(u'exports').put(u'NullLiteral', var.get(u'NullLiteral')) + var.get(u'exports').put(u'NumericLiteral', var.get(u'NumericLiteral')) + var.get(u'exports').put(u'StringLiteral', var.get(u'StringLiteral')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_jsesc', var.get(u'require')(Js(u'jsesc'))) + var.put(u'_jsesc2', var.get(u'_interopRequireDefault')(var.get(u'_jsesc'))) + pass + pass + pass + pass + var.get(u'exports').put(u'SpreadElement', var.get(u'RestElement')) + var.get(u'exports').put(u'SpreadProperty', var.get(u'RestElement')) + var.get(u'exports').put(u'RestProperty', var.get(u'RestElement')) + pass + var.get(u'exports').put(u'ObjectPattern', var.get(u'ObjectExpression')) + pass + pass + pass + var.get(u'exports').put(u'ArrayPattern', var.get(u'ArrayExpression')) + pass + pass + pass + pass + pass +PyJs_anonymous_496_._set_name(u'anonymous') +PyJs_Object_501_ = Js({u'babel-types':Js(258.0),u'jsesc':Js(283.0)}) +@Js +def PyJs_anonymous_502_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'Generator', u'_sourceMap', u'_detectIndent2', u'module', u'_interopRequireDefault', u'_printer2', u'normalizeOptions', u'findCommonStringDelimiter', u'_possibleConstructorReturn3', u'_possibleConstructorReturn2', u'_classCallCheck3', u'_classCallCheck2', u'_detectIndent', u'_babelMessages', u'exports', u'_printer', u'_interopRequireWildcard', u'_inherits3', u'_inherits2', u'require', u'CodeGenerator', u'messages', u'_sourceMap2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_505_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_505_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_findCommonStringDelimiter_(code, tokens, this, arguments, var=var): + var = Scope({u'tokens':tokens, u'this':this, u'code':code, u'arguments':arguments}, var) + var.registers([u'code', u'checked', u'i', u'tokens', u'raw', u'token', u'DEFAULT_STRING_DELIMITER', u'occurences']) + var.put(u'DEFAULT_STRING_DELIMITER', Js(u'double')) + if var.get(u'code').neg(): + return var.get(u'DEFAULT_STRING_DELIMITER') + PyJs_Object_513_ = Js({u'single':Js(0.0),u'double':Js(0.0)}) + var.put(u'occurences', PyJs_Object_513_) + var.put(u'checked', Js(0.0)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(3.0)): + break + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + if (var.get(u'occurences').get(u'single')>var.get(u'occurences').get(u'double')): + return Js(u'single') + else: + return Js(u'double') + PyJsHoisted_findCommonStringDelimiter_.func_name = u'findCommonStringDelimiter' + var.put(u'findCommonStringDelimiter', PyJsHoisted_findCommonStringDelimiter_) + @Js + def PyJsHoisted_normalizeOptions_(code, opts, tokens, this, arguments, var=var): + var = Scope({u'tokens':tokens, u'this':this, u'code':code, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'style', u'code', u'indent', u'format', u'tokens', u'opts']) + var.put(u'style', Js(u' ')) + if (var.get(u'code') and PyJsStrictEq(var.get(u'code',throw=False).typeof(),Js(u'string'))): + var.put(u'indent', PyJsComma(Js(0.0),var.get(u'_detectIndent2').get(u'default'))(var.get(u'code')).get(u'indent')) + if (var.get(u'indent') and PyJsStrictNeq(var.get(u'indent'),Js(u' '))): + var.put(u'style', var.get(u'indent')) + PyJs_Object_510_ = Js({u'adjustMultilineComment':var.get(u'true'),u'style':var.get(u'style'),u'base':Js(0.0)}) + PyJs_Object_509_ = Js({u'auxiliaryCommentBefore':var.get(u'opts').get(u'auxiliaryCommentBefore'),u'auxiliaryCommentAfter':var.get(u'opts').get(u'auxiliaryCommentAfter'),u'shouldPrintComment':var.get(u'opts').get(u'shouldPrintComment'),u'retainLines':var.get(u'opts').get(u'retainLines'),u'retainFunctionParens':var.get(u'opts').get(u'retainFunctionParens'),u'comments':((var.get(u'opts').get(u'comments')==var.get(u"null")) or var.get(u'opts').get(u'comments')),u'compact':var.get(u'opts').get(u'compact'),u'minified':var.get(u'opts').get(u'minified'),u'concise':var.get(u'opts').get(u'concise'),u'quotes':(var.get(u'opts').get(u'quotes') or var.get(u'findCommonStringDelimiter')(var.get(u'code'), var.get(u'tokens'))),u'indent':PyJs_Object_510_}) + var.put(u'format', PyJs_Object_509_) + if var.get(u'format').get(u'minified'): + var.get(u'format').put(u'compact', var.get(u'true')) + @Js + def PyJs_anonymous_511_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'format').get(u'comments') + PyJs_anonymous_511_._set_name(u'anonymous') + var.get(u'format').put(u'shouldPrintComment', (var.get(u'format').get(u'shouldPrintComment') or PyJs_anonymous_511_)) + else: + @Js + def PyJs_anonymous_512_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((var.get(u'format').get(u'comments') or (var.get(u'value').callprop(u'indexOf', Js(u'@license'))>=Js(0.0))) or (var.get(u'value').callprop(u'indexOf', Js(u'@preserve'))>=Js(0.0))) + PyJs_anonymous_512_._set_name(u'anonymous') + var.get(u'format').put(u'shouldPrintComment', (var.get(u'format').get(u'shouldPrintComment') or PyJs_anonymous_512_)) + if PyJsStrictEq(var.get(u'format').get(u'compact'),Js(u'auto')): + var.get(u'format').put(u'compact', (var.get(u'code').get(u'length')>Js(100000.0))) + if var.get(u'format').get(u'compact'): + var.get(u'console').callprop(u'error', (Js(u'[BABEL] ')+var.get(u'messages').callprop(u'get', Js(u'codeGeneratorDeopt'), var.get(u'opts').get(u'filename'), Js(u'100KB')))) + if var.get(u'format').get(u'compact'): + var.get(u'format').get(u'indent').put(u'adjustMultilineComment', Js(False)) + return var.get(u'format') + PyJsHoisted_normalizeOptions_.func_name = u'normalizeOptions' + var.put(u'normalizeOptions', PyJsHoisted_normalizeOptions_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_504_ = Js({}) + var.put(u'newObj', PyJs_Object_504_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'CodeGenerator', var.get(u'undefined')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_possibleConstructorReturn2', var.get(u'require')(Js(u'babel-runtime/helpers/possibleConstructorReturn'))) + var.put(u'_possibleConstructorReturn3', var.get(u'_interopRequireDefault')(var.get(u'_possibleConstructorReturn2'))) + var.put(u'_inherits2', var.get(u'require')(Js(u'babel-runtime/helpers/inherits'))) + var.put(u'_inherits3', var.get(u'_interopRequireDefault')(var.get(u'_inherits2'))) + @Js + def PyJs_anonymous_503_(ast, opts, code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'opts':opts, u'ast':ast}, var) + var.registers([u'code', u'gen', u'opts', u'ast']) + var.put(u'gen', var.get(u'Generator').create(var.get(u'ast'), var.get(u'opts'), var.get(u'code'))) + return var.get(u'gen').callprop(u'generate') + PyJs_anonymous_503_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_503_) + var.put(u'_detectIndent', var.get(u'require')(Js(u'detect-indent'))) + var.put(u'_detectIndent2', var.get(u'_interopRequireDefault')(var.get(u'_detectIndent'))) + var.put(u'_sourceMap', var.get(u'require')(Js(u'./source-map'))) + var.put(u'_sourceMap2', var.get(u'_interopRequireDefault')(var.get(u'_sourceMap'))) + var.put(u'_babelMessages', var.get(u'require')(Js(u'babel-messages'))) + var.put(u'messages', var.get(u'_interopRequireWildcard')(var.get(u'_babelMessages'))) + var.put(u'_printer', var.get(u'require')(Js(u'./printer'))) + var.put(u'_printer2', var.get(u'_interopRequireDefault')(var.get(u'_printer'))) + pass + pass + @Js + def PyJs_anonymous_506_(_Printer, this, arguments, var=var): + var = Scope({u'this':this, u'_Printer':_Printer, u'arguments':arguments}, var) + var.registers([u'_Printer', u'Generator']) + @Js + def PyJsHoisted_Generator_(ast, opts, code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'opts':opts, u'ast':ast}, var) + var.registers([u'map', u'code', u'_this', u'ast', u'format', u'tokens', u'opts']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Generator')) + PyJs_Object_507_ = Js({}) + var.put(u'opts', (var.get(u'opts') or PyJs_Object_507_)) + var.put(u'tokens', (var.get(u'ast').get(u'tokens') or Js([]))) + var.put(u'format', var.get(u'normalizeOptions')(var.get(u'code'), var.get(u'opts'), var.get(u'tokens'))) + var.put(u'map', (var.get(u'_sourceMap2').get(u'default').create(var.get(u'opts'), var.get(u'code')) if var.get(u'opts').get(u'sourceMaps') else var.get(u"null"))) + var.put(u'_this', PyJsComma(Js(0.0),var.get(u'_possibleConstructorReturn3').get(u'default'))(var.get(u"this"), var.get(u'_Printer').callprop(u'call', var.get(u"this"), var.get(u'format'), var.get(u'map'), var.get(u'tokens')))) + var.get(u'_this').put(u'ast', var.get(u'ast')) + return var.get(u'_this') + PyJsHoisted_Generator_.func_name = u'Generator' + var.put(u'Generator', PyJsHoisted_Generator_) + PyJsComma(Js(0.0),var.get(u'_inherits3').get(u'default'))(var.get(u'Generator'), var.get(u'_Printer')) + pass + @Js + def PyJs_generate_508_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'generate':PyJs_generate_508_}, var) + var.registers([]) + return var.get(u'_Printer').get(u'prototype').get(u'generate').callprop(u'call', var.get(u"this"), var.get(u"this").get(u'ast')) + PyJs_generate_508_._set_name(u'generate') + var.get(u'Generator').get(u'prototype').put(u'generate', PyJs_generate_508_) + return var.get(u'Generator') + PyJs_anonymous_506_._set_name(u'anonymous') + var.put(u'Generator', PyJs_anonymous_506_(var.get(u'_printer2').get(u'default'))) + pass + pass + @Js + def PyJs_anonymous_514_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'CodeGenerator']) + @Js + def PyJsHoisted_CodeGenerator_(ast, opts, code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'opts':opts, u'ast':ast}, var) + var.registers([u'code', u'opts', u'ast']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'CodeGenerator')) + var.get(u"this").put(u'_generator', var.get(u'Generator').create(var.get(u'ast'), var.get(u'opts'), var.get(u'code'))) + PyJsHoisted_CodeGenerator_.func_name = u'CodeGenerator' + var.put(u'CodeGenerator', PyJsHoisted_CodeGenerator_) + pass + @Js + def PyJs_generate_515_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'generate':PyJs_generate_515_}, var) + var.registers([]) + return var.get(u"this").get(u'_generator').callprop(u'generate') + PyJs_generate_515_._set_name(u'generate') + var.get(u'CodeGenerator').get(u'prototype').put(u'generate', PyJs_generate_515_) + return var.get(u'CodeGenerator') + PyJs_anonymous_514_._set_name(u'anonymous') + var.put(u'CodeGenerator', var.get(u'exports').put(u'CodeGenerator', PyJs_anonymous_514_())) +PyJs_anonymous_502_._set_name(u'anonymous') +PyJs_Object_516_ = Js({u'./printer':Js(44.0),u'./source-map':Js(45.0),u'babel-messages':Js(57.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-runtime/helpers/inherits':Js(111.0),u'babel-runtime/helpers/possibleConstructorReturn':Js(113.0),u'detect-indent':Js(271.0)}) +@Js +def PyJs_anonymous_517_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'needsParens', u'module', u'_parentheses', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'find', u'needsWhitespaceBefore', u'_keys', u'parens', u'exports', u'expandedWhitespaceNodes', u'_interopRequireWildcard', u'_babelTypes', u'expandAliases', u'needsWhitespace', u'_keys2', u'_whitespace2', u'expandedParens', u'expandedWhitespaceList', u'require', u'isOrHasCallExpression', u'_whitespace', u't', u'needsWhitespaceAfter']) + @Js + def PyJsHoisted_needsParens_(node, parent, printStack, this, arguments, var=var): + var = Scope({u'node':node, u'printStack':printStack, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'printStack', u'parent']) + if var.get(u'parent').neg(): + return Js(False) + if (var.get(u't').callprop(u'isNewExpression', var.get(u'parent')) and PyJsStrictEq(var.get(u'parent').get(u'callee'),var.get(u'node'))): + if var.get(u'isOrHasCallExpression')(var.get(u'node')): + return var.get(u'true') + return var.get(u'find')(var.get(u'expandedParens'), var.get(u'node'), var.get(u'parent'), var.get(u'printStack')) + PyJsHoisted_needsParens_.func_name = u'needsParens' + var.put(u'needsParens', PyJsHoisted_needsParens_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_518_ = Js({}) + var.put(u'newObj', PyJs_Object_518_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_needsWhitespaceBefore_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + return var.get(u'needsWhitespace')(var.get(u'node'), var.get(u'parent'), Js(u'before')) + PyJsHoisted_needsWhitespaceBefore_.func_name = u'needsWhitespaceBefore' + var.put(u'needsWhitespaceBefore', PyJsHoisted_needsWhitespaceBefore_) + @Js + def PyJsHoisted_expandAliases_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'_isArray', u'_iterator', u'_isArray2', u'_ref2', u'_i2', u'newObj', u'alias', u'add', u'_i', u'obj', u'_ref', u'_iterator2', u'type', u'aliases']) + @Js + def PyJsHoisted_add_(type, func, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments, u'func':func}, var) + var.registers([u'type', u'func', u'fn']) + var.put(u'fn', var.get(u'newObj').get(var.get(u'type'))) + @Js + def PyJs_anonymous_521_(node, parent, stack, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'stack':stack, u'parent':parent, u'arguments':arguments}, var) + var.registers([u'node', u'result', u'parent', u'stack']) + var.put(u'result', var.get(u'fn')(var.get(u'node'), var.get(u'parent'), var.get(u'stack'))) + return (var.get(u'func')(var.get(u'node'), var.get(u'parent'), var.get(u'stack')) if (var.get(u'result')==var.get(u"null")) else var.get(u'result')) + PyJs_anonymous_521_._set_name(u'anonymous') + var.get(u'newObj').put(var.get(u'type'), (PyJs_anonymous_521_ if var.get(u'fn') else var.get(u'func'))) + PyJsHoisted_add_.func_name = u'add' + var.put(u'add', PyJsHoisted_add_) + PyJs_Object_520_ = Js({}) + var.put(u'newObj', PyJs_Object_520_) + pass + #for JS loop + var.put(u'_iterator', PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u'obj'))) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'type', var.get(u'_ref')) + var.put(u'aliases', var.get(u't').get(u'FLIPPED_ALIAS_KEYS').get(var.get(u'type'))) + if var.get(u'aliases'): + #for JS loop + var.put(u'_iterator2', var.get(u'aliases')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'alias', var.get(u'_ref2')) + var.get(u'add')(var.get(u'alias'), var.get(u'obj').get(var.get(u'type'))) + + else: + var.get(u'add')(var.get(u'type'), var.get(u'obj').get(var.get(u'type'))) + + return var.get(u'newObj') + PyJsHoisted_expandAliases_.func_name = u'expandAliases' + var.put(u'expandAliases', PyJsHoisted_expandAliases_) + @Js + def PyJsHoisted_needsWhitespace_(node, parent, type, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'type':type, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent', u'i', u'items', u'linesInfo', u'type']) + if var.get(u'node').neg(): + return Js(0.0) + if var.get(u't').callprop(u'isExpressionStatement', var.get(u'node')): + var.put(u'node', var.get(u'node').get(u'expression')) + var.put(u'linesInfo', var.get(u'find')(var.get(u'expandedWhitespaceNodes'), var.get(u'node'), var.get(u'parent'))) + if var.get(u'linesInfo').neg(): + var.put(u'items', var.get(u'find')(var.get(u'expandedWhitespaceList'), var.get(u'node'), var.get(u'parent'))) + if var.get(u'items'): + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')var.get(u'nodePos')): + return var.get(u'true') + if ((PyJsStrictEq(var.get(u'parentPos'),var.get(u'nodePos')) and PyJsStrictEq(var.get(u'parent').get(u'right'),var.get(u'node'))) and var.get(u't').callprop(u'isLogicalExpression', var.get(u'parent')).neg()): + return var.get(u'true') + return Js(False) + PyJsHoisted_Binary_.func_name = u'Binary' + var.put(u'Binary', PyJsHoisted_Binary_) + @Js + def PyJsHoisted_SequenceExpression_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + if var.get(u't').callprop(u'isForStatement', var.get(u'parent')): + return Js(False) + if (var.get(u't').callprop(u'isExpressionStatement', var.get(u'parent')) and PyJsStrictEq(var.get(u'parent').get(u'expression'),var.get(u'node'))): + return Js(False) + if var.get(u't').callprop(u'isReturnStatement', var.get(u'parent')): + return Js(False) + if var.get(u't').callprop(u'isThrowStatement', var.get(u'parent')): + return Js(False) + if (var.get(u't').callprop(u'isSwitchStatement', var.get(u'parent')) and PyJsStrictEq(var.get(u'parent').get(u'discriminant'),var.get(u'node'))): + return Js(False) + if (var.get(u't').callprop(u'isWhileStatement', var.get(u'parent')) and PyJsStrictEq(var.get(u'parent').get(u'test'),var.get(u'node'))): + return Js(False) + if (var.get(u't').callprop(u'isIfStatement', var.get(u'parent')) and PyJsStrictEq(var.get(u'parent').get(u'test'),var.get(u'node'))): + return Js(False) + if (var.get(u't').callprop(u'isForInStatement', var.get(u'parent')) and PyJsStrictEq(var.get(u'parent').get(u'right'),var.get(u'node'))): + return Js(False) + return var.get(u'true') + PyJsHoisted_SequenceExpression_.func_name = u'SequenceExpression' + var.put(u'SequenceExpression', PyJsHoisted_SequenceExpression_) + @Js + def PyJsHoisted_ArrowFunctionExpression_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + if var.get(u't').callprop(u'isExportDeclaration', var.get(u'parent')): + return var.get(u'true') + if (var.get(u't').callprop(u'isBinaryExpression', var.get(u'parent')) or var.get(u't').callprop(u'isLogicalExpression', var.get(u'parent'))): + return var.get(u'true') + if var.get(u't').callprop(u'isUnaryExpression', var.get(u'parent')): + return var.get(u'true') + return var.get(u'UnaryLike')(var.get(u'node'), var.get(u'parent')) + PyJsHoisted_ArrowFunctionExpression_.func_name = u'ArrowFunctionExpression' + var.put(u'ArrowFunctionExpression', PyJsHoisted_ArrowFunctionExpression_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_524_ = Js({}) + var.put(u'newObj', PyJs_Object_524_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_ClassExpression_(node, parent, printStack, this, arguments, var=var): + var = Scope({u'node':node, u'printStack':printStack, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'printStack', u'parent']) + PyJs_Object_528_ = Js({u'considerDefaultExports':var.get(u'true')}) + return var.get(u'isFirstInStatement')(var.get(u'printStack'), PyJs_Object_528_) + PyJsHoisted_ClassExpression_.func_name = u'ClassExpression' + var.put(u'ClassExpression', PyJsHoisted_ClassExpression_) + @Js + def PyJsHoisted_ConditionalExpression_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + if var.get(u't').callprop(u'isUnaryLike', var.get(u'parent')): + return var.get(u'true') + if var.get(u't').callprop(u'isBinary', var.get(u'parent')): + return var.get(u'true') + PyJs_Object_533_ = Js({u'test':var.get(u'node')}) + if var.get(u't').callprop(u'isConditionalExpression', var.get(u'parent'), PyJs_Object_533_): + return var.get(u'true') + return var.get(u'UnaryLike')(var.get(u'node'), var.get(u'parent')) + PyJsHoisted_ConditionalExpression_.func_name = u'ConditionalExpression' + var.put(u'ConditionalExpression', PyJsHoisted_ConditionalExpression_) + @Js + def PyJsHoisted_FunctionExpression_(node, parent, printStack, this, arguments, var=var): + var = Scope({u'node':node, u'printStack':printStack, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'printStack', u'parent']) + PyJs_Object_532_ = Js({u'considerDefaultExports':var.get(u'true')}) + return var.get(u'isFirstInStatement')(var.get(u'printStack'), PyJs_Object_532_) + PyJsHoisted_FunctionExpression_.func_name = u'FunctionExpression' + var.put(u'FunctionExpression', PyJsHoisted_FunctionExpression_) + @Js + def PyJsHoisted_UpdateExpression_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + if (var.get(u't').callprop(u'isMemberExpression', var.get(u'parent')) and PyJsStrictEq(var.get(u'parent').get(u'object'),var.get(u'node'))): + return var.get(u'true') + return Js(False) + PyJsHoisted_UpdateExpression_.func_name = u'UpdateExpression' + var.put(u'UpdateExpression', PyJsHoisted_UpdateExpression_) + @Js + def PyJsHoisted_YieldExpression_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + def PyJs_LONG_527_(var=var): + return (((((var.get(u't').callprop(u'isBinary', var.get(u'parent')) or var.get(u't').callprop(u'isUnaryLike', var.get(u'parent'))) or var.get(u't').callprop(u'isCallExpression', var.get(u'parent'))) or var.get(u't').callprop(u'isMemberExpression', var.get(u'parent'))) or var.get(u't').callprop(u'isNewExpression', var.get(u'parent'))) or (var.get(u't').callprop(u'isConditionalExpression', var.get(u'parent')) and PyJsStrictEq(var.get(u'node'),var.get(u'parent').get(u'test')))) + return PyJs_LONG_527_() + PyJsHoisted_YieldExpression_.func_name = u'YieldExpression' + var.put(u'YieldExpression', PyJsHoisted_YieldExpression_) + @Js + def PyJsHoisted_ObjectExpression_(node, parent, printStack, this, arguments, var=var): + var = Scope({u'node':node, u'printStack':printStack, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'printStack', u'parent']) + PyJs_Object_526_ = Js({u'considerArrow':var.get(u'true')}) + return var.get(u'isFirstInStatement')(var.get(u'printStack'), PyJs_Object_526_) + PyJsHoisted_ObjectExpression_.func_name = u'ObjectExpression' + var.put(u'ObjectExpression', PyJsHoisted_ObjectExpression_) + @Js + def PyJsHoisted_BinaryExpression_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + if PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'in')): + if var.get(u't').callprop(u'isVariableDeclarator', var.get(u'parent')): + return var.get(u'true') + if var.get(u't').callprop(u'isFor', var.get(u'parent')): + return var.get(u'true') + return Js(False) + PyJsHoisted_BinaryExpression_.func_name = u'BinaryExpression' + var.put(u'BinaryExpression', PyJsHoisted_BinaryExpression_) + @Js + def PyJsHoisted_AssignmentExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u't').callprop(u'isObjectPattern', var.get(u'node').get(u'left')): + return var.get(u'true') + else: + return var.get(u'ConditionalExpression').callprop(u'apply', var.get(u'undefined'), var.get(u'arguments')) + PyJsHoisted_AssignmentExpression_.func_name = u'AssignmentExpression' + var.put(u'AssignmentExpression', PyJsHoisted_AssignmentExpression_) + @Js + def PyJsHoisted_isFirstInStatement_(printStack, this, arguments, var=var): + var = Scope({u'this':this, u'printStack':printStack, u'arguments':arguments}, var) + var.registers([u'_ref$considerArrow', u'node', u'considerDefaultExports', u'parent', u'i', u'printStack', u'_ref$considerDefaultE', u'considerArrow', u'_ref']) + PyJs_Object_534_ = Js({}) + var.put(u'_ref', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_534_)) + var.put(u'_ref$considerArrow', var.get(u'_ref').get(u'considerArrow')) + var.put(u'considerArrow', (Js(False) if PyJsStrictEq(var.get(u'_ref$considerArrow'),var.get(u'undefined')) else var.get(u'_ref$considerArrow'))) + var.put(u'_ref$considerDefaultE', var.get(u'_ref').get(u'considerDefaultExports')) + var.put(u'considerDefaultExports', (Js(False) if PyJsStrictEq(var.get(u'_ref$considerDefaultE'),var.get(u'undefined')) else var.get(u'_ref$considerDefaultE'))) + var.put(u'i', (var.get(u'printStack').get(u'length')-Js(1.0))) + var.put(u'node', var.get(u'printStack').get(var.get(u'i'))) + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + var.put(u'parent', var.get(u'printStack').get(var.get(u'i'))) + while (var.get(u'i')>Js(0.0)): + PyJs_Object_535_ = Js({u'expression':var.get(u'node')}) + if var.get(u't').callprop(u'isExpressionStatement', var.get(u'parent'), PyJs_Object_535_): + return var.get(u'true') + PyJs_Object_536_ = Js({u'declaration':var.get(u'node')}) + if (var.get(u'considerDefaultExports') and var.get(u't').callprop(u'isExportDefaultDeclaration', var.get(u'parent'), PyJs_Object_536_)): + return var.get(u'true') + PyJs_Object_537_ = Js({u'body':var.get(u'node')}) + if (var.get(u'considerArrow') and var.get(u't').callprop(u'isArrowFunctionExpression', var.get(u'parent'), PyJs_Object_537_)): + return var.get(u'true') + def PyJs_LONG_541_(var=var): + PyJs_Object_538_ = Js({u'callee':var.get(u'node')}) + PyJs_Object_539_ = Js({u'object':var.get(u'node')}) + PyJs_Object_540_ = Js({u'test':var.get(u'node')}) + return (((var.get(u't').callprop(u'isCallExpression', var.get(u'parent'), PyJs_Object_538_) or (var.get(u't').callprop(u'isSequenceExpression', var.get(u'parent')) and PyJsStrictEq(var.get(u'parent').get(u'expressions').get(u'0'),var.get(u'node')))) or var.get(u't').callprop(u'isMemberExpression', var.get(u'parent'), PyJs_Object_539_)) or var.get(u't').callprop(u'isConditional', var.get(u'parent'), PyJs_Object_540_)) + PyJs_Object_542_ = Js({u'left':var.get(u'node')}) + PyJs_Object_543_ = Js({u'left':var.get(u'node')}) + if ((PyJs_LONG_541_() or var.get(u't').callprop(u'isBinary', var.get(u'parent'), PyJs_Object_542_)) or var.get(u't').callprop(u'isAssignmentExpression', var.get(u'parent'), PyJs_Object_543_)): + var.put(u'node', var.get(u'parent')) + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + var.put(u'parent', var.get(u'printStack').get(var.get(u'i'))) + else: + return Js(False) + return Js(False) + PyJsHoisted_isFirstInStatement_.func_name = u'isFirstInStatement' + var.put(u'isFirstInStatement', PyJsHoisted_isFirstInStatement_) + @Js + def PyJsHoisted_UnaryLike_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + PyJs_Object_529_ = Js({u'object':var.get(u'node')}) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'parent'), PyJs_Object_529_): + return var.get(u'true') + PyJs_Object_530_ = Js({u'callee':var.get(u'node')}) + PyJs_Object_531_ = Js({u'callee':var.get(u'node')}) + if (var.get(u't').callprop(u'isCallExpression', var.get(u'parent'), PyJs_Object_530_) or var.get(u't').callprop(u'isNewExpression', var.get(u'parent'), PyJs_Object_531_)): + return var.get(u'true') + return Js(False) + PyJsHoisted_UnaryLike_.func_name = u'UnaryLike' + var.put(u'UnaryLike', PyJsHoisted_UnaryLike_) + @Js + def PyJsHoisted_NullableTypeAnnotation_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + return var.get(u't').callprop(u'isArrayTypeAnnotation', var.get(u'parent')) + PyJsHoisted_NullableTypeAnnotation_.func_name = u'NullableTypeAnnotation' + var.put(u'NullableTypeAnnotation', PyJsHoisted_NullableTypeAnnotation_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'AwaitExpression', var.get(u'exports').put(u'FunctionTypeAnnotation', var.get(u'undefined'))) + var.get(u'exports').put(u'NullableTypeAnnotation', var.get(u'NullableTypeAnnotation')) + var.get(u'exports').put(u'UpdateExpression', var.get(u'UpdateExpression')) + var.get(u'exports').put(u'ObjectExpression', var.get(u'ObjectExpression')) + var.get(u'exports').put(u'Binary', var.get(u'Binary')) + var.get(u'exports').put(u'BinaryExpression', var.get(u'BinaryExpression')) + var.get(u'exports').put(u'SequenceExpression', var.get(u'SequenceExpression')) + var.get(u'exports').put(u'YieldExpression', var.get(u'YieldExpression')) + var.get(u'exports').put(u'ClassExpression', var.get(u'ClassExpression')) + var.get(u'exports').put(u'UnaryLike', var.get(u'UnaryLike')) + var.get(u'exports').put(u'FunctionExpression', var.get(u'FunctionExpression')) + var.get(u'exports').put(u'ArrowFunctionExpression', var.get(u'ArrowFunctionExpression')) + var.get(u'exports').put(u'ConditionalExpression', var.get(u'ConditionalExpression')) + var.get(u'exports').put(u'AssignmentExpression', var.get(u'AssignmentExpression')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + PyJs_Object_525_ = Js({u'||':Js(0.0),u'&&':Js(1.0),u'|':Js(2.0),u'^':Js(3.0),u'&':Js(4.0),u'==':Js(5.0),u'===':Js(5.0),u'!=':Js(5.0),u'!==':Js(5.0),u'<':Js(6.0),u'>':Js(6.0),u'<=':Js(6.0),u'>=':Js(6.0),u'in':Js(6.0),u'instanceof':Js(6.0),u'>>':Js(7.0),u'<<':Js(7.0),u'>>>':Js(7.0),u'+':Js(8.0),u'-':Js(8.0),u'*':Js(9.0),u'/':Js(9.0),u'%':Js(9.0),u'**':Js(10.0)}) + var.put(u'PRECEDENCE', PyJs_Object_525_) + pass + var.get(u'exports').put(u'FunctionTypeAnnotation', var.get(u'NullableTypeAnnotation')) + pass + pass + pass + pass + pass + pass + var.get(u'exports').put(u'AwaitExpression', var.get(u'YieldExpression')) + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_523_._set_name(u'anonymous') +PyJs_Object_544_ = Js({u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_545_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'isHelper', u'exports', u'_babelTypes', u'_each', u'_interopRequireWildcard', u'_map', u'require', u'_isBoolean', u'module', u'_each2', u'_isBoolean2', u'isType', u'_interopRequireDefault', u'crawl', u'_map2', u't']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_547_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_547_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_isHelper_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'node')): + return (var.get(u'isHelper')(var.get(u'node').get(u'object')) or var.get(u'isHelper')(var.get(u'node').get(u'property'))) + else: + if var.get(u't').callprop(u'isIdentifier', var.get(u'node')): + return (PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'require')) or PyJsStrictEq(var.get(u'node').get(u'name').get(u'0'),Js(u'_'))) + else: + if var.get(u't').callprop(u'isCallExpression', var.get(u'node')): + return var.get(u'isHelper')(var.get(u'node').get(u'callee')) + else: + if (var.get(u't').callprop(u'isBinary', var.get(u'node')) or var.get(u't').callprop(u'isAssignmentExpression', var.get(u'node'))): + return ((var.get(u't').callprop(u'isIdentifier', var.get(u'node').get(u'left')) and var.get(u'isHelper')(var.get(u'node').get(u'left'))) or var.get(u'isHelper')(var.get(u'node').get(u'right'))) + else: + return Js(False) + PyJsHoisted_isHelper_.func_name = u'isHelper' + var.put(u'isHelper', PyJsHoisted_isHelper_) + @Js + def PyJsHoisted_crawl_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'state']) + PyJs_Object_548_ = Js({}) + var.put(u'state', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_548_)) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'node')): + var.get(u'crawl')(var.get(u'node').get(u'object'), var.get(u'state')) + if var.get(u'node').get(u'computed'): + var.get(u'crawl')(var.get(u'node').get(u'property'), var.get(u'state')) + else: + if (var.get(u't').callprop(u'isBinary', var.get(u'node')) or var.get(u't').callprop(u'isAssignmentExpression', var.get(u'node'))): + var.get(u'crawl')(var.get(u'node').get(u'left'), var.get(u'state')) + var.get(u'crawl')(var.get(u'node').get(u'right'), var.get(u'state')) + else: + if var.get(u't').callprop(u'isCallExpression', var.get(u'node')): + var.get(u'state').put(u'hasCall', var.get(u'true')) + var.get(u'crawl')(var.get(u'node').get(u'callee'), var.get(u'state')) + else: + if var.get(u't').callprop(u'isFunction', var.get(u'node')): + var.get(u'state').put(u'hasFunction', var.get(u'true')) + else: + if var.get(u't').callprop(u'isIdentifier', var.get(u'node')): + var.get(u'state').put(u'hasHelper', (var.get(u'state').get(u'hasHelper') or var.get(u'isHelper')(var.get(u'node').get(u'callee')))) + return var.get(u'state') + PyJsHoisted_crawl_.func_name = u'crawl' + var.put(u'crawl', PyJsHoisted_crawl_) + @Js + def PyJsHoisted_isType_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return ((((var.get(u't').callprop(u'isLiteral', var.get(u'node')) or var.get(u't').callprop(u'isObjectExpression', var.get(u'node'))) or var.get(u't').callprop(u'isArrayExpression', var.get(u'node'))) or var.get(u't').callprop(u'isIdentifier', var.get(u'node'))) or var.get(u't').callprop(u'isMemberExpression', var.get(u'node'))) + PyJsHoisted_isType_.func_name = u'isType' + var.put(u'isType', PyJsHoisted_isType_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_546_ = Js({}) + var.put(u'newObj', PyJs_Object_546_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.put(u'_isBoolean', var.get(u'require')(Js(u'lodash/isBoolean'))) + var.put(u'_isBoolean2', var.get(u'_interopRequireDefault')(var.get(u'_isBoolean'))) + var.put(u'_each', var.get(u'require')(Js(u'lodash/each'))) + var.put(u'_each2', var.get(u'_interopRequireDefault')(var.get(u'_each'))) + var.put(u'_map', var.get(u'require')(Js(u'lodash/map'))) + var.put(u'_map2', var.get(u'_interopRequireDefault')(var.get(u'_map'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + pass + @Js + def PyJs_AssignmentExpression_550_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'AssignmentExpression':PyJs_AssignmentExpression_550_}, var) + var.registers([u'node', u'state']) + var.put(u'state', var.get(u'crawl')(var.get(u'node').get(u'right'))) + if ((var.get(u'state').get(u'hasCall') and var.get(u'state').get(u'hasHelper')) or var.get(u'state').get(u'hasFunction')): + PyJs_Object_551_ = Js({u'before':var.get(u'state').get(u'hasFunction'),u'after':var.get(u'true')}) + return PyJs_Object_551_ + PyJs_AssignmentExpression_550_._set_name(u'AssignmentExpression') + @Js + def PyJs_SwitchCase_552_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'SwitchCase':PyJs_SwitchCase_552_, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + PyJs_Object_553_ = Js({u'before':(var.get(u'node').get(u'consequent').get(u'length') or PyJsStrictEq(var.get(u'parent').get(u'cases').get(u'0'),var.get(u'node')))}) + return PyJs_Object_553_ + PyJs_SwitchCase_552_._set_name(u'SwitchCase') + @Js + def PyJs_LogicalExpression_554_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'LogicalExpression':PyJs_LogicalExpression_554_}, var) + var.registers([u'node']) + if (var.get(u't').callprop(u'isFunction', var.get(u'node').get(u'left')) or var.get(u't').callprop(u'isFunction', var.get(u'node').get(u'right'))): + PyJs_Object_555_ = Js({u'after':var.get(u'true')}) + return PyJs_Object_555_ + PyJs_LogicalExpression_554_._set_name(u'LogicalExpression') + @Js + def PyJs_Literal_556_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'Literal':PyJs_Literal_556_, u'arguments':arguments}, var) + var.registers([u'node']) + if PyJsStrictEq(var.get(u'node').get(u'value'),Js(u'use strict')): + PyJs_Object_557_ = Js({u'after':var.get(u'true')}) + return PyJs_Object_557_ + PyJs_Literal_556_._set_name(u'Literal') + @Js + def PyJs_CallExpression_558_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'CallExpression':PyJs_CallExpression_558_}, var) + var.registers([u'node']) + if (var.get(u't').callprop(u'isFunction', var.get(u'node').get(u'callee')) or var.get(u'isHelper')(var.get(u'node'))): + PyJs_Object_559_ = Js({u'before':var.get(u'true'),u'after':var.get(u'true')}) + return PyJs_Object_559_ + PyJs_CallExpression_558_._set_name(u'CallExpression') + @Js + def PyJs_VariableDeclaration_560_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'VariableDeclaration':PyJs_VariableDeclaration_560_}, var) + var.registers([u'i', u'node', u'state', u'declar', u'enabled']) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(0.0)) else var.get(u"null"))) + PyJsHoisted_Printer_.func_name = u'Printer' + var.put(u'Printer', PyJsHoisted_Printer_) + pass + @Js + def PyJs_generate_582_(ast, this, arguments, var=var): + var = Scope({u'this':this, u'generate':PyJs_generate_582_, u'arguments':arguments, u'ast':ast}, var) + var.registers([u'ast']) + var.get(u"this").callprop(u'print', var.get(u'ast')) + var.get(u"this").callprop(u'_maybeAddAuxComment') + return var.get(u"this").get(u'_buf').callprop(u'get') + PyJs_generate_582_._set_name(u'generate') + var.get(u'Printer').get(u'prototype').put(u'generate', PyJs_generate_582_) + @Js + def PyJs_indent_583_(this, arguments, var=var): + var = Scope({u'this':this, u'indent':PyJs_indent_583_, u'arguments':arguments}, var) + var.registers([]) + if (var.get(u"this").get(u'format').get(u'compact') or var.get(u"this").get(u'format').get(u'concise')): + return var.get('undefined') + (var.get(u"this").put(u'_indent',Js(var.get(u"this").get(u'_indent').to_number())+Js(1))-Js(1)) + PyJs_indent_583_._set_name(u'indent') + var.get(u'Printer').get(u'prototype').put(u'indent', PyJs_indent_583_) + @Js + def PyJs_dedent_584_(this, arguments, var=var): + var = Scope({u'this':this, u'dedent':PyJs_dedent_584_, u'arguments':arguments}, var) + var.registers([]) + if (var.get(u"this").get(u'format').get(u'compact') or var.get(u"this").get(u'format').get(u'concise')): + return var.get('undefined') + (var.get(u"this").put(u'_indent',Js(var.get(u"this").get(u'_indent').to_number())-Js(1))+Js(1)) + PyJs_dedent_584_._set_name(u'dedent') + var.get(u'Printer').get(u'prototype').put(u'dedent', PyJs_dedent_584_) + @Js + def PyJs_semicolon_585_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'semicolon':PyJs_semicolon_585_}, var) + var.registers([u'force']) + var.put(u'force', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else Js(False))) + var.get(u"this").callprop(u'_maybeAddAuxComment') + var.get(u"this").callprop(u'_append', Js(u';'), var.get(u'force').neg()) + PyJs_semicolon_585_._set_name(u'semicolon') + var.get(u'Printer').get(u'prototype').put(u'semicolon', PyJs_semicolon_585_) + @Js + def PyJs_rightBrace_586_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'rightBrace':PyJs_rightBrace_586_}, var) + var.registers([]) + if var.get(u"this").get(u'format').get(u'minified'): + var.get(u"this").get(u'_buf').callprop(u'removeLastSemicolon') + var.get(u"this").callprop(u'token', Js(u'}')) + PyJs_rightBrace_586_._set_name(u'rightBrace') + var.get(u'Printer').get(u'prototype').put(u'rightBrace', PyJs_rightBrace_586_) + @Js + def PyJs_space_587_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'space':PyJs_space_587_}, var) + var.registers([u'force']) + var.put(u'force', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else Js(False))) + if var.get(u"this").get(u'format').get(u'compact'): + return var.get('undefined') + if (((var.get(u"this").get(u'_buf').callprop(u'hasContent') and var.get(u"this").callprop(u'endsWith', Js(u' ')).neg()) and var.get(u"this").callprop(u'endsWith', Js(u'\n')).neg()) or var.get(u'force')): + var.get(u"this").callprop(u'_space') + PyJs_space_587_._set_name(u'space') + var.get(u'Printer').get(u'prototype').put(u'space', PyJs_space_587_) + @Js + def PyJs_word_588_(str, this, arguments, var=var): + var = Scope({u'this':this, u'word':PyJs_word_588_, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + if var.get(u"this").get(u'_endsWithWord'): + var.get(u"this").callprop(u'_space') + var.get(u"this").callprop(u'_maybeAddAuxComment') + var.get(u"this").callprop(u'_append', var.get(u'str')) + var.get(u"this").put(u'_endsWithWord', var.get(u'true')) + PyJs_word_588_._set_name(u'word') + var.get(u'Printer').get(u'prototype').put(u'word', PyJs_word_588_) + @Js + def PyJs_number_589_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str, u'number':PyJs_number_589_}, var) + var.registers([u'str']) + var.get(u"this").callprop(u'word', var.get(u'str')) + def PyJs_LONG_590_(var=var): + return ((((PyJsComma(Js(0.0),var.get(u'_isInteger2').get(u'default'))((+var.get(u'str'))) and var.get(u'NON_DECIMAL_LITERAL').callprop(u'test', var.get(u'str')).neg()) and var.get(u'SCIENTIFIC_NOTATION').callprop(u'test', var.get(u'str')).neg()) and var.get(u'ZERO_DECIMAL_INTEGER').callprop(u'test', var.get(u'str')).neg()) and PyJsStrictNeq(var.get(u'str').get((var.get(u'str').get(u'length')-Js(1.0))),Js(u'.'))) + var.get(u"this").put(u'_endsWithInteger', PyJs_LONG_590_()) + PyJs_number_589_._set_name(u'number') + var.get(u'Printer').get(u'prototype').put(u'number', PyJs_number_589_) + @Js + def PyJs_token_591_(str, this, arguments, var=var): + var = Scope({u'this':this, u'token':PyJs_token_591_, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + def PyJs_LONG_592_(var=var): + return ((((PyJsStrictEq(var.get(u'str'),Js(u'--')) and var.get(u"this").callprop(u'endsWith', Js(u'!'))) or (PyJsStrictEq(var.get(u'str').get(u'0'),Js(u'+')) and var.get(u"this").callprop(u'endsWith', Js(u'+')))) or (PyJsStrictEq(var.get(u'str').get(u'0'),Js(u'-')) and var.get(u"this").callprop(u'endsWith', Js(u'-')))) or (PyJsStrictEq(var.get(u'str').get(u'0'),Js(u'.')) and var.get(u"this").get(u'_endsWithInteger'))) + if PyJs_LONG_592_(): + var.get(u"this").callprop(u'_space') + var.get(u"this").callprop(u'_maybeAddAuxComment') + var.get(u"this").callprop(u'_append', var.get(u'str')) + PyJs_token_591_._set_name(u'token') + var.get(u'Printer').get(u'prototype').put(u'token', PyJs_token_591_) + @Js + def PyJs_newline_593_(i, this, arguments, var=var): + var = Scope({u'i':i, u'this':this, u'newline':PyJs_newline_593_, u'arguments':arguments}, var) + var.registers([u'i', u'j']) + if (var.get(u"this").get(u'format').get(u'retainLines') or var.get(u"this").get(u'format').get(u'compact')): + return var.get('undefined') + if var.get(u"this").get(u'format').get(u'concise'): + var.get(u"this").callprop(u'space') + return var.get('undefined') + if var.get(u"this").callprop(u'endsWith', Js(u'\n\n')): + return var.get('undefined') + if PyJsStrictNeq(var.get(u'i',throw=False).typeof(),Js(u'number')): + var.put(u'i', Js(1.0)) + var.put(u'i', var.get(u'Math').callprop(u'min', Js(2.0), var.get(u'i'))) + if (var.get(u"this").callprop(u'endsWith', Js(u'{\n')) or var.get(u"this").callprop(u'endsWith', Js(u':\n'))): + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + if (var.get(u'i')<=Js(0.0)): + return var.get('undefined') + #for JS loop + var.put(u'j', Js(0.0)) + while (var.get(u'j')Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else Js(False))) + var.get(u"this").callprop(u'_maybeAddParen', var.get(u'str')) + var.get(u"this").callprop(u'_maybeIndent', var.get(u'str')) + if var.get(u'queue'): + var.get(u"this").get(u'_buf').callprop(u'queue', var.get(u'str')) + else: + var.get(u"this").get(u'_buf').callprop(u'append', var.get(u'str')) + var.get(u"this").put(u'_endsWithWord', Js(False)) + var.get(u"this").put(u'_endsWithInteger', Js(False)) + PyJs__append_600_._set_name(u'_append') + var.get(u'Printer').get(u'prototype').put(u'_append', PyJs__append_600_) + @Js + def PyJs__maybeIndent_601_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str, u'_maybeIndent':PyJs__maybeIndent_601_}, var) + var.registers([u'str']) + if ((var.get(u"this").get(u'_indent') and var.get(u"this").callprop(u'endsWith', Js(u'\n'))) and PyJsStrictNeq(var.get(u'str').get(u'0'),Js(u'\n'))): + var.get(u"this").get(u'_buf').callprop(u'queue', var.get(u"this").callprop(u'_getIndent')) + PyJs__maybeIndent_601_._set_name(u'_maybeIndent') + var.get(u'Printer').get(u'prototype').put(u'_maybeIndent', PyJs__maybeIndent_601_) + @Js + def PyJs__maybeAddParen_602_(str, this, arguments, var=var): + var = Scope({u'this':this, u'_maybeAddParen':PyJs__maybeAddParen_602_, u'arguments':arguments, u'str':str}, var) + var.registers([u'i', u'cha', u'str', u'parenPushNewlineState']) + var.put(u'parenPushNewlineState', var.get(u"this").get(u'_parenPushNewlineState')) + if var.get(u'parenPushNewlineState').neg(): + return var.get('undefined') + var.get(u"this").put(u'_parenPushNewlineState', var.get(u"null")) + var.put(u'i', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'i', Js(0.0)) + while ((var.get(u'i')Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else PyJs_Object_617_)) + if (var.get(u'nodes').neg() or var.get(u'nodes').get(u'length').neg()): + return var.get('undefined') + if var.get(u'opts').get(u'indent'): + var.get(u"this").callprop(u'indent') + PyJs_Object_618_ = Js({u'addNewlines':var.get(u'opts').get(u'addNewlines')}) + var.put(u'newlineOpts', PyJs_Object_618_) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else var.get(u'true'))) + if var.get(u'node').get(u'innerComments').neg(): + return var.get('undefined') + if var.get(u'indent'): + var.get(u"this").callprop(u'indent') + var.get(u"this").callprop(u'_printComments', var.get(u'node').get(u'innerComments')) + if var.get(u'indent'): + var.get(u"this").callprop(u'dedent') + PyJs_printInnerComments_623_._set_name(u'printInnerComments') + var.get(u'Printer').get(u'prototype').put(u'printInnerComments', PyJs_printInnerComments_623_) + @Js + def PyJs_printSequence_624_(nodes, parent, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments, u'parent':parent, u'printSequence':PyJs_printSequence_624_}, var) + var.registers([u'nodes', u'parent', u'opts']) + PyJs_Object_625_ = Js({}) + var.put(u'opts', (var.get(u'arguments').get(u'2') if ((var.get(u'arguments').get(u'length')>Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else PyJs_Object_625_)) + var.get(u'opts').put(u'statement', var.get(u'true')) + return var.get(u"this").callprop(u'printJoin', var.get(u'nodes'), var.get(u'parent'), var.get(u'opts')) + PyJs_printSequence_624_._set_name(u'printSequence') + var.get(u'Printer').get(u'prototype').put(u'printSequence', PyJs_printSequence_624_) + @Js + def PyJs_printList_626_(items, parent, this, arguments, var=var): + var = Scope({u'this':this, u'items':items, u'printList':PyJs_printList_626_, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'items', u'parent', u'opts']) + PyJs_Object_627_ = Js({}) + var.put(u'opts', (var.get(u'arguments').get(u'2') if ((var.get(u'arguments').get(u'length')>Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else PyJs_Object_627_)) + if (var.get(u'opts').get(u'separator')==var.get(u"null")): + var.get(u'opts').put(u'separator', var.get(u'commaSeparator')) + return var.get(u"this").callprop(u'printJoin', var.get(u'items'), var.get(u'parent'), var.get(u'opts')) + PyJs_printList_626_._set_name(u'printList') + var.get(u'Printer').get(u'prototype').put(u'printList', PyJs_printList_626_) + @Js + def PyJs__printNewline_628_(leading, node, parent, opts, this, arguments, var=var): + var = Scope({u'node':node, u'_printNewline':PyJs__printNewline_628_, u'arguments':arguments, u'parent':parent, u'this':this, u'leading':leading, u'opts':opts}, var) + var.registers([u'node', u'needs', u'parent', u'_comments2', u'leading', u'_comment', u'lines', u'_this2', u'_comments', u'_comment2', u'opts']) + var.put(u'_this2', var.get(u"this")) + if (var.get(u"this").get(u'format').get(u'retainLines') or var.get(u"this").get(u'format').get(u'compact')): + return var.get('undefined') + if var.get(u"this").get(u'format').get(u'concise'): + var.get(u"this").callprop(u'space') + return var.get('undefined') + var.put(u'lines', Js(0.0)) + if (((var.get(u'node').get(u'start')!=var.get(u"null")) and var.get(u'node').get(u'_ignoreUserWhitespace').neg()) and var.get(u"this").get(u'_whitespace')): + if var.get(u'leading'): + var.put(u'_comments', var.get(u'node').get(u'leadingComments')) + @Js + def PyJs_anonymous_629_(comment, this, arguments, var=var): + var = Scope({u'comment':comment, u'this':this, u'arguments':arguments}, var) + var.registers([u'comment']) + return (var.get(u'comment').get(u'loc').neg().neg() and var.get(u'_this2').get(u'format').callprop(u'shouldPrintComment', var.get(u'comment').get(u'value'))) + PyJs_anonymous_629_._set_name(u'anonymous') + var.put(u'_comment', (var.get(u'_comments') and PyJsComma(Js(0.0),var.get(u'_find2').get(u'default'))(var.get(u'_comments'), PyJs_anonymous_629_))) + var.put(u'lines', var.get(u"this").get(u'_whitespace').callprop(u'getNewlinesBefore', (var.get(u'_comment') or var.get(u'node')))) + else: + var.put(u'_comments2', var.get(u'node').get(u'trailingComments')) + @Js + def PyJs_anonymous_630_(comment, this, arguments, var=var): + var = Scope({u'comment':comment, u'this':this, u'arguments':arguments}, var) + var.registers([u'comment']) + return (var.get(u'comment').get(u'loc').neg().neg() and var.get(u'_this2').get(u'format').callprop(u'shouldPrintComment', var.get(u'comment').get(u'value'))) + PyJs_anonymous_630_._set_name(u'anonymous') + var.put(u'_comment2', (var.get(u'_comments2') and PyJsComma(Js(0.0),var.get(u'_findLast2').get(u'default'))(var.get(u'_comments2'), PyJs_anonymous_630_))) + var.put(u'lines', var.get(u"this").get(u'_whitespace').callprop(u'getNewlinesAfter', (var.get(u'_comment2') or var.get(u'node')))) + else: + if var.get(u'leading').neg(): + (var.put(u'lines',Js(var.get(u'lines').to_number())+Js(1))-Js(1)) + if var.get(u'opts').get(u'addNewlines'): + var.put(u'lines', (var.get(u'opts').callprop(u'addNewlines', var.get(u'leading'), var.get(u'node')) or Js(0.0)), u'+') + var.put(u'needs', var.get(u'n').get(u'needsWhitespaceAfter')) + if var.get(u'leading'): + var.put(u'needs', var.get(u'n').get(u'needsWhitespaceBefore')) + if var.get(u'needs')(var.get(u'node'), var.get(u'parent')): + (var.put(u'lines',Js(var.get(u'lines').to_number())+Js(1))-Js(1)) + if var.get(u"this").get(u'_buf').callprop(u'hasContent').neg(): + var.put(u'lines', Js(0.0)) + var.get(u"this").callprop(u'newline', var.get(u'lines')) + PyJs__printNewline_628_._set_name(u'_printNewline') + var.get(u'Printer').get(u'prototype').put(u'_printNewline', PyJs__printNewline_628_) + @Js + def PyJs__getComments_631_(leading, node, this, arguments, var=var): + var = Scope({u'node':node, u'leading':leading, u'this':this, u'arguments':arguments, u'_getComments':PyJs__getComments_631_}, var) + var.registers([u'node', u'leading']) + return ((var.get(u'node') and (var.get(u'node').get(u'leadingComments') if var.get(u'leading') else var.get(u'node').get(u'trailingComments'))) or Js([])) + PyJs__getComments_631_._set_name(u'_getComments') + var.get(u'Printer').get(u'prototype').put(u'_getComments', PyJs__getComments_631_) + @Js + def PyJs__printComment_632_(comment, this, arguments, var=var): + var = Scope({u'comment':comment, u'this':this, u'_printComment':PyJs__printComment_632_, u'arguments':arguments}, var) + var.registers([u'comment', u'val', u'indentSize', u'newlineRegex', u'offset', u'_this3']) + var.put(u'_this3', var.get(u"this")) + if var.get(u"this").get(u'format').callprop(u'shouldPrintComment', var.get(u'comment').get(u'value')).neg(): + return var.get('undefined') + if var.get(u'comment').get(u'ignore'): + return var.get('undefined') + if var.get(u"this").get(u'_printedComments').callprop(u'has', var.get(u'comment')): + return var.get('undefined') + var.get(u"this").get(u'_printedComments').callprop(u'add', var.get(u'comment')) + if (var.get(u'comment').get(u'start')!=var.get(u"null")): + if var.get(u"this").get(u'_printedCommentStarts').get(var.get(u'comment').get(u'start')): + return var.get('undefined') + var.get(u"this").get(u'_printedCommentStarts').put(var.get(u'comment').get(u'start'), var.get(u'true')) + var.get(u"this").callprop(u'newline', (var.get(u"this").get(u'_whitespace').callprop(u'getNewlinesBefore', var.get(u'comment')) if var.get(u"this").get(u'_whitespace') else Js(0.0))) + if (var.get(u"this").callprop(u'endsWith', Js(u'[')).neg() and var.get(u"this").callprop(u'endsWith', Js(u'{')).neg()): + var.get(u"this").callprop(u'space') + var.put(u'val', (((Js(u'//')+var.get(u'comment').get(u'value'))+Js(u'\n')) if PyJsStrictEq(var.get(u'comment').get(u'type'),Js(u'CommentLine')) else ((Js(u'/*')+var.get(u'comment').get(u'value'))+Js(u'*/')))) + if (PyJsStrictEq(var.get(u'comment').get(u'type'),Js(u'CommentBlock')) and var.get(u"this").get(u'format').get(u'indent').get(u'adjustMultilineComment')): + var.put(u'offset', (var.get(u'comment').get(u'loc') and var.get(u'comment').get(u'loc').get(u'start').get(u'column'))) + if var.get(u'offset'): + var.put(u'newlineRegex', var.get(u'RegExp').create(((Js(u'\\n\\s{1,')+var.get(u'offset'))+Js(u'}')), Js(u'g'))) + var.put(u'val', var.get(u'val').callprop(u'replace', var.get(u'newlineRegex'), Js(u'\n'))) + var.put(u'indentSize', var.get(u'Math').callprop(u'max', var.get(u"this").callprop(u'_getIndent').get(u'length'), var.get(u"this").get(u'_buf').callprop(u'getCurrentColumn'))) + var.put(u'val', var.get(u'val').callprop(u'replace', JsRegExp(u'/\\n(?!$)/g'), (Js(u'\n')+PyJsComma(Js(0.0),var.get(u'_repeat2').get(u'default'))(Js(u' '), var.get(u'indentSize'))))) + @Js + def PyJs_anonymous_633_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'_this3').callprop(u'_append', var.get(u'val')) + PyJs_anonymous_633_._set_name(u'anonymous') + var.get(u"this").callprop(u'withSource', Js(u'start'), var.get(u'comment').get(u'loc'), PyJs_anonymous_633_) + var.get(u"this").callprop(u'newline', ((var.get(u"this").get(u'_whitespace').callprop(u'getNewlinesAfter', var.get(u'comment')) if var.get(u"this").get(u'_whitespace') else Js(0.0))+((-Js(1.0)) if PyJsStrictEq(var.get(u'comment').get(u'type'),Js(u'CommentLine')) else Js(0.0)))) + PyJs__printComment_632_._set_name(u'_printComment') + var.get(u'Printer').get(u'prototype').put(u'_printComment', PyJs__printComment_632_) + @Js + def PyJs__printComments_634_(comments, this, arguments, var=var): + var = Scope({u'this':this, u'_printComments':PyJs__printComments_634_, u'arguments':arguments, u'comments':comments}, var) + var.registers([u'_isArray', u'_iterator', u'comments', u'_i', u'_ref', u'_comment3']) + if (var.get(u'comments').neg() or var.get(u'comments').get(u'length').neg()): + return var.get('undefined') + #for JS loop + var.put(u'_iterator', var.get(u'comments')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'_comment3', var.get(u'_ref')) + var.get(u"this").callprop(u'_printComment', var.get(u'_comment3')) + + PyJs__printComments_634_._set_name(u'_printComments') + var.get(u'Printer').get(u'prototype').put(u'_printComments', PyJs__printComments_634_) + return var.get(u'Printer') + PyJs_anonymous_579_._set_name(u'anonymous') + var.put(u'Printer', PyJs_anonymous_579_()) + var.get(u'exports').put(u'default', var.get(u'Printer')) + pass + var.put(u'_arr', Js([var.get(u'require')(Js(u'./generators/template-literals')), var.get(u'require')(Js(u'./generators/expressions')), var.get(u'require')(Js(u'./generators/statements')), var.get(u'require')(Js(u'./generators/classes')), var.get(u'require')(Js(u'./generators/methods')), var.get(u'require')(Js(u'./generators/modules')), var.get(u'require')(Js(u'./generators/types')), var.get(u'require')(Js(u'./generators/flow')), var.get(u'require')(Js(u'./generators/base')), var.get(u'require')(Js(u'./generators/jsx'))])) + #for JS loop + var.put(u'_i2', Js(0.0)) + while (var.get(u'_i2')=Js(0.0)): + while (var.get(u'index') and PyJsStrictEq(var.get(u'node').get(u'start'),var.get(u'tokens').get((var.get(u'index')-Js(1.0))).get(u'start'))): + var.put(u'index',Js(var.get(u'index').to_number())-Js(1)) + var.put(u'startToken', var.get(u'tokens').get((var.get(u'index')-Js(1.0)))) + var.put(u'endToken', var.get(u'tokens').get(var.get(u'index'))) + return var.get(u"this").callprop(u'_getNewlinesBetween', var.get(u'startToken'), var.get(u'endToken')) + PyJs_getNewlinesBefore_651_._set_name(u'getNewlinesBefore') + var.get(u'Whitespace').get(u'prototype').put(u'getNewlinesBefore', PyJs_getNewlinesBefore_651_) + @Js + def PyJs_getNewlinesAfter_653_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'getNewlinesAfter':PyJs_getNewlinesAfter_653_}, var) + var.registers([u'tokens', u'startToken', u'node', u'endToken', u'index']) + var.put(u'startToken', PyJsComma(Js(0.0), Js(None))) + var.put(u'endToken', PyJsComma(Js(0.0), Js(None))) + var.put(u'tokens', var.get(u"this").get(u'tokens')) + @Js + def PyJs_anonymous_654_(token, this, arguments, var=var): + var = Scope({u'this':this, u'token':token, u'arguments':arguments}, var) + var.registers([u'token']) + return (var.get(u'token').get(u'end')-var.get(u'node').get(u'end')) + PyJs_anonymous_654_._set_name(u'anonymous') + var.put(u'index', var.get(u"this").callprop(u'_findToken', PyJs_anonymous_654_, Js(0.0), var.get(u'tokens').get(u'length'))) + if (var.get(u'index')>=Js(0.0)): + while (var.get(u'index') and PyJsStrictEq(var.get(u'node').get(u'end'),var.get(u'tokens').get((var.get(u'index')-Js(1.0))).get(u'end'))): + var.put(u'index',Js(var.get(u'index').to_number())-Js(1)) + var.put(u'startToken', var.get(u'tokens').get(var.get(u'index'))) + var.put(u'endToken', var.get(u'tokens').get((var.get(u'index')+Js(1.0)))) + if PyJsStrictEq(var.get(u'endToken').get(u'type').get(u'label'),Js(u',')): + var.put(u'endToken', var.get(u'tokens').get((var.get(u'index')+Js(2.0)))) + if (var.get(u'endToken') and PyJsStrictEq(var.get(u'endToken').get(u'type').get(u'label'),Js(u'eof'))): + return Js(1.0) + else: + return var.get(u"this").callprop(u'_getNewlinesBetween', var.get(u'startToken'), var.get(u'endToken')) + PyJs_getNewlinesAfter_653_._set_name(u'getNewlinesAfter') + var.get(u'Whitespace').get(u'prototype').put(u'getNewlinesAfter', PyJs_getNewlinesAfter_653_) + @Js + def PyJs__getNewlinesBetween_655_(startToken, endToken, this, arguments, var=var): + var = Scope({u'this':this, u'startToken':startToken, u'arguments':arguments, u'endToken':endToken, u'_getNewlinesBetween':PyJs__getNewlinesBetween_655_}, var) + var.registers([u'end', u'startToken', u'lines', u'start', u'line', u'endToken']) + if (var.get(u'endToken').neg() or var.get(u'endToken').get(u'loc').neg()): + return Js(0.0) + var.put(u'start', (var.get(u'startToken').get(u'loc').get(u'end').get(u'line') if var.get(u'startToken') else Js(1.0))) + var.put(u'end', var.get(u'endToken').get(u'loc').get(u'start').get(u'line')) + var.put(u'lines', Js(0.0)) + #for JS loop + var.put(u'line', var.get(u'start')) + while (var.get(u'line')=var.get(u'end')): + return (-Js(1.0)) + var.put(u'middle', PyJsBshift((var.get(u'start')+var.get(u'end')),Js(1.0))) + var.put(u'match', var.get(u'test')(var.get(u"this").get(u'tokens').get(var.get(u'middle')))) + if (var.get(u'match')Js(0.0)): + return var.get(u"this").callprop(u'_findToken', var.get(u'test'), var.get(u'start'), var.get(u'middle')) + else: + if PyJsStrictEq(var.get(u'match'),Js(0.0)): + return var.get(u'middle') + return (-Js(1.0)) + PyJs__findToken_656_._set_name(u'_findToken') + var.get(u'Whitespace').get(u'prototype').put(u'_findToken', PyJs__findToken_656_) + return var.get(u'Whitespace') + PyJs_anonymous_649_._set_name(u'anonymous') + var.put(u'Whitespace', PyJs_anonymous_649_()) + var.get(u'exports').put(u'default', var.get(u'Whitespace')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_647_._set_name(u'anonymous') +PyJs_Object_657_ = Js({u'babel-runtime/helpers/classCallCheck':Js(110.0)}) +@Js +def PyJs_anonymous_658_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_interopRequireWildcard', u'visitor', u'require', u'_babelTypes', u'module', u'_babelHelperHoistVariables', u't', u'_babelHelperHoistVariables2', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_664_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_664_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_663_ = Js({}) + var.put(u'newObj', PyJs_Object_663_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_659_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'node', u'container', u'args', u'state', u'call', u'path', u'scope', u'callee']) + var.put(u'scope', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else var.get(u'path').get(u'scope'))) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'container', var.get(u't').callprop(u'functionExpression', var.get(u"null"), Js([]), var.get(u'node').get(u'body'), var.get(u'node').get(u'generator'), var.get(u'node').get(u'async'))) + var.put(u'callee', var.get(u'container')) + var.put(u'args', Js([])) + @Js + def PyJs_anonymous_660_(id, this, arguments, var=var): + var = Scope({u'this':this, u'id':id, u'arguments':arguments}, var) + var.registers([u'id']) + PyJs_Object_661_ = Js({u'id':var.get(u'id')}) + return var.get(u'scope').callprop(u'push', PyJs_Object_661_) + PyJs_anonymous_660_._set_name(u'anonymous') + PyJsComma(Js(0.0),var.get(u'_babelHelperHoistVariables2').get(u'default'))(var.get(u'path'), PyJs_anonymous_660_) + PyJs_Object_662_ = Js({u'foundThis':Js(False),u'foundArguments':Js(False)}) + var.put(u'state', PyJs_Object_662_) + var.get(u'path').callprop(u'traverse', var.get(u'visitor'), var.get(u'state')) + if var.get(u'state').get(u'foundArguments'): + var.put(u'callee', var.get(u't').callprop(u'memberExpression', var.get(u'container'), var.get(u't').callprop(u'identifier', Js(u'apply')))) + var.put(u'args', Js([])) + if var.get(u'state').get(u'foundThis'): + var.get(u'args').callprop(u'push', var.get(u't').callprop(u'thisExpression')) + if var.get(u'state').get(u'foundArguments'): + if var.get(u'state').get(u'foundThis').neg(): + var.get(u'args').callprop(u'push', var.get(u't').callprop(u'nullLiteral')) + var.get(u'args').callprop(u'push', var.get(u't').callprop(u'identifier', Js(u'arguments'))) + var.put(u'call', var.get(u't').callprop(u'callExpression', var.get(u'callee'), var.get(u'args'))) + if var.get(u'node').get(u'generator'): + var.put(u'call', var.get(u't').callprop(u'yieldExpression', var.get(u'call'), var.get(u'true'))) + return var.get(u't').callprop(u'returnStatement', var.get(u'call')) + PyJs_anonymous_659_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_659_) + var.put(u'_babelHelperHoistVariables', var.get(u'require')(Js(u'babel-helper-hoist-variables'))) + var.put(u'_babelHelperHoistVariables2', var.get(u'_interopRequireDefault')(var.get(u'_babelHelperHoistVariables'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + @Js + def PyJs_enter_666_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'enter':PyJs_enter_666_}, var) + var.registers([u'path', u'state']) + if var.get(u'path').callprop(u'isThisExpression'): + var.get(u'state').put(u'foundThis', var.get(u'true')) + PyJs_Object_667_ = Js({u'name':Js(u'arguments')}) + if var.get(u'path').callprop(u'isReferencedIdentifier', PyJs_Object_667_): + var.get(u'state').put(u'foundArguments', var.get(u'true')) + PyJs_enter_666_._set_name(u'enter') + @Js + def PyJs_Function_668_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'Function':PyJs_Function_668_, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'path').callprop(u'skip') + PyJs_Function_668_._set_name(u'Function') + PyJs_Object_665_ = Js({u'enter':PyJs_enter_666_,u'Function':PyJs_Function_668_}) + var.put(u'visitor', PyJs_Object_665_) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_658_._set_name(u'anonymous') +PyJs_Object_669_ = Js({u'babel-helper-hoist-variables':Js(51.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_670_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'toDefineObject', u'exports', u'toComputedObjectFromClass', u'_each', u'_interopRequireWildcard', u'_babelHelperFunctionName', u'require', u'_babelTypes', u'_has2', u'_has', u'hasComputed', u'push', u'module', u'_each2', u't', u'_babelHelperFunctionName2', u'_interopRequireDefault', u'toKind', u'toClassObject']) + @Js + def PyJsHoisted_toDefineObject_(mutatorMap, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'mutatorMap':mutatorMap}, var) + var.registers([u'mutatorMap']) + @Js + def PyJs_anonymous_678_(map, this, arguments, var=var): + var = Scope({u'this':this, u'map':map, u'arguments':arguments}, var) + var.registers([u'map']) + if var.get(u'map').get(u'value'): + var.get(u'map').put(u'writable', var.get(u't').callprop(u'booleanLiteral', var.get(u'true'))) + var.get(u'map').put(u'configurable', var.get(u't').callprop(u'booleanLiteral', var.get(u'true'))) + var.get(u'map').put(u'enumerable', var.get(u't').callprop(u'booleanLiteral', var.get(u'true'))) + PyJs_anonymous_678_._set_name(u'anonymous') + PyJsComma(Js(0.0),var.get(u'_each2').get(u'default'))(var.get(u'mutatorMap'), PyJs_anonymous_678_) + return var.get(u'toClassObject')(var.get(u'mutatorMap')) + PyJsHoisted_toDefineObject_.func_name = u'toDefineObject' + var.put(u'toDefineObject', PyJsHoisted_toDefineObject_) + @Js + def PyJsHoisted_toComputedObjectFromClass_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'i', u'obj', u'objExpr', u'val', u'prop']) + var.put(u'objExpr', var.get(u't').callprop(u'arrayExpression', Js([]))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else Js(u'var'))) + PyJs_Object_696_ = Js({u'kind':var.get(u'kind'),u'emit':var.get(u'emit')}) + var.get(u'path').callprop(u'traverse', var.get(u'visitor'), PyJs_Object_696_) + PyJs_anonymous_695_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_695_) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + @Js + def PyJs_Scope_700_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'Scope':PyJs_Scope_700_}, var) + var.registers([u'path', u'state']) + if PyJsStrictEq(var.get(u'state').get(u'kind'),Js(u'let')): + var.get(u'path').callprop(u'skip') + PyJs_Scope_700_._set_name(u'Scope') + @Js + def PyJs_Function_701_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'Function':PyJs_Function_701_, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'path').callprop(u'skip') + PyJs_Function_701_._set_name(u'Function') + @Js + def PyJs_VariableDeclaration_702_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'VariableDeclaration':PyJs_VariableDeclaration_702_}, var) + var.registers([u'_isArray', u'_iterator', u'firstId', u'declarations', u'state', u'declar', u'_i', u'path', u'nodes', u'_ref', u'name']) + if (var.get(u'state').get(u'kind') and PyJsStrictNeq(var.get(u'path').get(u'node').get(u'kind'),var.get(u'state').get(u'kind'))): + return var.get('undefined') + var.put(u'nodes', Js([])) + var.put(u'declarations', var.get(u'path').callprop(u'get', Js(u'declarations'))) + var.put(u'firstId', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'_iterator', var.get(u'declarations')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'declar', var.get(u'_ref')) + var.put(u'firstId', var.get(u'declar').get(u'node').get(u'id')) + if var.get(u'declar').get(u'node').get(u'init'): + var.get(u'nodes').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'declar').get(u'node').get(u'id'), var.get(u'declar').get(u'node').get(u'init')))) + for PyJsTemp in var.get(u'declar').callprop(u'getBindingIdentifiers'): + var.put(u'name', PyJsTemp) + var.get(u'state').callprop(u'emit', var.get(u't').callprop(u'identifier', var.get(u'name')), var.get(u'name')) + + PyJs_Object_703_ = Js({u'left':var.get(u'path').get(u'node')}) + if var.get(u'path').get(u'parentPath').callprop(u'isFor', PyJs_Object_703_): + var.get(u'path').callprop(u'replaceWith', var.get(u'firstId')) + else: + var.get(u'path').callprop(u'replaceWithMultiple', var.get(u'nodes')) + PyJs_VariableDeclaration_702_._set_name(u'VariableDeclaration') + PyJs_Object_699_ = Js({u'Scope':PyJs_Scope_700_,u'Function':PyJs_Function_701_,u'VariableDeclaration':PyJs_VariableDeclaration_702_}) + var.put(u'visitor', PyJs_Object_699_) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_694_._set_name(u'anonymous') +PyJs_Object_704_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_705_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_interopRequireWildcard', u'require', u'_babelTypes', u'module', u't']) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_708_ = Js({}) + var.put(u'newObj', PyJs_Object_708_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_706_(callee, thisNode, args, this, arguments, var=var): + var = Scope({u'thisNode':thisNode, u'this':this, u'args':args, u'callee':callee, u'arguments':arguments}, var) + var.registers([u'thisNode', u'args', u'callee']) + PyJs_Object_707_ = Js({u'name':Js(u'arguments')}) + if ((PyJsStrictEq(var.get(u'args').get(u'length'),Js(1.0)) and var.get(u't').callprop(u'isSpreadElement', var.get(u'args').get(u'0'))) and var.get(u't').callprop(u'isIdentifier', var.get(u'args').get(u'0').get(u'argument'), PyJs_Object_707_)): + return var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u'callee'), var.get(u't').callprop(u'identifier', Js(u'apply'))), Js([var.get(u'thisNode'), var.get(u'args').get(u'0').get(u'argument')])) + else: + return var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u'callee'), var.get(u't').callprop(u'identifier', Js(u'call'))), Js([var.get(u'thisNode')]).callprop(u'concat', var.get(u'args'))) + PyJs_anonymous_706_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_706_) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_705_._set_name(u'anonymous') +PyJs_Object_709_ = Js({u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_710_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'pullFlag', u'_interopRequireWildcard', u'_pull', u'is', u'_babelTypes', u'module', u'_pull2', u't', u'_interopRequireDefault', u'require']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_712_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_712_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_is_(node, flag, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'flag':flag, u'arguments':arguments}, var) + var.registers([u'node', u'flag']) + return (var.get(u't').callprop(u'isRegExpLiteral', var.get(u'node')) and (var.get(u'node').get(u'flags').callprop(u'indexOf', var.get(u'flag'))>=Js(0.0))) + PyJsHoisted_is_.func_name = u'is' + var.put(u'is', PyJsHoisted_is_) + @Js + def PyJsHoisted_pullFlag_(node, flag, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'flag':flag, u'arguments':arguments}, var) + var.registers([u'node', u'flag', u'flags']) + var.put(u'flags', var.get(u'node').get(u'flags').callprop(u'split', Js(u''))) + if (var.get(u'node').get(u'flags').callprop(u'indexOf', var.get(u'flag'))Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else Js(False))) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'ReplaceSupers')) + var.get(u"this").put(u'forceSuperMemoisation', var.get(u'opts').get(u'forceSuperMemoisation')) + var.get(u"this").put(u'methodPath', var.get(u'opts').get(u'methodPath')) + var.get(u"this").put(u'methodNode', var.get(u'opts').get(u'methodNode')) + var.get(u"this").put(u'superRef', var.get(u'opts').get(u'superRef')) + var.get(u"this").put(u'isStatic', var.get(u'opts').get(u'isStatic')) + var.get(u"this").put(u'hasSuper', Js(False)) + var.get(u"this").put(u'inClass', var.get(u'inClass')) + var.get(u"this").put(u'isLoose', var.get(u'opts').get(u'isLoose')) + var.get(u"this").put(u'scope', var.get(u"this").get(u'methodPath').get(u'scope')) + var.get(u"this").put(u'file', var.get(u'opts').get(u'file')) + var.get(u"this").put(u'opts', var.get(u'opts')) + var.get(u"this").put(u'bareSupers', Js([])) + var.get(u"this").put(u'returns', Js([])) + var.get(u"this").put(u'thises', Js([])) + PyJsHoisted_ReplaceSupers_.func_name = u'ReplaceSupers' + var.put(u'ReplaceSupers', PyJsHoisted_ReplaceSupers_) + pass + @Js + def PyJs_getObjectRef_726_(this, arguments, var=var): + var = Scope({u'this':this, u'getObjectRef':PyJs_getObjectRef_726_, u'arguments':arguments}, var) + var.registers([]) + return (var.get(u"this").get(u'opts').get(u'objectRef') or var.get(u"this").get(u'opts').callprop(u'getObjectRef')) + PyJs_getObjectRef_726_._set_name(u'getObjectRef') + var.get(u'ReplaceSupers').get(u'prototype').put(u'getObjectRef', PyJs_getObjectRef_726_) + @Js + def PyJs_setSuperProperty_727_(property, value, isComputed, this, arguments, var=var): + var = Scope({u'setSuperProperty':PyJs_setSuperProperty_727_, u'this':this, u'value':value, u'arguments':arguments, u'property':property, u'isComputed':isComputed}, var) + var.registers([u'property', u'value', u'isComputed']) + def PyJs_LONG_728_(var=var): + return var.get(u't').callprop(u'callExpression', var.get(u"this").get(u'file').callprop(u'addHelper', Js(u'set')), Js([var.get(u'getPrototypeOfExpression')(var.get(u"this").callprop(u'getObjectRef'), var.get(u"this").get(u'isStatic')), (var.get(u'property') if var.get(u'isComputed') else var.get(u't').callprop(u'stringLiteral', var.get(u'property').get(u'name'))), var.get(u'value'), var.get(u't').callprop(u'thisExpression')])) + return PyJs_LONG_728_() + PyJs_setSuperProperty_727_._set_name(u'setSuperProperty') + var.get(u'ReplaceSupers').get(u'prototype').put(u'setSuperProperty', PyJs_setSuperProperty_727_) + @Js + def PyJs_getSuperProperty_729_(property, isComputed, this, arguments, var=var): + var = Scope({u'this':this, u'getSuperProperty':PyJs_getSuperProperty_729_, u'property':property, u'arguments':arguments, u'isComputed':isComputed}, var) + var.registers([u'property', u'isComputed']) + def PyJs_LONG_730_(var=var): + return var.get(u't').callprop(u'callExpression', var.get(u"this").get(u'file').callprop(u'addHelper', Js(u'get')), Js([var.get(u'getPrototypeOfExpression')(var.get(u"this").callprop(u'getObjectRef'), var.get(u"this").get(u'isStatic')), (var.get(u'property') if var.get(u'isComputed') else var.get(u't').callprop(u'stringLiteral', var.get(u'property').get(u'name'))), var.get(u't').callprop(u'thisExpression')])) + return PyJs_LONG_730_() + PyJs_getSuperProperty_729_._set_name(u'getSuperProperty') + var.get(u'ReplaceSupers').get(u'prototype').put(u'getSuperProperty', PyJs_getSuperProperty_729_) + @Js + def PyJs_replace_731_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'replace':PyJs_replace_731_}, var) + var.registers([]) + var.get(u"this").get(u'methodPath').callprop(u'traverse', var.get(u'visitor'), var.get(u"this")) + PyJs_replace_731_._set_name(u'replace') + var.get(u'ReplaceSupers').get(u'prototype').put(u'replace', PyJs_replace_731_) + @Js + def PyJs_getLooseSuperProperty_732_(id, parent, this, arguments, var=var): + var = Scope({u'this':this, u'getLooseSuperProperty':PyJs_getLooseSuperProperty_732_, u'id':id, u'parent':parent, u'arguments':arguments}, var) + var.registers([u'methodNode', u'superRef', u'id', u'parent']) + var.put(u'methodNode', var.get(u"this").get(u'methodNode')) + var.put(u'superRef', (var.get(u"this").get(u'superRef') or var.get(u't').callprop(u'identifier', Js(u'Function')))) + if PyJsStrictEq(var.get(u'parent').get(u'property'),var.get(u'id')): + return var.get('undefined') + else: + PyJs_Object_733_ = Js({u'callee':var.get(u'id')}) + if var.get(u't').callprop(u'isCallExpression', var.get(u'parent'), PyJs_Object_733_): + return var.get('undefined') + else: + if (var.get(u't').callprop(u'isMemberExpression', var.get(u'parent')) and var.get(u'methodNode').get(u'static').neg()): + return var.get(u't').callprop(u'memberExpression', var.get(u'superRef'), var.get(u't').callprop(u'identifier', Js(u'prototype'))) + else: + return var.get(u'superRef') + PyJs_getLooseSuperProperty_732_._set_name(u'getLooseSuperProperty') + var.get(u'ReplaceSupers').get(u'prototype').put(u'getLooseSuperProperty', PyJs_getLooseSuperProperty_732_) + @Js + def PyJs_looseHandle_734_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'looseHandle':PyJs_looseHandle_734_}, var) + var.registers([u'node', u'path', u'callee']) + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'path').callprop(u'isSuper'): + return var.get(u"this").callprop(u'getLooseSuperProperty', var.get(u'node'), var.get(u'path').get(u'parent')) + else: + if var.get(u'path').callprop(u'isCallExpression'): + var.put(u'callee', var.get(u'node').get(u'callee')) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'callee')).neg(): + return var.get('undefined') + if var.get(u't').callprop(u'isSuper', var.get(u'callee').get(u'object')).neg(): + return var.get('undefined') + var.get(u't').callprop(u'appendToMemberExpression', var.get(u'callee'), var.get(u't').callprop(u'identifier', Js(u'call'))) + var.get(u'node').get(u'arguments').callprop(u'unshift', var.get(u't').callprop(u'thisExpression')) + return var.get(u'true') + PyJs_looseHandle_734_._set_name(u'looseHandle') + var.get(u'ReplaceSupers').get(u'prototype').put(u'looseHandle', PyJs_looseHandle_734_) + @Js + def PyJs_specHandleAssignmentExpression_735_(ref, path, node, this, arguments, var=var): + var = Scope({u'node':node, u'specHandleAssignmentExpression':PyJs_specHandleAssignmentExpression_735_, u'this':this, u'arguments':arguments, u'path':path, u'ref':ref}, var) + var.registers([u'node', u'path', u'ref']) + if PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'=')): + return var.get(u"this").callprop(u'setSuperProperty', var.get(u'node').get(u'left').get(u'property'), var.get(u'node').get(u'right'), var.get(u'node').get(u'left').get(u'computed')) + else: + var.put(u'ref', (var.get(u'ref') or var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', Js(u'ref')))) + return Js([var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'ref'), var.get(u'node').get(u'left'))])), var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'node').get(u'left'), var.get(u't').callprop(u'binaryExpression', var.get(u'node').get(u'operator').get(u'0'), var.get(u'ref'), var.get(u'node').get(u'right'))))]) + PyJs_specHandleAssignmentExpression_735_._set_name(u'specHandleAssignmentExpression') + var.get(u'ReplaceSupers').get(u'prototype').put(u'specHandleAssignmentExpression', PyJs_specHandleAssignmentExpression_735_) + @Js + def PyJs_specHandle_736_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'specHandle':PyJs_specHandle_736_}, var) + var.registers([u'node', u'binary', u'superProperty', u'computed', u'parent', u'ref', u'args', u'path', u'property', u'callee']) + var.put(u'property', PyJsComma(Js(0.0), Js(None))) + var.put(u'computed', PyJsComma(Js(0.0), Js(None))) + var.put(u'args', PyJsComma(Js(0.0), Js(None))) + var.put(u'parent', var.get(u'path').get(u'parent')) + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'isIllegalBareSuper')(var.get(u'node'), var.get(u'parent')): + PyJsTempException = JsToPyException(var.get(u'path').callprop(u'buildCodeFrameError', var.get(u'messages').callprop(u'get', Js(u'classesIllegalBareSuper')))) + raise PyJsTempException + if var.get(u't').callprop(u'isCallExpression', var.get(u'node')): + var.put(u'callee', var.get(u'node').get(u'callee')) + if var.get(u't').callprop(u'isSuper', var.get(u'callee')): + return var.get('undefined') + else: + if var.get(u'isMemberExpressionSuper')(var.get(u'callee')): + var.put(u'property', var.get(u'callee').get(u'property')) + var.put(u'computed', var.get(u'callee').get(u'computed')) + var.put(u'args', var.get(u'node').get(u'arguments')) + else: + if (var.get(u't').callprop(u'isMemberExpression', var.get(u'node')) and var.get(u't').callprop(u'isSuper', var.get(u'node').get(u'object'))): + var.put(u'property', var.get(u'node').get(u'property')) + var.put(u'computed', var.get(u'node').get(u'computed')) + else: + if (var.get(u't').callprop(u'isUpdateExpression', var.get(u'node')) and var.get(u'isMemberExpressionSuper')(var.get(u'node').get(u'argument'))): + var.put(u'binary', var.get(u't').callprop(u'binaryExpression', var.get(u'node').get(u'operator').get(u'0'), var.get(u'node').get(u'argument'), var.get(u't').callprop(u'numericLiteral', Js(1.0)))) + if var.get(u'node').get(u'prefix'): + return var.get(u"this").callprop(u'specHandleAssignmentExpression', var.get(u"null"), var.get(u'path'), var.get(u'binary')) + else: + var.put(u'ref', var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', Js(u'ref'))) + return var.get(u"this").callprop(u'specHandleAssignmentExpression', var.get(u'ref'), var.get(u'path'), var.get(u'binary')).callprop(u'concat', var.get(u't').callprop(u'expressionStatement', var.get(u'ref'))) + else: + if (var.get(u't').callprop(u'isAssignmentExpression', var.get(u'node')) and var.get(u'isMemberExpressionSuper')(var.get(u'node').get(u'left'))): + return var.get(u"this").callprop(u'specHandleAssignmentExpression', var.get(u"null"), var.get(u'path'), var.get(u'node')) + if var.get(u'property').neg(): + return var.get('undefined') + var.put(u'superProperty', var.get(u"this").callprop(u'getSuperProperty', var.get(u'property'), var.get(u'computed'))) + if var.get(u'args'): + return var.get(u"this").callprop(u'optimiseCall', var.get(u'superProperty'), var.get(u'args')) + else: + return var.get(u'superProperty') + PyJs_specHandle_736_._set_name(u'specHandle') + var.get(u'ReplaceSupers').get(u'prototype').put(u'specHandle', PyJs_specHandle_736_) + @Js + def PyJs_optimiseCall_737_(callee, args, this, arguments, var=var): + var = Scope({u'this':this, u'args':args, u'callee':callee, u'arguments':arguments, u'optimiseCall':PyJs_optimiseCall_737_}, var) + var.registers([u'thisNode', u'args', u'callee']) + var.put(u'thisNode', var.get(u't').callprop(u'thisExpression')) + var.get(u'thisNode').put(var.get(u'HARDCORE_THIS_REF'), var.get(u'true')) + return PyJsComma(Js(0.0),var.get(u'_babelHelperOptimiseCallExpression2').get(u'default'))(var.get(u'callee'), var.get(u'thisNode'), var.get(u'args')) + PyJs_optimiseCall_737_._set_name(u'optimiseCall') + var.get(u'ReplaceSupers').get(u'prototype').put(u'optimiseCall', PyJs_optimiseCall_737_) + return var.get(u'ReplaceSupers') + PyJs_anonymous_725_._set_name(u'anonymous') + var.put(u'ReplaceSupers', PyJs_anonymous_725_()) + var.get(u'exports').put(u'default', var.get(u'ReplaceSupers')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_714_._set_name(u'anonymous') +PyJs_Object_738_ = Js({u'babel-helper-optimise-call-expression':Js(52.0),u'babel-messages':Js(57.0),u'babel-runtime/core-js/symbol':Js(105.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_739_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'_babelTemplate', u'module', u'helpers', u'_interopRequireDefault', u'_babelTemplate2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_740_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_740_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + var.put(u'_babelTemplate2', var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate'))) + pass + PyJs_Object_741_ = Js({}) + var.put(u'helpers', PyJs_Object_741_) + var.get(u'exports').put(u'default', var.get(u'helpers')) + def PyJs_LONG_742_(var=var): + return var.get(u'helpers').put(u'typeof', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (typeof Symbol === "function" && typeof Symbol.iterator === "symbol")\n ? function (obj) { return typeof obj; }\n : function (obj) {\n return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype\n ? "symbol"\n : typeof obj;\n };\n'))) + PyJs_LONG_742_() + def PyJs_LONG_743_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function () {\n var REACT_ELEMENT_TYPE = (typeof Symbol === "function" && Symbol.for && Symbol.for("react.element")) || 0xeac7;\n\n return function createRawReactElement (type, props, key, children) {\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n // If we\'re going to assign props.children, we create a new object now\n // to avoid mutating defaultProps.\n props = {};\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : \'\' + key,\n ref: null,\n props: props,\n _owner: null,\n };\n };\n\n })()\n')) + var.get(u'helpers').put(u'jsx', PyJs_LONG_743_()) + def PyJs_LONG_744_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (iterable) {\n if (typeof Symbol === "function") {\n if (Symbol.asyncIterator) {\n var method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n if (Symbol.iterator) {\n return iterable[Symbol.iterator]();\n }\n }\n throw new TypeError("Object is not async iterable");\n })\n')) + var.get(u'helpers').put(u'asyncIterator', PyJs_LONG_744_()) + def PyJs_LONG_745_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function () {\n function AwaitValue(value) {\n this.value = value;\n }\n\n function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg)\n var value = result.value;\n if (value instanceof AwaitValue) {\n Promise.resolve(value.value).then(\n function (arg) { resume("next", arg); },\n function (arg) { resume("throw", arg); });\n } else {\n settle(result.done ? "return" : "normal", result.value);\n }\n } catch (err) {\n settle("throw", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case "return":\n front.resolve({ value: value, done: true });\n break;\n case "throw":\n front.reject(value);\n break;\n default:\n front.resolve({ value: value, done: false });\n break;\n }\n\n front = front.next;\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n // Hide "return" method if generator return is not supported\n if (typeof gen.return !== "function") {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === "function" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; };\n }\n\n AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); };\n AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); };\n AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); };\n\n return {\n wrap: function (fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n },\n await: function (value) {\n return new AwaitValue(value);\n }\n };\n\n })()\n')) + var.get(u'helpers').put(u'asyncGenerator', PyJs_LONG_745_()) + def PyJs_LONG_746_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (inner, awaitWrap) {\n var iter = {}, waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function (resolve) { resolve(inner[key](value)); });\n return { done: false, value: awaitWrap(value) };\n };\n\n if (typeof Symbol === "function" && Symbol.iterator) {\n iter[Symbol.iterator] = function () { return this; };\n }\n\n iter.next = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n return pump("next", value);\n };\n\n if (typeof inner.throw === "function") {\n iter.throw = function (value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n return pump("throw", value);\n };\n }\n\n if (typeof inner.return === "function") {\n iter.return = function (value) {\n return pump("return", value);\n };\n }\n\n return iter;\n })\n')) + var.get(u'helpers').put(u'asyncGeneratorDelegate', PyJs_LONG_746_()) + def PyJs_LONG_747_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new Promise(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return Promise.resolve(value).then(function (value) {\n step("next", value);\n }, function (err) {\n step("throw", err);\n });\n }\n }\n\n return step("next");\n });\n };\n })\n')) + var.get(u'helpers').put(u'asyncToGenerator', PyJs_LONG_747_()) + var.get(u'helpers').put(u'classCallCheck', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError("Cannot call a class as a function");\n }\n });\n'))) + def PyJs_LONG_748_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i ++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ("value" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n })()\n')) + var.get(u'helpers').put(u'createClass', PyJs_LONG_748_()) + var.get(u'helpers').put(u'defineEnumerableProperties', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ("value" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n return obj;\n })\n'))) + def PyJs_LONG_749_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n })\n')) + var.get(u'helpers').put(u'defaults', PyJs_LONG_749_()) + def PyJs_LONG_750_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (obj, key, value) {\n // Shortcircuit the slow defineProperty path when possible.\n // We are trying to avoid issues where setters defined on the\n // prototype cause side effects under the fast path of simple\n // assignment. By checking for existence of the property with\n // the in operator, we can optimize most of this overhead away.\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n });\n')) + var.get(u'helpers').put(u'defineProperty', PyJs_LONG_750_()) + def PyJs_LONG_751_(var=var): + return var.get(u'helpers').put(u'extends', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n Object.assign || (function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n })\n'))) + PyJs_LONG_751_() + def PyJs_LONG_752_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if ("value" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n });\n')) + var.get(u'helpers').put(u'get', PyJs_LONG_752_()) + def PyJs_LONG_753_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (subClass, superClass) {\n if (typeof superClass !== "function" && superClass !== null) {\n throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n })\n')) + var.get(u'helpers').put(u'inherits', PyJs_LONG_753_()) + var.get(u'helpers').put(u'instanceof', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (left, right) {\n if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n });\n'))) + var.get(u'helpers').put(u'interopRequireDefault', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n })\n'))) + def PyJs_LONG_754_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n newObj.default = obj;\n return newObj;\n }\n })\n')) + var.get(u'helpers').put(u'interopRequireWildcard', PyJs_LONG_754_()) + var.get(u'helpers').put(u'newArrowCheck', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError("Cannot instantiate an arrow function");\n }\n });\n'))) + var.get(u'helpers').put(u'objectDestructuringEmpty', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (obj) {\n if (obj == null) throw new TypeError("Cannot destructure undefined");\n });\n'))) + var.get(u'helpers').put(u'objectWithoutProperties', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n })\n'))) + var.get(u'helpers').put(u'possibleConstructorReturn', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (self, call) {\n if (!self) {\n throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n }\n return call && (typeof call === "object" || typeof call === "function") ? call : self;\n });\n'))) + var.get(u'helpers').put(u'selfGlobal', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n typeof global === "undefined" ? self : global\n'))) + def PyJs_LONG_755_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if ("value" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n });\n')) + var.get(u'helpers').put(u'set', PyJs_LONG_755_()) + def PyJs_LONG_756_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function () {\n // Broken out into a separate function to avoid deoptimizations due to the try/catch for the\n // array iterator case.\n function sliceIterator(arr, i) {\n // this is an expanded form of `for...of` that properly supports abrupt completions of\n // iterators etc. variable names have been minimised to reduce the size of this massive\n // helper. sometimes spec compliancy is annoying :(\n //\n // _n = _iteratorNormalCompletion\n // _d = _didIteratorError\n // _e = _iteratorError\n // _i = _iterator\n // _s = _step\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i["return"]) _i["return"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError("Invalid attempt to destructure non-iterable instance");\n }\n };\n })();\n')) + var.get(u'helpers').put(u'slicedToArray', PyJs_LONG_756_()) + def PyJs_LONG_757_(var=var): + return PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n var _arr = [];\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n if (i && _arr.length === i) break;\n }\n return _arr;\n } else {\n throw new TypeError("Invalid attempt to destructure non-iterable instance");\n }\n });\n')) + var.get(u'helpers').put(u'slicedToArrayLoose', PyJs_LONG_757_()) + var.get(u'helpers').put(u'taggedTemplateLiteral', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: { value: Object.freeze(raw) }\n }));\n });\n'))) + var.get(u'helpers').put(u'taggedTemplateLiteralLoose', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (strings, raw) {\n strings.raw = raw;\n return strings;\n });\n'))) + var.get(u'helpers').put(u'temporalRef', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (val, name, undef) {\n if (val === undef) {\n throw new ReferenceError(name + " is not defined - temporal dead zone");\n } else {\n return val;\n }\n })\n'))) + var.get(u'helpers').put(u'temporalUndefined', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n ({})\n'))) + var.get(u'helpers').put(u'toArray', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n });\n'))) + var.get(u'helpers').put(u'toConsumableArray', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n return arr2;\n } else {\n return Array.from(arr);\n }\n });\n'))) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_739_._set_name(u'anonymous') +PyJs_Object_758_ = Js({u'babel-template':Js(221.0)}) +@Js +def PyJs_anonymous_759_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'get', u'_helpers2', u'require', u'list', u'_helpers', u'_keys2', u'_keys', u'module', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_760_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_760_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_get_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name', u'fn']) + var.put(u'fn', var.get(u'_helpers2').get(u'default').get(var.get(u'name'))) + if var.get(u'fn').neg(): + PyJsTempException = JsToPyException(var.get(u'ReferenceError').create((Js(u'Unknown helper ')+var.get(u'name')))) + raise PyJsTempException + return var.get(u'fn')().get(u'expression') + PyJsHoisted_get_.func_name = u'get' + var.put(u'get', PyJsHoisted_get_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'list', var.get(u'undefined')) + var.put(u'_keys', var.get(u'require')(Js(u'babel-runtime/core-js/object/keys'))) + var.put(u'_keys2', var.get(u'_interopRequireDefault')(var.get(u'_keys'))) + var.get(u'exports').put(u'get', var.get(u'get')) + var.put(u'_helpers', var.get(u'require')(Js(u'./helpers'))) + var.put(u'_helpers2', var.get(u'_interopRequireDefault')(var.get(u'_helpers'))) + pass + pass + @Js + def PyJs_anonymous_761_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + return PyJsStrictNeq(var.get(u'name'),Js(u'__esModule')) + PyJs_anonymous_761_._set_name(u'anonymous') + @Js + def PyJs_anonymous_762_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + return (var.get(u'name').callprop(u'slice', Js(1.0)) if PyJsStrictEq(var.get(u'name').get(u'0'),Js(u'_')) else var.get(u'name')) + PyJs_anonymous_762_._set_name(u'anonymous') + var.put(u'list', var.get(u'exports').put(u'list', PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u'_helpers2').get(u'default')).callprop(u'map', PyJs_anonymous_762_).callprop(u'filter', PyJs_anonymous_761_))) + var.get(u'exports').put(u'default', var.get(u'get')) +PyJs_anonymous_759_._set_name(u'anonymous') +PyJs_Object_763_ = Js({u'./helpers':Js(55.0),u'babel-runtime/core-js/object/keys':Js(103.0)}) +@Js +def PyJs_anonymous_764_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_stringify2', u'_interopRequireWildcard', u'get', u'require', u'parseArgs', u'MESSAGES', u'_util', u'util', u'_stringify', u'module', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_766_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_766_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_parseArgs_(args, this, arguments, var=var): + var = Scope({u'this':this, u'args':args, u'arguments':arguments}, var) + var.registers([u'args']) + @Js + def PyJs_anonymous_769_(val, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'val':val}, var) + var.registers([u'val']) + if ((var.get(u'val')!=var.get(u"null")) and var.get(u'val').get(u'inspect')): + return var.get(u'val').callprop(u'inspect') + else: + try: + return (PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'val')) or (var.get(u'val')+Js(u''))) + except PyJsException as PyJsTempException: + PyJsHolder_65_98138155 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + return var.get(u'util').callprop(u'inspect', var.get(u'val')) + finally: + if PyJsHolder_65_98138155 is not None: + var.own[u'e'] = PyJsHolder_65_98138155 + else: + del var.own[u'e'] + del PyJsHolder_65_98138155 + PyJs_anonymous_769_._set_name(u'anonymous') + return var.get(u'args').callprop(u'map', PyJs_anonymous_769_) + PyJsHoisted_parseArgs_.func_name = u'parseArgs' + var.put(u'parseArgs', PyJsHoisted_parseArgs_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_765_ = Js({}) + var.put(u'newObj', PyJs_Object_765_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_get_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'_len', u'_key', u'args', u'key', u'msg']) + #for JS loop + var.put(u'_len', var.get(u'arguments').get(u'length')) + var.put(u'args', var.get(u'Array')(((var.get(u'_len')-Js(1.0)) if (var.get(u'_len')>Js(1.0)) else Js(0.0)))) + var.put(u'_key', Js(1.0)) + while (var.get(u'_key')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i').get(u'value')) + var.put(u'violation', var.get(u'_ref3')) + PyJsTempException = JsToPyException(var.get(u'violation').callprop(u'buildCodeFrameError', var.get(u'messages').callprop(u'get', Js(u'readOnly'), var.get(u'name')))) + raise PyJsTempException + + PyJs_Scope_775_._set_name(u'Scope') + PyJs_Object_774_ = Js({u'Scope':PyJs_Scope_775_}) + PyJs_Object_773_ = Js({u'visitor':PyJs_Object_774_}) + return PyJs_Object_773_ + PyJs_anonymous_772_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_772_) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_771_._set_name(u'anonymous') +PyJs_Object_777_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0)}) +@Js +def PyJs_anonymous_778_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_779_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'_ref', u't']) + var.put(u't', var.get(u'_ref').get(u'types')) + @Js + def PyJs_ArrowFunctionExpression_782_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'ArrowFunctionExpression':PyJs_ArrowFunctionExpression_782_}, var) + var.registers([u'node', u'path', u'state', u'boundThis']) + if var.get(u'state').get(u'opts').get(u'spec'): + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'node').get(u'shadow'): + return var.get('undefined') + PyJs_Object_783_ = Js({u'this':Js(False)}) + var.get(u'node').put(u'shadow', PyJs_Object_783_) + var.get(u'node').put(u'type', Js(u'FunctionExpression')) + var.put(u'boundThis', var.get(u't').callprop(u'thisExpression')) + var.get(u'boundThis').put(u'_forceShadow', var.get(u'path')) + var.get(u'path').callprop(u'ensureBlock') + var.get(u'path').callprop(u'get', Js(u'body')).callprop(u'unshiftContainer', Js(u'body'), var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'callExpression', var.get(u'state').callprop(u'addHelper', Js(u'newArrowCheck')), Js([var.get(u't').callprop(u'thisExpression'), var.get(u'boundThis')])))) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u'node'), var.get(u't').callprop(u'identifier', Js(u'bind'))), Js([var.get(u't').callprop(u'thisExpression')]))) + else: + var.get(u'path').callprop(u'arrowFunctionToShadowed') + PyJs_ArrowFunctionExpression_782_._set_name(u'ArrowFunctionExpression') + PyJs_Object_781_ = Js({u'ArrowFunctionExpression':PyJs_ArrowFunctionExpression_782_}) + PyJs_Object_780_ = Js({u'visitor':PyJs_Object_781_}) + return PyJs_Object_780_ + PyJs_anonymous_779_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_779_) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_778_._set_name(u'anonymous') +PyJs_Object_784_ = Js({}) +@Js +def PyJs_anonymous_785_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_792_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_792_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + @Js + def PyJs_anonymous_786_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'_ref', u't', u'statementList']) + @Js + def PyJsHoisted_statementList_(key, path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'key':key}, var) + var.registers([u'key', u'paths', u'_isArray', u'_iterator', u'func', u'_ref2', u'declar', u'_i', u'path', u'_path']) + var.put(u'paths', var.get(u'path').callprop(u'get', var.get(u'key'))) + #for JS loop + var.put(u'_iterator', var.get(u'paths')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i').get(u'value')) + var.put(u'_path', var.get(u'_ref2')) + var.put(u'func', var.get(u'_path').get(u'node')) + if var.get(u'_path').callprop(u'isFunctionDeclaration').neg(): + continue + var.put(u'declar', var.get(u't').callprop(u'variableDeclaration', Js(u'let'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'func').get(u'id'), var.get(u't').callprop(u'toExpression', var.get(u'func')))]))) + var.get(u'declar').put(u'_blockHoist', Js(2.0)) + var.get(u'func').put(u'id', var.get(u"null")) + var.get(u'_path').callprop(u'replaceWith', var.get(u'declar')) + + PyJsHoisted_statementList_.func_name = u'statementList' + var.put(u'statementList', PyJsHoisted_statementList_) + var.put(u't', var.get(u'_ref').get(u'types')) + pass + @Js + def PyJs_BlockStatement_789_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'BlockStatement':PyJs_BlockStatement_789_}, var) + var.registers([u'node', u'path', u'parent']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'parent', var.get(u'path').get(u'parent')) + PyJs_Object_790_ = Js({u'body':var.get(u'node')}) + if (var.get(u't').callprop(u'isFunction', var.get(u'parent'), PyJs_Object_790_) or var.get(u't').callprop(u'isExportDeclaration', var.get(u'parent'))): + return var.get('undefined') + var.get(u'statementList')(Js(u'body'), var.get(u'path')) + PyJs_BlockStatement_789_._set_name(u'BlockStatement') + @Js + def PyJs_SwitchCase_791_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'SwitchCase':PyJs_SwitchCase_791_, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'statementList')(Js(u'consequent'), var.get(u'path')) + PyJs_SwitchCase_791_._set_name(u'SwitchCase') + PyJs_Object_788_ = Js({u'BlockStatement':PyJs_BlockStatement_789_,u'SwitchCase':PyJs_SwitchCase_791_}) + PyJs_Object_787_ = Js({u'visitor':PyJs_Object_788_}) + return PyJs_Object_787_ + PyJs_anonymous_786_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_786_) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_785_._set_name(u'anonymous') +PyJs_Object_793_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0)}) +@Js +def PyJs_anonymous_794_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_symbol2', u'continuationVisitor', u'loopLabelVisitor', u'_babelTemplate', u'module', u'letReferenceFunctionVisitor', u'isVar', u'_interopRequireDefault', u'loopNodeTo', u'_extend', u'_babelTraverse', u'convertBlockScopedToVar', u'_tdz', u'BlockScoping', u'ignoreBlock', u'hoistVarDeclarationsVisitor', u'_values2', u'_extend2', u'_create2', u'buildRetCheck', u'_classCallCheck3', u'_classCallCheck2', u'_create', u'exports', u'_babelTraverse2', u'_interopRequireWildcard', u'_babelTypes', u'_symbol', u'isBlockScoped', u'loopVisitor', u'require', u'_babelTemplate2', u't', u'_values', u'letReferenceBlockVisitor']) + @Js + def PyJsHoisted_convertBlockScopedToVar_(path, node, parent, scope, this, arguments, var=var): + var = Scope({u'node':node, u'arguments':arguments, u'parent':parent, u'scope':scope, u'this':this, u'path':path}, var) + var.registers([u'node', u'name', u'moveBindingsToParent', u'i', u'binding', u'ids', u'declar', u'parent', u'parentScope', u'path', u'scope']) + var.put(u'moveBindingsToParent', (var.get(u'arguments').get(u'4') if ((var.get(u'arguments').get(u'length')>Js(4.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'4'),var.get(u'undefined'))) else Js(False))) + if var.get(u'node').neg(): + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u't').callprop(u'isFor', var.get(u'parent')).neg(): + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(0.0)): + return var.get('undefined') + var.put(u'loopText', ((var.get(u'loopText')+Js(u'|'))+var.get(u'node').get(u'label').get(u'name'))) + else: + if var.get(u'state').get(u'ignoreLabeless'): + return var.get('undefined') + if var.get(u'state').get(u'inSwitchCase'): + return var.get('undefined') + if (var.get(u't').callprop(u'isBreakStatement', var.get(u'node')) and var.get(u't').callprop(u'isSwitchCase', var.get(u'parent'))): + return var.get('undefined') + var.get(u'state').put(u'hasBreakContinue', var.get(u'true')) + var.get(u'state').get(u'map').put(var.get(u'loopText'), var.get(u'node')) + var.put(u'replace', var.get(u't').callprop(u'stringLiteral', var.get(u'loopText'))) + if var.get(u'path').callprop(u'isReturnStatement'): + var.get(u'state').put(u'hasReturn', var.get(u'true')) + var.put(u'replace', var.get(u't').callprop(u'objectExpression', Js([var.get(u't').callprop(u'objectProperty', var.get(u't').callprop(u'identifier', Js(u'v')), (var.get(u'node').get(u'argument') or var.get(u'scope').callprop(u'buildUndefinedNode')))]))) + if var.get(u'replace'): + var.put(u'replace', var.get(u't').callprop(u'returnStatement', var.get(u'replace'))) + var.get(u'replace').put(var.get(u"this").get(u'LOOP_IGNORE'), var.get(u'true')) + var.get(u'path').callprop(u'skip') + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'inherits', var.get(u'replace'), var.get(u'node'))) + PyJs_BreakStatementContinueStatementReturnStatement_820_._set_name(u'BreakStatementContinueStatementReturnStatement') + PyJs_Object_816_ = Js({u'Loop':PyJs_Loop_817_,u'Function':PyJs_Function_818_,u'SwitchCase':PyJs_SwitchCase_819_,u'BreakStatement|ContinueStatement|ReturnStatement':PyJs_BreakStatementContinueStatementReturnStatement_820_}) + var.put(u'loopVisitor', PyJs_Object_816_) + @Js + def PyJs_anonymous_821_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'BlockScoping']) + @Js + def PyJsHoisted_BlockScoping_(loopPath, blockPath, parent, scope, file, this, arguments, var=var): + var = Scope({u'arguments':arguments, u'parent':parent, u'file':file, u'blockPath':blockPath, u'this':this, u'scope':scope, u'loopPath':loopPath}, var) + var.registers([u'scope', u'blockPath', u'file', u'parent', u'loopPath']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'BlockScoping')) + var.get(u"this").put(u'parent', var.get(u'parent')) + var.get(u"this").put(u'scope', var.get(u'scope')) + var.get(u"this").put(u'file', var.get(u'file')) + var.get(u"this").put(u'blockPath', var.get(u'blockPath')) + var.get(u"this").put(u'block', var.get(u'blockPath').get(u'node')) + var.get(u"this").put(u'outsideLetReferences', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.get(u"this").put(u'hasLetReferences', Js(False)) + var.get(u"this").put(u'letReferences', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.get(u"this").put(u'body', Js([])) + if var.get(u'loopPath'): + var.get(u"this").put(u'loopParent', var.get(u'loopPath').get(u'parent')) + var.get(u"this").put(u'loopLabel', (var.get(u't').callprop(u'isLabeledStatement', var.get(u"this").get(u'loopParent')) and var.get(u"this").get(u'loopParent').get(u'label'))) + var.get(u"this").put(u'loopPath', var.get(u'loopPath')) + var.get(u"this").put(u'loop', var.get(u'loopPath').get(u'node')) + PyJsHoisted_BlockScoping_.func_name = u'BlockScoping' + var.put(u'BlockScoping', PyJsHoisted_BlockScoping_) + pass + @Js + def PyJs_run_822_(this, arguments, var=var): + var = Scope({u'this':this, u'run':PyJs_run_822_, u'arguments':arguments}, var) + var.registers([u'needsClosure', u'block']) + var.put(u'block', var.get(u"this").get(u'block')) + if var.get(u'block').get(u'_letDone'): + return var.get('undefined') + var.get(u'block').put(u'_letDone', var.get(u'true')) + var.put(u'needsClosure', var.get(u"this").callprop(u'getLetReferences')) + if (var.get(u't').callprop(u'isFunction', var.get(u"this").get(u'parent')) or var.get(u't').callprop(u'isProgram', var.get(u"this").get(u'block'))): + var.get(u"this").callprop(u'updateScopeInfo') + return var.get('undefined') + if var.get(u"this").get(u'hasLetReferences').neg(): + return var.get('undefined') + if var.get(u'needsClosure'): + var.get(u"this").callprop(u'wrapClosure') + else: + var.get(u"this").callprop(u'remap') + var.get(u"this").callprop(u'updateScopeInfo') + if (var.get(u"this").get(u'loopLabel') and var.get(u't').callprop(u'isLabeledStatement', var.get(u"this").get(u'loopParent')).neg()): + return var.get(u't').callprop(u'labeledStatement', var.get(u"this").get(u'loopLabel'), var.get(u"this").get(u'loop')) + PyJs_run_822_._set_name(u'run') + var.get(u'BlockScoping').get(u'prototype').put(u'run', PyJs_run_822_) + @Js + def PyJs_updateScopeInfo_823_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'updateScopeInfo':PyJs_updateScopeInfo_823_}, var) + var.registers([u'letRefs', u'binding', u'key', u'parentScope', u'scope', u'ref']) + var.put(u'scope', var.get(u"this").get(u'scope')) + var.put(u'parentScope', var.get(u'scope').callprop(u'getFunctionParent')) + var.put(u'letRefs', var.get(u"this").get(u'letReferences')) + for PyJsTemp in var.get(u'letRefs'): + var.put(u'key', PyJsTemp) + var.put(u'ref', var.get(u'letRefs').get(var.get(u'key'))) + var.put(u'binding', var.get(u'scope').callprop(u'getBinding', var.get(u'ref').get(u'name'))) + if var.get(u'binding').neg(): + continue + if (PyJsStrictEq(var.get(u'binding').get(u'kind'),Js(u'let')) or PyJsStrictEq(var.get(u'binding').get(u'kind'),Js(u'const'))): + var.get(u'binding').put(u'kind', Js(u'var')) + var.get(u'scope').callprop(u'moveBindingTo', var.get(u'ref').get(u'name'), var.get(u'parentScope')) + PyJs_updateScopeInfo_823_._set_name(u'updateScopeInfo') + var.get(u'BlockScoping').get(u'prototype').put(u'updateScopeInfo', PyJs_updateScopeInfo_823_) + @Js + def PyJs_remap_824_(this, arguments, var=var): + var = Scope({u'this':this, u'remap':PyJs_remap_824_, u'arguments':arguments}, var) + var.registers([u'scope', u'ref', u'key', u'letRefs']) + var.put(u'letRefs', var.get(u"this").get(u'letReferences')) + var.put(u'scope', var.get(u"this").get(u'scope')) + for PyJsTemp in var.get(u'letRefs'): + var.put(u'key', PyJsTemp) + var.put(u'ref', var.get(u'letRefs').get(var.get(u'key'))) + if (var.get(u'scope').callprop(u'parentHasBinding', var.get(u'key')) or var.get(u'scope').callprop(u'hasGlobal', var.get(u'key'))): + if var.get(u'scope').callprop(u'hasOwnBinding', var.get(u'key')): + var.get(u'scope').callprop(u'rename', var.get(u'ref').get(u'name')) + if var.get(u"this").get(u'blockPath').get(u'scope').callprop(u'hasOwnBinding', var.get(u'key')): + var.get(u"this").get(u'blockPath').get(u'scope').callprop(u'rename', var.get(u'ref').get(u'name')) + PyJs_remap_824_._set_name(u'remap') + var.get(u'BlockScoping').get(u'prototype').put(u'remap', PyJs_remap_824_) + @Js + def PyJs_wrapClosure_825_(this, arguments, var=var): + var = Scope({u'this':this, u'wrapClosure':PyJs_wrapClosure_825_, u'arguments':arguments}, var) + var.registers([u'hasYield', u'name', u'call', u'args', u'hasAsync', u'ret', u'params', u'fn', u'outsideRefs', u'isSwitch', u'ref', u'id', u'block']) + var.put(u'block', var.get(u"this").get(u'block')) + var.put(u'outsideRefs', var.get(u"this").get(u'outsideLetReferences')) + if var.get(u"this").get(u'loop'): + for PyJsTemp in var.get(u'outsideRefs'): + var.put(u'name', PyJsTemp) + var.put(u'id', var.get(u'outsideRefs').get(var.get(u'name'))) + if (var.get(u"this").get(u'scope').callprop(u'hasGlobal', var.get(u'id').get(u'name')) or var.get(u"this").get(u'scope').callprop(u'parentHasBinding', var.get(u'id').get(u'name'))): + var.get(u'outsideRefs').delete(var.get(u'id').get(u'name')) + var.get(u"this").get(u'letReferences').delete(var.get(u'id').get(u'name')) + var.get(u"this").get(u'scope').callprop(u'rename', var.get(u'id').get(u'name')) + var.get(u"this").get(u'letReferences').put(var.get(u'id').get(u'name'), var.get(u'id')) + var.get(u'outsideRefs').put(var.get(u'id').get(u'name'), var.get(u'id')) + var.get(u"this").put(u'has', var.get(u"this").callprop(u'checkLoop')) + var.get(u"this").callprop(u'hoistVarDeclarations') + var.put(u'params', PyJsComma(Js(0.0),var.get(u'_values2').get(u'default'))(var.get(u'outsideRefs'))) + var.put(u'args', PyJsComma(Js(0.0),var.get(u'_values2').get(u'default'))(var.get(u'outsideRefs'))) + var.put(u'isSwitch', var.get(u"this").get(u'blockPath').callprop(u'isSwitchStatement')) + var.put(u'fn', var.get(u't').callprop(u'functionExpression', var.get(u"null"), var.get(u'params'), var.get(u't').callprop(u'blockStatement', (Js([var.get(u'block')]) if var.get(u'isSwitch') else var.get(u'block').get(u'body'))))) + var.get(u'fn').put(u'shadow', var.get(u'true')) + var.get(u"this").callprop(u'addContinuations', var.get(u'fn')) + var.put(u'ref', var.get(u'fn')) + if var.get(u"this").get(u'loop'): + var.put(u'ref', var.get(u"this").get(u'scope').callprop(u'generateUidIdentifier', Js(u'loop'))) + var.get(u"this").get(u'loopPath').callprop(u'insertBefore', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'ref'), var.get(u'fn'))]))) + var.put(u'call', var.get(u't').callprop(u'callExpression', var.get(u'ref'), var.get(u'args'))) + var.put(u'ret', var.get(u"this").get(u'scope').callprop(u'generateUidIdentifier', Js(u'ret'))) + var.put(u'hasYield', var.get(u'_babelTraverse2').get(u'default').callprop(u'hasType', var.get(u'fn').get(u'body'), var.get(u"this").get(u'scope'), Js(u'YieldExpression'), var.get(u't').get(u'FUNCTION_TYPES'))) + if var.get(u'hasYield'): + var.get(u'fn').put(u'generator', var.get(u'true')) + var.put(u'call', var.get(u't').callprop(u'yieldExpression', var.get(u'call'), var.get(u'true'))) + var.put(u'hasAsync', var.get(u'_babelTraverse2').get(u'default').callprop(u'hasType', var.get(u'fn').get(u'body'), var.get(u"this").get(u'scope'), Js(u'AwaitExpression'), var.get(u't').get(u'FUNCTION_TYPES'))) + if var.get(u'hasAsync'): + var.get(u'fn').put(u'async', var.get(u'true')) + var.put(u'call', var.get(u't').callprop(u'awaitExpression', var.get(u'call'))) + var.get(u"this").callprop(u'buildClosure', var.get(u'ret'), var.get(u'call')) + if var.get(u'isSwitch'): + var.get(u"this").get(u'blockPath').callprop(u'replaceWithMultiple', var.get(u"this").get(u'body')) + else: + var.get(u'block').put(u'body', var.get(u"this").get(u'body')) + PyJs_wrapClosure_825_._set_name(u'wrapClosure') + var.get(u'BlockScoping').get(u'prototype').put(u'wrapClosure', PyJs_wrapClosure_825_) + @Js + def PyJs_buildClosure_826_(ret, call, this, arguments, var=var): + var = Scope({u'this':this, u'buildClosure':PyJs_buildClosure_826_, u'call':call, u'arguments':arguments, u'ret':ret}, var) + var.registers([u'has', u'call', u'ret']) + var.put(u'has', var.get(u"this").get(u'has')) + if (var.get(u'has').get(u'hasReturn') or var.get(u'has').get(u'hasBreakContinue')): + var.get(u"this").callprop(u'buildHas', var.get(u'ret'), var.get(u'call')) + else: + var.get(u"this").get(u'body').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u'call'))) + PyJs_buildClosure_826_._set_name(u'buildClosure') + var.get(u'BlockScoping').get(u'prototype').put(u'buildClosure', PyJs_buildClosure_826_) + @Js + def PyJs_addContinuations_827_(fn, this, arguments, var=var): + var = Scope({u'this':this, u'addContinuations':PyJs_addContinuations_827_, u'arguments':arguments, u'fn':fn}, var) + var.registers([u'i', u'state', u'newParam', u'param', u'fn']) + PyJs_Object_829_ = Js({}) + PyJs_Object_828_ = Js({u'reassignments':PyJs_Object_829_,u'outsideReferences':var.get(u"this").get(u'outsideLetReferences')}) + var.put(u'state', PyJs_Object_828_) + var.get(u"this").get(u'scope').callprop(u'traverse', var.get(u'fn'), var.get(u'continuationVisitor'), var.get(u'state')) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else Js(u'value'))) + var.put(u'scope', var.get(u'arguments').get(u'3')) + var.put(u'mutatorMap', PyJsComma(Js(0.0), Js(None))) + if var.get(u'node').get(u'static'): + var.get(u"this").put(u'hasStaticDescriptors', var.get(u'true')) + var.put(u'mutatorMap', var.get(u"this").get(u'staticMutatorMap')) + else: + var.get(u"this").put(u'hasInstanceDescriptors', var.get(u'true')) + var.put(u'mutatorMap', var.get(u"this").get(u'instanceMutatorMap')) + var.put(u'map', var.get(u'defineMap').callprop(u'push', var.get(u'mutatorMap'), var.get(u'node'), var.get(u'kind'), var.get(u"this").get(u'file'), var.get(u'scope'))) + if var.get(u'enumerable'): + var.get(u'map').put(u'enumerable', var.get(u't').callprop(u'booleanLiteral', var.get(u'true'))) + return var.get(u'map') + PyJs_pushToMap_884_._set_name(u'pushToMap') + var.get(u'ClassTransformer').get(u'prototype').put(u'pushToMap', PyJs_pushToMap_884_) + @Js + def PyJs_constructorMeMaybe_885_(this, arguments, var=var): + var = Scope({u'this':this, u'constructorMeMaybe':PyJs_constructorMeMaybe_885_, u'arguments':arguments}, var) + var.registers([u'body', u'paths', u'_isArray', u'_iterator', u'_constructor', u'params', u'_i', u'path', u'hasConstructor', u'_ref']) + var.put(u'hasConstructor', Js(False)) + var.put(u'paths', var.get(u"this").get(u'path').callprop(u'get', Js(u'body.body'))) + #for JS loop + var.put(u'_iterator', var.get(u'paths')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'path', var.get(u'_ref')) + var.put(u'hasConstructor', var.get(u'path').callprop(u'equals', Js(u'kind'), Js(u'constructor'))) + if var.get(u'hasConstructor'): + break + + if var.get(u'hasConstructor'): + return var.get('undefined') + var.put(u'params', PyJsComma(Js(0.0), Js(None))) + var.put(u'body', PyJsComma(Js(0.0), Js(None))) + if var.get(u"this").get(u'isDerived'): + var.put(u'_constructor', var.get(u'buildDerivedConstructor')().get(u'expression')) + var.put(u'params', var.get(u'_constructor').get(u'params')) + var.put(u'body', var.get(u'_constructor').get(u'body')) + else: + var.put(u'params', Js([])) + var.put(u'body', var.get(u't').callprop(u'blockStatement', Js([]))) + var.get(u"this").get(u'path').callprop(u'get', Js(u'body')).callprop(u'unshiftContainer', Js(u'body'), var.get(u't').callprop(u'classMethod', Js(u'constructor'), var.get(u't').callprop(u'identifier', Js(u'constructor')), var.get(u'params'), var.get(u'body'))) + PyJs_constructorMeMaybe_885_._set_name(u'constructorMeMaybe') + var.get(u'ClassTransformer').get(u'prototype').put(u'constructorMeMaybe', PyJs_constructorMeMaybe_885_) + @Js + def PyJs_buildBody_886_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'buildBody':PyJs_buildBody_886_}, var) + var.registers([u'constructorBody']) + var.get(u"this").callprop(u'constructorMeMaybe') + var.get(u"this").callprop(u'pushBody') + var.get(u"this").callprop(u'verifyConstructor') + if var.get(u"this").get(u'userConstructor'): + var.put(u'constructorBody', var.get(u"this").get(u'constructorBody')) + var.get(u'constructorBody').put(u'body', var.get(u'constructorBody').get(u'body').callprop(u'concat', var.get(u"this").get(u'userConstructor').get(u'body').get(u'body'))) + var.get(u't').callprop(u'inherits', var.get(u"this").get(u'constructor'), var.get(u"this").get(u'userConstructor')) + var.get(u't').callprop(u'inherits', var.get(u'constructorBody'), var.get(u"this").get(u'userConstructor').get(u'body')) + var.get(u"this").callprop(u'pushDescriptors') + PyJs_buildBody_886_._set_name(u'buildBody') + var.get(u'ClassTransformer').get(u'prototype').put(u'buildBody', PyJs_buildBody_886_) + @Js + def PyJs_pushBody_887_(this, arguments, var=var): + var = Scope({u'this':this, u'pushBody':PyJs_pushBody_887_, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray2', u'isConstructor', u'_i2', u'classBodyPaths', u'_ref2', u'replaceSupers', u'path', u'_iterator2']) + var.put(u'classBodyPaths', var.get(u"this").get(u'path').callprop(u'get', Js(u'body.body'))) + #for JS loop + var.put(u'_iterator2', var.get(u'classBodyPaths')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'path', var.get(u'_ref2')) + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'path').callprop(u'isClassProperty'): + PyJsTempException = JsToPyException(var.get(u'path').callprop(u'buildCodeFrameError', Js(u'Missing class properties transform.'))) + raise PyJsTempException + if var.get(u'node').get(u'decorators'): + PyJsTempException = JsToPyException(var.get(u'path').callprop(u'buildCodeFrameError', Js(u'Method has decorators, put the decorator plugin before the classes one.'))) + raise PyJsTempException + if var.get(u't').callprop(u'isClassMethod', var.get(u'node')): + var.put(u'isConstructor', PyJsStrictEq(var.get(u'node').get(u'kind'),Js(u'constructor'))) + if var.get(u'isConstructor'): + var.get(u'path').callprop(u'traverse', var.get(u'verifyConstructorVisitor'), var.get(u"this")) + if (var.get(u"this").get(u'hasBareSuper').neg() and var.get(u"this").get(u'isDerived')): + PyJsTempException = JsToPyException(var.get(u'path').callprop(u'buildCodeFrameError', Js(u'missing super() call in constructor'))) + raise PyJsTempException + PyJs_Object_888_ = Js({u'forceSuperMemoisation':var.get(u'isConstructor'),u'methodPath':var.get(u'path'),u'methodNode':var.get(u'node'),u'objectRef':var.get(u"this").get(u'classRef'),u'superRef':var.get(u"this").get(u'superName'),u'isStatic':var.get(u'node').get(u'static'),u'isLoose':var.get(u"this").get(u'isLoose'),u'scope':var.get(u"this").get(u'scope'),u'file':var.get(u"this").get(u'file')}) + var.put(u'replaceSupers', var.get(u'_babelHelperReplaceSupers2').get(u'default').create(PyJs_Object_888_, var.get(u'true'))) + var.get(u'replaceSupers').callprop(u'replace') + if var.get(u'isConstructor'): + var.get(u"this").callprop(u'pushConstructor', var.get(u'replaceSupers'), var.get(u'node'), var.get(u'path')) + else: + var.get(u"this").callprop(u'pushMethod', var.get(u'node'), var.get(u'path')) + + PyJs_pushBody_887_._set_name(u'pushBody') + var.get(u'ClassTransformer').get(u'prototype').put(u'pushBody', PyJs_pushBody_887_) + @Js + def PyJs_clearDescriptors_889_(this, arguments, var=var): + var = Scope({u'this':this, u'clearDescriptors':PyJs_clearDescriptors_889_, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'hasInstanceDescriptors', Js(False)) + var.get(u"this").put(u'hasStaticDescriptors', Js(False)) + PyJs_Object_890_ = Js({}) + var.get(u"this").put(u'instanceMutatorMap', PyJs_Object_890_) + PyJs_Object_891_ = Js({}) + var.get(u"this").put(u'staticMutatorMap', PyJs_Object_891_) + PyJs_clearDescriptors_889_._set_name(u'clearDescriptors') + var.get(u'ClassTransformer').get(u'prototype').put(u'clearDescriptors', PyJs_clearDescriptors_889_) + @Js + def PyJs_pushDescriptors_892_(this, arguments, var=var): + var = Scope({u'this':this, u'pushDescriptors':PyJs_pushDescriptors_892_, u'arguments':arguments}, var) + var.registers([u'body', u'i', u'args', u'lastNonNullIndex', u'staticProps', u'instanceProps', u'nullNode']) + var.get(u"this").callprop(u'pushInherits') + var.put(u'body', var.get(u"this").get(u'body')) + var.put(u'instanceProps', PyJsComma(Js(0.0), Js(None))) + var.put(u'staticProps', PyJsComma(Js(0.0), Js(None))) + if var.get(u"this").get(u'hasInstanceDescriptors'): + var.put(u'instanceProps', var.get(u'defineMap').callprop(u'toClassObject', var.get(u"this").get(u'instanceMutatorMap'))) + if var.get(u"this").get(u'hasStaticDescriptors'): + var.put(u'staticProps', var.get(u'defineMap').callprop(u'toClassObject', var.get(u"this").get(u'staticMutatorMap'))) + if (var.get(u'instanceProps') or var.get(u'staticProps')): + if var.get(u'instanceProps'): + var.put(u'instanceProps', var.get(u'defineMap').callprop(u'toComputedObjectFromClass', var.get(u'instanceProps'))) + if var.get(u'staticProps'): + var.put(u'staticProps', var.get(u'defineMap').callprop(u'toComputedObjectFromClass', var.get(u'staticProps'))) + var.put(u'nullNode', var.get(u't').callprop(u'nullLiteral')) + var.put(u'args', Js([var.get(u"this").get(u'classRef'), var.get(u'nullNode'), var.get(u'nullNode'), var.get(u'nullNode'), var.get(u'nullNode')])) + if var.get(u'instanceProps'): + var.get(u'args').put(u'1', var.get(u'instanceProps')) + if var.get(u'staticProps'): + var.get(u'args').put(u'2', var.get(u'staticProps')) + if var.get(u"this").get(u'instanceInitializersId'): + var.get(u'args').put(u'3', var.get(u"this").get(u'instanceInitializersId')) + var.get(u'body').callprop(u'unshift', var.get(u"this").callprop(u'buildObjectAssignment', var.get(u"this").get(u'instanceInitializersId'))) + if var.get(u"this").get(u'staticInitializersId'): + var.get(u'args').put(u'4', var.get(u"this").get(u'staticInitializersId')) + var.get(u'body').callprop(u'unshift', var.get(u"this").callprop(u'buildObjectAssignment', var.get(u"this").get(u'staticInitializersId'))) + var.put(u'lastNonNullIndex', Js(0.0)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'bareSuper', var.get(u'_ref3')) + var.get(u"this").callprop(u'wrapSuperCall', var.get(u'bareSuper'), var.get(u'superRef'), var.get(u'thisRef'), var.get(u'body')) + if var.get(u'guaranteedSuperBeforeFinish'): + @Js + def PyJs_anonymous_900_(parentPath, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'parentPath':parentPath}, var) + var.registers([u'parentPath']) + if PyJsStrictEq(var.get(u'parentPath'),var.get(u'path')): + return var.get(u'true') + if (var.get(u'parentPath').callprop(u'isLoop') or var.get(u'parentPath').callprop(u'isConditional')): + var.put(u'guaranteedSuperBeforeFinish', Js(False)) + return var.get(u'true') + PyJs_anonymous_900_._set_name(u'anonymous') + var.get(u'bareSuper').callprop(u'find', PyJs_anonymous_900_) + + #for JS loop + var.put(u'_iterator4', var.get(u"this").get(u'superThises')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i4').get(u'value')) + var.put(u'thisPath', var.get(u'_ref4')) + var.get(u'thisPath').callprop(u'replaceWith', var.get(u'thisRef')) + + @Js + def PyJs_wrapReturn_901_(returnArg, this, arguments, var=var): + var = Scope({u'this':this, u'returnArg':returnArg, u'wrapReturn':PyJs_wrapReturn_901_, u'arguments':arguments}, var) + var.registers([u'returnArg']) + return var.get(u't').callprop(u'callExpression', var.get(u'_this2').get(u'file').callprop(u'addHelper', Js(u'possibleConstructorReturn')), Js([var.get(u'thisRef')]).callprop(u'concat', (var.get(u'returnArg') or Js([])))) + PyJs_wrapReturn_901_._set_name(u'wrapReturn') + var.put(u'wrapReturn', PyJs_wrapReturn_901_) + var.put(u'bodyPaths', var.get(u'body').callprop(u'get', Js(u'body'))) + if (var.get(u'bodyPaths').get(u'length') and var.get(u'bodyPaths').callprop(u'pop').callprop(u'isReturnStatement').neg()): + var.get(u'body').callprop(u'pushContainer', Js(u'body'), var.get(u't').callprop(u'returnStatement', (var.get(u'thisRef') if var.get(u'guaranteedSuperBeforeFinish') else var.get(u'wrapReturn')()))) + #for JS loop + var.put(u'_iterator5', var.get(u"this").get(u'superReturns')) + var.put(u'_isArray5', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator5'))) + var.put(u'_i5', Js(0.0)) + var.put(u'_iterator5', (var.get(u'_iterator5') if var.get(u'_isArray5') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator5')))) + while 1: + pass + if var.get(u'_isArray5'): + if (var.get(u'_i5')>=var.get(u'_iterator5').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator5').get((var.put(u'_i5',Js(var.get(u'_i5').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i5', var.get(u'_iterator5').callprop(u'next')) + if var.get(u'_i5').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i5').get(u'value')) + var.put(u'returnPath', var.get(u'_ref5')) + if var.get(u'returnPath').get(u'node').get(u'argument'): + var.put(u'ref', var.get(u'returnPath').get(u'scope').callprop(u'generateDeclaredUidIdentifier', Js(u'ret'))) + var.get(u'returnPath').callprop(u'get', Js(u'argument')).callprop(u'replaceWithMultiple', Js([var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'ref'), var.get(u'returnPath').get(u'node').get(u'argument')), var.get(u'wrapReturn')(var.get(u'ref'))])) + else: + var.get(u'returnPath').callprop(u'get', Js(u'argument')).callprop(u'replaceWith', var.get(u'wrapReturn')()) + + PyJs_verifyConstructor_899_._set_name(u'verifyConstructor') + var.get(u'ClassTransformer').get(u'prototype').put(u'verifyConstructor', PyJs_verifyConstructor_899_) + @Js + def PyJs_pushMethod_902_(node, path, this, arguments, var=var): + var = Scope({u'node':node, u'path':path, u'this':this, u'arguments':arguments, u'pushMethod':PyJs_pushMethod_902_}, var) + var.registers([u'node', u'scope', u'path']) + var.put(u'scope', (var.get(u'path').get(u'scope') if var.get(u'path') else var.get(u"this").get(u'scope'))) + if PyJsStrictEq(var.get(u'node').get(u'kind'),Js(u'method')): + if var.get(u"this").callprop(u'_processMethod', var.get(u'node'), var.get(u'scope')): + return var.get('undefined') + var.get(u"this").callprop(u'pushToMap', var.get(u'node'), Js(False), var.get(u"null"), var.get(u'scope')) + PyJs_pushMethod_902_._set_name(u'pushMethod') + var.get(u'ClassTransformer').get(u'prototype').put(u'pushMethod', PyJs_pushMethod_902_) + @Js + def PyJs__processMethod_903_(this, arguments, var=var): + var = Scope({u'this':this, u'_processMethod':PyJs__processMethod_903_, u'arguments':arguments}, var) + var.registers([]) + return Js(False) + PyJs__processMethod_903_._set_name(u'_processMethod') + var.get(u'ClassTransformer').get(u'prototype').put(u'_processMethod', PyJs__processMethod_903_) + @Js + def PyJs_pushConstructor_904_(replaceSupers, method, path, this, arguments, var=var): + var = Scope({u'this':this, u'replaceSupers':replaceSupers, u'arguments':arguments, u'path':path, u'method':method, u'pushConstructor':PyJs_pushConstructor_904_}, var) + var.registers([u'path', u'replaceSupers', u'construct', u'method']) + var.get(u"this").put(u'bareSupers', var.get(u'replaceSupers').get(u'bareSupers')) + var.get(u"this").put(u'superReturns', var.get(u'replaceSupers').get(u'returns')) + if var.get(u'path').get(u'scope').callprop(u'hasOwnBinding', var.get(u"this").get(u'classRef').get(u'name')): + var.get(u'path').get(u'scope').callprop(u'rename', var.get(u"this").get(u'classRef').get(u'name')) + var.put(u'construct', var.get(u"this").get(u'constructor')) + var.get(u"this").put(u'userConstructorPath', var.get(u'path')) + var.get(u"this").put(u'userConstructor', var.get(u'method')) + var.get(u"this").put(u'hasConstructor', var.get(u'true')) + var.get(u't').callprop(u'inheritsComments', var.get(u'construct'), var.get(u'method')) + var.get(u'construct').put(u'_ignoreUserWhitespace', var.get(u'true')) + var.get(u'construct').put(u'params', var.get(u'method').get(u'params')) + var.get(u't').callprop(u'inherits', var.get(u'construct').get(u'body'), var.get(u'method').get(u'body')) + var.get(u'construct').get(u'body').put(u'directives', var.get(u'method').get(u'body').get(u'directives')) + var.get(u"this").callprop(u'_pushConstructor') + PyJs_pushConstructor_904_._set_name(u'pushConstructor') + var.get(u'ClassTransformer').get(u'prototype').put(u'pushConstructor', PyJs_pushConstructor_904_) + @Js + def PyJs__pushConstructor_905_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'_pushConstructor':PyJs__pushConstructor_905_}, var) + var.registers([]) + if var.get(u"this").get(u'pushedConstructor'): + return var.get('undefined') + var.get(u"this").put(u'pushedConstructor', var.get(u'true')) + if (var.get(u"this").get(u'hasInstanceDescriptors') or var.get(u"this").get(u'hasStaticDescriptors')): + var.get(u"this").callprop(u'pushDescriptors') + var.get(u"this").get(u'body').callprop(u'push', var.get(u"this").get(u'constructor')) + var.get(u"this").callprop(u'pushInherits') + PyJs__pushConstructor_905_._set_name(u'_pushConstructor') + var.get(u'ClassTransformer').get(u'prototype').put(u'_pushConstructor', PyJs__pushConstructor_905_) + @Js + def PyJs_pushInherits_906_(this, arguments, var=var): + var = Scope({u'this':this, u'pushInherits':PyJs_pushInherits_906_, u'arguments':arguments}, var) + var.registers([]) + if (var.get(u"this").get(u'isDerived').neg() or var.get(u"this").get(u'pushedInherits')): + return var.get('undefined') + var.get(u"this").put(u'pushedInherits', var.get(u'true')) + var.get(u"this").get(u'body').callprop(u'unshift', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'callExpression', var.get(u"this").get(u'file').callprop(u'addHelper', Js(u'inherits')), Js([var.get(u"this").get(u'classRef'), var.get(u"this").get(u'superName')])))) + PyJs_pushInherits_906_._set_name(u'pushInherits') + var.get(u'ClassTransformer').get(u'prototype').put(u'pushInherits', PyJs_pushInherits_906_) + return var.get(u'ClassTransformer') + PyJs_anonymous_879_._set_name(u'anonymous') + var.put(u'ClassTransformer', PyJs_anonymous_879_()) + var.get(u'exports').put(u'default', var.get(u'ClassTransformer')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_865_._set_name(u'anonymous') +PyJs_Object_907_ = Js({u'babel-helper-define-map':Js(48.0),u'babel-helper-optimise-call-expression':Js(52.0),u'babel-helper-replace-supers':Js(54.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-template':Js(221.0),u'babel-traverse':Js(225.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_908_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_918_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_918_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + @Js + def PyJs_anonymous_909_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'_ref', u'loose', u'pushAssign', u'getValue', u'pushMutatorDefine', u't', u'template', u'buildMutatorMapAssign', u'spec']) + @Js + def PyJsHoisted_spec_(info, this, arguments, var=var): + var = Scope({u'info':info, u'this':this, u'arguments':arguments}, var) + var.registers([u'body', u'info', u'_isArray2', u'_ref4', u'_i2', u'prop', u'state', u'computedProps', u'objId', u'key', u'_iterator2']) + var.put(u'objId', var.get(u'info').get(u'objId')) + var.put(u'body', var.get(u'info').get(u'body')) + var.put(u'computedProps', var.get(u'info').get(u'computedProps')) + var.put(u'state', var.get(u'info').get(u'state')) + #for JS loop + var.put(u'_iterator2', var.get(u'computedProps')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i2').get(u'value')) + var.put(u'prop', var.get(u'_ref4')) + var.put(u'key', var.get(u't').callprop(u'toComputedKey', var.get(u'prop'))) + if (PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'get')) or PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'set'))): + var.get(u'pushMutatorDefine')(var.get(u'info'), var.get(u'prop')) + else: + PyJs_Object_911_ = Js({u'value':Js(u'__proto__')}) + if var.get(u't').callprop(u'isStringLiteral', var.get(u'key'), PyJs_Object_911_): + var.get(u'pushAssign')(var.get(u'objId'), var.get(u'prop'), var.get(u'body')) + else: + if PyJsStrictEq(var.get(u'computedProps').get(u'length'),Js(1.0)): + return var.get(u't').callprop(u'callExpression', var.get(u'state').callprop(u'addHelper', Js(u'defineProperty')), Js([var.get(u'info').get(u'initPropExpression'), var.get(u'key'), var.get(u'getValue')(var.get(u'prop'))])) + else: + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'callExpression', var.get(u'state').callprop(u'addHelper', Js(u'defineProperty')), Js([var.get(u'objId'), var.get(u'key'), var.get(u'getValue')(var.get(u'prop'))])))) + + PyJsHoisted_spec_.func_name = u'spec' + var.put(u'spec', PyJsHoisted_spec_) + @Js + def PyJsHoisted_pushMutatorDefine_(_ref2, prop, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'_ref2':_ref2, u'prop':prop}, var) + var.registers([u'body', u'maybeMemoise', u'_ref2', u'prop', u'objId', u'key', u'scope', u'getMutatorId']) + var.put(u'objId', var.get(u'_ref2').get(u'objId')) + var.put(u'body', var.get(u'_ref2').get(u'body')) + var.put(u'getMutatorId', var.get(u'_ref2').get(u'getMutatorId')) + var.put(u'scope', var.get(u'_ref2').get(u'scope')) + var.put(u'key', (var.get(u't').callprop(u'stringLiteral', var.get(u'prop').get(u'key').get(u'name')) if (var.get(u'prop').get(u'computed').neg() and var.get(u't').callprop(u'isIdentifier', var.get(u'prop').get(u'key'))) else var.get(u'prop').get(u'key'))) + var.put(u'maybeMemoise', var.get(u'scope').callprop(u'maybeGenerateMemoised', var.get(u'key'))) + if var.get(u'maybeMemoise'): + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'maybeMemoise'), var.get(u'key')))) + var.put(u'key', var.get(u'maybeMemoise')) + PyJs_Object_910_ = Js({u'MUTATOR_MAP_REF':var.get(u'getMutatorId')(),u'KEY':var.get(u'key'),u'VALUE':var.get(u'getValue')(var.get(u'prop')),u'KIND':var.get(u't').callprop(u'identifier', var.get(u'prop').get(u'kind'))}) + var.get(u'body').get(u'push').callprop(u'apply', var.get(u'body'), var.get(u'buildMutatorMapAssign')(PyJs_Object_910_)) + PyJsHoisted_pushMutatorDefine_.func_name = u'pushMutatorDefine' + var.put(u'pushMutatorDefine', PyJsHoisted_pushMutatorDefine_) + @Js + def PyJsHoisted_loose_(info, this, arguments, var=var): + var = Scope({u'info':info, u'this':this, u'arguments':arguments}, var) + var.registers([u'info', u'_isArray', u'_iterator', u'_ref3', u'prop', u'_i']) + #for JS loop + var.put(u'_iterator', var.get(u'info').get(u'computedProps')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i').get(u'value')) + var.put(u'prop', var.get(u'_ref3')) + if (PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'get')) or PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'set'))): + var.get(u'pushMutatorDefine')(var.get(u'info'), var.get(u'prop')) + else: + var.get(u'pushAssign')(var.get(u'info').get(u'objId'), var.get(u'prop'), var.get(u'info').get(u'body')) + + PyJsHoisted_loose_.func_name = u'loose' + var.put(u'loose', PyJsHoisted_loose_) + @Js + def PyJsHoisted_pushAssign_(objId, prop, body, this, arguments, var=var): + var = Scope({u'body':body, u'this':this, u'objId':objId, u'arguments':arguments, u'prop':prop}, var) + var.registers([u'body', u'objId', u'prop']) + if (PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'get')) and PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'set'))): + var.get(u'pushMutatorDefine')(var.get(u'objId'), var.get(u'prop'), var.get(u'body')) + else: + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u't').callprop(u'memberExpression', var.get(u'objId'), var.get(u'prop').get(u'key'), (var.get(u'prop').get(u'computed') or var.get(u't').callprop(u'isLiteral', var.get(u'prop').get(u'key')))), var.get(u'getValue')(var.get(u'prop'))))) + PyJsHoisted_pushAssign_.func_name = u'pushAssign' + var.put(u'pushAssign', PyJsHoisted_pushAssign_) + @Js + def PyJsHoisted_getValue_(prop, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'prop':prop}, var) + var.registers([u'prop']) + if var.get(u't').callprop(u'isObjectProperty', var.get(u'prop')): + return var.get(u'prop').get(u'value') + else: + if var.get(u't').callprop(u'isObjectMethod', var.get(u'prop')): + return var.get(u't').callprop(u'functionExpression', var.get(u"null"), var.get(u'prop').get(u'params'), var.get(u'prop').get(u'body'), var.get(u'prop').get(u'generator'), var.get(u'prop').get(u'async')) + PyJsHoisted_getValue_.func_name = u'getValue' + var.put(u'getValue', PyJsHoisted_getValue_) + var.put(u't', var.get(u'_ref').get(u'types')) + var.put(u'template', var.get(u'_ref').get(u'template')) + var.put(u'buildMutatorMapAssign', var.get(u'template')(Js(u'\n MUTATOR_MAP_REF[KEY] = MUTATOR_MAP_REF[KEY] || {};\n MUTATOR_MAP_REF[KEY].KIND = VALUE;\n '))) + pass + pass + pass + pass + pass + @Js + def PyJs_exit_915_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'exit':PyJs_exit_915_, u'arguments':arguments}, var) + var.registers([u'body', u'_isArray4', u'_isArray3', u'initProps', u'single', u'computedProps', u'_i4', u'_i3', u'hasComputed', u'prop', u'state', u'scope', u'getMutatorId', u'node', u'parent', u'initPropExpression', u'mutatorRef', u'foundComputed', u'objId', u'path', u'_prop', u'_ref6', u'_ref5', u'callback', u'_iterator4', u'_iterator3']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'parent', var.get(u'path').get(u'parent')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'hasComputed', Js(False)) + #for JS loop + var.put(u'_iterator3', var.get(u'node').get(u'properties')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i3').get(u'value')) + var.put(u'prop', var.get(u'_ref5')) + var.put(u'hasComputed', PyJsStrictEq(var.get(u'prop').get(u'computed'),var.get(u'true'))) + if var.get(u'hasComputed'): + break + + if var.get(u'hasComputed').neg(): + return var.get('undefined') + var.put(u'initProps', Js([])) + var.put(u'computedProps', Js([])) + var.put(u'foundComputed', Js(False)) + #for JS loop + var.put(u'_iterator4', var.get(u'node').get(u'properties')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref6', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref6', var.get(u'_i4').get(u'value')) + var.put(u'_prop', var.get(u'_ref6')) + if var.get(u'_prop').get(u'computed'): + var.put(u'foundComputed', var.get(u'true')) + if var.get(u'foundComputed'): + var.get(u'computedProps').callprop(u'push', var.get(u'_prop')) + else: + var.get(u'initProps').callprop(u'push', var.get(u'_prop')) + + var.put(u'objId', var.get(u'scope').callprop(u'generateUidIdentifierBasedOnNode', var.get(u'parent'))) + var.put(u'initPropExpression', var.get(u't').callprop(u'objectExpression', var.get(u'initProps'))) + var.put(u'body', Js([])) + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'objId'), var.get(u'initPropExpression'))]))) + var.put(u'callback', var.get(u'spec')) + if var.get(u'state').get(u'opts').get(u'loose'): + var.put(u'callback', var.get(u'loose')) + var.put(u'mutatorRef', PyJsComma(Js(0.0), Js(None))) + @Js + def PyJs_getMutatorId_916_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getMutatorId':PyJs_getMutatorId_916_}, var) + var.registers([]) + if var.get(u'mutatorRef').neg(): + var.put(u'mutatorRef', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'mutatorMap'))) + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'mutatorRef'), var.get(u't').callprop(u'objectExpression', Js([])))]))) + return var.get(u'mutatorRef') + PyJs_getMutatorId_916_._set_name(u'getMutatorId') + var.put(u'getMutatorId', PyJs_getMutatorId_916_) + PyJs_Object_917_ = Js({u'scope':var.get(u'scope'),u'objId':var.get(u'objId'),u'body':var.get(u'body'),u'computedProps':var.get(u'computedProps'),u'initPropExpression':var.get(u'initPropExpression'),u'getMutatorId':var.get(u'getMutatorId'),u'state':var.get(u'state')}) + var.put(u'single', var.get(u'callback')(PyJs_Object_917_)) + if var.get(u'mutatorRef'): + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'callExpression', var.get(u'state').callprop(u'addHelper', Js(u'defineEnumerableProperties')), Js([var.get(u'objId'), var.get(u'mutatorRef')])))) + if var.get(u'single'): + var.get(u'path').callprop(u'replaceWith', var.get(u'single')) + else: + var.get(u'body').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u'objId'))) + var.get(u'path').callprop(u'replaceWithMultiple', var.get(u'body')) + PyJs_exit_915_._set_name(u'exit') + PyJs_Object_914_ = Js({u'exit':PyJs_exit_915_}) + PyJs_Object_913_ = Js({u'ObjectExpression':PyJs_Object_914_}) + PyJs_Object_912_ = Js({u'visitor':PyJs_Object_913_}) + return PyJs_Object_912_ + PyJs_anonymous_909_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_909_) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_908_._set_name(u'anonymous') +PyJs_Object_919_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0)}) +@Js +def PyJs_anonymous_920_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_classCallCheck2', u'require', u'module', u'_interopRequireDefault', u'_classCallCheck3', u'_getIterator3', u'_getIterator2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_950_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_950_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + @Js + def PyJs_anonymous_921_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'DestructuringTransformer', u'hasRest', u'variableDeclarationHasPattern', u't', u'_ref', u'arrayUnpackVisitor']) + @Js + def PyJsHoisted_hasRest_(pattern, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'arguments':arguments}, var) + var.registers([u'_isArray2', u'pattern', u'_ref3', u'_i2', u'elem', u'_iterator2']) + #for JS loop + var.put(u'_iterator2', var.get(u'pattern').get(u'elements')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i2').get(u'value')) + var.put(u'elem', var.get(u'_ref3')) + if var.get(u't').callprop(u'isRestElement', var.get(u'elem')): + return var.get(u'true') + + return Js(False) + PyJsHoisted_hasRest_.func_name = u'hasRest' + var.put(u'hasRest', PyJsHoisted_hasRest_) + @Js + def PyJsHoisted_variableDeclarationHasPattern_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'_ref2', u'declar', u'_i']) + #for JS loop + var.put(u'_iterator', var.get(u'node').get(u'declarations')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i').get(u'value')) + var.put(u'declar', var.get(u'_ref2')) + if var.get(u't').callprop(u'isPattern', var.get(u'declar').get(u'id')): + return var.get(u'true') + + return Js(False) + PyJsHoisted_variableDeclarationHasPattern_.func_name = u'variableDeclarationHasPattern' + var.put(u'variableDeclarationHasPattern', PyJsHoisted_variableDeclarationHasPattern_) + var.put(u't', var.get(u'_ref').get(u'types')) + pass + pass + @Js + def PyJs_ReferencedIdentifier_923_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_923_, u'arguments':arguments}, var) + var.registers([u'path', u'state']) + if var.get(u'state').get(u'bindings').get(var.get(u'path').get(u'node').get(u'name')): + var.get(u'state').put(u'deopt', var.get(u'true')) + var.get(u'path').callprop(u'stop') + PyJs_ReferencedIdentifier_923_._set_name(u'ReferencedIdentifier') + PyJs_Object_922_ = Js({u'ReferencedIdentifier':PyJs_ReferencedIdentifier_923_}) + var.put(u'arrayUnpackVisitor', PyJs_Object_922_) + @Js + def PyJs_anonymous_924_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'DestructuringTransformer']) + @Js + def PyJsHoisted_DestructuringTransformer_(opts, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'opts']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'DestructuringTransformer')) + var.get(u"this").put(u'blockHoist', var.get(u'opts').get(u'blockHoist')) + var.get(u"this").put(u'operator', var.get(u'opts').get(u'operator')) + PyJs_Object_925_ = Js({}) + var.get(u"this").put(u'arrays', PyJs_Object_925_) + var.get(u"this").put(u'nodes', (var.get(u'opts').get(u'nodes') or Js([]))) + var.get(u"this").put(u'scope', var.get(u'opts').get(u'scope')) + var.get(u"this").put(u'file', var.get(u'opts').get(u'file')) + var.get(u"this").put(u'kind', var.get(u'opts').get(u'kind')) + PyJsHoisted_DestructuringTransformer_.func_name = u'DestructuringTransformer' + var.put(u'DestructuringTransformer', PyJsHoisted_DestructuringTransformer_) + pass + @Js + def PyJs_buildVariableAssignment_926_(id, init, this, arguments, var=var): + var = Scope({u'this':this, u'init':init, u'buildVariableAssignment':PyJs_buildVariableAssignment_926_, u'id':id, u'arguments':arguments}, var) + var.registers([u'node', u'init', u'id', u'op']) + var.put(u'op', var.get(u"this").get(u'operator')) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'id')): + var.put(u'op', Js(u'=')) + var.put(u'node', PyJsComma(Js(0.0), Js(None))) + if var.get(u'op'): + var.put(u'node', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', var.get(u'op'), var.get(u'id'), var.get(u'init')))) + else: + var.put(u'node', var.get(u't').callprop(u'variableDeclaration', var.get(u"this").get(u'kind'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'id'), var.get(u'init'))]))) + var.get(u'node').put(u'_blockHoist', var.get(u"this").get(u'blockHoist')) + return var.get(u'node') + PyJs_buildVariableAssignment_926_._set_name(u'buildVariableAssignment') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'buildVariableAssignment', PyJs_buildVariableAssignment_926_) + @Js + def PyJs_buildVariableDeclaration_927_(id, init, this, arguments, var=var): + var = Scope({u'this':this, u'init':init, u'buildVariableDeclaration':PyJs_buildVariableDeclaration_927_, u'id':id, u'arguments':arguments}, var) + var.registers([u'init', u'declar', u'id']) + var.put(u'declar', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'id'), var.get(u'init'))]))) + var.get(u'declar').put(u'_blockHoist', var.get(u"this").get(u'blockHoist')) + return var.get(u'declar') + PyJs_buildVariableDeclaration_927_._set_name(u'buildVariableDeclaration') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'buildVariableDeclaration', PyJs_buildVariableDeclaration_927_) + @Js + def PyJs_push_928_(id, init, this, arguments, var=var): + var = Scope({u'this':this, u'push':PyJs_push_928_, u'init':init, u'id':id, u'arguments':arguments}, var) + var.registers([u'init', u'id']) + if var.get(u't').callprop(u'isObjectPattern', var.get(u'id')): + var.get(u"this").callprop(u'pushObjectPattern', var.get(u'id'), var.get(u'init')) + else: + if var.get(u't').callprop(u'isArrayPattern', var.get(u'id')): + var.get(u"this").callprop(u'pushArrayPattern', var.get(u'id'), var.get(u'init')) + else: + if var.get(u't').callprop(u'isAssignmentPattern', var.get(u'id')): + var.get(u"this").callprop(u'pushAssignmentPattern', var.get(u'id'), var.get(u'init')) + else: + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u"this").callprop(u'buildVariableAssignment', var.get(u'id'), var.get(u'init'))) + PyJs_push_928_._set_name(u'push') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'push', PyJs_push_928_) + @Js + def PyJs_toArray_929_(node, count, this, arguments, var=var): + var = Scope({u'node':node, u'count':count, u'this':this, u'arguments':arguments, u'toArray':PyJs_toArray_929_}, var) + var.registers([u'node', u'count']) + if (var.get(u"this").get(u'file').get(u'opts').get(u'loose') or (var.get(u't').callprop(u'isIdentifier', var.get(u'node')) and var.get(u"this").get(u'arrays').get(var.get(u'node').get(u'name')))): + return var.get(u'node') + else: + return var.get(u"this").get(u'scope').callprop(u'toArray', var.get(u'node'), var.get(u'count')) + PyJs_toArray_929_._set_name(u'toArray') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'toArray', PyJs_toArray_929_) + @Js + def PyJs_pushAssignmentPattern_930_(pattern, valueRef, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'valueRef':valueRef, u'arguments':arguments, u'pushAssignmentPattern':PyJs_pushAssignmentPattern_930_}, var) + var.registers([u'pattern', u'tempValueDefault', u'declar', u'tempValueRef', u'tempConditional', u'valueRef', u'left']) + var.put(u'tempValueRef', var.get(u"this").get(u'scope').callprop(u'generateUidIdentifierBasedOnNode', var.get(u'valueRef'))) + var.put(u'declar', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'tempValueRef'), var.get(u'valueRef'))]))) + var.get(u'declar').put(u'_blockHoist', var.get(u"this").get(u'blockHoist')) + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u'declar')) + var.put(u'tempConditional', var.get(u't').callprop(u'conditionalExpression', var.get(u't').callprop(u'binaryExpression', Js(u'==='), var.get(u'tempValueRef'), var.get(u't').callprop(u'identifier', Js(u'undefined'))), var.get(u'pattern').get(u'right'), var.get(u'tempValueRef'))) + var.put(u'left', var.get(u'pattern').get(u'left')) + if var.get(u't').callprop(u'isPattern', var.get(u'left')): + var.put(u'tempValueDefault', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'tempValueRef'), var.get(u'tempConditional')))) + var.get(u'tempValueDefault').put(u'_blockHoist', var.get(u"this").get(u'blockHoist')) + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u'tempValueDefault')) + var.get(u"this").callprop(u'push', var.get(u'left'), var.get(u'tempValueRef')) + else: + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u"this").callprop(u'buildVariableAssignment', var.get(u'left'), var.get(u'tempConditional'))) + PyJs_pushAssignmentPattern_930_._set_name(u'pushAssignmentPattern') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'pushAssignmentPattern', PyJs_pushAssignmentPattern_930_) + @Js + def PyJs_pushObjectRest_931_(pattern, objRef, spreadProp, spreadPropIndex, this, arguments, var=var): + var = Scope({u'objRef':objRef, u'arguments':arguments, u'pushObjectRest':PyJs_pushObjectRest_931_, u'this':this, u'pattern':pattern, u'spreadProp':spreadProp, u'spreadPropIndex':spreadPropIndex}, var) + var.registers([u'keys', u'pattern', u'spreadProp', u'value', u'prop', u'objRef', u'i', u'key', u'spreadPropIndex']) + var.put(u'keys', Js([])) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'spreadPropIndex')): + break + if var.get(u't').callprop(u'isRestProperty', var.get(u'prop')): + continue + var.put(u'key', var.get(u'prop').get(u'key')) + if (var.get(u't').callprop(u'isIdentifier', var.get(u'key')) and var.get(u'prop').get(u'computed').neg()): + var.put(u'key', var.get(u't').callprop(u'stringLiteral', var.get(u'prop').get(u'key').get(u'name'))) + var.get(u'keys').callprop(u'push', var.get(u'key')) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + var.put(u'keys', var.get(u't').callprop(u'arrayExpression', var.get(u'keys'))) + var.put(u'value', var.get(u't').callprop(u'callExpression', var.get(u"this").get(u'file').callprop(u'addHelper', Js(u'objectWithoutProperties')), Js([var.get(u'objRef'), var.get(u'keys')]))) + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u"this").callprop(u'buildVariableAssignment', var.get(u'spreadProp').get(u'argument'), var.get(u'value'))) + PyJs_pushObjectRest_931_._set_name(u'pushObjectRest') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'pushObjectRest', PyJs_pushObjectRest_931_) + @Js + def PyJs_pushObjectProperty_932_(prop, propRef, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'pushObjectProperty':PyJs_pushObjectProperty_932_, u'propRef':propRef, u'prop':prop}, var) + var.registers([u'objRef', u'pattern', u'propRef', u'prop']) + if var.get(u't').callprop(u'isLiteral', var.get(u'prop').get(u'key')): + var.get(u'prop').put(u'computed', var.get(u'true')) + var.put(u'pattern', var.get(u'prop').get(u'value')) + var.put(u'objRef', var.get(u't').callprop(u'memberExpression', var.get(u'propRef'), var.get(u'prop').get(u'key'), var.get(u'prop').get(u'computed'))) + if var.get(u't').callprop(u'isPattern', var.get(u'pattern')): + var.get(u"this").callprop(u'push', var.get(u'pattern'), var.get(u'objRef')) + else: + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u"this").callprop(u'buildVariableAssignment', var.get(u'pattern'), var.get(u'objRef'))) + PyJs_pushObjectProperty_932_._set_name(u'pushObjectProperty') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'pushObjectProperty', PyJs_pushObjectProperty_932_) + @Js + def PyJs_pushObjectPattern_933_(pattern, objRef, this, arguments, var=var): + var = Scope({u'objRef':objRef, u'pattern':pattern, u'pushObjectPattern':PyJs_pushObjectPattern_933_, u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'pattern', u'objRef', u'temp', u'prop']) + if var.get(u'pattern').get(u'properties').get(u'length').neg(): + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'callExpression', var.get(u"this").get(u'file').callprop(u'addHelper', Js(u'objectDestructuringEmpty')), Js([var.get(u'objRef')])))) + if ((var.get(u'pattern').get(u'properties').get(u'length')>Js(1.0)) and var.get(u"this").get(u'scope').callprop(u'isStatic', var.get(u'objRef')).neg()): + var.put(u'temp', var.get(u"this").get(u'scope').callprop(u'generateUidIdentifierBasedOnNode', var.get(u'objRef'))) + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u"this").callprop(u'buildVariableDeclaration', var.get(u'temp'), var.get(u'objRef'))) + var.put(u'objRef', var.get(u'temp')) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')var.get(u'arr').get(u'elements').get(u'length')): + return var.get('undefined') + if ((var.get(u'pattern').get(u'elements').get(u'length')=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i3').get(u'value')) + var.put(u'elem', var.get(u'_ref4')) + if var.get(u'elem').neg(): + return Js(False) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'elem')): + return Js(False) + + #for JS loop + var.put(u'_iterator4', var.get(u'arr').get(u'elements')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i4').get(u'value')) + var.put(u'_elem', var.get(u'_ref5')) + if var.get(u't').callprop(u'isSpreadElement', var.get(u'_elem')): + return Js(False) + if var.get(u't').callprop(u'isCallExpression', var.get(u'_elem')): + return Js(False) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'_elem')): + return Js(False) + + var.put(u'bindings', var.get(u't').callprop(u'getBindingIdentifiers', var.get(u'pattern'))) + PyJs_Object_935_ = Js({u'deopt':Js(False),u'bindings':var.get(u'bindings')}) + var.put(u'state', PyJs_Object_935_) + var.get(u"this").get(u'scope').callprop(u'traverse', var.get(u'arr'), var.get(u'arrayUnpackVisitor'), var.get(u'state')) + return var.get(u'state').get(u'deopt').neg() + PyJs_canUnpackArrayPattern_934_._set_name(u'canUnpackArrayPattern') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'canUnpackArrayPattern', PyJs_canUnpackArrayPattern_934_) + @Js + def PyJs_pushUnpackedArrayPattern_936_(pattern, arr, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'arr':arr, u'arguments':arguments, u'pushUnpackedArrayPattern':PyJs_pushUnpackedArrayPattern_936_}, var) + var.registers([u'i', u'pattern', u'arr', u'elem']) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(0.0)): + var.put(u'elemRef', var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u'elemRef'), var.get(u't').callprop(u'identifier', Js(u'slice'))), Js([var.get(u't').callprop(u'numericLiteral', var.get(u'i'))]))) + var.put(u'elem', var.get(u'elem').get(u'argument')) + else: + var.put(u'elemRef', var.get(u't').callprop(u'memberExpression', var.get(u'arrayRef'), var.get(u't').callprop(u'numericLiteral', var.get(u'i')), var.get(u'true'))) + var.get(u"this").callprop(u'push', var.get(u'elem'), var.get(u'elemRef')) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + PyJs_pushArrayPattern_937_._set_name(u'pushArrayPattern') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'pushArrayPattern', PyJs_pushArrayPattern_937_) + @Js + def PyJs_init_938_(pattern, ref, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'init':PyJs_init_938_, u'ref':ref, u'arguments':arguments}, var) + var.registers([u'pattern', u'memo', u'ref']) + if (var.get(u't').callprop(u'isArrayExpression', var.get(u'ref')).neg() and var.get(u't').callprop(u'isMemberExpression', var.get(u'ref')).neg()): + var.put(u'memo', var.get(u"this").get(u'scope').callprop(u'maybeGenerateMemoised', var.get(u'ref'), var.get(u'true'))) + if var.get(u'memo'): + var.get(u"this").get(u'nodes').callprop(u'push', var.get(u"this").callprop(u'buildVariableDeclaration', var.get(u'memo'), var.get(u'ref'))) + var.put(u'ref', var.get(u'memo')) + var.get(u"this").callprop(u'push', var.get(u'pattern'), var.get(u'ref')) + return var.get(u"this").get(u'nodes') + PyJs_init_938_._set_name(u'init') + var.get(u'DestructuringTransformer').get(u'prototype').put(u'init', PyJs_init_938_) + return var.get(u'DestructuringTransformer') + PyJs_anonymous_924_._set_name(u'anonymous') + var.put(u'DestructuringTransformer', PyJs_anonymous_924_()) + @Js + def PyJs_ExportNamedDeclaration_941_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'ExportNamedDeclaration':PyJs_ExportNamedDeclaration_941_}, var) + var.registers([u'id', u'specifiers', u'path', u'name', u'declaration']) + var.put(u'declaration', var.get(u'path').callprop(u'get', Js(u'declaration'))) + if var.get(u'declaration').callprop(u'isVariableDeclaration').neg(): + return var.get('undefined') + if var.get(u'variableDeclarationHasPattern')(var.get(u'declaration').get(u'node')).neg(): + return var.get('undefined') + var.put(u'specifiers', Js([])) + for PyJsTemp in var.get(u'path').callprop(u'getOuterBindingIdentifiers', var.get(u'path')): + var.put(u'name', PyJsTemp) + var.put(u'id', var.get(u't').callprop(u'identifier', var.get(u'name'))) + var.get(u'specifiers').callprop(u'push', var.get(u't').callprop(u'exportSpecifier', var.get(u'id'), var.get(u'id'))) + var.get(u'path').callprop(u'replaceWith', var.get(u'declaration').get(u'node')) + var.get(u'path').callprop(u'insertAfter', var.get(u't').callprop(u'exportNamedDeclaration', var.get(u"null"), var.get(u'specifiers'))) + PyJs_ExportNamedDeclaration_941_._set_name(u'ExportNamedDeclaration') + @Js + def PyJs_ForXStatement_942_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'file':file, u'ForXStatement':PyJs_ForXStatement_942_}, var) + var.registers([u'node', u'destructuring', u'file', u'temp', u'pattern', u'key', u'path', u'scope', u'nodes', u'block', u'left']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'left', var.get(u'node').get(u'left')) + if var.get(u't').callprop(u'isPattern', var.get(u'left')): + var.put(u'temp', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'ref'))) + var.get(u'node').put(u'left', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'temp'))]))) + var.get(u'path').callprop(u'ensureBlock') + var.get(u'node').get(u'body').get(u'body').callprop(u'unshift', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'left'), var.get(u'temp'))]))) + return var.get('undefined') + if var.get(u't').callprop(u'isVariableDeclaration', var.get(u'left')).neg(): + return var.get('undefined') + var.put(u'pattern', var.get(u'left').get(u'declarations').get(u'0').get(u'id')) + if var.get(u't').callprop(u'isPattern', var.get(u'pattern')).neg(): + return var.get('undefined') + var.put(u'key', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'ref'))) + var.get(u'node').put(u'left', var.get(u't').callprop(u'variableDeclaration', var.get(u'left').get(u'kind'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'key'), var.get(u"null"))]))) + var.put(u'nodes', Js([])) + PyJs_Object_943_ = Js({u'kind':var.get(u'left').get(u'kind'),u'file':var.get(u'file'),u'scope':var.get(u'scope'),u'nodes':var.get(u'nodes')}) + var.put(u'destructuring', var.get(u'DestructuringTransformer').create(PyJs_Object_943_)) + var.get(u'destructuring').callprop(u'init', var.get(u'pattern'), var.get(u'key')) + var.get(u'path').callprop(u'ensureBlock') + var.put(u'block', var.get(u'node').get(u'body')) + var.get(u'block').put(u'body', var.get(u'nodes').callprop(u'concat', var.get(u'block').get(u'body'))) + PyJs_ForXStatement_942_._set_name(u'ForXStatement') + @Js + def PyJs_CatchClause_944_(_ref6, file, this, arguments, var=var): + var = Scope({u'this':this, u'_ref6':_ref6, u'arguments':arguments, u'file':file, u'CatchClause':PyJs_CatchClause_944_}, var) + var.registers([u'node', u'destructuring', u'pattern', u'file', u'_ref6', u'scope', u'nodes', u'ref']) + var.put(u'node', var.get(u'_ref6').get(u'node')) + var.put(u'scope', var.get(u'_ref6').get(u'scope')) + var.put(u'pattern', var.get(u'node').get(u'param')) + if var.get(u't').callprop(u'isPattern', var.get(u'pattern')).neg(): + return var.get('undefined') + var.put(u'ref', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'ref'))) + var.get(u'node').put(u'param', var.get(u'ref')) + var.put(u'nodes', Js([])) + PyJs_Object_945_ = Js({u'kind':Js(u'let'),u'file':var.get(u'file'),u'scope':var.get(u'scope'),u'nodes':var.get(u'nodes')}) + var.put(u'destructuring', var.get(u'DestructuringTransformer').create(PyJs_Object_945_)) + var.get(u'destructuring').callprop(u'init', var.get(u'pattern'), var.get(u'ref')) + var.get(u'node').get(u'body').put(u'body', var.get(u'nodes').callprop(u'concat', var.get(u'node').get(u'body').get(u'body'))) + PyJs_CatchClause_944_._set_name(u'CatchClause') + @Js + def PyJs_AssignmentExpression_946_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'file':file, u'AssignmentExpression':PyJs_AssignmentExpression_946_}, var) + var.registers([u'node', u'destructuring', u'file', u'path', u'scope', u'nodes', u'ref']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + if var.get(u't').callprop(u'isPattern', var.get(u'node').get(u'left')).neg(): + return var.get('undefined') + var.put(u'nodes', Js([])) + PyJs_Object_947_ = Js({u'operator':var.get(u'node').get(u'operator'),u'file':var.get(u'file'),u'scope':var.get(u'scope'),u'nodes':var.get(u'nodes')}) + var.put(u'destructuring', var.get(u'DestructuringTransformer').create(PyJs_Object_947_)) + var.put(u'ref', PyJsComma(Js(0.0), Js(None))) + if (var.get(u'path').callprop(u'isCompletionRecord') or var.get(u'path').get(u'parentPath').callprop(u'isExpressionStatement').neg()): + var.put(u'ref', var.get(u'scope').callprop(u'generateUidIdentifierBasedOnNode', var.get(u'node').get(u'right'), Js(u'ref'))) + var.get(u'nodes').callprop(u'push', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'ref'), var.get(u'node').get(u'right'))]))) + if var.get(u't').callprop(u'isArrayExpression', var.get(u'node').get(u'right')): + var.get(u'destructuring').get(u'arrays').put(var.get(u'ref').get(u'name'), var.get(u'true')) + var.get(u'destructuring').callprop(u'init', var.get(u'node').get(u'left'), (var.get(u'ref') or var.get(u'node').get(u'right'))) + if var.get(u'ref'): + var.get(u'nodes').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u'ref'))) + var.get(u'path').callprop(u'replaceWithMultiple', var.get(u'nodes')) + PyJs_AssignmentExpression_946_._set_name(u'AssignmentExpression') + @Js + def PyJs_VariableDeclaration_948_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'file':file, u'VariableDeclaration':PyJs_VariableDeclaration_948_}, var) + var.registers([u'node', u'_isArray5', u'patternId', u'_ref7', u'parent', u'i', u'pattern', u'_i5', u'tail', u'_iterator5', u'_node', u'declar', u'nodesOut', u'file', u'path', u'destructuring', u'scope', u'nodes', u'_tail$declarations']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'parent', var.get(u'path').get(u'parent')) + if var.get(u't').callprop(u'isForXStatement', var.get(u'parent')): + return var.get('undefined') + if (var.get(u'parent').neg() or var.get(u'path').get(u'container').neg()): + return var.get('undefined') + if var.get(u'variableDeclarationHasPattern')(var.get(u'node')).neg(): + return var.get('undefined') + var.put(u'nodes', Js([])) + var.put(u'declar', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator5').get(u'length')): + break + var.put(u'_ref7', var.get(u'_iterator5').get((var.put(u'_i5',Js(var.get(u'_i5').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i5', var.get(u'_iterator5').callprop(u'next')) + if var.get(u'_i5').get(u'done'): + break + var.put(u'_ref7', var.get(u'_i5').get(u'value')) + var.put(u'_node', var.get(u'_ref7')) + var.put(u'tail', var.get(u'nodesOut').get((var.get(u'nodesOut').get(u'length')-Js(1.0)))) + if (((var.get(u'tail') and var.get(u't').callprop(u'isVariableDeclaration', var.get(u'tail'))) and var.get(u't').callprop(u'isVariableDeclaration', var.get(u'_node'))) and PyJsStrictEq(var.get(u'tail').get(u'kind'),var.get(u'_node').get(u'kind'))): + pass + var.put(u'_tail$declarations', var.get(u'tail').get(u'declarations')).get(u'push').callprop(u'apply', var.get(u'_tail$declarations'), var.get(u'_node').get(u'declarations')) + else: + var.get(u'nodesOut').callprop(u'push', var.get(u'_node')) + + if PyJsStrictEq(var.get(u'nodesOut').get(u'length'),Js(1.0)): + var.get(u'path').callprop(u'replaceWith', var.get(u'nodesOut').get(u'0')) + else: + var.get(u'path').callprop(u'replaceWithMultiple', var.get(u'nodesOut')) + PyJs_VariableDeclaration_948_._set_name(u'VariableDeclaration') + PyJs_Object_940_ = Js({u'ExportNamedDeclaration':PyJs_ExportNamedDeclaration_941_,u'ForXStatement':PyJs_ForXStatement_942_,u'CatchClause':PyJs_CatchClause_944_,u'AssignmentExpression':PyJs_AssignmentExpression_946_,u'VariableDeclaration':PyJs_VariableDeclaration_948_}) + PyJs_Object_939_ = Js({u'visitor':PyJs_Object_940_}) + return PyJs_Object_939_ + PyJs_anonymous_921_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_921_) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_920_._set_name(u'anonymous') +PyJs_Object_951_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/helpers/classCallCheck':Js(110.0)}) +@Js +def PyJs_anonymous_952_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_create', u'exports', u'_interopRequireWildcard', u'getName', u'_babelTypes', u'module', u'_create2', u't', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'require']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_959_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_959_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_getName_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + if var.get(u't').callprop(u'isIdentifier', var.get(u'key')): + return var.get(u'key').get(u'name') + return var.get(u'key').get(u'value').callprop(u'toString') + PyJsHoisted_getName_.func_name = u'getName' + var.put(u'getName', PyJsHoisted_getName_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_958_ = Js({}) + var.put(u'newObj', PyJs_Object_958_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_create', var.get(u'require')(Js(u'babel-runtime/core-js/object/create'))) + var.put(u'_create2', var.get(u'_interopRequireDefault')(var.get(u'_create'))) + @Js + def PyJs_anonymous_953_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_ObjectExpression_956_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'ObjectExpression':PyJs_ObjectExpression_956_, u'arguments':arguments}, var) + var.registers([u'node', u'alreadySeenGetters', u'_isArray', u'plainProps', u'name', u'alreadySeenSetters', u'alreadySeenData', u'prop', u'_i', u'path', u'isDuplicate', u'_iterator', u'_ref']) + var.put(u'node', var.get(u'path').get(u'node')) + @Js + def PyJs_anonymous_957_(prop, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'prop':prop}, var) + var.registers([u'prop']) + return (var.get(u't').callprop(u'isSpreadProperty', var.get(u'prop')).neg() and var.get(u'prop').get(u'computed').neg()) + PyJs_anonymous_957_._set_name(u'anonymous') + var.put(u'plainProps', var.get(u'node').get(u'properties').callprop(u'filter', PyJs_anonymous_957_)) + var.put(u'alreadySeenData', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'alreadySeenGetters', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'alreadySeenSetters', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + #for JS loop + var.put(u'_iterator', var.get(u'plainProps')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'prop', var.get(u'_ref')) + var.put(u'name', var.get(u'getName')(var.get(u'prop').get(u'key'))) + var.put(u'isDuplicate', Js(False)) + while 1: + SWITCHED = False + CONDITION = (var.get(u'prop').get(u'kind')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'get')): + SWITCHED = True + if (var.get(u'alreadySeenData').get(var.get(u'name')) or var.get(u'alreadySeenGetters').get(var.get(u'name'))): + var.put(u'isDuplicate', var.get(u'true')) + var.get(u'alreadySeenGetters').put(var.get(u'name'), var.get(u'true')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'set')): + SWITCHED = True + if (var.get(u'alreadySeenData').get(var.get(u'name')) or var.get(u'alreadySeenSetters').get(var.get(u'name'))): + var.put(u'isDuplicate', var.get(u'true')) + var.get(u'alreadySeenSetters').put(var.get(u'name'), var.get(u'true')) + break + if True: + SWITCHED = True + if ((var.get(u'alreadySeenData').get(var.get(u'name')) or var.get(u'alreadySeenGetters').get(var.get(u'name'))) or var.get(u'alreadySeenSetters').get(var.get(u'name'))): + var.put(u'isDuplicate', var.get(u'true')) + var.get(u'alreadySeenData').put(var.get(u'name'), var.get(u'true')) + SWITCHED = True + break + if var.get(u'isDuplicate'): + var.get(u'prop').put(u'computed', var.get(u'true')) + var.get(u'prop').put(u'key', var.get(u't').callprop(u'stringLiteral', var.get(u'name'))) + + PyJs_ObjectExpression_956_._set_name(u'ObjectExpression') + PyJs_Object_955_ = Js({u'ObjectExpression':PyJs_ObjectExpression_956_}) + PyJs_Object_954_ = Js({u'visitor':PyJs_Object_955_}) + return PyJs_Object_954_ + PyJs_anonymous_953_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_953_) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_952_._set_name(u'anonymous') +PyJs_Object_960_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/object/create':Js(101.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_961_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_962_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'loose', u'messages', u'_ForOfStatementArray', u'buildForOfArray', u'buildForOfLoose', u't', u'template', u'_ref', u'buildForOf', u'spec']) + @Js + def PyJsHoisted_loose_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'file':file}, var) + var.registers([u'node', u'iteratorKey', u'isArrayKey', u'declar', u'file', u'path', u'scope', u'id', u'loop', u'left']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'left', var.get(u'node').get(u'left')) + var.put(u'declar', PyJsComma(Js(0.0), Js(None))) + var.put(u'id', PyJsComma(Js(0.0), Js(None))) + if ((var.get(u't').callprop(u'isIdentifier', var.get(u'left')) or var.get(u't').callprop(u'isPattern', var.get(u'left'))) or var.get(u't').callprop(u'isMemberExpression', var.get(u'left'))): + var.put(u'id', var.get(u'left')) + else: + if var.get(u't').callprop(u'isVariableDeclaration', var.get(u'left')): + var.put(u'id', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'ref'))) + var.put(u'declar', var.get(u't').callprop(u'variableDeclaration', var.get(u'left').get(u'kind'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'left').get(u'declarations').get(u'0').get(u'id'), var.get(u'id'))]))) + else: + PyJsTempException = JsToPyException(var.get(u'file').callprop(u'buildCodeFrameError', var.get(u'left'), var.get(u'messages').callprop(u'get', Js(u'unknownForHead'), var.get(u'left').get(u'type')))) + raise PyJsTempException + var.put(u'iteratorKey', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'iterator'))) + var.put(u'isArrayKey', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'isArray'))) + PyJs_Object_969_ = Js({u'LOOP_OBJECT':var.get(u'iteratorKey'),u'IS_ARRAY':var.get(u'isArrayKey'),u'OBJECT':var.get(u'node').get(u'right'),u'INDEX':var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'i')),u'ID':var.get(u'id')}) + var.put(u'loop', var.get(u'buildForOfLoose')(PyJs_Object_969_)) + if var.get(u'declar').neg(): + var.get(u'loop').get(u'body').get(u'body').callprop(u'shift') + PyJs_Object_970_ = Js({u'declar':var.get(u'declar'),u'node':var.get(u'loop'),u'loop':var.get(u'loop')}) + return PyJs_Object_970_ + PyJsHoisted_loose_.func_name = u'loose' + var.put(u'loose', PyJsHoisted_loose_) + @Js + def PyJsHoisted__ForOfStatementArray_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'node', u'iterationValue', u'right', u'uid', u'iterationKey', u'path', u'scope', u'nodes', u'loop', u'left']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'nodes', Js([])) + var.put(u'right', var.get(u'node').get(u'right')) + if (var.get(u't').callprop(u'isIdentifier', var.get(u'right')).neg() or var.get(u'scope').callprop(u'hasBinding', var.get(u'right').get(u'name')).neg()): + var.put(u'uid', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'arr'))) + var.get(u'nodes').callprop(u'push', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'uid'), var.get(u'right'))]))) + var.put(u'right', var.get(u'uid')) + var.put(u'iterationKey', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'i'))) + PyJs_Object_965_ = Js({u'BODY':var.get(u'node').get(u'body'),u'KEY':var.get(u'iterationKey'),u'ARR':var.get(u'right')}) + var.put(u'loop', var.get(u'buildForOfArray')(PyJs_Object_965_)) + var.get(u't').callprop(u'inherits', var.get(u'loop'), var.get(u'node')) + var.get(u't').callprop(u'ensureBlock', var.get(u'loop')) + var.put(u'iterationValue', var.get(u't').callprop(u'memberExpression', var.get(u'right'), var.get(u'iterationKey'), var.get(u'true'))) + var.put(u'left', var.get(u'node').get(u'left')) + if var.get(u't').callprop(u'isVariableDeclaration', var.get(u'left')): + var.get(u'left').get(u'declarations').get(u'0').put(u'init', var.get(u'iterationValue')) + var.get(u'loop').get(u'body').get(u'body').callprop(u'unshift', var.get(u'left')) + else: + var.get(u'loop').get(u'body').get(u'body').callprop(u'unshift', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'left'), var.get(u'iterationValue')))) + if var.get(u'path').get(u'parentPath').callprop(u'isLabeledStatement'): + var.put(u'loop', var.get(u't').callprop(u'labeledStatement', var.get(u'path').get(u'parentPath').get(u'node').get(u'label'), var.get(u'loop'))) + var.get(u'nodes').callprop(u'push', var.get(u'loop')) + return var.get(u'nodes') + PyJsHoisted__ForOfStatementArray_.func_name = u'_ForOfStatementArray' + var.put(u'_ForOfStatementArray', PyJsHoisted__ForOfStatementArray_) + @Js + def PyJsHoisted_spec_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'file':file}, var) + var.registers([u'node', u'stepValue', u'isLabeledParent', u'stepKey', u'file', u'parent', u'tryBody', u'declar', u'template', u'path', u'scope', u'iteratorKey', u'loop', u'left']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'parent', var.get(u'path').get(u'parent')) + var.put(u'left', var.get(u'node').get(u'left')) + var.put(u'declar', PyJsComma(Js(0.0), Js(None))) + var.put(u'stepKey', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'step'))) + var.put(u'stepValue', var.get(u't').callprop(u'memberExpression', var.get(u'stepKey'), var.get(u't').callprop(u'identifier', Js(u'value')))) + if ((var.get(u't').callprop(u'isIdentifier', var.get(u'left')) or var.get(u't').callprop(u'isPattern', var.get(u'left'))) or var.get(u't').callprop(u'isMemberExpression', var.get(u'left'))): + var.put(u'declar', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'left'), var.get(u'stepValue')))) + else: + if var.get(u't').callprop(u'isVariableDeclaration', var.get(u'left')): + var.put(u'declar', var.get(u't').callprop(u'variableDeclaration', var.get(u'left').get(u'kind'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'left').get(u'declarations').get(u'0').get(u'id'), var.get(u'stepValue'))]))) + else: + PyJsTempException = JsToPyException(var.get(u'file').callprop(u'buildCodeFrameError', var.get(u'left'), var.get(u'messages').callprop(u'get', Js(u'unknownForHead'), var.get(u'left').get(u'type')))) + raise PyJsTempException + var.put(u'iteratorKey', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'iterator'))) + PyJs_Object_971_ = Js({u'ITERATOR_HAD_ERROR_KEY':var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'didIteratorError')),u'ITERATOR_COMPLETION':var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'iteratorNormalCompletion')),u'ITERATOR_ERROR_KEY':var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'iteratorError')),u'ITERATOR_KEY':var.get(u'iteratorKey'),u'STEP_KEY':var.get(u'stepKey'),u'OBJECT':var.get(u'node').get(u'right'),u'BODY':var.get(u"null")}) + var.put(u'template', var.get(u'buildForOf')(PyJs_Object_971_)) + var.put(u'isLabeledParent', var.get(u't').callprop(u'isLabeledStatement', var.get(u'parent'))) + var.put(u'tryBody', var.get(u'template').get(u'3').get(u'block').get(u'body')) + var.put(u'loop', var.get(u'tryBody').get(u'0')) + if var.get(u'isLabeledParent'): + var.get(u'tryBody').put(u'0', var.get(u't').callprop(u'labeledStatement', var.get(u'parent').get(u'label'), var.get(u'loop'))) + PyJs_Object_972_ = Js({u'replaceParent':var.get(u'isLabeledParent'),u'declar':var.get(u'declar'),u'loop':var.get(u'loop'),u'node':var.get(u'template')}) + return PyJs_Object_972_ + PyJsHoisted_spec_.func_name = u'spec' + var.put(u'spec', PyJsHoisted_spec_) + var.put(u'messages', var.get(u'_ref').get(u'messages')) + var.put(u'template', var.get(u'_ref').get(u'template')) + var.put(u't', var.get(u'_ref').get(u'types')) + var.put(u'buildForOfArray', var.get(u'template')(Js(u'\n for (var KEY = 0; KEY < ARR.length; KEY++) BODY;\n '))) + def PyJs_LONG_963_(var=var): + return var.get(u'template')(Js(u'\n for (var LOOP_OBJECT = OBJECT,\n IS_ARRAY = Array.isArray(LOOP_OBJECT),\n INDEX = 0,\n LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n var ID;\n if (IS_ARRAY) {\n if (INDEX >= LOOP_OBJECT.length) break;\n ID = LOOP_OBJECT[INDEX++];\n } else {\n INDEX = LOOP_OBJECT.next();\n if (INDEX.done) break;\n ID = INDEX.value;\n }\n }\n ')) + var.put(u'buildForOfLoose', PyJs_LONG_963_()) + def PyJs_LONG_964_(var=var): + return var.get(u'template')(Js(u'\n var ITERATOR_COMPLETION = true;\n var ITERATOR_HAD_ERROR_KEY = false;\n var ITERATOR_ERROR_KEY = undefined;\n try {\n for (var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); ITERATOR_COMPLETION = true) {\n }\n } catch (err) {\n ITERATOR_HAD_ERROR_KEY = true;\n ITERATOR_ERROR_KEY = err;\n } finally {\n try {\n if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {\n ITERATOR_KEY.return();\n }\n } finally {\n if (ITERATOR_HAD_ERROR_KEY) {\n throw ITERATOR_ERROR_KEY;\n }\n }\n }\n ')) + var.put(u'buildForOf', PyJs_LONG_964_()) + pass + @Js + def PyJs_ForOfStatement_968_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'ForOfStatement':PyJs_ForOfStatement_968_}, var) + var.registers([u'node', u'callback', u'state', u'declar', u'build', u'loop', u'path', u'block']) + if var.get(u'path').callprop(u'get', Js(u'right')).callprop(u'isArrayExpression'): + if var.get(u'path').get(u'parentPath').callprop(u'isLabeledStatement'): + return var.get(u'path').get(u'parentPath').callprop(u'replaceWithMultiple', var.get(u'_ForOfStatementArray')(var.get(u'path'))) + else: + return var.get(u'path').callprop(u'replaceWithMultiple', var.get(u'_ForOfStatementArray')(var.get(u'path'))) + var.put(u'callback', var.get(u'spec')) + if var.get(u'state').get(u'opts').get(u'loose'): + var.put(u'callback', var.get(u'loose')) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'build', var.get(u'callback')(var.get(u'path'), var.get(u'state'))) + var.put(u'declar', var.get(u'build').get(u'declar')) + var.put(u'loop', var.get(u'build').get(u'loop')) + var.put(u'block', var.get(u'loop').get(u'body')) + var.get(u'path').callprop(u'ensureBlock') + if var.get(u'declar'): + var.get(u'block').get(u'body').callprop(u'push', var.get(u'declar')) + var.get(u'block').put(u'body', var.get(u'block').get(u'body').callprop(u'concat', var.get(u'node').get(u'body').get(u'body'))) + var.get(u't').callprop(u'inherits', var.get(u'loop'), var.get(u'node')) + var.get(u't').callprop(u'inherits', var.get(u'loop').get(u'body'), var.get(u'node').get(u'body')) + if var.get(u'build').get(u'replaceParent'): + var.get(u'path').get(u'parentPath').callprop(u'replaceWithMultiple', var.get(u'build').get(u'node')) + var.get(u'path').callprop(u'remove') + else: + var.get(u'path').callprop(u'replaceWithMultiple', var.get(u'build').get(u'node')) + PyJs_ForOfStatement_968_._set_name(u'ForOfStatement') + PyJs_Object_967_ = Js({u'ForOfStatement':PyJs_ForOfStatement_968_}) + PyJs_Object_966_ = Js({u'visitor':PyJs_Object_967_}) + return PyJs_Object_966_ + pass + pass + PyJs_anonymous_962_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_962_) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_961_._set_name(u'anonymous') +PyJs_Object_973_ = Js({}) +@Js +def PyJs_anonymous_974_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'_babelHelperFunctionName', u'module', u'_babelHelperFunctionName2', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_981_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_981_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_975_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_exit_979_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'exit':PyJs_exit_979_, u'arguments':arguments}, var) + var.registers([u'path', u'replacement']) + if (PyJsStrictNeq(var.get(u'path').get(u'key'),Js(u'value')) and var.get(u'path').get(u'parentPath').callprop(u'isObjectProperty').neg()): + var.put(u'replacement', PyJsComma(Js(0.0),var.get(u'_babelHelperFunctionName2').get(u'default'))(var.get(u'path'))) + if var.get(u'replacement'): + var.get(u'path').callprop(u'replaceWith', var.get(u'replacement')) + PyJs_exit_979_._set_name(u'exit') + PyJs_Object_978_ = Js({u'exit':PyJs_exit_979_}) + @Js + def PyJs_ObjectProperty_980_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'ObjectProperty':PyJs_ObjectProperty_980_, u'arguments':arguments}, var) + var.registers([u'newNode', u'value', u'path']) + var.put(u'value', var.get(u'path').callprop(u'get', Js(u'value'))) + if var.get(u'value').callprop(u'isFunction'): + var.put(u'newNode', PyJsComma(Js(0.0),var.get(u'_babelHelperFunctionName2').get(u'default'))(var.get(u'value'))) + if var.get(u'newNode'): + var.get(u'value').callprop(u'replaceWith', var.get(u'newNode')) + PyJs_ObjectProperty_980_._set_name(u'ObjectProperty') + PyJs_Object_977_ = Js({u'ArrowFunctionExpression|FunctionExpression':PyJs_Object_978_,u'ObjectProperty':PyJs_ObjectProperty_980_}) + PyJs_Object_976_ = Js({u'visitor':PyJs_Object_977_}) + return PyJs_Object_976_ + PyJs_anonymous_975_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_975_) + var.put(u'_babelHelperFunctionName', var.get(u'require')(Js(u'babel-helper-function-name'))) + var.put(u'_babelHelperFunctionName2', var.get(u'_interopRequireDefault')(var.get(u'_babelHelperFunctionName'))) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_974_._set_name(u'anonymous') +PyJs_Object_982_ = Js({u'babel-helper-function-name':Js(49.0)}) +@Js +def PyJs_anonymous_983_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_984_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_NumericLiteral_987_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'NumericLiteral':PyJs_NumericLiteral_987_, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'node', u'_ref']) + var.put(u'node', var.get(u'_ref').get(u'node')) + if (var.get(u'node').get(u'extra') and JsRegExp(u'/^0[ob]/i').callprop(u'test', var.get(u'node').get(u'extra').get(u'raw'))): + var.get(u'node').put(u'extra', var.get(u'undefined')) + PyJs_NumericLiteral_987_._set_name(u'NumericLiteral') + @Js + def PyJs_StringLiteral_988_(_ref2, this, arguments, var=var): + var = Scope({u'this':this, u'StringLiteral':PyJs_StringLiteral_988_, u'_ref2':_ref2, u'arguments':arguments}, var) + var.registers([u'node', u'_ref2']) + var.put(u'node', var.get(u'_ref2').get(u'node')) + if (var.get(u'node').get(u'extra') and JsRegExp(u'/\\\\[u]/gi').callprop(u'test', var.get(u'node').get(u'extra').get(u'raw'))): + var.get(u'node').put(u'extra', var.get(u'undefined')) + PyJs_StringLiteral_988_._set_name(u'StringLiteral') + PyJs_Object_986_ = Js({u'NumericLiteral':PyJs_NumericLiteral_987_,u'StringLiteral':PyJs_StringLiteral_988_}) + PyJs_Object_985_ = Js({u'visitor':PyJs_Object_986_}) + return PyJs_Object_985_ + PyJs_anonymous_984_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_984_) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_983_._set_name(u'anonymous') +PyJs_Object_989_ = Js({}) +@Js +def PyJs_anonymous_990_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_create', u'buildDefine', u'exports', u'require', u'_babelTemplate', u'module', u'_create2', u'_babelTemplate2', u'buildFactory', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1007_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1007_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_create', var.get(u'require')(Js(u'babel-runtime/core-js/object/create'))) + var.put(u'_create2', var.get(u'_interopRequireDefault')(var.get(u'_create'))) + @Js + def PyJs_anonymous_991_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'isValidRequireCall', u'amdVisitor', u'_ref', u't']) + @Js + def PyJsHoisted_isValidRequireCall_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path', u'args', u'arg']) + if var.get(u'path').callprop(u'isCallExpression').neg(): + return Js(False) + PyJs_Object_992_ = Js({u'name':Js(u'require')}) + if var.get(u'path').callprop(u'get', Js(u'callee')).callprop(u'isIdentifier', PyJs_Object_992_).neg(): + return Js(False) + if var.get(u'path').get(u'scope').callprop(u'getBinding', Js(u'require')): + return Js(False) + var.put(u'args', var.get(u'path').callprop(u'get', Js(u'arguments'))) + if PyJsStrictNeq(var.get(u'args').get(u'length'),Js(1.0)): + return Js(False) + var.put(u'arg', var.get(u'args').get(u'0')) + if var.get(u'arg').callprop(u'isStringLiteral').neg(): + return Js(False) + return var.get(u'true') + PyJsHoisted_isValidRequireCall_.func_name = u'isValidRequireCall' + var.put(u'isValidRequireCall', PyJsHoisted_isValidRequireCall_) + var.put(u't', var.get(u'_ref').get(u'types')) + pass + @Js + def PyJs_ReferencedIdentifier_994_(_ref2, this, arguments, var=var): + var = Scope({u'this':this, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_994_, u'_ref2':_ref2, u'arguments':arguments}, var) + var.registers([u'node', u'scope', u'_ref2']) + var.put(u'node', var.get(u'_ref2').get(u'node')) + var.put(u'scope', var.get(u'_ref2').get(u'scope')) + if (PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'exports')) and var.get(u'scope').callprop(u'getBinding', Js(u'exports')).neg()): + var.get(u"this").put(u'hasExports', var.get(u'true')) + if (PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'module')) and var.get(u'scope').callprop(u'getBinding', Js(u'module')).neg()): + var.get(u"this").put(u'hasModule', var.get(u'true')) + PyJs_ReferencedIdentifier_994_._set_name(u'ReferencedIdentifier') + @Js + def PyJs_CallExpression_995_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'CallExpression':PyJs_CallExpression_995_}, var) + var.registers([u'path']) + if var.get(u'isValidRequireCall')(var.get(u'path')).neg(): + return var.get('undefined') + var.get(u"this").get(u'bareSources').callprop(u'push', var.get(u'path').get(u'node').get(u'arguments').get(u'0')) + var.get(u'path').callprop(u'remove') + PyJs_CallExpression_995_._set_name(u'CallExpression') + @Js + def PyJs_VariableDeclarator_996_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'VariableDeclarator':PyJs_VariableDeclarator_996_}, var) + var.registers([u'source', u'init', u'id', u'path']) + var.put(u'id', var.get(u'path').callprop(u'get', Js(u'id'))) + if var.get(u'id').callprop(u'isIdentifier').neg(): + return var.get('undefined') + var.put(u'init', var.get(u'path').callprop(u'get', Js(u'init'))) + if var.get(u'isValidRequireCall')(var.get(u'init')).neg(): + return var.get('undefined') + var.put(u'source', var.get(u'init').get(u'node').get(u'arguments').get(u'0')) + var.get(u"this").get(u'sourceNames').put(var.get(u'source').get(u'value'), var.get(u'true')) + var.get(u"this").get(u'sources').callprop(u'push', Js([var.get(u'id').get(u'node'), var.get(u'source')])) + var.get(u'path').callprop(u'remove') + PyJs_VariableDeclarator_996_._set_name(u'VariableDeclarator') + PyJs_Object_993_ = Js({u'ReferencedIdentifier':PyJs_ReferencedIdentifier_994_,u'CallExpression':PyJs_CallExpression_995_,u'VariableDeclarator':PyJs_VariableDeclarator_996_}) + var.put(u'amdVisitor', PyJs_Object_993_) + @Js + def PyJs_pre_998_(this, arguments, var=var): + var = Scope({u'this':this, u'pre':PyJs_pre_998_, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'sources', Js([])) + var.get(u"this").put(u'sourceNames', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.get(u"this").put(u'bareSources', Js([])) + var.get(u"this").put(u'hasExports', Js(False)) + var.get(u"this").put(u'hasModule', Js(False)) + PyJs_pre_998_._set_name(u'pre') + @Js + def PyJs_exit_1001_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'exit':PyJs_exit_1001_, u'arguments':arguments}, var) + var.registers([u'node', u'moduleName', u'_this', u'factory', u'sources', u'params', u'path']) + var.put(u'_this', var.get(u"this")) + if var.get(u"this").get(u'ran'): + return var.get('undefined') + var.get(u"this").put(u'ran', var.get(u'true')) + var.get(u'path').callprop(u'traverse', var.get(u'amdVisitor'), var.get(u"this")) + @Js + def PyJs_anonymous_1002_(source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'arguments':arguments}, var) + var.registers([u'source']) + return var.get(u'source').get(u'0') + PyJs_anonymous_1002_._set_name(u'anonymous') + var.put(u'params', var.get(u"this").get(u'sources').callprop(u'map', PyJs_anonymous_1002_)) + @Js + def PyJs_anonymous_1003_(source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'arguments':arguments}, var) + var.registers([u'source']) + return var.get(u'source').get(u'1') + PyJs_anonymous_1003_._set_name(u'anonymous') + var.put(u'sources', var.get(u"this").get(u'sources').callprop(u'map', PyJs_anonymous_1003_)) + @Js + def PyJs_anonymous_1004_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + return var.get(u'_this').get(u'sourceNames').get(var.get(u'str').get(u'value')).neg() + PyJs_anonymous_1004_._set_name(u'anonymous') + var.put(u'sources', var.get(u'sources').callprop(u'concat', var.get(u"this").get(u'bareSources').callprop(u'filter', PyJs_anonymous_1004_))) + var.put(u'moduleName', var.get(u"this").callprop(u'getModuleName')) + if var.get(u'moduleName'): + var.put(u'moduleName', var.get(u't').callprop(u'stringLiteral', var.get(u'moduleName'))) + if var.get(u"this").get(u'hasExports'): + var.get(u'sources').callprop(u'unshift', var.get(u't').callprop(u'stringLiteral', Js(u'exports'))) + var.get(u'params').callprop(u'unshift', var.get(u't').callprop(u'identifier', Js(u'exports'))) + if var.get(u"this").get(u'hasModule'): + var.get(u'sources').callprop(u'unshift', var.get(u't').callprop(u'stringLiteral', Js(u'module'))) + var.get(u'params').callprop(u'unshift', var.get(u't').callprop(u'identifier', Js(u'module'))) + var.put(u'node', var.get(u'path').get(u'node')) + PyJs_Object_1005_ = Js({u'PARAMS':var.get(u'params'),u'BODY':var.get(u'node').get(u'body')}) + var.put(u'factory', var.get(u'buildFactory')(PyJs_Object_1005_)) + var.get(u'factory').get(u'expression').get(u'body').put(u'directives', var.get(u'node').get(u'directives')) + var.get(u'node').put(u'directives', Js([])) + PyJs_Object_1006_ = Js({u'MODULE_NAME':var.get(u'moduleName'),u'SOURCES':var.get(u'sources'),u'FACTORY':var.get(u'factory')}) + var.get(u'node').put(u'body', Js([var.get(u'buildDefine')(PyJs_Object_1006_)])) + PyJs_exit_1001_._set_name(u'exit') + PyJs_Object_1000_ = Js({u'exit':PyJs_exit_1001_}) + PyJs_Object_999_ = Js({u'Program':PyJs_Object_1000_}) + PyJs_Object_997_ = Js({u'inherits':var.get(u'require')(Js(u'babel-plugin-transform-es2015-modules-commonjs')),u'pre':PyJs_pre_998_,u'visitor':PyJs_Object_999_}) + return PyJs_Object_997_ + PyJs_anonymous_991_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_991_) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + var.put(u'_babelTemplate2', var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate'))) + pass + var.put(u'buildDefine', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n define(MODULE_NAME, [SOURCES], FACTORY);\n'))) + var.put(u'buildFactory', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (PARAMS) {\n BODY;\n })\n'))) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_990_._set_name(u'anonymous') +PyJs_Object_1008_ = Js({u'babel-plugin-transform-es2015-modules-commonjs':Js(73.0),u'babel-runtime/core-js/object/create':Js(101.0),u'babel-template':Js(221.0)}) +@Js +def PyJs_anonymous_1009_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_symbol2', u'_babelTemplate', u'module', u'buildLooseExportsModuleDeclaration', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'buildExportAll', u'_create2', u'_keys', u'buildExportsAssignment', u'THIS_BREAK_KEYS', u'_create', u'exports', u'_interopRequireWildcard', u'_babelTypes', u'buildRequire', u'buildExportsModuleDeclaration', u'_symbol', u'_path2', u'buildExportsFrom', u'_keys2', u'_babelTemplate2', u't', u'require']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1028_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1028_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1027_ = Js({}) + var.put(u'newObj', PyJs_Object_1027_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_keys', var.get(u'require')(Js(u'babel-runtime/core-js/object/keys'))) + var.put(u'_keys2', var.get(u'_interopRequireDefault')(var.get(u'_keys'))) + var.put(u'_create', var.get(u'require')(Js(u'babel-runtime/core-js/object/create'))) + var.put(u'_create2', var.get(u'_interopRequireDefault')(var.get(u'_create'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_symbol', var.get(u'require')(Js(u'babel-runtime/core-js/symbol'))) + var.put(u'_symbol2', var.get(u'_interopRequireDefault')(var.get(u'_symbol'))) + @Js + def PyJs_anonymous_1010_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'reassignmentVisitor', u'REASSIGN_REMAP_SKIP']) + var.put(u'REASSIGN_REMAP_SKIP', PyJsComma(Js(0.0),var.get(u'_symbol2').get(u'default'))()) + @Js + def PyJs_ReferencedIdentifier_1012_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_1012_, u'arguments':arguments}, var) + var.registers([u'property', u'remap', u'object', u'name', u'path']) + var.put(u'name', var.get(u'path').get(u'node').get(u'name')) + var.put(u'remap', var.get(u"this").get(u'remaps').get(var.get(u'name'))) + if var.get(u'remap').neg(): + return var.get('undefined') + if PyJsStrictNeq(var.get(u"this").get(u'scope').callprop(u'getBinding', var.get(u'name')),var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'name'))): + return var.get('undefined') + PyJs_Object_1013_ = Js({u'callee':var.get(u'path').get(u'node')}) + if var.get(u'path').get(u'parentPath').callprop(u'isCallExpression', PyJs_Object_1013_): + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'sequenceExpression', Js([var.get(u't').callprop(u'numericLiteral', Js(0.0)), var.get(u'remap')]))) + else: + if (var.get(u'path').callprop(u'isJSXIdentifier') and var.get(u't').callprop(u'isMemberExpression', var.get(u'remap'))): + var.put(u'object', var.get(u'remap').get(u'object')) + var.put(u'property', var.get(u'remap').get(u'property')) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'JSXMemberExpression', var.get(u't').callprop(u'JSXIdentifier', var.get(u'object').get(u'name')), var.get(u't').callprop(u'JSXIdentifier', var.get(u'property').get(u'name')))) + else: + var.get(u'path').callprop(u'replaceWith', var.get(u'remap')) + var.get(u"this").callprop(u'requeueInParent', var.get(u'path')) + PyJs_ReferencedIdentifier_1012_._set_name(u'ReferencedIdentifier') + @Js + def PyJs_AssignmentExpression_1014_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'AssignmentExpression':PyJs_AssignmentExpression_1014_}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'name', u'exports', u'reid', u'_i', u'path', u'_ref', u'left']) + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'node').get(var.get(u'REASSIGN_REMAP_SKIP')): + return var.get('undefined') + var.put(u'left', var.get(u'path').callprop(u'get', Js(u'left'))) + if var.get(u'left').callprop(u'isIdentifier').neg(): + return var.get('undefined') + var.put(u'name', var.get(u'left').get(u'node').get(u'name')) + var.put(u'exports', var.get(u"this").get(u'exports').get(var.get(u'name'))) + if var.get(u'exports').neg(): + return var.get('undefined') + if PyJsStrictNeq(var.get(u"this").get(u'scope').callprop(u'getBinding', var.get(u'name')),var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'name'))): + return var.get('undefined') + var.get(u'node').put(var.get(u'REASSIGN_REMAP_SKIP'), var.get(u'true')) + #for JS loop + var.put(u'_iterator', var.get(u'exports')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'reid', var.get(u'_ref')) + var.put(u'node', var.get(u'buildExportsAssignment')(var.get(u'reid'), var.get(u'node')).get(u'expression')) + + var.get(u'path').callprop(u'replaceWith', var.get(u'node')) + var.get(u"this").callprop(u'requeueInParent', var.get(u'path')) + PyJs_AssignmentExpression_1014_._set_name(u'AssignmentExpression') + @Js + def PyJs_UpdateExpression_1015_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'UpdateExpression':PyJs_UpdateExpression_1015_}, var) + var.registers([u'node', u'exports', u'name', u'arg', u'operator', u'path', u'nodes']) + var.put(u'arg', var.get(u'path').callprop(u'get', Js(u'argument'))) + if var.get(u'arg').callprop(u'isIdentifier').neg(): + return var.get('undefined') + var.put(u'name', var.get(u'arg').get(u'node').get(u'name')) + var.put(u'exports', var.get(u"this").get(u'exports').get(var.get(u'name'))) + if var.get(u'exports').neg(): + return var.get('undefined') + if PyJsStrictNeq(var.get(u"this").get(u'scope').callprop(u'getBinding', var.get(u'name')),var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'name'))): + return var.get('undefined') + var.put(u'node', var.get(u't').callprop(u'assignmentExpression', (var.get(u'path').get(u'node').get(u'operator').get(u'0')+Js(u'=')), var.get(u'arg').get(u'node'), var.get(u't').callprop(u'numericLiteral', Js(1.0)))) + if ((var.get(u'path').get(u'parentPath').callprop(u'isExpressionStatement') and var.get(u'path').callprop(u'isCompletionRecord').neg()) or var.get(u'path').get(u'node').get(u'prefix')): + var.get(u'path').callprop(u'replaceWith', var.get(u'node')) + var.get(u"this").callprop(u'requeueInParent', var.get(u'path')) + return var.get('undefined') + var.put(u'nodes', Js([])) + var.get(u'nodes').callprop(u'push', var.get(u'node')) + var.put(u'operator', PyJsComma(Js(0.0), Js(None))) + if PyJsStrictEq(var.get(u'path').get(u'node').get(u'operator'),Js(u'--')): + var.put(u'operator', Js(u'+')) + else: + var.put(u'operator', Js(u'-')) + var.get(u'nodes').callprop(u'push', var.get(u't').callprop(u'binaryExpression', var.get(u'operator'), var.get(u'arg').get(u'node'), var.get(u't').callprop(u'numericLiteral', Js(1.0)))) + var.get(u'path').callprop(u'replaceWithMultiple', var.get(u't').callprop(u'sequenceExpression', var.get(u'nodes'))) + PyJs_UpdateExpression_1015_._set_name(u'UpdateExpression') + PyJs_Object_1011_ = Js({u'ReferencedIdentifier':PyJs_ReferencedIdentifier_1012_,u'AssignmentExpression':PyJs_AssignmentExpression_1014_,u'UpdateExpression':PyJs_UpdateExpression_1015_}) + var.put(u'reassignmentVisitor', PyJs_Object_1011_) + @Js + def PyJs_ThisExpression_1018_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'ThisExpression':PyJs_ThisExpression_1018_, u'arguments':arguments}, var) + var.registers([u'path', u'state']) + if var.get(u"this").get(u'ranCommonJS'): + return var.get('undefined') + @Js + def PyJs_anonymous_1019_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return (var.get(u'path').callprop(u'is', Js(u'shadow')).neg() and (var.get(u'THIS_BREAK_KEYS').callprop(u'indexOf', var.get(u'path').get(u'type'))>=Js(0.0))) + PyJs_anonymous_1019_._set_name(u'anonymous') + if (PyJsStrictNeq(var.get(u'state').get(u'opts').get(u'allowTopLevelThis'),var.get(u'true')) and var.get(u'path').callprop(u'findParent', PyJs_anonymous_1019_).neg()): + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'identifier', Js(u'undefined'))) + PyJs_ThisExpression_1018_._set_name(u'ThisExpression') + @Js + def PyJs_exit_1021_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'exit':PyJs_exit_1021_, u'arguments':arguments}, var) + var.registers([u'decl', u'addRequire', u'_isArray5', u'_isArray4', u'_isArray3', u'_isArray2', u'_isArray6', u'imports', u'_specifiers', u'ids', u'_specifier4', u'_isArray7', u'hoistedExportsNode', u'_declaration', u'_specifier2', u'_specifier3', u'specifier', u'importsEntry', u'_specifier', u'_importsEntry$specifi', u'uid', u'_iterator6', u'i', u'_source', u'_i7', u'_i6', u'_i5', u'_i4', u'hasImports', u'_i2', u'id', u'strict', u'init', u'exportNode', u'scope', u'nodes', u'defNode', u'ref', u'addTo', u'body', u'exports', u'node', u'_i3', u'requireNode', u'nonHoistedExportNames', u'_varDecl', u'varDecl', u'declarators', u'topNodes', u'buildTemplate', u'key', u'declaration', u'_id4', u'path', u'name', u'_id2', u'_id3', u'remaps', u'specifiers', u'_id', u'_imports$source', u'hasExports', u'_defNode', u'_ref6', u'_ref5', u'_ref4', u'_ref3', u'_ref2', u'maxBlockHoist', u'_ref7', u'declar', u'source', u'wildcard', u'target', u'_iterator5', u'_iterator4', u'_iterator7', u'_iterator2', u'requires', u'_iterator3', u'_path']) + @Js + def PyJsHoisted_addRequire_(source, blockHoist, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'blockHoist':blockHoist, u'arguments':arguments}, var) + var.registers([u'cached', u'varDecl', u'blockHoist', u'ref', u'source']) + var.put(u'cached', var.get(u'requires').get(var.get(u'source'))) + if var.get(u'cached'): + return var.get(u'cached') + var.put(u'ref', var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', PyJsComma(Js(0.0),var.get(u'_path2').get(u'basename'))(var.get(u'source'), PyJsComma(Js(0.0),var.get(u'_path2').get(u'extname'))(var.get(u'source'))))) + var.put(u'varDecl', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'ref'), var.get(u'buildRequire')(var.get(u't').callprop(u'stringLiteral', var.get(u'source'))).get(u'expression'))]))) + if var.get(u'imports').get(var.get(u'source')): + var.get(u'varDecl').put(u'loc', var.get(u'imports').get(var.get(u'source')).get(u'loc')) + if (PyJsStrictEq(var.get(u'blockHoist',throw=False).typeof(),Js(u'number')) and (var.get(u'blockHoist')>Js(0.0))): + var.get(u'varDecl').put(u'_blockHoist', var.get(u'blockHoist')) + var.get(u'topNodes').callprop(u'push', var.get(u'varDecl')) + return var.get(u'requires').put(var.get(u'source'), var.get(u'ref')) + PyJsHoisted_addRequire_.func_name = u'addRequire' + var.put(u'addRequire', PyJsHoisted_addRequire_) + @Js + def PyJsHoisted_addTo_(obj, key, arr, this, arguments, var=var): + var = Scope({u'this':this, u'arr':arr, u'obj':obj, u'arguments':arguments, u'key':key}, var) + var.registers([u'arr', u'obj', u'key', u'existing']) + var.put(u'existing', (var.get(u'obj').get(var.get(u'key')) or Js([]))) + var.get(u'obj').put(var.get(u'key'), var.get(u'existing').callprop(u'concat', var.get(u'arr'))) + PyJsHoisted_addTo_.func_name = u'addTo' + var.put(u'addTo', PyJsHoisted_addTo_) + var.get(u"this").put(u'ranCommonJS', var.get(u'true')) + var.put(u'strict', var.get(u"this").get(u'opts').get(u'strict').neg().neg()) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.get(u'scope').callprop(u'rename', Js(u'module')) + var.get(u'scope').callprop(u'rename', Js(u'exports')) + var.get(u'scope').callprop(u'rename', Js(u'require')) + var.put(u'hasExports', Js(False)) + var.put(u'hasImports', Js(False)) + var.put(u'body', var.get(u'path').callprop(u'get', Js(u'body'))) + var.put(u'imports', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'exports', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'nonHoistedExportNames', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'topNodes', Js([])) + var.put(u'remaps', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'requires', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + pass + pass + #for JS loop + var.put(u'_iterator2', var.get(u'body')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'_path', var.get(u'_ref2')) + if var.get(u'_path').callprop(u'isExportDeclaration'): + var.put(u'hasExports', var.get(u'true')) + var.put(u'specifiers', Js([]).callprop(u'concat', var.get(u'_path').callprop(u'get', Js(u'declaration')), var.get(u'_path').callprop(u'get', Js(u'specifiers')))) + #for JS loop + var.put(u'_iterator4', var.get(u'specifiers')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i4').get(u'value')) + var.put(u'_specifier2', var.get(u'_ref4')) + var.put(u'ids', var.get(u'_specifier2').callprop(u'getBindingIdentifiers')) + if var.get(u'ids').get(u'__esModule'): + PyJsTempException = JsToPyException(var.get(u'_specifier2').callprop(u'buildCodeFrameError', Js(u'Illegal export "__esModule"'))) + raise PyJsTempException + + if var.get(u'_path').callprop(u'isImportDeclaration'): + pass + var.put(u'hasImports', var.get(u'true')) + var.put(u'key', var.get(u'_path').get(u'node').get(u'source').get(u'value')) + PyJs_Object_1022_ = Js({u'specifiers':Js([]),u'maxBlockHoist':Js(0.0),u'loc':var.get(u'_path').get(u'node').get(u'loc')}) + var.put(u'importsEntry', (var.get(u'imports').get(var.get(u'key')) or PyJs_Object_1022_)) + var.put(u'_importsEntry$specifi', var.get(u'importsEntry').get(u'specifiers')).get(u'push').callprop(u'apply', var.get(u'_importsEntry$specifi'), var.get(u'_path').get(u'node').get(u'specifiers')) + if PyJsStrictEq(var.get(u'_path').get(u'node').get(u'_blockHoist').typeof(),Js(u'number')): + var.get(u'importsEntry').put(u'maxBlockHoist', var.get(u'Math').callprop(u'max', var.get(u'_path').get(u'node').get(u'_blockHoist'), var.get(u'importsEntry').get(u'maxBlockHoist'))) + var.get(u'imports').put(var.get(u'key'), var.get(u'importsEntry')) + var.get(u'_path').callprop(u'remove') + else: + if var.get(u'_path').callprop(u'isExportDefaultDeclaration'): + var.put(u'declaration', var.get(u'_path').callprop(u'get', Js(u'declaration'))) + if var.get(u'declaration').callprop(u'isFunctionDeclaration'): + var.put(u'id', var.get(u'declaration').get(u'node').get(u'id')) + var.put(u'defNode', var.get(u't').callprop(u'identifier', Js(u'default'))) + if var.get(u'id'): + var.get(u'addTo')(var.get(u'exports'), var.get(u'id').get(u'name'), var.get(u'defNode')) + var.get(u'topNodes').callprop(u'push', var.get(u'buildExportsAssignment')(var.get(u'defNode'), var.get(u'id'))) + var.get(u'_path').callprop(u'replaceWith', var.get(u'declaration').get(u'node')) + else: + var.get(u'topNodes').callprop(u'push', var.get(u'buildExportsAssignment')(var.get(u'defNode'), var.get(u't').callprop(u'toExpression', var.get(u'declaration').get(u'node')))) + var.get(u'_path').callprop(u'remove') + else: + if var.get(u'declaration').callprop(u'isClassDeclaration'): + var.put(u'_id', var.get(u'declaration').get(u'node').get(u'id')) + var.put(u'_defNode', var.get(u't').callprop(u'identifier', Js(u'default'))) + if var.get(u'_id'): + var.get(u'addTo')(var.get(u'exports'), var.get(u'_id').get(u'name'), var.get(u'_defNode')) + var.get(u'_path').callprop(u'replaceWithMultiple', Js([var.get(u'declaration').get(u'node'), var.get(u'buildExportsAssignment')(var.get(u'_defNode'), var.get(u'_id'))])) + else: + var.get(u'_path').callprop(u'replaceWith', var.get(u'buildExportsAssignment')(var.get(u'_defNode'), var.get(u't').callprop(u'toExpression', var.get(u'declaration').get(u'node')))) + var.get(u'_path').get(u'parentPath').callprop(u'requeue', var.get(u'_path').callprop(u'get', Js(u'expression.left'))) + else: + var.get(u'_path').callprop(u'replaceWith', var.get(u'buildExportsAssignment')(var.get(u't').callprop(u'identifier', Js(u'default')), var.get(u'declaration').get(u'node'))) + var.get(u'_path').get(u'parentPath').callprop(u'requeue', var.get(u'_path').callprop(u'get', Js(u'expression.left'))) + else: + if var.get(u'_path').callprop(u'isExportNamedDeclaration'): + var.put(u'_declaration', var.get(u'_path').callprop(u'get', Js(u'declaration'))) + if var.get(u'_declaration').get(u'node'): + if var.get(u'_declaration').callprop(u'isFunctionDeclaration'): + var.put(u'_id2', var.get(u'_declaration').get(u'node').get(u'id')) + var.get(u'addTo')(var.get(u'exports'), var.get(u'_id2').get(u'name'), var.get(u'_id2')) + var.get(u'topNodes').callprop(u'push', var.get(u'buildExportsAssignment')(var.get(u'_id2'), var.get(u'_id2'))) + var.get(u'_path').callprop(u'replaceWith', var.get(u'_declaration').get(u'node')) + else: + if var.get(u'_declaration').callprop(u'isClassDeclaration'): + var.put(u'_id3', var.get(u'_declaration').get(u'node').get(u'id')) + var.get(u'addTo')(var.get(u'exports'), var.get(u'_id3').get(u'name'), var.get(u'_id3')) + var.get(u'_path').callprop(u'replaceWithMultiple', Js([var.get(u'_declaration').get(u'node'), var.get(u'buildExportsAssignment')(var.get(u'_id3'), var.get(u'_id3'))])) + var.get(u'nonHoistedExportNames').put(var.get(u'_id3').get(u'name'), var.get(u'true')) + else: + if var.get(u'_declaration').callprop(u'isVariableDeclaration'): + var.put(u'declarators', var.get(u'_declaration').callprop(u'get', Js(u'declarations'))) + #for JS loop + var.put(u'_iterator5', var.get(u'declarators')) + var.put(u'_isArray5', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator5'))) + var.put(u'_i5', Js(0.0)) + var.put(u'_iterator5', (var.get(u'_iterator5') if var.get(u'_isArray5') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator5')))) + while 1: + pass + if var.get(u'_isArray5'): + if (var.get(u'_i5')>=var.get(u'_iterator5').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator5').get((var.put(u'_i5',Js(var.get(u'_i5').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i5', var.get(u'_iterator5').callprop(u'next')) + if var.get(u'_i5').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i5').get(u'value')) + var.put(u'decl', var.get(u'_ref5')) + var.put(u'_id4', var.get(u'decl').callprop(u'get', Js(u'id'))) + var.put(u'init', var.get(u'decl').callprop(u'get', Js(u'init'))) + if var.get(u'init').get(u'node').neg(): + var.get(u'init').callprop(u'replaceWith', var.get(u't').callprop(u'identifier', Js(u'undefined'))) + if var.get(u'_id4').callprop(u'isIdentifier'): + var.get(u'addTo')(var.get(u'exports'), var.get(u'_id4').get(u'node').get(u'name'), var.get(u'_id4').get(u'node')) + var.get(u'init').callprop(u'replaceWith', var.get(u'buildExportsAssignment')(var.get(u'_id4').get(u'node'), var.get(u'init').get(u'node')).get(u'expression')) + var.get(u'nonHoistedExportNames').put(var.get(u'_id4').get(u'node').get(u'name'), var.get(u'true')) + else: + pass + + var.get(u'_path').callprop(u'replaceWith', var.get(u'_declaration').get(u'node')) + continue + var.put(u'_specifiers', var.get(u'_path').callprop(u'get', Js(u'specifiers'))) + var.put(u'nodes', Js([])) + var.put(u'_source', var.get(u'_path').get(u'node').get(u'source')) + if var.get(u'_source'): + var.put(u'ref', var.get(u'addRequire')(var.get(u'_source').get(u'value'), var.get(u'_path').get(u'node').get(u'_blockHoist'))) + #for JS loop + var.put(u'_iterator6', var.get(u'_specifiers')) + var.put(u'_isArray6', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator6'))) + var.put(u'_i6', Js(0.0)) + var.put(u'_iterator6', (var.get(u'_iterator6') if var.get(u'_isArray6') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator6')))) + while 1: + pass + if var.get(u'_isArray6'): + if (var.get(u'_i6')>=var.get(u'_iterator6').get(u'length')): + break + var.put(u'_ref6', var.get(u'_iterator6').get((var.put(u'_i6',Js(var.get(u'_i6').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i6', var.get(u'_iterator6').callprop(u'next')) + if var.get(u'_i6').get(u'done'): + break + var.put(u'_ref6', var.get(u'_i6').get(u'value')) + var.put(u'_specifier3', var.get(u'_ref6')) + if var.get(u'_specifier3').callprop(u'isExportNamespaceSpecifier'): + pass + else: + if var.get(u'_specifier3').callprop(u'isExportDefaultSpecifier'): + pass + else: + if var.get(u'_specifier3').callprop(u'isExportSpecifier'): + if PyJsStrictEq(var.get(u'_specifier3').get(u'node').get(u'local').get(u'name'),Js(u'default')): + def PyJs_LONG_1023_(var=var): + return var.get(u'topNodes').callprop(u'push', var.get(u'buildExportsFrom')(var.get(u't').callprop(u'stringLiteral', var.get(u'_specifier3').get(u'node').get(u'exported').get(u'name')), var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'callExpression', var.get(u"this").callprop(u'addHelper', Js(u'interopRequireDefault')), Js([var.get(u'ref')])), var.get(u'_specifier3').get(u'node').get(u'local')))) + PyJs_LONG_1023_() + else: + var.get(u'topNodes').callprop(u'push', var.get(u'buildExportsFrom')(var.get(u't').callprop(u'stringLiteral', var.get(u'_specifier3').get(u'node').get(u'exported').get(u'name')), var.get(u't').callprop(u'memberExpression', var.get(u'ref'), var.get(u'_specifier3').get(u'node').get(u'local')))) + var.get(u'nonHoistedExportNames').put(var.get(u'_specifier3').get(u'node').get(u'exported').get(u'name'), var.get(u'true')) + + else: + #for JS loop + var.put(u'_iterator7', var.get(u'_specifiers')) + var.put(u'_isArray7', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator7'))) + var.put(u'_i7', Js(0.0)) + var.put(u'_iterator7', (var.get(u'_iterator7') if var.get(u'_isArray7') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator7')))) + while 1: + pass + if var.get(u'_isArray7'): + if (var.get(u'_i7')>=var.get(u'_iterator7').get(u'length')): + break + var.put(u'_ref7', var.get(u'_iterator7').get((var.put(u'_i7',Js(var.get(u'_i7').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i7', var.get(u'_iterator7').callprop(u'next')) + if var.get(u'_i7').get(u'done'): + break + var.put(u'_ref7', var.get(u'_i7').get(u'value')) + var.put(u'_specifier4', var.get(u'_ref7')) + if var.get(u'_specifier4').callprop(u'isExportSpecifier'): + var.get(u'addTo')(var.get(u'exports'), var.get(u'_specifier4').get(u'node').get(u'local').get(u'name'), var.get(u'_specifier4').get(u'node').get(u'exported')) + var.get(u'nonHoistedExportNames').put(var.get(u'_specifier4').get(u'node').get(u'exported').get(u'name'), var.get(u'true')) + var.get(u'nodes').callprop(u'push', var.get(u'buildExportsAssignment')(var.get(u'_specifier4').get(u'node').get(u'exported'), var.get(u'_specifier4').get(u'node').get(u'local'))) + + var.get(u'_path').callprop(u'replaceWithMultiple', var.get(u'nodes')) + else: + if var.get(u'_path').callprop(u'isExportAllDeclaration'): + PyJs_Object_1024_ = Js({u'OBJECT':var.get(u'addRequire')(var.get(u'_path').get(u'node').get(u'source').get(u'value'), var.get(u'_path').get(u'node').get(u'_blockHoist'))}) + var.put(u'exportNode', var.get(u'buildExportAll')(PyJs_Object_1024_)) + var.get(u'exportNode').put(u'loc', var.get(u'_path').get(u'node').get(u'loc')) + var.get(u'topNodes').callprop(u'push', var.get(u'exportNode')) + var.get(u'_path').callprop(u'remove') + + for PyJsTemp in var.get(u'imports'): + var.put(u'source', PyJsTemp) + var.put(u'_imports$source', var.get(u'imports').get(var.get(u'source'))) + var.put(u'specifiers', var.get(u'_imports$source').get(u'specifiers')) + var.put(u'maxBlockHoist', var.get(u'_imports$source').get(u'maxBlockHoist')) + if var.get(u'specifiers').get(u'length'): + var.put(u'uid', var.get(u'addRequire')(var.get(u'source'), var.get(u'maxBlockHoist'))) + var.put(u'wildcard', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(0.0)): + var.get(u'varDecl').put(u'_blockHoist', var.get(u'maxBlockHoist')) + var.get(u'topNodes').callprop(u'push', var.get(u'varDecl')) + var.put(u'wildcard', var.get(u'specifier').get(u'local')) + else: + if var.get(u't').callprop(u'isImportDefaultSpecifier', var.get(u'specifier')): + var.get(u'specifiers').put(var.get(u'i'), var.get(u't').callprop(u'importSpecifier', var.get(u'specifier').get(u'local'), var.get(u't').callprop(u'identifier', Js(u'default')))) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + #for JS loop + var.put(u'_iterator3', var.get(u'specifiers')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'_specifier', var.get(u'_ref3')) + if var.get(u't').callprop(u'isImportSpecifier', var.get(u'_specifier')): + var.put(u'target', var.get(u'uid')) + if PyJsStrictEq(var.get(u'_specifier').get(u'imported').get(u'name'),Js(u'default')): + if var.get(u'wildcard'): + var.put(u'target', var.get(u'wildcard')) + else: + var.put(u'target', var.put(u'wildcard', var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', var.get(u'uid').get(u'name')))) + var.put(u'_varDecl', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'target'), var.get(u't').callprop(u'callExpression', var.get(u"this").callprop(u'addHelper', Js(u'interopRequireDefault')), Js([var.get(u'uid')])))]))) + if (var.get(u'maxBlockHoist')>Js(0.0)): + var.get(u'_varDecl').put(u'_blockHoist', var.get(u'maxBlockHoist')) + var.get(u'topNodes').callprop(u'push', var.get(u'_varDecl')) + var.get(u'remaps').put(var.get(u'_specifier').get(u'local').get(u'name'), var.get(u't').callprop(u'memberExpression', var.get(u'target'), var.get(u't').callprop(u'cloneWithoutLoc', var.get(u'_specifier').get(u'imported')))) + + else: + var.put(u'requireNode', var.get(u'buildRequire')(var.get(u't').callprop(u'stringLiteral', var.get(u'source')))) + var.get(u'requireNode').put(u'loc', var.get(u'imports').get(var.get(u'source')).get(u'loc')) + var.get(u'topNodes').callprop(u'push', var.get(u'requireNode')) + if (var.get(u'hasImports') and PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u'nonHoistedExportNames')).get(u'length')): + var.put(u'hoistedExportsNode', var.get(u't').callprop(u'identifier', Js(u'undefined'))) + for PyJsTemp in var.get(u'nonHoistedExportNames'): + var.put(u'name', PyJsTemp) + var.put(u'hoistedExportsNode', var.get(u'buildExportsAssignment')(var.get(u't').callprop(u'identifier', var.get(u'name')), var.get(u'hoistedExportsNode')).get(u'expression')) + var.put(u'node', var.get(u't').callprop(u'expressionStatement', var.get(u'hoistedExportsNode'))) + var.get(u'node').put(u'_blockHoist', Js(3.0)) + var.get(u'topNodes').callprop(u'unshift', var.get(u'node')) + if (var.get(u'hasExports') and var.get(u'strict').neg()): + var.put(u'buildTemplate', var.get(u'buildExportsModuleDeclaration')) + if var.get(u"this").get(u'opts').get(u'loose'): + var.put(u'buildTemplate', var.get(u'buildLooseExportsModuleDeclaration')) + var.put(u'declar', var.get(u'buildTemplate')()) + var.get(u'declar').put(u'_blockHoist', Js(3.0)) + var.get(u'topNodes').callprop(u'unshift', var.get(u'declar')) + var.get(u'path').callprop(u'unshiftContainer', Js(u'body'), var.get(u'topNodes')) + @Js + def PyJs_requeueInParent_1026_(newPath, this, arguments, var=var): + var = Scope({u'newPath':newPath, u'this':this, u'arguments':arguments, u'requeueInParent':PyJs_requeueInParent_1026_}, var) + var.registers([u'newPath']) + return var.get(u'path').callprop(u'requeue', var.get(u'newPath')) + PyJs_requeueInParent_1026_._set_name(u'requeueInParent') + PyJs_Object_1025_ = Js({u'remaps':var.get(u'remaps'),u'scope':var.get(u'scope'),u'exports':var.get(u'exports'),u'requeueInParent':PyJs_requeueInParent_1026_}) + var.get(u'path').callprop(u'traverse', var.get(u'reassignmentVisitor'), PyJs_Object_1025_) + PyJs_exit_1021_._set_name(u'exit') + PyJs_Object_1020_ = Js({u'exit':PyJs_exit_1021_}) + PyJs_Object_1017_ = Js({u'ThisExpression':PyJs_ThisExpression_1018_,u'Program':PyJs_Object_1020_}) + PyJs_Object_1016_ = Js({u'inherits':var.get(u'require')(Js(u'babel-plugin-transform-strict-mode')),u'visitor':PyJs_Object_1017_}) + return PyJs_Object_1016_ + PyJs_anonymous_1010_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1010_) + var.put(u'_path2', var.get(u'require')(Js(u'path'))) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + var.put(u'_babelTemplate2', var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + var.put(u'buildRequire', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n require($0);\n'))) + var.put(u'buildExportsModuleDeclaration', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n Object.defineProperty(exports, "__esModule", {\n value: true\n });\n'))) + var.put(u'buildExportsFrom', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n Object.defineProperty(exports, $0, {\n enumerable: true,\n get: function () {\n return $1;\n }\n });\n'))) + var.put(u'buildLooseExportsModuleDeclaration', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n exports.__esModule = true;\n'))) + var.put(u'buildExportsAssignment', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n exports.$0 = $1;\n'))) + var.put(u'buildExportAll', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n Object.keys(OBJECT).forEach(function (key) {\n if (key === "default" || key === "__esModule") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return OBJECT[key];\n }\n });\n });\n'))) + var.put(u'THIS_BREAK_KEYS', Js([Js(u'FunctionExpression'), Js(u'FunctionDeclaration'), Js(u'ClassProperty'), Js(u'ClassMethod'), Js(u'ObjectMethod')])) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1009_._set_name(u'anonymous') +PyJs_Object_1029_ = Js({u'babel-plugin-transform-strict-mode':Js(94.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/object/create':Js(101.0),u'babel-runtime/core-js/object/keys':Js(103.0),u'babel-runtime/core-js/symbol':Js(105.0),u'babel-template':Js(221.0),u'babel-types':Js(258.0),u'path':Js(530.0)}) +@Js +def PyJs_anonymous_1030_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_create', u'exports', u'_symbol2', u'_babelHelperHoistVariables', u'buildExportAll', u'require', u'_babelTemplate', u'module', u'_create2', u'buildTemplate', u'_symbol', u'_babelHelperHoistVariables2', u'_interopRequireDefault', u'_babelTemplate2', u'_getIterator2', u'_getIterator3']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1047_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1047_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_create', var.get(u'require')(Js(u'babel-runtime/core-js/object/create'))) + var.put(u'_create2', var.get(u'_interopRequireDefault')(var.get(u'_create'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_symbol', var.get(u'require')(Js(u'babel-runtime/core-js/symbol'))) + var.put(u'_symbol2', var.get(u'_interopRequireDefault')(var.get(u'_symbol'))) + @Js + def PyJs_anonymous_1031_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'reassignmentVisitor', u'IGNORE_REASSIGNMENT_SYMBOL', u'_ref', u't']) + var.put(u't', var.get(u'_ref').get(u'types')) + var.put(u'IGNORE_REASSIGNMENT_SYMBOL', PyJsComma(Js(0.0),var.get(u'_symbol2').get(u'default'))()) + @Js + def PyJs_AssignmentExpressionUpdateExpression_1033_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'AssignmentExpressionUpdateExpression':PyJs_AssignmentExpressionUpdateExpression_1033_}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'name', u'exportedNames', u'_ref2', u'exportedName', u'_i', u'arg', u'isPostUpdateExpression', u'path']) + if var.get(u'path').get(u'node').get(var.get(u'IGNORE_REASSIGNMENT_SYMBOL')): + return var.get('undefined') + var.get(u'path').get(u'node').put(var.get(u'IGNORE_REASSIGNMENT_SYMBOL'), var.get(u'true')) + var.put(u'arg', var.get(u'path').callprop(u'get', (Js(u'left') if var.get(u'path').callprop(u'isAssignmentExpression') else Js(u'argument')))) + if var.get(u'arg').callprop(u'isIdentifier').neg(): + return var.get('undefined') + var.put(u'name', var.get(u'arg').get(u'node').get(u'name')) + if PyJsStrictNeq(var.get(u"this").get(u'scope').callprop(u'getBinding', var.get(u'name')),var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'name'))): + return var.get('undefined') + var.put(u'exportedNames', var.get(u"this").get(u'exports').get(var.get(u'name'))) + if var.get(u'exportedNames').neg(): + return var.get('undefined') + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'isPostUpdateExpression', (var.get(u'path').callprop(u'isUpdateExpression') and var.get(u'node').get(u'prefix').neg())) + if var.get(u'isPostUpdateExpression'): + if PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'++')): + var.put(u'node', var.get(u't').callprop(u'binaryExpression', Js(u'+'), var.get(u'node').get(u'argument'), var.get(u't').callprop(u'numericLiteral', Js(1.0)))) + else: + if PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'--')): + var.put(u'node', var.get(u't').callprop(u'binaryExpression', Js(u'-'), var.get(u'node').get(u'argument'), var.get(u't').callprop(u'numericLiteral', Js(1.0)))) + else: + var.put(u'isPostUpdateExpression', Js(False)) + #for JS loop + var.put(u'_iterator', var.get(u'exportedNames')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i').get(u'value')) + var.put(u'exportedName', var.get(u'_ref2')) + var.put(u'node', var.get(u"this").callprop(u'buildCall', var.get(u'exportedName'), var.get(u'node')).get(u'expression')) + + if var.get(u'isPostUpdateExpression'): + var.put(u'node', var.get(u't').callprop(u'sequenceExpression', Js([var.get(u'node'), var.get(u'path').get(u'node')]))) + var.get(u'path').callprop(u'replaceWith', var.get(u'node')) + PyJs_AssignmentExpressionUpdateExpression_1033_._set_name(u'AssignmentExpressionUpdateExpression') + PyJs_Object_1032_ = Js({u'AssignmentExpression|UpdateExpression':PyJs_AssignmentExpressionUpdateExpression_1033_}) + var.put(u'reassignmentVisitor', PyJs_Object_1032_) + @Js + def PyJs_ReferencedIdentifier_1036_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_1036_, u'arguments':arguments}, var) + var.registers([u'path', u'state']) + if ((var.get(u'path').get(u'node').get(u'name')==Js(u'__moduleName')) and var.get(u'path').get(u'scope').callprop(u'hasBinding', Js(u'__moduleName')).neg()): + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'memberExpression', var.get(u'state').get(u'contextIdent'), var.get(u't').callprop(u'identifier', Js(u'id')))) + PyJs_ReferencedIdentifier_1036_._set_name(u'ReferencedIdentifier') + @Js + def PyJs_enter_1038_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'enter':PyJs_enter_1038_}, var) + var.registers([u'path', u'state']) + var.get(u'state').put(u'contextIdent', var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', Js(u'context'))) + PyJs_enter_1038_._set_name(u'enter') + @Js + def PyJs_exit_1039_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'exit':PyJs_exit_1039_, u'arguments':arguments}, var) + var.registers([u'_isArray7', u'specifier', u'_isArray5', u'_isArray4', u'_isArray3', u'contextIdent', u'_isArray6', u'_i3', u'_name2', u'canHoist', u'_nodes', u'sources', u'variableIds', u'path', u'id', u'_isArray2', u'setterBody', u'_source', u'_i7', u'_i6', u'_i5', u'addExportName', u'removedPaths', u'_i2', u'_specifier', u'source', u'_node', u'_declar', u'nodes', u'_ref3', u'body', u'node', u'state', u'bindingIdentifiers', u'pushModule', u'setters', u'_path3', u'exportIdent', u'_specifiers', u'exportObjRef', u'_bindingIdentifiers', u'_path2', u'beforeBody', u'target', u'specifiers', u'moduleName', u'_iterator6', u'name', u'_ref8', u'_ref7', u'_ref6', u'_ref5', u'_ref4', u'modules', u'exportNames', u'_name', u'buildExportCall', u'_i4', u'declar', u'_nodes2', u'_iterator5', u'_iterator4', u'_iterator7', u'_iterator2', u'_iterator3', u'_path']) + @Js + def PyJsHoisted_buildExportCall_(name, val, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'val':val, u'arguments':arguments}, var) + var.registers([u'name', u'val']) + return var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'callExpression', var.get(u'exportIdent'), Js([var.get(u't').callprop(u'stringLiteral', var.get(u'name')), var.get(u'val')]))) + PyJsHoisted_buildExportCall_.func_name = u'buildExportCall' + var.put(u'buildExportCall', PyJsHoisted_buildExportCall_) + @Js + def PyJsHoisted_addExportName_(key, val, this, arguments, var=var): + var = Scope({u'this':this, u'val':val, u'key':key, u'arguments':arguments}, var) + var.registers([u'val', u'key']) + var.get(u'exportNames').put(var.get(u'key'), (var.get(u'exportNames').get(var.get(u'key')) or Js([]))) + var.get(u'exportNames').get(var.get(u'key')).callprop(u'push', var.get(u'val')) + PyJsHoisted_addExportName_.func_name = u'addExportName' + var.put(u'addExportName', PyJsHoisted_addExportName_) + @Js + def PyJsHoisted_pushModule_(source, key, specifiers, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'arguments':arguments, u'key':key, u'specifiers':specifiers}, var) + var.registers([u'source', u'key', u'_modules', u'specifiers']) + PyJs_Object_1040_ = Js({u'imports':Js([]),u'exports':Js([])}) + var.put(u'_modules', var.get(u'modules').put(var.get(u'source'), (var.get(u'modules').get(var.get(u'source')) or PyJs_Object_1040_))) + var.get(u'_modules').put(var.get(u'key'), var.get(u'_modules').get(var.get(u'key')).callprop(u'concat', var.get(u'specifiers'))) + PyJsHoisted_pushModule_.func_name = u'pushModule' + var.put(u'pushModule', PyJsHoisted_pushModule_) + var.put(u'exportIdent', var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', Js(u'export'))) + var.put(u'contextIdent', var.get(u'state').get(u'contextIdent')) + var.put(u'exportNames', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'modules', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'beforeBody', Js([])) + var.put(u'setters', Js([])) + var.put(u'sources', Js([])) + var.put(u'variableIds', Js([])) + var.put(u'removedPaths', Js([])) + pass + pass + pass + var.put(u'body', var.get(u'path').callprop(u'get', Js(u'body'))) + var.put(u'canHoist', var.get(u'true')) + #for JS loop + var.put(u'_iterator2', var.get(u'body')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i2').get(u'value')) + var.put(u'_path', var.get(u'_ref3')) + if var.get(u'_path').callprop(u'isExportDeclaration'): + var.put(u'_path', var.get(u'_path').callprop(u'get', Js(u'declaration'))) + if (var.get(u'_path').callprop(u'isVariableDeclaration') and PyJsStrictNeq(var.get(u'_path').get(u'node').get(u'kind'),Js(u'var'))): + var.put(u'canHoist', Js(False)) + break + + #for JS loop + var.put(u'_iterator3', var.get(u'body')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i3').get(u'value')) + var.put(u'_path2', var.get(u'_ref4')) + if (var.get(u'canHoist') and var.get(u'_path2').callprop(u'isFunctionDeclaration')): + var.get(u'beforeBody').callprop(u'push', var.get(u'_path2').get(u'node')) + var.get(u'removedPaths').callprop(u'push', var.get(u'_path2')) + else: + if var.get(u'_path2').callprop(u'isImportDeclaration'): + var.put(u'_source', var.get(u'_path2').get(u'node').get(u'source').get(u'value')) + var.get(u'pushModule')(var.get(u'_source'), Js(u'imports'), var.get(u'_path2').get(u'node').get(u'specifiers')) + for PyJsTemp in var.get(u'_path2').callprop(u'getBindingIdentifiers'): + var.put(u'name', PyJsTemp) + var.get(u'_path2').get(u'scope').callprop(u'removeBinding', var.get(u'name')) + var.get(u'variableIds').callprop(u'push', var.get(u't').callprop(u'identifier', var.get(u'name'))) + var.get(u'_path2').callprop(u'remove') + else: + if var.get(u'_path2').callprop(u'isExportAllDeclaration'): + var.get(u'pushModule')(var.get(u'_path2').get(u'node').get(u'source').get(u'value'), Js(u'exports'), var.get(u'_path2').get(u'node')) + var.get(u'_path2').callprop(u'remove') + else: + if var.get(u'_path2').callprop(u'isExportDefaultDeclaration'): + var.put(u'declar', var.get(u'_path2').callprop(u'get', Js(u'declaration'))) + if (var.get(u'declar').callprop(u'isClassDeclaration') or var.get(u'declar').callprop(u'isFunctionDeclaration')): + var.put(u'id', var.get(u'declar').get(u'node').get(u'id')) + var.put(u'nodes', Js([])) + if var.get(u'id'): + var.get(u'nodes').callprop(u'push', var.get(u'declar').get(u'node')) + var.get(u'nodes').callprop(u'push', var.get(u'buildExportCall')(Js(u'default'), var.get(u'id'))) + var.get(u'addExportName')(var.get(u'id').get(u'name'), Js(u'default')) + else: + var.get(u'nodes').callprop(u'push', var.get(u'buildExportCall')(Js(u'default'), var.get(u't').callprop(u'toExpression', var.get(u'declar').get(u'node')))) + if (var.get(u'canHoist').neg() or var.get(u'declar').callprop(u'isClassDeclaration')): + var.get(u'_path2').callprop(u'replaceWithMultiple', var.get(u'nodes')) + else: + var.put(u'beforeBody', var.get(u'beforeBody').callprop(u'concat', var.get(u'nodes'))) + var.get(u'removedPaths').callprop(u'push', var.get(u'_path2')) + else: + var.get(u'_path2').callprop(u'replaceWith', var.get(u'buildExportCall')(Js(u'default'), var.get(u'declar').get(u'node'))) + else: + if var.get(u'_path2').callprop(u'isExportNamedDeclaration'): + var.put(u'_declar', var.get(u'_path2').callprop(u'get', Js(u'declaration'))) + if var.get(u'_declar').get(u'node'): + var.get(u'_path2').callprop(u'replaceWith', var.get(u'_declar')) + var.put(u'_nodes', Js([])) + var.put(u'bindingIdentifiers', PyJsComma(Js(0.0), Js(None))) + if var.get(u'_path2').callprop(u'isFunction'): + var.put(u'_node', var.get(u'_declar').get(u'node')) + var.put(u'_name', var.get(u'_node').get(u'id').get(u'name')) + if var.get(u'canHoist'): + var.get(u'addExportName')(var.get(u'_name'), var.get(u'_name')) + var.get(u'beforeBody').callprop(u'push', var.get(u'_node')) + var.get(u'beforeBody').callprop(u'push', var.get(u'buildExportCall')(var.get(u'_name'), var.get(u'_node').get(u'id'))) + var.get(u'removedPaths').callprop(u'push', var.get(u'_path2')) + else: + pass + PyJs_Object_1041_ = Js({}) + var.put(u'bindingIdentifiers', PyJsComma(PyJsComma(var.put(u'_bindingIdentifiers', PyJs_Object_1041_),var.get(u'_bindingIdentifiers').put(var.get(u'_name'), var.get(u'_node').get(u'id'))),var.get(u'_bindingIdentifiers'))) + else: + var.put(u'bindingIdentifiers', var.get(u'_declar').callprop(u'getBindingIdentifiers')) + for PyJsTemp in var.get(u'bindingIdentifiers'): + var.put(u'_name2', PyJsTemp) + var.get(u'addExportName')(var.get(u'_name2'), var.get(u'_name2')) + var.get(u'_nodes').callprop(u'push', var.get(u'buildExportCall')(var.get(u'_name2'), var.get(u't').callprop(u'identifier', var.get(u'_name2')))) + var.get(u'_path2').callprop(u'insertAfter', var.get(u'_nodes')) + else: + var.put(u'_specifiers', var.get(u'_path2').get(u'node').get(u'specifiers')) + if (var.get(u'_specifiers') and var.get(u'_specifiers').get(u'length')): + if var.get(u'_path2').get(u'node').get(u'source'): + var.get(u'pushModule')(var.get(u'_path2').get(u'node').get(u'source').get(u'value'), Js(u'exports'), var.get(u'_specifiers')) + var.get(u'_path2').callprop(u'remove') + else: + var.put(u'_nodes2', Js([])) + #for JS loop + var.put(u'_iterator7', var.get(u'_specifiers')) + var.put(u'_isArray7', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator7'))) + var.put(u'_i7', Js(0.0)) + var.put(u'_iterator7', (var.get(u'_iterator7') if var.get(u'_isArray7') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator7')))) + while 1: + pass + if var.get(u'_isArray7'): + if (var.get(u'_i7')>=var.get(u'_iterator7').get(u'length')): + break + var.put(u'_ref8', var.get(u'_iterator7').get((var.put(u'_i7',Js(var.get(u'_i7').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i7', var.get(u'_iterator7').callprop(u'next')) + if var.get(u'_i7').get(u'done'): + break + var.put(u'_ref8', var.get(u'_i7').get(u'value')) + var.put(u'_specifier', var.get(u'_ref8')) + var.get(u'_nodes2').callprop(u'push', var.get(u'buildExportCall')(var.get(u'_specifier').get(u'exported').get(u'name'), var.get(u'_specifier').get(u'local'))) + var.get(u'addExportName')(var.get(u'_specifier').get(u'local').get(u'name'), var.get(u'_specifier').get(u'exported').get(u'name')) + + var.get(u'_path2').callprop(u'replaceWithMultiple', var.get(u'_nodes2')) + + for PyJsTemp in var.get(u'modules'): + var.put(u'source', PyJsTemp) + var.put(u'specifiers', var.get(u'modules').get(var.get(u'source'))) + var.put(u'setterBody', Js([])) + var.put(u'target', var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', var.get(u'source'))) + #for JS loop + var.put(u'_iterator4', var.get(u'specifiers').get(u'imports')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i4').get(u'value')) + var.put(u'specifier', var.get(u'_ref5')) + if var.get(u't').callprop(u'isImportNamespaceSpecifier', var.get(u'specifier')): + var.get(u'setterBody').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'specifier').get(u'local'), var.get(u'target')))) + else: + if var.get(u't').callprop(u'isImportDefaultSpecifier', var.get(u'specifier')): + var.put(u'specifier', var.get(u't').callprop(u'importSpecifier', var.get(u'specifier').get(u'local'), var.get(u't').callprop(u'identifier', Js(u'default')))) + if var.get(u't').callprop(u'isImportSpecifier', var.get(u'specifier')): + var.get(u'setterBody').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'specifier').get(u'local'), var.get(u't').callprop(u'memberExpression', var.get(u'target'), var.get(u'specifier').get(u'imported'))))) + + if var.get(u'specifiers').get(u'exports').get(u'length'): + var.put(u'exportObjRef', var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', Js(u'exportObj'))) + var.get(u'setterBody').callprop(u'push', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'exportObjRef'), var.get(u't').callprop(u'objectExpression', Js([])))]))) + #for JS loop + var.put(u'_iterator5', var.get(u'specifiers').get(u'exports')) + var.put(u'_isArray5', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator5'))) + var.put(u'_i5', Js(0.0)) + var.put(u'_iterator5', (var.get(u'_iterator5') if var.get(u'_isArray5') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator5')))) + while 1: + pass + if var.get(u'_isArray5'): + if (var.get(u'_i5')>=var.get(u'_iterator5').get(u'length')): + break + var.put(u'_ref6', var.get(u'_iterator5').get((var.put(u'_i5',Js(var.get(u'_i5').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i5', var.get(u'_iterator5').callprop(u'next')) + if var.get(u'_i5').get(u'done'): + break + var.put(u'_ref6', var.get(u'_i5').get(u'value')) + var.put(u'node', var.get(u'_ref6')) + if var.get(u't').callprop(u'isExportAllDeclaration', var.get(u'node')): + PyJs_Object_1042_ = Js({u'KEY':var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', Js(u'key')),u'EXPORT_OBJ':var.get(u'exportObjRef'),u'TARGET':var.get(u'target')}) + var.get(u'setterBody').callprop(u'push', var.get(u'buildExportAll')(PyJs_Object_1042_)) + else: + if var.get(u't').callprop(u'isExportSpecifier', var.get(u'node')): + var.get(u'setterBody').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u't').callprop(u'memberExpression', var.get(u'exportObjRef'), var.get(u'node').get(u'exported')), var.get(u't').callprop(u'memberExpression', var.get(u'target'), var.get(u'node').get(u'local'))))) + else: + pass + + var.get(u'setterBody').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'callExpression', var.get(u'exportIdent'), Js([var.get(u'exportObjRef')])))) + var.get(u'sources').callprop(u'push', var.get(u't').callprop(u'stringLiteral', var.get(u'source'))) + var.get(u'setters').callprop(u'push', var.get(u't').callprop(u'functionExpression', var.get(u"null"), Js([var.get(u'target')]), var.get(u't').callprop(u'blockStatement', var.get(u'setterBody')))) + var.put(u'moduleName', var.get(u"this").callprop(u'getModuleName')) + if var.get(u'moduleName'): + var.put(u'moduleName', var.get(u't').callprop(u'stringLiteral', var.get(u'moduleName'))) + if var.get(u'canHoist'): + @Js + def PyJs_anonymous_1043_(id, this, arguments, var=var): + var = Scope({u'this':this, u'id':id, u'arguments':arguments}, var) + var.registers([u'id']) + return var.get(u'variableIds').callprop(u'push', var.get(u'id')) + PyJs_anonymous_1043_._set_name(u'anonymous') + PyJsComma(Js(0.0),var.get(u'_babelHelperHoistVariables2').get(u'default'))(var.get(u'path'), PyJs_anonymous_1043_) + if var.get(u'variableIds').get(u'length'): + @Js + def PyJs_anonymous_1044_(id, this, arguments, var=var): + var = Scope({u'this':this, u'id':id, u'arguments':arguments}, var) + var.registers([u'id']) + return var.get(u't').callprop(u'variableDeclarator', var.get(u'id')) + PyJs_anonymous_1044_._set_name(u'anonymous') + var.get(u'beforeBody').callprop(u'unshift', var.get(u't').callprop(u'variableDeclaration', Js(u'var'), var.get(u'variableIds').callprop(u'map', PyJs_anonymous_1044_))) + PyJs_Object_1045_ = Js({u'exports':var.get(u'exportNames'),u'buildCall':var.get(u'buildExportCall'),u'scope':var.get(u'path').get(u'scope')}) + var.get(u'path').callprop(u'traverse', var.get(u'reassignmentVisitor'), PyJs_Object_1045_) + #for JS loop + var.put(u'_iterator6', var.get(u'removedPaths')) + var.put(u'_isArray6', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator6'))) + var.put(u'_i6', Js(0.0)) + var.put(u'_iterator6', (var.get(u'_iterator6') if var.get(u'_isArray6') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator6')))) + while 1: + pass + if var.get(u'_isArray6'): + if (var.get(u'_i6')>=var.get(u'_iterator6').get(u'length')): + break + var.put(u'_ref7', var.get(u'_iterator6').get((var.put(u'_i6',Js(var.get(u'_i6').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i6', var.get(u'_iterator6').callprop(u'next')) + if var.get(u'_i6').get(u'done'): + break + var.put(u'_ref7', var.get(u'_i6').get(u'value')) + var.put(u'_path3', var.get(u'_ref7')) + var.get(u'_path3').callprop(u'remove') + + PyJs_Object_1046_ = Js({u'SYSTEM_REGISTER':var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', (var.get(u'state').get(u'opts').get(u'systemGlobal') or Js(u'System'))), var.get(u't').callprop(u'identifier', Js(u'register'))),u'BEFORE_BODY':var.get(u'beforeBody'),u'MODULE_NAME':var.get(u'moduleName'),u'SETTERS':var.get(u'setters'),u'SOURCES':var.get(u'sources'),u'BODY':var.get(u'path').get(u'node').get(u'body'),u'EXPORT_IDENTIFIER':var.get(u'exportIdent'),u'CONTEXT_IDENTIFIER':var.get(u'contextIdent')}) + var.get(u'path').get(u'node').put(u'body', Js([var.get(u'buildTemplate')(PyJs_Object_1046_)])) + PyJs_exit_1039_._set_name(u'exit') + PyJs_Object_1037_ = Js({u'enter':PyJs_enter_1038_,u'exit':PyJs_exit_1039_}) + PyJs_Object_1035_ = Js({u'ReferencedIdentifier':PyJs_ReferencedIdentifier_1036_,u'Program':PyJs_Object_1037_}) + PyJs_Object_1034_ = Js({u'visitor':PyJs_Object_1035_}) + return PyJs_Object_1034_ + PyJs_anonymous_1031_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1031_) + var.put(u'_babelHelperHoistVariables', var.get(u'require')(Js(u'babel-helper-hoist-variables'))) + var.put(u'_babelHelperHoistVariables2', var.get(u'_interopRequireDefault')(var.get(u'_babelHelperHoistVariables'))) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + var.put(u'_babelTemplate2', var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate'))) + pass + var.put(u'buildTemplate', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n SYSTEM_REGISTER(MODULE_NAME, [SOURCES], function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) {\n "use strict";\n BEFORE_BODY;\n return {\n setters: [SETTERS],\n execute: function () {\n BODY;\n }\n };\n });\n'))) + var.put(u'buildExportAll', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n for (var KEY in TARGET) {\n if (KEY !== "default" && KEY !== "__esModule") EXPORT_OBJ[KEY] = TARGET[KEY];\n }\n'))) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1030_._set_name(u'anonymous') +PyJs_Object_1048_ = Js({u'babel-helper-hoist-variables':Js(51.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/object/create':Js(101.0),u'babel-runtime/core-js/symbol':Js(105.0),u'babel-template':Js(221.0)}) +@Js +def PyJs_anonymous_1049_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'_babelTemplate', u'module', u'_babelTemplate2', u'buildWrapper', u'buildGlobalExport', u'_interopRequireDefault', u'buildPrerequisiteAssignment', u'_path']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1064_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1064_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_1050_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'_ref', u'isValidDefine', u't']) + @Js + def PyJsHoisted_isValidDefine_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'expr', u'args', u'path']) + if var.get(u'path').callprop(u'isExpressionStatement').neg(): + return var.get('undefined') + var.put(u'expr', var.get(u'path').callprop(u'get', Js(u'expression'))) + if var.get(u'expr').callprop(u'isCallExpression').neg(): + return Js(False) + PyJs_Object_1051_ = Js({u'name':Js(u'define')}) + if var.get(u'expr').callprop(u'get', Js(u'callee')).callprop(u'isIdentifier', PyJs_Object_1051_).neg(): + return Js(False) + var.put(u'args', var.get(u'expr').callprop(u'get', Js(u'arguments'))) + if (PyJsStrictEq(var.get(u'args').get(u'length'),Js(3.0)) and var.get(u'args').callprop(u'shift').callprop(u'isStringLiteral').neg()): + return Js(False) + if PyJsStrictNeq(var.get(u'args').get(u'length'),Js(2.0)): + return Js(False) + if var.get(u'args').callprop(u'shift').callprop(u'isArrayExpression').neg(): + return Js(False) + if var.get(u'args').callprop(u'shift').callprop(u'isFunctionExpression').neg(): + return Js(False) + return var.get(u'true') + PyJsHoisted_isValidDefine_.func_name = u'isValidDefine' + var.put(u'isValidDefine', PyJsHoisted_isValidDefine_) + var.put(u't', var.get(u'_ref').get(u'types')) + pass + @Js + def PyJs_exit_1055_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'exit':PyJs_exit_1055_, u'arguments':arguments}, var) + var.registers([u'browserGlobals', u'moduleName', u'last', u'members', u'globalName', u'args', u'browserArgs', u'commonArgs', u'amdArgs', u'state', u'call', u'func', u'globalToAssign', u'moduleNameOrBasename', u'path', u'globalExport', u'prerequisiteAssignments']) + var.put(u'last', var.get(u'path').callprop(u'get', Js(u'body')).callprop(u'pop')) + if var.get(u'isValidDefine')(var.get(u'last')).neg(): + return var.get('undefined') + var.put(u'call', var.get(u'last').get(u'node').get(u'expression')) + var.put(u'args', var.get(u'call').get(u'arguments')) + var.put(u'moduleName', (var.get(u'args').callprop(u'shift') if PyJsStrictEq(var.get(u'args').get(u'length'),Js(3.0)) else var.get(u"null"))) + var.put(u'amdArgs', var.get(u'call').get(u'arguments').get(u'0')) + var.put(u'func', var.get(u'call').get(u'arguments').get(u'1')) + PyJs_Object_1056_ = Js({}) + var.put(u'browserGlobals', (var.get(u'state').get(u'opts').get(u'globals') or PyJs_Object_1056_)) + @Js + def PyJs_anonymous_1057_(arg, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'arg':arg}, var) + var.registers([u'arg']) + if (PyJsStrictEq(var.get(u'arg').get(u'value'),Js(u'module')) or PyJsStrictEq(var.get(u'arg').get(u'value'),Js(u'exports'))): + return var.get(u't').callprop(u'identifier', var.get(u'arg').get(u'value')) + else: + return var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'identifier', Js(u'require')), Js([var.get(u'arg')])) + PyJs_anonymous_1057_._set_name(u'anonymous') + var.put(u'commonArgs', var.get(u'amdArgs').get(u'elements').callprop(u'map', PyJs_anonymous_1057_)) + @Js + def PyJs_anonymous_1058_(arg, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'arg':arg}, var) + var.registers([u'memberExpression', u'globalRef', u'arg', u'globalName', u'requireName']) + if PyJsStrictEq(var.get(u'arg').get(u'value'),Js(u'module')): + return var.get(u't').callprop(u'identifier', Js(u'mod')) + else: + if PyJsStrictEq(var.get(u'arg').get(u'value'),Js(u'exports')): + return var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', Js(u'mod')), var.get(u't').callprop(u'identifier', Js(u'exports'))) + else: + var.put(u'memberExpression', PyJsComma(Js(0.0), Js(None))) + if var.get(u'state').get(u'opts').get(u'exactGlobals'): + var.put(u'globalRef', var.get(u'browserGlobals').get(var.get(u'arg').get(u'value'))) + if var.get(u'globalRef'): + @Js + def PyJs_anonymous_1059_(accum, curr, this, arguments, var=var): + var = Scope({u'this':this, u'curr':curr, u'accum':accum, u'arguments':arguments}, var) + var.registers([u'curr', u'accum']) + return var.get(u't').callprop(u'memberExpression', var.get(u'accum'), var.get(u't').callprop(u'identifier', var.get(u'curr'))) + PyJs_anonymous_1059_._set_name(u'anonymous') + var.put(u'memberExpression', var.get(u'globalRef').callprop(u'split', Js(u'.')).callprop(u'reduce', PyJs_anonymous_1059_, var.get(u't').callprop(u'identifier', Js(u'global')))) + else: + var.put(u'memberExpression', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', Js(u'global')), var.get(u't').callprop(u'identifier', var.get(u't').callprop(u'toIdentifier', var.get(u'arg').get(u'value'))))) + else: + var.put(u'requireName', PyJsComma(Js(0.0),var.get(u'_path').get(u'basename'))(var.get(u'arg').get(u'value'), PyJsComma(Js(0.0),var.get(u'_path').get(u'extname'))(var.get(u'arg').get(u'value')))) + var.put(u'globalName', (var.get(u'browserGlobals').get(var.get(u'requireName')) or var.get(u'requireName'))) + var.put(u'memberExpression', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', Js(u'global')), var.get(u't').callprop(u'identifier', var.get(u't').callprop(u'toIdentifier', var.get(u'globalName'))))) + return var.get(u'memberExpression') + PyJs_anonymous_1058_._set_name(u'anonymous') + var.put(u'browserArgs', var.get(u'amdArgs').get(u'elements').callprop(u'map', PyJs_anonymous_1058_)) + var.put(u'moduleNameOrBasename', (var.get(u'moduleName').get(u'value') if var.get(u'moduleName') else var.get(u"this").get(u'file').get(u'opts').get(u'basename'))) + var.put(u'globalToAssign', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', Js(u'global')), var.get(u't').callprop(u'identifier', var.get(u't').callprop(u'toIdentifier', var.get(u'moduleNameOrBasename'))))) + var.put(u'prerequisiteAssignments', var.get(u"null")) + if var.get(u'state').get(u'opts').get(u'exactGlobals'): + var.put(u'globalName', var.get(u'browserGlobals').get(var.get(u'moduleNameOrBasename'))) + if var.get(u'globalName'): + var.put(u'prerequisiteAssignments', Js([])) + var.put(u'members', var.get(u'globalName').callprop(u'split', Js(u'.'))) + @Js + def PyJs_anonymous_1060_(accum, curr, this, arguments, var=var): + var = Scope({u'this':this, u'curr':curr, u'accum':accum, u'arguments':arguments}, var) + var.registers([u'curr', u'accum']) + PyJs_Object_1061_ = Js({u'GLOBAL_REFERENCE':var.get(u'accum')}) + var.get(u'prerequisiteAssignments').callprop(u'push', var.get(u'buildPrerequisiteAssignment')(PyJs_Object_1061_)) + return var.get(u't').callprop(u'memberExpression', var.get(u'accum'), var.get(u't').callprop(u'identifier', var.get(u'curr'))) + PyJs_anonymous_1060_._set_name(u'anonymous') + var.put(u'globalToAssign', var.get(u'members').callprop(u'slice', Js(1.0)).callprop(u'reduce', PyJs_anonymous_1060_, var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', Js(u'global')), var.get(u't').callprop(u'identifier', var.get(u'members').get(u'0'))))) + PyJs_Object_1062_ = Js({u'BROWSER_ARGUMENTS':var.get(u'browserArgs'),u'PREREQUISITE_ASSIGNMENTS':var.get(u'prerequisiteAssignments'),u'GLOBAL_TO_ASSIGN':var.get(u'globalToAssign')}) + var.put(u'globalExport', var.get(u'buildGlobalExport')(PyJs_Object_1062_)) + PyJs_Object_1063_ = Js({u'MODULE_NAME':var.get(u'moduleName'),u'AMD_ARGUMENTS':var.get(u'amdArgs'),u'COMMON_ARGUMENTS':var.get(u'commonArgs'),u'GLOBAL_EXPORT':var.get(u'globalExport'),u'FUNC':var.get(u'func')}) + var.get(u'last').callprop(u'replaceWith', var.get(u'buildWrapper')(PyJs_Object_1063_)) + PyJs_exit_1055_._set_name(u'exit') + PyJs_Object_1054_ = Js({u'exit':PyJs_exit_1055_}) + PyJs_Object_1053_ = Js({u'Program':PyJs_Object_1054_}) + PyJs_Object_1052_ = Js({u'inherits':var.get(u'require')(Js(u'babel-plugin-transform-es2015-modules-amd')),u'visitor':PyJs_Object_1053_}) + return PyJs_Object_1052_ + PyJs_anonymous_1050_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1050_) + var.put(u'_path', var.get(u'require')(Js(u'path'))) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + var.put(u'_babelTemplate2', var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate'))) + pass + var.put(u'buildPrerequisiteAssignment', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n GLOBAL_REFERENCE = GLOBAL_REFERENCE || {}\n'))) + var.put(u'buildGlobalExport', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n var mod = { exports: {} };\n factory(BROWSER_ARGUMENTS);\n PREREQUISITE_ASSIGNMENTS\n GLOBAL_TO_ASSIGN = mod.exports;\n'))) + var.put(u'buildWrapper', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n (function (global, factory) {\n if (typeof define === "function" && define.amd) {\n define(MODULE_NAME, AMD_ARGUMENTS, factory);\n } else if (typeof exports !== "undefined") {\n factory(COMMON_ARGUMENTS);\n } else {\n GLOBAL_EXPORT\n }\n })(this, FUNC);\n'))) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1049_._set_name(u'anonymous') +PyJs_Object_1065_ = Js({u'babel-plugin-transform-es2015-modules-amd':Js(72.0),u'babel-template':Js(221.0),u'path':Js(530.0)}) +@Js +def PyJs_anonymous_1066_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_babelHelperReplaceSupers2', u'exports', u'_symbol2', u'require', u'module', u'_symbol', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'_babelHelperReplaceSupers']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1077_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1077_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_symbol', var.get(u'require')(Js(u'babel-runtime/core-js/symbol'))) + var.put(u'_symbol2', var.get(u'_interopRequireDefault')(var.get(u'_symbol'))) + @Js + def PyJs_anonymous_1067_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'_ref', u'Property', u't', u'CONTAINS_SUPER']) + @Js + def PyJsHoisted_Property_(path, node, scope, getObjectRef, file, this, arguments, var=var): + var = Scope({u'node':node, u'getObjectRef':getObjectRef, u'arguments':arguments, u'file':file, u'scope':scope, u'this':this, u'path':path}, var) + var.registers([u'node', u'getObjectRef', u'replaceSupers', u'file', u'scope', u'path']) + PyJs_Object_1068_ = Js({u'getObjectRef':var.get(u'getObjectRef'),u'methodNode':var.get(u'node'),u'methodPath':var.get(u'path'),u'isStatic':var.get(u'true'),u'scope':var.get(u'scope'),u'file':var.get(u'file')}) + var.put(u'replaceSupers', var.get(u'_babelHelperReplaceSupers2').get(u'default').create(PyJs_Object_1068_)) + var.get(u'replaceSupers').callprop(u'replace') + PyJsHoisted_Property_.func_name = u'Property' + var.put(u'Property', PyJsHoisted_Property_) + var.put(u't', var.get(u'_ref').get(u'types')) + pass + var.put(u'CONTAINS_SUPER', PyJsComma(Js(0.0),var.get(u'_symbol2').get(u'default'))()) + @Js + def PyJs_Super_1071_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'Super':PyJs_Super_1071_, u'arguments':arguments}, var) + var.registers([u'path', u'parentObj']) + @Js + def PyJs_anonymous_1072_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return var.get(u'path').callprop(u'isObjectExpression') + PyJs_anonymous_1072_._set_name(u'anonymous') + var.put(u'parentObj', var.get(u'path').callprop(u'findParent', PyJs_anonymous_1072_)) + if var.get(u'parentObj'): + var.get(u'parentObj').get(u'node').put(var.get(u'CONTAINS_SUPER'), var.get(u'true')) + PyJs_Super_1071_._set_name(u'Super') + @Js + def PyJs_exit_1074_(path, file, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'exit':PyJs_exit_1074_, u'arguments':arguments, u'file':file}, var) + var.registers([u'getObjectRef', u'objectRef', u'_isArray', u'_iterator', u'file', u'propPath', u'_ref2', u'propPaths', u'_i', u'path']) + if var.get(u'path').get(u'node').get(var.get(u'CONTAINS_SUPER')).neg(): + return var.get('undefined') + var.put(u'objectRef', PyJsComma(Js(0.0), Js(None))) + @Js + def PyJs_getObjectRef_1075_(this, arguments, var=var): + var = Scope({u'this':this, u'getObjectRef':PyJs_getObjectRef_1075_, u'arguments':arguments}, var) + var.registers([]) + return var.put(u'objectRef', (var.get(u'objectRef') or var.get(u'path').get(u'scope').callprop(u'generateUidIdentifier', Js(u'obj')))) + PyJs_getObjectRef_1075_._set_name(u'getObjectRef') + var.put(u'getObjectRef', PyJs_getObjectRef_1075_) + var.put(u'propPaths', var.get(u'path').callprop(u'get', Js(u'properties'))) + #for JS loop + var.put(u'_iterator', var.get(u'propPaths')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i').get(u'value')) + var.put(u'propPath', var.get(u'_ref2')) + if var.get(u'propPath').callprop(u'isObjectProperty'): + var.put(u'propPath', var.get(u'propPath').callprop(u'get', Js(u'value'))) + var.get(u'Property')(var.get(u'propPath'), var.get(u'propPath').get(u'node'), var.get(u'path').get(u'scope'), var.get(u'getObjectRef'), var.get(u'file')) + + if var.get(u'objectRef'): + PyJs_Object_1076_ = Js({u'id':var.get(u'objectRef')}) + var.get(u'path').get(u'scope').callprop(u'push', PyJs_Object_1076_) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'objectRef'), var.get(u'path').get(u'node'))) + PyJs_exit_1074_._set_name(u'exit') + PyJs_Object_1073_ = Js({u'exit':PyJs_exit_1074_}) + PyJs_Object_1070_ = Js({u'Super':PyJs_Super_1071_,u'ObjectExpression':PyJs_Object_1073_}) + PyJs_Object_1069_ = Js({u'visitor':PyJs_Object_1070_}) + return PyJs_Object_1069_ + PyJs_anonymous_1067_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1067_) + var.put(u'_babelHelperReplaceSupers', var.get(u'require')(Js(u'babel-helper-replace-supers'))) + var.put(u'_babelHelperReplaceSupers2', var.get(u'_interopRequireDefault')(var.get(u'_babelHelperReplaceSupers'))) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1066_._set_name(u'anonymous') +PyJs_Object_1078_ = Js({u'babel-helper-replace-supers':Js(54.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/symbol':Js(105.0)}) +@Js +def PyJs_anonymous_1079_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_babelHelperCallDelegate', u'module', u'require', u'_babelHelperCallDelegate2', u'exports', u'_interopRequireWildcard', u'visitor', u'_babelHelperGetFunctionArity', u'_babelTypes', u'_babelHelperGetFunctionArity2', u'iifeVisitor', u'_babelTemplate', u'isSafeBinding', u'_babelTemplate2', u't', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'buildCutOff', u'hasDefaults', u'buildDefaultParam']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1081_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1081_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_isSafeBinding_(scope, node, this, arguments, var=var): + var = Scope({u'node':node, u'scope':scope, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'scope', u'kind', u'_scope$getOwnBinding']) + if var.get(u'scope').callprop(u'hasOwnBinding', var.get(u'node').get(u'name')).neg(): + return var.get(u'true') + var.put(u'_scope$getOwnBinding', var.get(u'scope').callprop(u'getOwnBinding', var.get(u'node').get(u'name'))) + var.put(u'kind', var.get(u'_scope$getOwnBinding').get(u'kind')) + return (PyJsStrictEq(var.get(u'kind'),Js(u'param')) or PyJsStrictEq(var.get(u'kind'),Js(u'local'))) + PyJsHoisted_isSafeBinding_.func_name = u'isSafeBinding' + var.put(u'isSafeBinding', PyJsHoisted_isSafeBinding_) + @Js + def PyJsHoisted_hasDefaults_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'param', u'_i', u'_ref']) + #for JS loop + var.put(u'_iterator', var.get(u'node').get(u'params')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'param', var.get(u'_ref')) + if var.get(u't').callprop(u'isIdentifier', var.get(u'param')).neg(): + return var.get(u'true') + + return Js(False) + PyJsHoisted_hasDefaults_.func_name = u'hasDefaults' + var.put(u'hasDefaults', PyJsHoisted_hasDefaults_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1080_ = Js({}) + var.put(u'newObj', PyJs_Object_1080_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'visitor', var.get(u'undefined')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_babelHelperGetFunctionArity', var.get(u'require')(Js(u'babel-helper-get-function-arity'))) + var.put(u'_babelHelperGetFunctionArity2', var.get(u'_interopRequireDefault')(var.get(u'_babelHelperGetFunctionArity'))) + var.put(u'_babelHelperCallDelegate', var.get(u'require')(Js(u'babel-helper-call-delegate'))) + var.put(u'_babelHelperCallDelegate2', var.get(u'_interopRequireDefault')(var.get(u'_babelHelperCallDelegate'))) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + var.put(u'_babelTemplate2', var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + var.put(u'buildDefaultParam', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n let VARIABLE_NAME =\n ARGUMENTS.length > ARGUMENT_KEY && ARGUMENTS[ARGUMENT_KEY] !== undefined ?\n ARGUMENTS[ARGUMENT_KEY]\n :\n DEFAULT_VALUE;\n'))) + var.put(u'buildCutOff', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n let $0 = $1[$2];\n'))) + pass + pass + @Js + def PyJs_ReferencedIdentifier_1083_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_1083_, u'arguments':arguments}, var) + var.registers([u'node', u'scope', u'state', u'path']) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'node', var.get(u'path').get(u'node')) + if (PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'eval')) or var.get(u'isSafeBinding')(var.get(u'scope'), var.get(u'node')).neg()): + var.get(u'state').put(u'iife', var.get(u'true')) + var.get(u'path').callprop(u'stop') + PyJs_ReferencedIdentifier_1083_._set_name(u'ReferencedIdentifier') + @Js + def PyJs_Scope_1084_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'Scope':PyJs_Scope_1084_}, var) + var.registers([u'path']) + var.get(u'path').callprop(u'skip') + PyJs_Scope_1084_._set_name(u'Scope') + PyJs_Object_1082_ = Js({u'ReferencedIdentifier':PyJs_ReferencedIdentifier_1083_,u'Scope':PyJs_Scope_1084_}) + var.put(u'iifeVisitor', PyJs_Object_1082_) + @Js + def PyJs_Function_1086_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'Function':PyJs_Function_1086_, u'arguments':arguments}, var) + var.registers([u'node', u'body', u'pushDefNode', u'right', u'lastNonDefaultParam', u'i', u'argsIdentifier', u'_i2', u'param', u'_param', u'state', u'declar', u'params', u'path', u'scope', u'placeholder', u'left']) + @Js + def PyJsHoisted_pushDefNode_(left, right, i, this, arguments, var=var): + var = Scope({u'i':i, u'this':this, u'right':right, u'arguments':arguments, u'left':left}, var) + var.registers([u'i', u'defNode', u'right', u'left']) + PyJs_Object_1088_ = Js({u'VARIABLE_NAME':var.get(u'left'),u'DEFAULT_VALUE':var.get(u'right'),u'ARGUMENT_KEY':var.get(u't').callprop(u'numericLiteral', var.get(u'i')),u'ARGUMENTS':var.get(u'argsIdentifier')}) + var.put(u'defNode', var.get(u'buildDefaultParam')(PyJs_Object_1088_)) + var.get(u'defNode').put(u'_blockHoist', (var.get(u'node').get(u'params').get(u'length')-var.get(u'i'))) + var.get(u'body').callprop(u'push', var.get(u'defNode')) + PyJsHoisted_pushDefNode_.func_name = u'pushDefNode' + var.put(u'pushDefNode', PyJsHoisted_pushDefNode_) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + if var.get(u'hasDefaults')(var.get(u'node')).neg(): + return var.get('undefined') + var.get(u'path').callprop(u'ensureBlock') + PyJs_Object_1087_ = Js({u'iife':Js(False),u'scope':var.get(u'scope')}) + var.put(u'state', PyJs_Object_1087_) + var.put(u'body', Js([])) + var.put(u'argsIdentifier', var.get(u't').callprop(u'identifier', Js(u'arguments'))) + var.get(u'argsIdentifier').put(u'_shadowedFunctionLiteral', var.get(u'path')) + pass + var.put(u'lastNonDefaultParam', PyJsComma(Js(0.0),var.get(u'_babelHelperGetFunctionArity2').get(u'default'))(var.get(u'node'))) + var.put(u'params', var.get(u'path').callprop(u'get', Js(u'params'))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'lastNonDefaultParam')) or var.get(u'left').callprop(u'isPattern')): + var.put(u'placeholder', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'x'))) + var.get(u'placeholder').put(u'_isDefaultPlaceholder', var.get(u'true')) + var.get(u'node').get(u'params').put(var.get(u'i'), var.get(u'placeholder')) + else: + var.get(u'node').get(u'params').put(var.get(u'i'), var.get(u'left').get(u'node')) + if var.get(u'state').get(u'iife').neg(): + if (var.get(u'right').callprop(u'isIdentifier') and var.get(u'isSafeBinding')(var.get(u'scope'), var.get(u'right').get(u'node')).neg()): + var.get(u'state').put(u'iife', var.get(u'true')) + else: + var.get(u'right').callprop(u'traverse', var.get(u'iifeVisitor'), var.get(u'state')) + var.get(u'pushDefNode')(var.get(u'left').get(u'node'), var.get(u'right').get(u'node'), var.get(u'i')) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + #for JS loop + var.put(u'_i2', (var.get(u'lastNonDefaultParam')+Js(1.0))) + while (var.get(u'_i2')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'param', var.get(u'_ref')) + if (var.get(u'param').callprop(u'isRestElement') or var.get(u'param').callprop(u'isAssignmentPattern')): + var.get(u'path').callprop(u'arrowFunctionToShadowed') + break + + PyJs_ArrowFunctionExpression_1099_._set_name(u'ArrowFunctionExpression') + PyJs_Object_1098_ = Js({u'ArrowFunctionExpression':PyJs_ArrowFunctionExpression_1099_}) + PyJs_Object_1097_ = Js({u'visitor':var.get(u'_babelTraverse').get(u'visitors').callprop(u'merge', Js([PyJs_Object_1098_, var.get(u'destructuring').get(u'visitor'), var.get(u'rest').get(u'visitor'), var.get(u'def').get(u'visitor')]))}) + return PyJs_Object_1097_ + PyJs_anonymous_1096_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1096_) + var.put(u'_babelTraverse', var.get(u'require')(Js(u'babel-traverse'))) + var.put(u'_destructuring', var.get(u'require')(Js(u'./destructuring'))) + var.put(u'destructuring', var.get(u'_interopRequireWildcard')(var.get(u'_destructuring'))) + var.put(u'_default', var.get(u'require')(Js(u'./default'))) + var.put(u'def', var.get(u'_interopRequireWildcard')(var.get(u'_default'))) + var.put(u'_rest', var.get(u'require')(Js(u'./rest'))) + var.put(u'rest', var.get(u'_interopRequireWildcard')(var.get(u'_rest'))) + pass + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1095_._set_name(u'anonymous') +PyJs_Object_1102_ = Js({u'./default':Js(77.0),u'./destructuring':Js(78.0),u'./rest':Js(80.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-traverse':Js(225.0)}) +@Js +def PyJs_anonymous_1103_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'restIndexImpure', u'exports', u'optimiseLengthGetter', u'hasRest', u'_interopRequireWildcard', u'visitor', u'require', u'_babelTypes', u'_babelTemplate', u'module', u'restIndex', u'buildRest', u'_babelTemplate2', u't', u'_interopRequireDefault', u'restLength', u'_getIterator2', u'_getIterator3', u'optimiseIndexGetter', u'memberExpressionOptimisationVisitor']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1105_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1105_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_optimiseLengthGetter_(path, argsId, offset, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'argsId':argsId, u'offset':offset}, var) + var.registers([u'path', u'argsId', u'offset']) + if var.get(u'offset'): + PyJs_Object_1121_ = Js({u'ARGUMENTS':var.get(u'argsId'),u'OFFSET':var.get(u't').callprop(u'numericLiteral', var.get(u'offset'))}) + var.get(u'path').get(u'parentPath').callprop(u'replaceWith', var.get(u'restLength')(PyJs_Object_1121_)) + else: + var.get(u'path').callprop(u'replaceWith', var.get(u'argsId')) + PyJsHoisted_optimiseLengthGetter_.func_name = u'optimiseLengthGetter' + var.put(u'optimiseLengthGetter', PyJsHoisted_optimiseLengthGetter_) + @Js + def PyJsHoisted_optimiseIndexGetter_(path, argsId, offset, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'argsId':argsId, u'offset':offset}, var) + var.registers([u'index', u'temp', u'argsId', u'offset', u'path', u'scope']) + var.put(u'index', PyJsComma(Js(0.0), Js(None))) + if var.get(u't').callprop(u'isNumericLiteral', var.get(u'path').get(u'parent').get(u'property')): + var.put(u'index', var.get(u't').callprop(u'numericLiteral', (var.get(u'path').get(u'parent').get(u'property').get(u'value')+var.get(u'offset')))) + else: + if PyJsStrictEq(var.get(u'offset'),Js(0.0)): + var.put(u'index', var.get(u'path').get(u'parent').get(u'property')) + else: + var.put(u'index', var.get(u't').callprop(u'binaryExpression', Js(u'+'), var.get(u'path').get(u'parent').get(u'property'), var.get(u't').callprop(u'numericLiteral', var.get(u'offset')))) + var.put(u'scope', var.get(u'path').get(u'scope')) + if var.get(u'scope').callprop(u'isPure', var.get(u'index')).neg(): + var.put(u'temp', var.get(u'scope').callprop(u'generateUidIdentifierBasedOnNode', var.get(u'index'))) + PyJs_Object_1118_ = Js({u'id':var.get(u'temp'),u'kind':Js(u'var')}) + var.get(u'scope').callprop(u'push', PyJs_Object_1118_) + PyJs_Object_1119_ = Js({u'ARGUMENTS':var.get(u'argsId'),u'INDEX':var.get(u'index'),u'REF':var.get(u'temp')}) + var.get(u'path').get(u'parentPath').callprop(u'replaceWith', var.get(u'restIndexImpure')(PyJs_Object_1119_)) + else: + PyJs_Object_1120_ = Js({u'ARGUMENTS':var.get(u'argsId'),u'INDEX':var.get(u'index')}) + var.get(u'path').get(u'parentPath').callprop(u'replaceWith', var.get(u'restIndex')(PyJs_Object_1120_)) + PyJsHoisted_optimiseIndexGetter_.func_name = u'optimiseIndexGetter' + var.put(u'optimiseIndexGetter', PyJsHoisted_optimiseIndexGetter_) + @Js + def PyJsHoisted_hasRest_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return var.get(u't').callprop(u'isRestElement', var.get(u'node').get(u'params').get((var.get(u'node').get(u'params').get(u'length')-Js(1.0)))) + PyJsHoisted_hasRest_.func_name = u'hasRest' + var.put(u'hasRest', PyJsHoisted_hasRest_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1104_ = Js({}) + var.put(u'newObj', PyJs_Object_1104_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'visitor', var.get(u'undefined')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_babelTemplate', var.get(u'require')(Js(u'babel-template'))) + var.put(u'_babelTemplate2', var.get(u'_interopRequireDefault')(var.get(u'_babelTemplate'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + var.put(u'buildRest', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n for (var LEN = ARGUMENTS.length,\n ARRAY = Array(ARRAY_LEN),\n KEY = START;\n KEY < LEN;\n KEY++) {\n ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];\n }\n'))) + var.put(u'restIndex', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n ARGUMENTS.length <= INDEX ? undefined : ARGUMENTS[INDEX]\n'))) + var.put(u'restIndexImpure', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n REF = INDEX, ARGUMENTS.length <= REF ? undefined : ARGUMENTS[REF]\n'))) + var.put(u'restLength', PyJsComma(Js(0.0),var.get(u'_babelTemplate2').get(u'default'))(Js(u'\n ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET\n'))) + @Js + def PyJs_Scope_1107_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'Scope':PyJs_Scope_1107_}, var) + var.registers([u'path', u'state']) + if var.get(u'path').get(u'scope').callprop(u'bindingIdentifierEquals', var.get(u'state').get(u'name'), var.get(u'state').get(u'outerBinding')).neg(): + var.get(u'path').callprop(u'skip') + PyJs_Scope_1107_._set_name(u'Scope') + @Js + def PyJs_Flow_1108_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'Flow':PyJs_Flow_1108_, u'arguments':arguments}, var) + var.registers([u'path']) + if var.get(u'path').callprop(u'isTypeCastExpression'): + return var.get('undefined') + var.get(u'path').callprop(u'skip') + PyJs_Flow_1108_._set_name(u'Flow') + @Js + def PyJs_FunctionClassProperty_1109_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'FunctionClassProperty':PyJs_FunctionClassProperty_1109_}, var) + var.registers([u'oldNoOptimise', u'state', u'path']) + var.put(u'oldNoOptimise', var.get(u'state').get(u'noOptimise')) + var.get(u'state').put(u'noOptimise', var.get(u'true')) + var.get(u'path').callprop(u'traverse', var.get(u'memberExpressionOptimisationVisitor'), var.get(u'state')) + var.get(u'state').put(u'noOptimise', var.get(u'oldNoOptimise')) + var.get(u'path').callprop(u'skip') + PyJs_FunctionClassProperty_1109_._set_name(u'FunctionClassProperty') + @Js + def PyJs_ReferencedIdentifier_1110_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_1110_, u'arguments':arguments}, var) + var.registers([u'node', u'grandparentPath', u'argsOptEligible', u'state', u'call', u'parentPath', u'path']) + var.put(u'node', var.get(u'path').get(u'node')) + if PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'arguments')): + var.get(u'state').put(u'deopted', var.get(u'true')) + if PyJsStrictNeq(var.get(u'node').get(u'name'),var.get(u'state').get(u'name')): + return var.get('undefined') + if var.get(u'state').get(u'noOptimise'): + var.get(u'state').put(u'deopted', var.get(u'true')) + else: + var.put(u'parentPath', var.get(u'path').get(u'parentPath')) + PyJs_Object_1111_ = Js({u'object':var.get(u'node')}) + if var.get(u'parentPath').callprop(u'isMemberExpression', PyJs_Object_1111_): + var.put(u'grandparentPath', var.get(u'parentPath').get(u'parentPath')) + def PyJs_LONG_1113_(var=var): + PyJs_Object_1112_ = Js({u'operator':Js(u'delete')}) + return (((((var.get(u'grandparentPath').callprop(u'isAssignmentExpression') and PyJsStrictEq(var.get(u'parentPath').get(u'node'),var.get(u'grandparentPath').get(u'node').get(u'left'))) or var.get(u'grandparentPath').callprop(u'isLVal')) or var.get(u'grandparentPath').callprop(u'isForXStatement')) or var.get(u'grandparentPath').callprop(u'isUpdateExpression')) or var.get(u'grandparentPath').callprop(u'isUnaryExpression', PyJs_Object_1112_)) + var.put(u'argsOptEligible', (var.get(u'state').get(u'deopted').neg() and (PyJs_LONG_1113_() or ((var.get(u'grandparentPath').callprop(u'isCallExpression') or var.get(u'grandparentPath').callprop(u'isNewExpression')) and PyJsStrictEq(var.get(u'parentPath').get(u'node'),var.get(u'grandparentPath').get(u'node').get(u'callee')))).neg())) + if var.get(u'argsOptEligible'): + if var.get(u'parentPath').get(u'node').get(u'computed'): + if var.get(u'parentPath').callprop(u'get', Js(u'property')).callprop(u'isBaseType', Js(u'number')): + PyJs_Object_1114_ = Js({u'cause':Js(u'indexGetter'),u'path':var.get(u'path')}) + var.get(u'state').get(u'candidates').callprop(u'push', PyJs_Object_1114_) + return var.get('undefined') + else: + if PyJsStrictEq(var.get(u'parentPath').get(u'node').get(u'property').get(u'name'),Js(u'length')): + PyJs_Object_1115_ = Js({u'cause':Js(u'lengthGetter'),u'path':var.get(u'path')}) + var.get(u'state').get(u'candidates').callprop(u'push', PyJs_Object_1115_) + return var.get('undefined') + if (PyJsStrictEq(var.get(u'state').get(u'offset'),Js(0.0)) and var.get(u'parentPath').callprop(u'isSpreadElement')): + var.put(u'call', var.get(u'parentPath').get(u'parentPath')) + if (var.get(u'call').callprop(u'isCallExpression') and PyJsStrictEq(var.get(u'call').get(u'node').get(u'arguments').get(u'length'),Js(1.0))): + PyJs_Object_1116_ = Js({u'cause':Js(u'argSpread'),u'path':var.get(u'path')}) + var.get(u'state').get(u'candidates').callprop(u'push', PyJs_Object_1116_) + return var.get('undefined') + var.get(u'state').get(u'references').callprop(u'push', var.get(u'path')) + PyJs_ReferencedIdentifier_1110_._set_name(u'ReferencedIdentifier') + @Js + def PyJs_BindingIdentifier_1117_(_ref, state, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'BindingIdentifier':PyJs_BindingIdentifier_1117_, u'state':state, u'arguments':arguments}, var) + var.registers([u'node', u'_ref', u'state']) + var.put(u'node', var.get(u'_ref').get(u'node')) + if PyJsStrictEq(var.get(u'node').get(u'name'),var.get(u'state').get(u'name')): + var.get(u'state').put(u'deopted', var.get(u'true')) + PyJs_BindingIdentifier_1117_._set_name(u'BindingIdentifier') + PyJs_Object_1106_ = Js({u'Scope':PyJs_Scope_1107_,u'Flow':PyJs_Flow_1108_,u'Function|ClassProperty':PyJs_FunctionClassProperty_1109_,u'ReferencedIdentifier':PyJs_ReferencedIdentifier_1110_,u'BindingIdentifier':PyJs_BindingIdentifier_1117_}) + var.put(u'memberExpressionOptimisationVisitor', PyJs_Object_1106_) + pass + pass + pass + @Js + def PyJs_Function_1123_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'Function':PyJs_Function_1123_, u'arguments':arguments}, var) + var.registers([u'node', u'arrLen', u'_isArray', u'_iterator', u'key', u'arrKey', u'_ref3', u'_ref2', u'argsId', u'len', u'start', u'state', u'rest', u'_i', u'target', u'scope', u'path', u'cause', u'loop', u'_path']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + if var.get(u'hasRest')(var.get(u'node')).neg(): + return var.get('undefined') + var.put(u'rest', var.get(u'node').get(u'params').callprop(u'pop').get(u'argument')) + var.put(u'argsId', var.get(u't').callprop(u'identifier', Js(u'arguments'))) + var.get(u'argsId').put(u'_shadowedFunctionLiteral', var.get(u'path')) + PyJs_Object_1124_ = Js({u'references':Js([]),u'offset':var.get(u'node').get(u'params').get(u'length'),u'argumentsNode':var.get(u'argsId'),u'outerBinding':var.get(u'scope').callprop(u'getBindingIdentifier', var.get(u'rest').get(u'name')),u'candidates':Js([]),u'name':var.get(u'rest').get(u'name'),u'deopted':Js(False)}) + var.put(u'state', PyJs_Object_1124_) + var.get(u'path').callprop(u'traverse', var.get(u'memberExpressionOptimisationVisitor'), var.get(u'state')) + if (var.get(u'state').get(u'deopted').neg() and var.get(u'state').get(u'references').get(u'length').neg()): + #for JS loop + var.put(u'_iterator', var.get(u'state').get(u'candidates')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i').get(u'value')) + var.put(u'_ref3', var.get(u'_ref2')) + var.put(u'_path', var.get(u'_ref3').get(u'path')) + var.put(u'cause', var.get(u'_ref3').get(u'cause')) + while 1: + SWITCHED = False + CONDITION = (var.get(u'cause')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'indexGetter')): + SWITCHED = True + var.get(u'optimiseIndexGetter')(var.get(u'_path'), var.get(u'argsId'), var.get(u'state').get(u'offset')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'lengthGetter')): + SWITCHED = True + var.get(u'optimiseLengthGetter')(var.get(u'_path'), var.get(u'argsId'), var.get(u'state').get(u'offset')) + break + if True: + SWITCHED = True + var.get(u'_path').callprop(u'replaceWith', var.get(u'argsId')) + SWITCHED = True + break + + return var.get('undefined') + @Js + def PyJs_anonymous_1125_(_ref4, this, arguments, var=var): + var = Scope({u'this':this, u'_ref4':_ref4, u'arguments':arguments}, var) + var.registers([u'path', u'_ref4']) + var.put(u'path', var.get(u'_ref4').get(u'path')) + return var.get(u'path') + PyJs_anonymous_1125_._set_name(u'anonymous') + var.get(u'state').put(u'references', var.get(u'state').get(u'references').callprop(u'concat', var.get(u'state').get(u'candidates').callprop(u'map', PyJs_anonymous_1125_))) + var.get(u'state').put(u'deopted', (var.get(u'state').get(u'deopted') or var.get(u'node').get(u'shadow').neg().neg())) + var.put(u'start', var.get(u't').callprop(u'numericLiteral', var.get(u'node').get(u'params').get(u'length'))) + var.put(u'key', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'key'))) + var.put(u'len', var.get(u'scope').callprop(u'generateUidIdentifier', Js(u'len'))) + var.put(u'arrKey', var.get(u'key')) + var.put(u'arrLen', var.get(u'len')) + if var.get(u'node').get(u'params').get(u'length'): + var.put(u'arrKey', var.get(u't').callprop(u'binaryExpression', Js(u'-'), var.get(u'key'), var.get(u'start'))) + var.put(u'arrLen', var.get(u't').callprop(u'conditionalExpression', var.get(u't').callprop(u'binaryExpression', Js(u'>'), var.get(u'len'), var.get(u'start')), var.get(u't').callprop(u'binaryExpression', Js(u'-'), var.get(u'len'), var.get(u'start')), var.get(u't').callprop(u'numericLiteral', Js(0.0)))) + PyJs_Object_1126_ = Js({u'ARGUMENTS':var.get(u'argsId'),u'ARRAY_KEY':var.get(u'arrKey'),u'ARRAY_LEN':var.get(u'arrLen'),u'START':var.get(u'start'),u'ARRAY':var.get(u'rest'),u'KEY':var.get(u'key'),u'LEN':var.get(u'len')}) + var.put(u'loop', var.get(u'buildRest')(PyJs_Object_1126_)) + if var.get(u'state').get(u'deopted'): + var.get(u'loop').put(u'_blockHoist', (var.get(u'node').get(u'params').get(u'length')+Js(1.0))) + var.get(u'node').get(u'body').get(u'body').callprop(u'unshift', var.get(u'loop')) + else: + var.get(u'loop').put(u'_blockHoist', Js(1.0)) + var.put(u'target', var.get(u'path').callprop(u'getEarliestCommonAncestorFrom', var.get(u'state').get(u'references')).callprop(u'getStatementParent')) + @Js + def PyJs_anonymous_1127_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + if var.get(u'path').callprop(u'isLoop'): + var.put(u'target', var.get(u'path')) + else: + return var.get(u'path').callprop(u'isFunction') + PyJs_anonymous_1127_._set_name(u'anonymous') + var.get(u'target').callprop(u'findParent', PyJs_anonymous_1127_) + var.get(u'target').callprop(u'insertBefore', var.get(u'loop')) + PyJs_Function_1123_._set_name(u'Function') + PyJs_Object_1122_ = Js({u'Function':PyJs_Function_1123_}) + var.put(u'visitor', var.get(u'exports').put(u'visitor', PyJs_Object_1122_)) +PyJs_anonymous_1103_._set_name(u'anonymous') +PyJs_Object_1128_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-template':Js(221.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1129_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_interopRequireWildcard', u'require', u'_babelTypes', u'module', u't']) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1135_ = Js({}) + var.put(u'newObj', PyJs_Object_1135_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_1130_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_ObjectMethod_1133_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'ObjectMethod':PyJs_ObjectMethod_1133_}, var) + var.registers([u'node', u'path', u'func']) + var.put(u'node', var.get(u'path').get(u'node')) + if PyJsStrictEq(var.get(u'node').get(u'kind'),Js(u'method')): + var.put(u'func', var.get(u't').callprop(u'functionExpression', var.get(u"null"), var.get(u'node').get(u'params'), var.get(u'node').get(u'body'), var.get(u'node').get(u'generator'), var.get(u'node').get(u'async'))) + var.get(u'func').put(u'returnType', var.get(u'node').get(u'returnType')) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'objectProperty', var.get(u'node').get(u'key'), var.get(u'func'), var.get(u'node').get(u'computed'))) + PyJs_ObjectMethod_1133_._set_name(u'ObjectMethod') + @Js + def PyJs_ObjectProperty_1134_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'ObjectProperty':PyJs_ObjectProperty_1134_, u'arguments':arguments}, var) + var.registers([u'node', u'_ref']) + var.put(u'node', var.get(u'_ref').get(u'node')) + if var.get(u'node').get(u'shorthand'): + var.get(u'node').put(u'shorthand', Js(False)) + PyJs_ObjectProperty_1134_._set_name(u'ObjectProperty') + PyJs_Object_1132_ = Js({u'ObjectMethod':PyJs_ObjectMethod_1133_,u'ObjectProperty':PyJs_ObjectProperty_1134_}) + PyJs_Object_1131_ = Js({u'visitor':PyJs_Object_1132_}) + return PyJs_Object_1131_ + PyJs_anonymous_1130_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1130_) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1129_._set_name(u'anonymous') +PyJs_Object_1136_ = Js({u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1137_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1146_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1146_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + @Js + def PyJs_anonymous_1138_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'_ref', u'hasSpread', u't', u'getSpreadLiteral', u'build']) + @Js + def PyJsHoisted_hasSpread_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'i', u'nodes']) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i').get(u'value')) + var.put(u'prop', var.get(u'_ref2')) + if var.get(u't').callprop(u'isSpreadElement', var.get(u'prop')): + var.get(u'push')() + var.get(u'nodes').callprop(u'push', var.get(u'getSpreadLiteral')(var.get(u'prop'), var.get(u'scope'), var.get(u'state'))) + else: + var.get(u'_props').callprop(u'push', var.get(u'prop')) + + var.get(u'push')() + return var.get(u'nodes') + PyJsHoisted_build_.func_name = u'build' + var.put(u'build', PyJsHoisted_build_) + @Js + def PyJsHoisted_getSpreadLiteral_(spread, scope, state, this, arguments, var=var): + var = Scope({u'this':this, u'scope':scope, u'state':state, u'spread':spread, u'arguments':arguments}, var) + var.registers([u'scope', u'state', u'spread']) + PyJs_Object_1139_ = Js({u'name':Js(u'arguments')}) + if (var.get(u'state').get(u'opts').get(u'loose') and var.get(u't').callprop(u'isIdentifier', var.get(u'spread').get(u'argument'), PyJs_Object_1139_).neg()): + return var.get(u'spread').get(u'argument') + else: + return var.get(u'scope').callprop(u'toArray', var.get(u'spread').get(u'argument'), var.get(u'true')) + PyJsHoisted_getSpreadLiteral_.func_name = u'getSpreadLiteral' + var.put(u'getSpreadLiteral', PyJsHoisted_getSpreadLiteral_) + var.put(u't', var.get(u'_ref').get(u'types')) + pass + pass + pass + @Js + def PyJs_ArrayExpression_1142_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'ArrayExpression':PyJs_ArrayExpression_1142_}, var) + var.registers([u'node', u'elements', u'state', u'path', u'scope', u'nodes', u'first']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'elements', var.get(u'node').get(u'elements')) + if var.get(u'hasSpread')(var.get(u'elements')).neg(): + return var.get('undefined') + var.put(u'nodes', var.get(u'build')(var.get(u'elements'), var.get(u'scope'), var.get(u'state'))) + var.put(u'first', var.get(u'nodes').callprop(u'shift')) + if var.get(u't').callprop(u'isArrayExpression', var.get(u'first')).neg(): + var.get(u'nodes').callprop(u'unshift', var.get(u'first')) + var.put(u'first', var.get(u't').callprop(u'arrayExpression', Js([]))) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u'first'), var.get(u't').callprop(u'identifier', Js(u'concat'))), var.get(u'nodes'))) + PyJs_ArrayExpression_1142_._set_name(u'ArrayExpression') + @Js + def PyJs_CallExpression_1143_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'CallExpression':PyJs_CallExpression_1143_}, var) + var.registers([u'node', u'temp', u'contextLiteral', u'args', u'calleePath', u'state', u'path', u'scope', u'nodes', u'callee', u'first']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'args', var.get(u'node').get(u'arguments')) + if var.get(u'hasSpread')(var.get(u'args')).neg(): + return var.get('undefined') + var.put(u'calleePath', var.get(u'path').callprop(u'get', Js(u'callee'))) + if var.get(u'calleePath').callprop(u'isSuper'): + return var.get('undefined') + var.put(u'contextLiteral', var.get(u't').callprop(u'identifier', Js(u'undefined'))) + var.get(u'node').put(u'arguments', Js([])) + var.put(u'nodes', PyJsComma(Js(0.0), Js(None))) + if (PyJsStrictEq(var.get(u'args').get(u'length'),Js(1.0)) and PyJsStrictEq(var.get(u'args').get(u'0').get(u'argument').get(u'name'),Js(u'arguments'))): + var.put(u'nodes', Js([var.get(u'args').get(u'0').get(u'argument')])) + else: + var.put(u'nodes', var.get(u'build')(var.get(u'args'), var.get(u'scope'), var.get(u'state'))) + var.put(u'first', var.get(u'nodes').callprop(u'shift')) + if var.get(u'nodes').get(u'length'): + var.get(u'node').get(u'arguments').callprop(u'push', var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u'first'), var.get(u't').callprop(u'identifier', Js(u'concat'))), var.get(u'nodes'))) + else: + var.get(u'node').get(u'arguments').callprop(u'push', var.get(u'first')) + var.put(u'callee', var.get(u'node').get(u'callee')) + if var.get(u'calleePath').callprop(u'isMemberExpression'): + var.put(u'temp', var.get(u'scope').callprop(u'maybeGenerateMemoised', var.get(u'callee').get(u'object'))) + if var.get(u'temp'): + var.get(u'callee').put(u'object', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'temp'), var.get(u'callee').get(u'object'))) + var.put(u'contextLiteral', var.get(u'temp')) + else: + var.put(u'contextLiteral', var.get(u'callee').get(u'object')) + var.get(u't').callprop(u'appendToMemberExpression', var.get(u'callee'), var.get(u't').callprop(u'identifier', Js(u'apply'))) + else: + var.get(u'node').put(u'callee', var.get(u't').callprop(u'memberExpression', var.get(u'node').get(u'callee'), var.get(u't').callprop(u'identifier', Js(u'apply')))) + if var.get(u't').callprop(u'isSuper', var.get(u'contextLiteral')): + var.put(u'contextLiteral', var.get(u't').callprop(u'thisExpression')) + var.get(u'node').get(u'arguments').callprop(u'unshift', var.get(u'contextLiteral')) + PyJs_CallExpression_1143_._set_name(u'CallExpression') + @Js + def PyJs_NewExpression_1144_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'NewExpression':PyJs_NewExpression_1144_}, var) + var.registers([u'node', u'args', u'state', u'context', u'path', u'scope', u'nodes']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'args', var.get(u'node').get(u'arguments')) + if var.get(u'hasSpread')(var.get(u'args')).neg(): + return var.get('undefined') + var.put(u'nodes', var.get(u'build')(var.get(u'args'), var.get(u'scope'), var.get(u'state'))) + var.put(u'context', var.get(u't').callprop(u'arrayExpression', Js([var.get(u't').callprop(u'nullLiteral')]))) + var.put(u'args', var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u'context'), var.get(u't').callprop(u'identifier', Js(u'concat'))), var.get(u'nodes'))) + def PyJs_LONG_1145_(var=var): + return var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', Js(u'Function')), var.get(u't').callprop(u'identifier', Js(u'prototype'))), var.get(u't').callprop(u'identifier', Js(u'bind'))), var.get(u't').callprop(u'identifier', Js(u'apply'))), Js([var.get(u'node').get(u'callee'), var.get(u'args')])) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'newExpression', PyJs_LONG_1145_(), Js([]))) + PyJs_NewExpression_1144_._set_name(u'NewExpression') + PyJs_Object_1141_ = Js({u'ArrayExpression':PyJs_ArrayExpression_1142_,u'CallExpression':PyJs_CallExpression_1143_,u'NewExpression':PyJs_NewExpression_1144_}) + PyJs_Object_1140_ = Js({u'visitor':PyJs_Object_1141_}) + return PyJs_Object_1140_ + PyJs_anonymous_1138_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1138_) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1137_._set_name(u'anonymous') +PyJs_Object_1147_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0)}) +@Js +def PyJs_anonymous_1148_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'regex', u'exports', u'_babelHelperRegex', u'_interopRequireWildcard', u'require', u'_babelTypes', u'module', u't']) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1153_ = Js({}) + var.put(u'newObj', PyJs_Object_1153_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_1149_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_RegExpLiteral_1152_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'RegExpLiteral':PyJs_RegExpLiteral_1152_}, var) + var.registers([u'node', u'path']) + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'regex').callprop(u'is', var.get(u'node'), Js(u'y')).neg(): + return var.get('undefined') + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'newExpression', var.get(u't').callprop(u'identifier', Js(u'RegExp')), Js([var.get(u't').callprop(u'stringLiteral', var.get(u'node').get(u'pattern')), var.get(u't').callprop(u'stringLiteral', var.get(u'node').get(u'flags'))]))) + PyJs_RegExpLiteral_1152_._set_name(u'RegExpLiteral') + PyJs_Object_1151_ = Js({u'RegExpLiteral':PyJs_RegExpLiteral_1152_}) + PyJs_Object_1150_ = Js({u'visitor':PyJs_Object_1151_}) + return PyJs_Object_1150_ + PyJs_anonymous_1149_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1149_) + var.put(u'_babelHelperRegex', var.get(u'require')(Js(u'babel-helper-regex'))) + var.put(u'regex', var.get(u'_interopRequireWildcard')(var.get(u'_babelHelperRegex'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1148_._set_name(u'anonymous') +PyJs_Object_1154_ = Js({u'babel-helper-regex':Js(53.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1155_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1163_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1163_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + @Js + def PyJs_anonymous_1156_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'_ref', u'isString', u'buildBinaryExpression', u't']) + @Js + def PyJsHoisted_isString_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return (var.get(u't').callprop(u'isLiteral', var.get(u'node')) and PyJsStrictEq(var.get(u'node').get(u'value').typeof(),Js(u'string'))) + PyJsHoisted_isString_.func_name = u'isString' + var.put(u'isString', PyJsHoisted_isString_) + @Js + def PyJsHoisted_buildBinaryExpression_(left, right, this, arguments, var=var): + var = Scope({u'this':this, u'right':right, u'arguments':arguments, u'left':left}, var) + var.registers([u'right', u'left']) + return var.get(u't').callprop(u'binaryExpression', Js(u'+'), var.get(u'left'), var.get(u'right')) + PyJsHoisted_buildBinaryExpression_.func_name = u'buildBinaryExpression' + var.put(u'buildBinaryExpression', PyJsHoisted_buildBinaryExpression_) + var.put(u't', var.get(u'_ref').get(u'types')) + pass + pass + @Js + def PyJs_TaggedTemplateExpression_1159_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'TaggedTemplateExpression':PyJs_TaggedTemplateExpression_1159_, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'templateObject', u'templateName', u'args', u'_ref2', u'elem', u'raw', u'quasi', u'state', u'_i', u'path', u'strings']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'quasi', var.get(u'node').get(u'quasi')) + var.put(u'args', Js([])) + var.put(u'strings', Js([])) + var.put(u'raw', Js([])) + #for JS loop + var.put(u'_iterator', var.get(u'quasi').get(u'quasis')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i').get(u'value')) + var.put(u'elem', var.get(u'_ref2')) + var.get(u'strings').callprop(u'push', var.get(u't').callprop(u'stringLiteral', var.get(u'elem').get(u'value').get(u'cooked'))) + var.get(u'raw').callprop(u'push', var.get(u't').callprop(u'stringLiteral', var.get(u'elem').get(u'value').get(u'raw'))) + + var.put(u'strings', var.get(u't').callprop(u'arrayExpression', var.get(u'strings'))) + var.put(u'raw', var.get(u't').callprop(u'arrayExpression', var.get(u'raw'))) + var.put(u'templateName', Js(u'taggedTemplateLiteral')) + if var.get(u'state').get(u'opts').get(u'loose'): + var.put(u'templateName', Js(u'Loose'), u'+') + var.put(u'templateObject', var.get(u'state').get(u'file').callprop(u'addTemplateObject', var.get(u'templateName'), var.get(u'strings'), var.get(u'raw'))) + var.get(u'args').callprop(u'push', var.get(u'templateObject')) + var.put(u'args', var.get(u'args').callprop(u'concat', var.get(u'quasi').get(u'expressions'))) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'callExpression', var.get(u'node').get(u'tag'), var.get(u'args'))) + PyJs_TaggedTemplateExpression_1159_._set_name(u'TaggedTemplateExpression') + @Js + def PyJs_TemplateLiteral_1160_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'TemplateLiteral':PyJs_TemplateLiteral_1160_, u'arguments':arguments}, var) + var.registers([u'node', u'_ref4', u'_isArray3', u'_isArray2', u'expr', u'_i3', u'_ref3', u'_i2', u'elem', u'state', u'path', u'nodes', u'root', u'expressions', u'_iterator3', u'_iterator2']) + var.put(u'nodes', Js([])) + var.put(u'expressions', var.get(u'path').callprop(u'get', Js(u'expressions'))) + #for JS loop + var.put(u'_iterator2', var.get(u'path').get(u'node').get(u'quasis')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i2').get(u'value')) + var.put(u'elem', var.get(u'_ref3')) + var.get(u'nodes').callprop(u'push', var.get(u't').callprop(u'stringLiteral', var.get(u'elem').get(u'value').get(u'cooked'))) + var.put(u'expr', var.get(u'expressions').callprop(u'shift')) + if var.get(u'expr'): + if ((var.get(u'state').get(u'opts').get(u'spec') and var.get(u'expr').callprop(u'isBaseType', Js(u'string')).neg()) and var.get(u'expr').callprop(u'isBaseType', Js(u'number')).neg()): + var.get(u'nodes').callprop(u'push', var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'identifier', Js(u'String')), Js([var.get(u'expr').get(u'node')]))) + else: + var.get(u'nodes').callprop(u'push', var.get(u'expr').get(u'node')) + + @Js + def PyJs_anonymous_1161_(n, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'n':n}, var) + var.registers([u'n']) + PyJs_Object_1162_ = Js({u'value':Js(u'')}) + return var.get(u't').callprop(u'isLiteral', var.get(u'n'), PyJs_Object_1162_).neg() + PyJs_anonymous_1161_._set_name(u'anonymous') + var.put(u'nodes', var.get(u'nodes').callprop(u'filter', PyJs_anonymous_1161_)) + if (var.get(u'isString')(var.get(u'nodes').get(u'0')).neg() and var.get(u'isString')(var.get(u'nodes').get(u'1')).neg()): + var.get(u'nodes').callprop(u'unshift', var.get(u't').callprop(u'stringLiteral', Js(u''))) + if (var.get(u'nodes').get(u'length')>Js(1.0)): + var.put(u'root', var.get(u'buildBinaryExpression')(var.get(u'nodes').callprop(u'shift'), var.get(u'nodes').callprop(u'shift'))) + #for JS loop + var.put(u'_iterator3', var.get(u'nodes')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i3').get(u'value')) + var.put(u'node', var.get(u'_ref4')) + var.put(u'root', var.get(u'buildBinaryExpression')(var.get(u'root'), var.get(u'node'))) + + var.get(u'path').callprop(u'replaceWith', var.get(u'root')) + else: + var.get(u'path').callprop(u'replaceWith', var.get(u'nodes').get(u'0')) + PyJs_TemplateLiteral_1160_._set_name(u'TemplateLiteral') + PyJs_Object_1158_ = Js({u'TaggedTemplateExpression':PyJs_TaggedTemplateExpression_1159_,u'TemplateLiteral':PyJs_TemplateLiteral_1160_}) + PyJs_Object_1157_ = Js({u'visitor':PyJs_Object_1158_}) + return PyJs_Object_1157_ + PyJs_anonymous_1156_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1156_) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1155_._set_name(u'anonymous') +PyJs_Object_1164_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0)}) +@Js +def PyJs_anonymous_1165_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_symbol2', u'require', u'module', u'_symbol', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1172_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1172_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_symbol', var.get(u'require')(Js(u'babel-runtime/core-js/symbol'))) + var.put(u'_symbol2', var.get(u'_interopRequireDefault')(var.get(u'_symbol'))) + @Js + def PyJs_anonymous_1166_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'IGNORE', u'_ref', u't']) + var.put(u't', var.get(u'_ref').get(u'types')) + var.put(u'IGNORE', PyJsComma(Js(0.0),var.get(u'_symbol2').get(u'default'))()) + @Js + def PyJs_Scope_1169_(_ref2, this, arguments, var=var): + var = Scope({u'this':this, u'Scope':PyJs_Scope_1169_, u'_ref2':_ref2, u'arguments':arguments}, var) + var.registers([u'scope', u'_ref2']) + var.put(u'scope', var.get(u'_ref2').get(u'scope')) + if var.get(u'scope').callprop(u'getBinding', Js(u'Symbol')).neg(): + return var.get('undefined') + var.get(u'scope').callprop(u'rename', Js(u'Symbol')) + PyJs_Scope_1169_._set_name(u'Scope') + @Js + def PyJs_UnaryExpression_1170_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'UnaryExpression':PyJs_UnaryExpression_1170_, u'arguments':arguments}, var) + var.registers([u'node', u'parent', u'opposite', u'unary', u'call', u'undefLiteral', u'path']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'parent', var.get(u'path').get(u'parent')) + if var.get(u'node').get(var.get(u'IGNORE')): + return var.get('undefined') + @Js + def PyJs_anonymous_1171_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return (var.get(u'path').get(u'node') and var.get(u'path').get(u'node').get(u'_generated').neg().neg()) + PyJs_anonymous_1171_._set_name(u'anonymous') + if var.get(u'path').callprop(u'find', PyJs_anonymous_1171_): + return var.get('undefined') + if (var.get(u'path').get(u'parentPath').callprop(u'isBinaryExpression') and (var.get(u't').get(u'EQUALITY_BINARY_OPERATORS').callprop(u'indexOf', var.get(u'parent').get(u'operator'))>=Js(0.0))): + var.put(u'opposite', var.get(u'path').callprop(u'getOpposite')) + if ((var.get(u'opposite').callprop(u'isLiteral') and PyJsStrictNeq(var.get(u'opposite').get(u'node').get(u'value'),Js(u'symbol'))) and PyJsStrictNeq(var.get(u'opposite').get(u'node').get(u'value'),Js(u'object'))): + return var.get('undefined') + if PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'typeof')): + var.put(u'call', var.get(u't').callprop(u'callExpression', var.get(u"this").callprop(u'addHelper', Js(u'typeof')), Js([var.get(u'node').get(u'argument')]))) + if var.get(u'path').callprop(u'get', Js(u'argument')).callprop(u'isIdentifier'): + var.put(u'undefLiteral', var.get(u't').callprop(u'stringLiteral', Js(u'undefined'))) + var.put(u'unary', var.get(u't').callprop(u'unaryExpression', Js(u'typeof'), var.get(u'node').get(u'argument'))) + var.get(u'unary').put(var.get(u'IGNORE'), var.get(u'true')) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'conditionalExpression', var.get(u't').callprop(u'binaryExpression', Js(u'==='), var.get(u'unary'), var.get(u'undefLiteral')), var.get(u'undefLiteral'), var.get(u'call'))) + else: + var.get(u'path').callprop(u'replaceWith', var.get(u'call')) + PyJs_UnaryExpression_1170_._set_name(u'UnaryExpression') + PyJs_Object_1168_ = Js({u'Scope':PyJs_Scope_1169_,u'UnaryExpression':PyJs_UnaryExpression_1170_}) + PyJs_Object_1167_ = Js({u'visitor':PyJs_Object_1168_}) + return PyJs_Object_1167_ + PyJs_anonymous_1166_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1166_) + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1165_._set_name(u'anonymous') +PyJs_Object_1173_ = Js({u'babel-runtime/core-js/symbol':Js(105.0)}) +@Js +def PyJs_anonymous_1174_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_regexpuCore', u'regex', u'exports', u'_interopRequireWildcard', u'require', u'_babelHelperRegex', u'module', u'_interopRequireDefault', u'_regexpuCore2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1180_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1180_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1179_ = Js({}) + var.put(u'newObj', PyJs_Object_1179_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_1175_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_RegExpLiteral_1178_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'RegExpLiteral':PyJs_RegExpLiteral_1178_, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'node', u'_ref']) + var.put(u'node', var.get(u'_ref').get(u'node')) + if var.get(u'regex').callprop(u'is', var.get(u'node'), Js(u'u')).neg(): + return var.get('undefined') + var.get(u'node').put(u'pattern', PyJsComma(Js(0.0),var.get(u'_regexpuCore2').get(u'default'))(var.get(u'node').get(u'pattern'), var.get(u'node').get(u'flags'))) + var.get(u'regex').callprop(u'pullFlag', var.get(u'node'), Js(u'u')) + PyJs_RegExpLiteral_1178_._set_name(u'RegExpLiteral') + PyJs_Object_1177_ = Js({u'RegExpLiteral':PyJs_RegExpLiteral_1178_}) + PyJs_Object_1176_ = Js({u'visitor':PyJs_Object_1177_}) + return PyJs_Object_1176_ + PyJs_anonymous_1175_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1175_) + var.put(u'_regexpuCore', var.get(u'require')(Js(u'regexpu-core'))) + var.put(u'_regexpuCore2', var.get(u'_interopRequireDefault')(var.get(u'_regexpuCore'))) + var.put(u'_babelHelperRegex', var.get(u'require')(Js(u'babel-helper-regex'))) + var.put(u'regex', var.get(u'_interopRequireWildcard')(var.get(u'_babelHelperRegex'))) + pass + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1174_._set_name(u'anonymous') +PyJs_Object_1181_ = Js({u'babel-helper-regex':Js(53.0),u'regexpu-core':Js(504.0)}) +@Js +def PyJs_anonymous_1182_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'module', u'meta', u'_assert', u'_interopRequireDefault', u'loc', u'_typeof2', u'_typeof3', u'_stringify2', u'getDeclError', u'leap', u'Emitter', u'isValidCompletion', u'exports', u'_babelTypes', u'_interopRequireWildcard', u'_assert2', u'catchParamVisitor', u'_util', u'util', u'_meta', u'require', u'hasOwn', u'_stringify', u't', u'_leap', u'Ep']) + @Js + def PyJsHoisted_loc_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'numericLiteral', (-Js(1.0))) + PyJsHoisted_loc_.func_name = u'loc' + var.put(u'loc', PyJsHoisted_loc_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1183_ = Js({}) + var.put(u'newObj', PyJs_Object_1183_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_isValidCompletion_(record, this, arguments, var=var): + var = Scope({u'this':this, u'record':record, u'arguments':arguments}, var) + var.registers([u'record', u'type']) + var.put(u'type', var.get(u'record').get(u'type')) + if PyJsStrictEq(var.get(u'type'),Js(u'normal')): + return var.get(u'hasOwn').callprop(u'call', var.get(u'record'), Js(u'target')).neg() + if (PyJsStrictEq(var.get(u'type'),Js(u'break')) or PyJsStrictEq(var.get(u'type'),Js(u'continue'))): + return (var.get(u'hasOwn').callprop(u'call', var.get(u'record'), Js(u'value')).neg() and var.get(u't').callprop(u'isLiteral', var.get(u'record').get(u'target'))) + if (PyJsStrictEq(var.get(u'type'),Js(u'return')) or PyJsStrictEq(var.get(u'type'),Js(u'throw'))): + return (var.get(u'hasOwn').callprop(u'call', var.get(u'record'), Js(u'value')) and var.get(u'hasOwn').callprop(u'call', var.get(u'record'), Js(u'target')).neg()) + return Js(False) + PyJsHoisted_isValidCompletion_.func_name = u'isValidCompletion' + var.put(u'isValidCompletion', PyJsHoisted_isValidCompletion_) + @Js + def PyJsHoisted_getDeclError_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return var.get(u'Error').create(((Js(u'all declarations should have been transformed into ')+Js(u'assignments before the Exploder began its work: '))+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'node')))) + PyJsHoisted_getDeclError_.func_name = u'getDeclError' + var.put(u'getDeclError', PyJsHoisted_getDeclError_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1184_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1184_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_Emitter_(contextId, this, arguments, var=var): + var = Scope({u'this':this, u'contextId':contextId, u'arguments':arguments}, var) + var.registers([u'contextId']) + var.get(u'_assert2').get(u'default').callprop(u'ok', var.get(u"this").instanceof(var.get(u'Emitter'))) + var.get(u't').callprop(u'assertIdentifier', var.get(u'contextId')) + var.get(u"this").put(u'nextTempId', Js(0.0)) + var.get(u"this").put(u'contextId', var.get(u'contextId')) + var.get(u"this").put(u'listing', Js([])) + var.get(u"this").put(u'marked', Js([var.get(u'true')])) + var.get(u"this").put(u'finalLoc', var.get(u'loc')()) + var.get(u"this").put(u'tryEntries', Js([])) + var.get(u"this").put(u'leapManager', var.get(u'leap').get(u'LeapManager').create(var.get(u"this"))) + PyJsHoisted_Emitter_.func_name = u'Emitter' + var.put(u'Emitter', PyJsHoisted_Emitter_) + Js(u'use strict') + var.put(u'_typeof2', var.get(u'require')(Js(u'babel-runtime/helpers/typeof'))) + var.put(u'_typeof3', var.get(u'_interopRequireDefault')(var.get(u'_typeof2'))) + var.put(u'_stringify', var.get(u'require')(Js(u'babel-runtime/core-js/json/stringify'))) + var.put(u'_stringify2', var.get(u'_interopRequireDefault')(var.get(u'_stringify'))) + var.put(u'_assert', var.get(u'require')(Js(u'assert'))) + var.put(u'_assert2', var.get(u'_interopRequireDefault')(var.get(u'_assert'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_leap', var.get(u'require')(Js(u'./leap'))) + var.put(u'leap', var.get(u'_interopRequireWildcard')(var.get(u'_leap'))) + var.put(u'_meta', var.get(u'require')(Js(u'./meta'))) + var.put(u'meta', var.get(u'_interopRequireWildcard')(var.get(u'_meta'))) + var.put(u'_util', var.get(u'require')(Js(u'./util'))) + var.put(u'util', var.get(u'_interopRequireWildcard')(var.get(u'_util'))) + pass + pass + var.put(u'hasOwn', var.get(u'Object').get(u'prototype').get(u'hasOwnProperty')) + pass + var.put(u'Ep', var.get(u'Emitter').get(u'prototype')) + var.get(u'exports').put(u'Emitter', var.get(u'Emitter')) + pass + @Js + def PyJs_anonymous_1185_(loc, this, arguments, var=var): + var = Scope({u'this':this, u'loc':loc, u'arguments':arguments}, var) + var.registers([u'index', u'loc']) + var.get(u't').callprop(u'assertLiteral', var.get(u'loc')) + var.put(u'index', var.get(u"this").get(u'listing').get(u'length')) + if PyJsStrictEq(var.get(u'loc').get(u'value'),(-Js(1.0))): + var.get(u'loc').put(u'value', var.get(u'index')) + else: + var.get(u'_assert2').get(u'default').callprop(u'strictEqual', var.get(u'loc').get(u'value'), var.get(u'index')) + var.get(u"this").get(u'marked').put(var.get(u'index'), var.get(u'true')) + return var.get(u'loc') + PyJs_anonymous_1185_._set_name(u'anonymous') + var.get(u'Ep').put(u'mark', PyJs_anonymous_1185_) + @Js + def PyJs_anonymous_1186_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u't').callprop(u'isExpression', var.get(u'node')): + var.put(u'node', var.get(u't').callprop(u'expressionStatement', var.get(u'node'))) + var.get(u't').callprop(u'assertStatement', var.get(u'node')) + var.get(u"this").get(u'listing').callprop(u'push', var.get(u'node')) + PyJs_anonymous_1186_._set_name(u'anonymous') + var.get(u'Ep').put(u'emit', PyJs_anonymous_1186_) + @Js + def PyJs_anonymous_1187_(lhs, rhs, this, arguments, var=var): + var = Scope({u'this':this, u'rhs':rhs, u'lhs':lhs, u'arguments':arguments}, var) + var.registers([u'rhs', u'lhs']) + var.get(u"this").callprop(u'emit', var.get(u"this").callprop(u'assign', var.get(u'lhs'), var.get(u'rhs'))) + return var.get(u'lhs') + PyJs_anonymous_1187_._set_name(u'anonymous') + var.get(u'Ep').put(u'emitAssign', PyJs_anonymous_1187_) + @Js + def PyJs_anonymous_1188_(lhs, rhs, this, arguments, var=var): + var = Scope({u'this':this, u'rhs':rhs, u'lhs':lhs, u'arguments':arguments}, var) + var.registers([u'rhs', u'lhs']) + return var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'lhs'), var.get(u'rhs'))) + PyJs_anonymous_1188_._set_name(u'anonymous') + var.get(u'Ep').put(u'assign', PyJs_anonymous_1188_) + @Js + def PyJs_anonymous_1189_(name, computed, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'name':name, u'computed':computed}, var) + var.registers([u'name', u'computed']) + return var.get(u't').callprop(u'memberExpression', var.get(u"this").get(u'contextId'), (var.get(u't').callprop(u'stringLiteral', var.get(u'name')) if var.get(u'computed') else var.get(u't').callprop(u'identifier', var.get(u'name'))), var.get(u'computed').neg().neg()) + PyJs_anonymous_1189_._set_name(u'anonymous') + var.get(u'Ep').put(u'contextProperty', PyJs_anonymous_1189_) + @Js + def PyJs_anonymous_1190_(rval, this, arguments, var=var): + var = Scope({u'this':this, u'rval':rval, u'arguments':arguments}, var) + var.registers([u'rval']) + if var.get(u'rval'): + var.get(u"this").callprop(u'setReturnValue', var.get(u'rval')) + var.get(u"this").callprop(u'jump', var.get(u"this").get(u'finalLoc')) + PyJs_anonymous_1190_._set_name(u'anonymous') + var.get(u'Ep').put(u'stop', PyJs_anonymous_1190_) + @Js + def PyJs_anonymous_1191_(valuePath, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'valuePath':valuePath}, var) + var.registers([u'valuePath']) + var.get(u't').callprop(u'assertExpression', var.get(u'valuePath').get(u'value')) + var.get(u"this").callprop(u'emitAssign', var.get(u"this").callprop(u'contextProperty', Js(u'rval')), var.get(u"this").callprop(u'explodeExpression', var.get(u'valuePath'))) + PyJs_anonymous_1191_._set_name(u'anonymous') + var.get(u'Ep').put(u'setReturnValue', PyJs_anonymous_1191_) + @Js + def PyJs_anonymous_1192_(tryLoc, assignee, this, arguments, var=var): + var = Scope({u'this':this, u'assignee':assignee, u'tryLoc':tryLoc, u'arguments':arguments}, var) + var.registers([u'assignee', u'catchCall', u'tryLoc']) + var.get(u't').callprop(u'assertLiteral', var.get(u'tryLoc')) + var.put(u'catchCall', var.get(u't').callprop(u'callExpression', var.get(u"this").callprop(u'contextProperty', Js(u'catch'), var.get(u'true')), Js([var.get(u'tryLoc')]))) + if var.get(u'assignee'): + var.get(u"this").callprop(u'emitAssign', var.get(u'assignee'), var.get(u'catchCall')) + else: + var.get(u"this").callprop(u'emit', var.get(u'catchCall')) + PyJs_anonymous_1192_._set_name(u'anonymous') + var.get(u'Ep').put(u'clearPendingException', PyJs_anonymous_1192_) + @Js + def PyJs_anonymous_1193_(toLoc, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'toLoc':toLoc}, var) + var.registers([u'toLoc']) + var.get(u"this").callprop(u'emitAssign', var.get(u"this").callprop(u'contextProperty', Js(u'next')), var.get(u'toLoc')) + var.get(u"this").callprop(u'emit', var.get(u't').callprop(u'breakStatement')) + PyJs_anonymous_1193_._set_name(u'anonymous') + var.get(u'Ep').put(u'jump', PyJs_anonymous_1193_) + @Js + def PyJs_anonymous_1194_(test, toLoc, this, arguments, var=var): + var = Scope({u'test':test, u'this':this, u'arguments':arguments, u'toLoc':toLoc}, var) + var.registers([u'test', u'toLoc']) + var.get(u't').callprop(u'assertExpression', var.get(u'test')) + var.get(u't').callprop(u'assertLiteral', var.get(u'toLoc')) + var.get(u"this").callprop(u'emit', var.get(u't').callprop(u'ifStatement', var.get(u'test'), var.get(u't').callprop(u'blockStatement', Js([var.get(u"this").callprop(u'assign', var.get(u"this").callprop(u'contextProperty', Js(u'next')), var.get(u'toLoc')), var.get(u't').callprop(u'breakStatement')])))) + PyJs_anonymous_1194_._set_name(u'anonymous') + var.get(u'Ep').put(u'jumpIf', PyJs_anonymous_1194_) + @Js + def PyJs_anonymous_1195_(test, toLoc, this, arguments, var=var): + var = Scope({u'test':test, u'this':this, u'arguments':arguments, u'toLoc':toLoc}, var) + var.registers([u'test', u'negatedTest', u'toLoc']) + var.get(u't').callprop(u'assertExpression', var.get(u'test')) + var.get(u't').callprop(u'assertLiteral', var.get(u'toLoc')) + var.put(u'negatedTest', PyJsComma(Js(0.0), Js(None))) + if (var.get(u't').callprop(u'isUnaryExpression', var.get(u'test')) and PyJsStrictEq(var.get(u'test').get(u'operator'),Js(u'!'))): + var.put(u'negatedTest', var.get(u'test').get(u'argument')) + else: + var.put(u'negatedTest', var.get(u't').callprop(u'unaryExpression', Js(u'!'), var.get(u'test'))) + var.get(u"this").callprop(u'emit', var.get(u't').callprop(u'ifStatement', var.get(u'negatedTest'), var.get(u't').callprop(u'blockStatement', Js([var.get(u"this").callprop(u'assign', var.get(u"this").callprop(u'contextProperty', Js(u'next')), var.get(u'toLoc')), var.get(u't').callprop(u'breakStatement')])))) + PyJs_anonymous_1195_._set_name(u'anonymous') + var.get(u'Ep').put(u'jumpIfNot', PyJs_anonymous_1195_) + @Js + def PyJs_anonymous_1196_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").callprop(u'contextProperty', (Js(u't')+(var.get(u"this").put(u'nextTempId',Js(var.get(u"this").get(u'nextTempId').to_number())+Js(1))-Js(1)))) + PyJs_anonymous_1196_._set_name(u'anonymous') + var.get(u'Ep').put(u'makeTempVar', PyJs_anonymous_1196_) + @Js + def PyJs_anonymous_1197_(id, this, arguments, var=var): + var = Scope({u'this':this, u'id':id, u'arguments':arguments}, var) + var.registers([u'id']) + return var.get(u't').callprop(u'functionExpression', (var.get(u'id') or var.get(u"null")), Js([var.get(u"this").get(u'contextId')]), var.get(u't').callprop(u'blockStatement', Js([var.get(u"this").callprop(u'getDispatchLoop')])), Js(False), Js(False)) + PyJs_anonymous_1197_._set_name(u'anonymous') + var.get(u'Ep').put(u'getContextFunction', PyJs_anonymous_1197_) + @Js + def PyJs_anonymous_1198_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'current', u'self', u'alreadyEnded', u'cases']) + var.put(u'self', var.get(u"this")) + var.put(u'cases', Js([])) + var.put(u'current', PyJsComma(Js(0.0), Js(None))) + var.put(u'alreadyEnded', Js(False)) + @Js + def PyJs_anonymous_1199_(stmt, i, this, arguments, var=var): + var = Scope({u'i':i, u'this':this, u'arguments':arguments, u'stmt':stmt}, var) + var.registers([u'i', u'stmt']) + if var.get(u'self').get(u'marked').callprop(u'hasOwnProperty', var.get(u'i')): + var.get(u'cases').callprop(u'push', var.get(u't').callprop(u'switchCase', var.get(u't').callprop(u'numericLiteral', var.get(u'i')), var.put(u'current', Js([])))) + var.put(u'alreadyEnded', Js(False)) + if var.get(u'alreadyEnded').neg(): + var.get(u'current').callprop(u'push', var.get(u'stmt')) + if var.get(u't').callprop(u'isCompletionStatement', var.get(u'stmt')): + var.put(u'alreadyEnded', var.get(u'true')) + PyJs_anonymous_1199_._set_name(u'anonymous') + var.get(u'self').get(u'listing').callprop(u'forEach', PyJs_anonymous_1199_) + var.get(u"this").get(u'finalLoc').put(u'value', var.get(u"this").get(u'listing').get(u'length')) + var.get(u'cases').callprop(u'push', var.get(u't').callprop(u'switchCase', var.get(u"this").get(u'finalLoc'), Js([])), var.get(u't').callprop(u'switchCase', var.get(u't').callprop(u'stringLiteral', Js(u'end')), Js([var.get(u't').callprop(u'returnStatement', var.get(u't').callprop(u'callExpression', var.get(u"this").callprop(u'contextProperty', Js(u'stop')), Js([])))]))) + return var.get(u't').callprop(u'whileStatement', var.get(u't').callprop(u'numericLiteral', Js(1.0)), var.get(u't').callprop(u'switchStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u"this").callprop(u'contextProperty', Js(u'prev')), var.get(u"this").callprop(u'contextProperty', Js(u'next'))), var.get(u'cases'))) + PyJs_anonymous_1198_._set_name(u'anonymous') + var.get(u'Ep').put(u'getDispatchLoop', PyJs_anonymous_1198_) + @Js + def PyJs_anonymous_1200_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'lastLocValue']) + if PyJsStrictEq(var.get(u"this").get(u'tryEntries').get(u'length'),Js(0.0)): + return var.get(u"null") + var.put(u'lastLocValue', Js(0.0)) + @Js + def PyJs_anonymous_1201_(tryEntry, this, arguments, var=var): + var = Scope({u'this':this, u'tryEntry':tryEntry, u'arguments':arguments}, var) + var.registers([u'locs', u'tryEntry', u'thisLocValue', u'ce', u'fe']) + var.put(u'thisLocValue', var.get(u'tryEntry').get(u'firstLoc').get(u'value')) + var.get(u'_assert2').get(u'default').callprop(u'ok', (var.get(u'thisLocValue')>=var.get(u'lastLocValue')), Js(u'try entries out of order')) + var.put(u'lastLocValue', var.get(u'thisLocValue')) + var.put(u'ce', var.get(u'tryEntry').get(u'catchEntry')) + var.put(u'fe', var.get(u'tryEntry').get(u'finallyEntry')) + var.put(u'locs', Js([var.get(u'tryEntry').get(u'firstLoc'), (var.get(u'ce').get(u'firstLoc') if var.get(u'ce') else var.get(u"null"))])) + if var.get(u'fe'): + var.get(u'locs').put(u'2', var.get(u'fe').get(u'firstLoc')) + var.get(u'locs').put(u'3', var.get(u'fe').get(u'afterLoc')) + return var.get(u't').callprop(u'arrayExpression', var.get(u'locs')) + PyJs_anonymous_1201_._set_name(u'anonymous') + return var.get(u't').callprop(u'arrayExpression', var.get(u"this").get(u'tryEntries').callprop(u'map', PyJs_anonymous_1201_)) + PyJs_anonymous_1200_._set_name(u'anonymous') + var.get(u'Ep').put(u'getTryLocsList', PyJs_anonymous_1200_) + @Js + def PyJs_anonymous_1202_(path, ignoreResult, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'ignoreResult':ignoreResult, u'arguments':arguments}, var) + var.registers([u'node', u'path', u'self', u'ignoreResult']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'self', var.get(u"this")) + var.get(u't').callprop(u'assertNode', var.get(u'node')) + if var.get(u't').callprop(u'isDeclaration', var.get(u'node')): + PyJsTempException = JsToPyException(var.get(u'getDeclError')(var.get(u'node'))) + raise PyJsTempException + if var.get(u't').callprop(u'isStatement', var.get(u'node')): + return var.get(u'self').callprop(u'explodeStatement', var.get(u'path')) + if var.get(u't').callprop(u'isExpression', var.get(u'node')): + return var.get(u'self').callprop(u'explodeExpression', var.get(u'path'), var.get(u'ignoreResult')) + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'Program')): + SWITCHED = True + return var.get(u'path').callprop(u'get', Js(u'body')).callprop(u'map', var.get(u'self').get(u'explodeStatement'), var.get(u'self')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'VariableDeclarator')): + SWITCHED = True + PyJsTempException = JsToPyException(var.get(u'getDeclError')(var.get(u'node'))) + raise PyJsTempException + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'Property')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'SwitchCase')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'CatchClause')): + SWITCHED = True + PyJsTempException = JsToPyException(var.get(u'Error').create((var.get(u'node').get(u'type')+Js(u' nodes should be handled by their parents')))) + raise PyJsTempException + if True: + SWITCHED = True + PyJsTempException = JsToPyException(var.get(u'Error').create((Js(u'unknown Node of type ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'node').get(u'type'))))) + raise PyJsTempException + SWITCHED = True + break + PyJs_anonymous_1202_._set_name(u'anonymous') + var.get(u'Ep').put(u'explode', PyJs_anonymous_1202_) + pass + @Js + def PyJs_anonymous_1203_(path, labelId, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'labelId':labelId}, var) + var.registers([u'head', u'labelId', u'_ret', u'self', u'after', u'stmt', u'path', u'before']) + var.put(u'stmt', var.get(u'path').get(u'node')) + var.put(u'self', var.get(u"this")) + var.put(u'before', PyJsComma(Js(0.0), Js(None))) + var.put(u'after', PyJsComma(Js(0.0), Js(None))) + var.put(u'head', PyJsComma(Js(0.0), Js(None))) + var.get(u't').callprop(u'assertStatement', var.get(u'stmt')) + if var.get(u'labelId'): + var.get(u't').callprop(u'assertIdentifier', var.get(u'labelId')) + else: + var.put(u'labelId', var.get(u"null")) + if var.get(u't').callprop(u'isBlockStatement', var.get(u'stmt')): + @Js + def PyJs_anonymous_1204_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path')) + PyJs_anonymous_1204_._set_name(u'anonymous') + var.get(u'path').callprop(u'get', Js(u'body')).callprop(u'forEach', PyJs_anonymous_1204_) + return var.get('undefined') + if var.get(u'meta').callprop(u'containsLeap', var.get(u'stmt')).neg(): + var.get(u'self').callprop(u'emit', var.get(u'stmt')) + return var.get('undefined') + @Js + def PyJs_anonymous_1205_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'catchLoc', u'catchEntry', u'c', u'tryEntry', u'keyInfoTmpVar', u'discriminant', u'i', u'keyIterNextFn', u'finallyLoc', u'update', u'defaultLoc', u'caseLocs', u'disc', u'test', u'cases', u'finallyEntry', u'elseLoc', u'handler', u'condition', u'first']) + while 1: + SWITCHED = False + CONDITION = (var.get(u'stmt').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ExpressionStatement')): + SWITCHED = True + var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'expression')), var.get(u'true')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'LabeledStatement')): + SWITCHED = True + var.put(u'after', var.get(u'loc')()) + @Js + def PyJs_anonymous_1206_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path').callprop(u'get', Js(u'body')), var.get(u'stmt').get(u'label')) + PyJs_anonymous_1206_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'leap').get(u'LabeledEntry').create(var.get(u'after'), var.get(u'stmt').get(u'label')), PyJs_anonymous_1206_) + var.get(u'self').callprop(u'mark', var.get(u'after')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'WhileStatement')): + SWITCHED = True + var.put(u'before', var.get(u'loc')()) + var.put(u'after', var.get(u'loc')()) + var.get(u'self').callprop(u'mark', var.get(u'before')) + var.get(u'self').callprop(u'jumpIfNot', var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'test'))), var.get(u'after')) + @Js + def PyJs_anonymous_1207_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path').callprop(u'get', Js(u'body'))) + PyJs_anonymous_1207_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'leap').get(u'LoopEntry').create(var.get(u'after'), var.get(u'before'), var.get(u'labelId')), PyJs_anonymous_1207_) + var.get(u'self').callprop(u'jump', var.get(u'before')) + var.get(u'self').callprop(u'mark', var.get(u'after')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'DoWhileStatement')): + SWITCHED = True + var.put(u'first', var.get(u'loc')()) + var.put(u'test', var.get(u'loc')()) + var.put(u'after', var.get(u'loc')()) + var.get(u'self').callprop(u'mark', var.get(u'first')) + @Js + def PyJs_anonymous_1208_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'self').callprop(u'explode', var.get(u'path').callprop(u'get', Js(u'body'))) + PyJs_anonymous_1208_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'leap').get(u'LoopEntry').create(var.get(u'after'), var.get(u'test'), var.get(u'labelId')), PyJs_anonymous_1208_) + var.get(u'self').callprop(u'mark', var.get(u'test')) + var.get(u'self').callprop(u'jumpIf', var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'test'))), var.get(u'first')) + var.get(u'self').callprop(u'mark', var.get(u'after')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ForStatement')): + SWITCHED = True + var.put(u'head', var.get(u'loc')()) + var.put(u'update', var.get(u'loc')()) + var.put(u'after', var.get(u'loc')()) + if var.get(u'stmt').get(u'init'): + var.get(u'self').callprop(u'explode', var.get(u'path').callprop(u'get', Js(u'init')), var.get(u'true')) + var.get(u'self').callprop(u'mark', var.get(u'head')) + if var.get(u'stmt').get(u'test'): + var.get(u'self').callprop(u'jumpIfNot', var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'test'))), var.get(u'after')) + else: + pass + @Js + def PyJs_anonymous_1209_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path').callprop(u'get', Js(u'body'))) + PyJs_anonymous_1209_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'leap').get(u'LoopEntry').create(var.get(u'after'), var.get(u'update'), var.get(u'labelId')), PyJs_anonymous_1209_) + var.get(u'self').callprop(u'mark', var.get(u'update')) + if var.get(u'stmt').get(u'update'): + var.get(u'self').callprop(u'explode', var.get(u'path').callprop(u'get', Js(u'update')), var.get(u'true')) + var.get(u'self').callprop(u'jump', var.get(u'head')) + var.get(u'self').callprop(u'mark', var.get(u'after')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'TypeCastExpression')): + SWITCHED = True + PyJs_Object_1210_ = Js({u'v':var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'expression')))}) + return PyJs_Object_1210_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ForInStatement')): + SWITCHED = True + var.put(u'head', var.get(u'loc')()) + var.put(u'after', var.get(u'loc')()) + var.put(u'keyIterNextFn', var.get(u'self').callprop(u'makeTempVar')) + var.get(u'self').callprop(u'emitAssign', var.get(u'keyIterNextFn'), var.get(u't').callprop(u'callExpression', var.get(u'util').callprop(u'runtimeProperty', Js(u'keys')), Js([var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'right')))]))) + var.get(u'self').callprop(u'mark', var.get(u'head')) + var.put(u'keyInfoTmpVar', var.get(u'self').callprop(u'makeTempVar')) + var.get(u'self').callprop(u'jumpIf', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'keyInfoTmpVar'), var.get(u't').callprop(u'callExpression', var.get(u'keyIterNextFn'), Js([]))), var.get(u't').callprop(u'identifier', Js(u'done')), Js(False)), var.get(u'after')) + var.get(u'self').callprop(u'emitAssign', var.get(u'stmt').get(u'left'), var.get(u't').callprop(u'memberExpression', var.get(u'keyInfoTmpVar'), var.get(u't').callprop(u'identifier', Js(u'value')), Js(False))) + @Js + def PyJs_anonymous_1211_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path').callprop(u'get', Js(u'body'))) + PyJs_anonymous_1211_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'leap').get(u'LoopEntry').create(var.get(u'after'), var.get(u'head'), var.get(u'labelId')), PyJs_anonymous_1211_) + var.get(u'self').callprop(u'jump', var.get(u'head')) + var.get(u'self').callprop(u'mark', var.get(u'after')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'BreakStatement')): + SWITCHED = True + PyJs_Object_1212_ = Js({u'type':Js(u'break'),u'target':var.get(u'self').get(u'leapManager').callprop(u'getBreakLoc', var.get(u'stmt').get(u'label'))}) + var.get(u'self').callprop(u'emitAbruptCompletion', PyJs_Object_1212_) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ContinueStatement')): + SWITCHED = True + PyJs_Object_1213_ = Js({u'type':Js(u'continue'),u'target':var.get(u'self').get(u'leapManager').callprop(u'getContinueLoc', var.get(u'stmt').get(u'label'))}) + var.get(u'self').callprop(u'emitAbruptCompletion', PyJs_Object_1213_) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'SwitchStatement')): + SWITCHED = True + var.put(u'disc', var.get(u'self').callprop(u'emitAssign', var.get(u'self').callprop(u'makeTempVar'), var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'discriminant'))))) + var.put(u'after', var.get(u'loc')()) + var.put(u'defaultLoc', var.get(u'loc')()) + var.put(u'condition', var.get(u'defaultLoc')) + var.put(u'caseLocs', Js([])) + var.put(u'cases', (var.get(u'stmt').get(u'cases') or Js([]))) + #for JS loop + var.put(u'i', (var.get(u'cases').get(u'length')-Js(1.0))) + while (var.get(u'i')>=Js(0.0)): + try: + var.put(u'c', var.get(u'cases').get(var.get(u'i'))) + var.get(u't').callprop(u'assertSwitchCase', var.get(u'c')) + if var.get(u'c').get(u'test'): + var.put(u'condition', var.get(u't').callprop(u'conditionalExpression', var.get(u't').callprop(u'binaryExpression', Js(u'==='), var.get(u'disc'), var.get(u'c').get(u'test')), var.get(u'caseLocs').put(var.get(u'i'), var.get(u'loc')()), var.get(u'condition'))) + else: + var.get(u'caseLocs').put(var.get(u'i'), var.get(u'defaultLoc')) + finally: + var.put(u'i',Js(var.get(u'i').to_number())-Js(1)) + var.put(u'discriminant', var.get(u'path').callprop(u'get', Js(u'discriminant'))) + var.get(u'discriminant').callprop(u'replaceWith', var.get(u'condition')) + var.get(u'self').callprop(u'jump', var.get(u'self').callprop(u'explodeExpression', var.get(u'discriminant'))) + @Js + def PyJs_anonymous_1214_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_anonymous_1215_(casePath, this, arguments, var=var): + var = Scope({u'this':this, u'casePath':casePath, u'arguments':arguments}, var) + var.registers([u'i', u'casePath']) + var.put(u'i', var.get(u'casePath').get(u'key')) + var.get(u'self').callprop(u'mark', var.get(u'caseLocs').get(var.get(u'i'))) + @Js + def PyJs_anonymous_1216_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path')) + PyJs_anonymous_1216_._set_name(u'anonymous') + var.get(u'casePath').callprop(u'get', Js(u'consequent')).callprop(u'forEach', PyJs_anonymous_1216_) + PyJs_anonymous_1215_._set_name(u'anonymous') + var.get(u'path').callprop(u'get', Js(u'cases')).callprop(u'forEach', PyJs_anonymous_1215_) + PyJs_anonymous_1214_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'leap').get(u'SwitchEntry').create(var.get(u'after')), PyJs_anonymous_1214_) + var.get(u'self').callprop(u'mark', var.get(u'after')) + if PyJsStrictEq(var.get(u'defaultLoc').get(u'value'),(-Js(1.0))): + var.get(u'self').callprop(u'mark', var.get(u'defaultLoc')) + var.get(u'_assert2').get(u'default').callprop(u'strictEqual', var.get(u'after').get(u'value'), var.get(u'defaultLoc').get(u'value')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'IfStatement')): + SWITCHED = True + var.put(u'elseLoc', (var.get(u'stmt').get(u'alternate') and var.get(u'loc')())) + var.put(u'after', var.get(u'loc')()) + var.get(u'self').callprop(u'jumpIfNot', var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'test'))), (var.get(u'elseLoc') or var.get(u'after'))) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path').callprop(u'get', Js(u'consequent'))) + if var.get(u'elseLoc'): + var.get(u'self').callprop(u'jump', var.get(u'after')) + var.get(u'self').callprop(u'mark', var.get(u'elseLoc')) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path').callprop(u'get', Js(u'alternate'))) + var.get(u'self').callprop(u'mark', var.get(u'after')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ReturnStatement')): + SWITCHED = True + PyJs_Object_1217_ = Js({u'type':Js(u'return'),u'value':var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'argument')))}) + var.get(u'self').callprop(u'emitAbruptCompletion', PyJs_Object_1217_) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'WithStatement')): + SWITCHED = True + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'WithStatement not supported in generator functions.'))) + raise PyJsTempException + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'TryStatement')): + SWITCHED = True + var.put(u'after', var.get(u'loc')()) + var.put(u'handler', var.get(u'stmt').get(u'handler')) + var.put(u'catchLoc', (var.get(u'handler') and var.get(u'loc')())) + var.put(u'catchEntry', (var.get(u'catchLoc') and var.get(u'leap').get(u'CatchEntry').create(var.get(u'catchLoc'), var.get(u'handler').get(u'param')))) + var.put(u'finallyLoc', (var.get(u'stmt').get(u'finalizer') and var.get(u'loc')())) + var.put(u'finallyEntry', (var.get(u'finallyLoc') and var.get(u'leap').get(u'FinallyEntry').create(var.get(u'finallyLoc'), var.get(u'after')))) + var.put(u'tryEntry', var.get(u'leap').get(u'TryEntry').create(var.get(u'self').callprop(u'getUnmarkedCurrentLoc'), var.get(u'catchEntry'), var.get(u'finallyEntry'))) + var.get(u'self').get(u'tryEntries').callprop(u'push', var.get(u'tryEntry')) + var.get(u'self').callprop(u'updateContextPrevLoc', var.get(u'tryEntry').get(u'firstLoc')) + @Js + def PyJs_anonymous_1218_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path').callprop(u'get', Js(u'block'))) + if var.get(u'catchLoc'): + @Js + def PyJs_anonymous_1219_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'bodyPath', u'safeParam']) + if var.get(u'finallyLoc'): + var.get(u'self').callprop(u'jump', var.get(u'finallyLoc')) + else: + var.get(u'self').callprop(u'jump', var.get(u'after')) + var.get(u'self').callprop(u'updateContextPrevLoc', var.get(u'self').callprop(u'mark', var.get(u'catchLoc'))) + var.put(u'bodyPath', var.get(u'path').callprop(u'get', Js(u'handler.body'))) + var.put(u'safeParam', var.get(u'self').callprop(u'makeTempVar')) + var.get(u'self').callprop(u'clearPendingException', var.get(u'tryEntry').get(u'firstLoc'), var.get(u'safeParam')) + PyJs_Object_1220_ = Js({u'safeParam':var.get(u'safeParam'),u'catchParamName':var.get(u'handler').get(u'param').get(u'name')}) + var.get(u'bodyPath').callprop(u'traverse', var.get(u'catchParamVisitor'), PyJs_Object_1220_) + @Js + def PyJs_anonymous_1221_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'self').callprop(u'explodeStatement', var.get(u'bodyPath')) + PyJs_anonymous_1221_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'catchEntry'), PyJs_anonymous_1221_) + PyJs_anonymous_1219_._set_name(u'anonymous') + PyJs_anonymous_1219_() + if var.get(u'finallyLoc'): + var.get(u'self').callprop(u'updateContextPrevLoc', var.get(u'self').callprop(u'mark', var.get(u'finallyLoc'))) + @Js + def PyJs_anonymous_1222_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'self').callprop(u'explodeStatement', var.get(u'path').callprop(u'get', Js(u'finalizer'))) + PyJs_anonymous_1222_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'finallyEntry'), PyJs_anonymous_1222_) + var.get(u'self').callprop(u'emit', var.get(u't').callprop(u'returnStatement', var.get(u't').callprop(u'callExpression', var.get(u'self').callprop(u'contextProperty', Js(u'finish')), Js([var.get(u'finallyEntry').get(u'firstLoc')])))) + PyJs_anonymous_1218_._set_name(u'anonymous') + var.get(u'self').get(u'leapManager').callprop(u'withEntry', var.get(u'tryEntry'), PyJs_anonymous_1218_) + var.get(u'self').callprop(u'mark', var.get(u'after')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ThrowStatement')): + SWITCHED = True + var.get(u'self').callprop(u'emit', var.get(u't').callprop(u'throwStatement', var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'argument'))))) + break + if True: + SWITCHED = True + PyJsTempException = JsToPyException(var.get(u'Error').create((Js(u'unknown Statement of type ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'stmt').get(u'type'))))) + raise PyJsTempException + SWITCHED = True + break + PyJs_anonymous_1205_._set_name(u'anonymous') + var.put(u'_ret', PyJs_anonymous_1205_()) + if PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'_ret',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'_ret'))),Js(u'object')): + return var.get(u'_ret').get(u'v') + PyJs_anonymous_1203_._set_name(u'anonymous') + var.get(u'Ep').put(u'explodeStatement', PyJs_anonymous_1203_) + @Js + def PyJs_Identifier_1224_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'Identifier':PyJs_Identifier_1224_, u'arguments':arguments}, var) + var.registers([u'path', u'state']) + if (PyJsStrictEq(var.get(u'path').get(u'node').get(u'name'),var.get(u'state').get(u'catchParamName')) and var.get(u'util').callprop(u'isReference', var.get(u'path'))): + var.get(u'path').callprop(u'replaceWith', var.get(u'state').get(u'safeParam')) + PyJs_Identifier_1224_._set_name(u'Identifier') + @Js + def PyJs_Scope_1225_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'Scope':PyJs_Scope_1225_}, var) + var.registers([u'path', u'state']) + if var.get(u'path').get(u'scope').callprop(u'hasOwnBinding', var.get(u'state').get(u'catchParamName')): + var.get(u'path').callprop(u'skip') + PyJs_Scope_1225_._set_name(u'Scope') + PyJs_Object_1223_ = Js({u'Identifier':PyJs_Identifier_1224_,u'Scope':PyJs_Scope_1225_}) + var.put(u'catchParamVisitor', PyJs_Object_1223_) + @Js + def PyJs_anonymous_1226_(record, this, arguments, var=var): + var = Scope({u'this':this, u'record':record, u'arguments':arguments}, var) + var.registers([u'record', u'abruptArgs']) + if var.get(u'isValidCompletion')(var.get(u'record')).neg(): + var.get(u'_assert2').get(u'default').callprop(u'ok', Js(False), (Js(u'invalid completion record: ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'record')))) + var.get(u'_assert2').get(u'default').callprop(u'notStrictEqual', var.get(u'record').get(u'type'), Js(u'normal'), Js(u'normal completions are not abrupt')) + var.put(u'abruptArgs', Js([var.get(u't').callprop(u'stringLiteral', var.get(u'record').get(u'type'))])) + if (PyJsStrictEq(var.get(u'record').get(u'type'),Js(u'break')) or PyJsStrictEq(var.get(u'record').get(u'type'),Js(u'continue'))): + var.get(u't').callprop(u'assertLiteral', var.get(u'record').get(u'target')) + var.get(u'abruptArgs').put(u'1', var.get(u'record').get(u'target')) + else: + if (PyJsStrictEq(var.get(u'record').get(u'type'),Js(u'return')) or PyJsStrictEq(var.get(u'record').get(u'type'),Js(u'throw'))): + if var.get(u'record').get(u'value'): + var.get(u't').callprop(u'assertExpression', var.get(u'record').get(u'value')) + var.get(u'abruptArgs').put(u'1', var.get(u'record').get(u'value')) + var.get(u"this").callprop(u'emit', var.get(u't').callprop(u'returnStatement', var.get(u't').callprop(u'callExpression', var.get(u"this").callprop(u'contextProperty', Js(u'abrupt')), var.get(u'abruptArgs')))) + PyJs_anonymous_1226_._set_name(u'anonymous') + var.get(u'Ep').put(u'emitAbruptCompletion', PyJs_anonymous_1226_) + pass + @Js + def PyJs_anonymous_1227_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'numericLiteral', var.get(u"this").get(u'listing').get(u'length')) + PyJs_anonymous_1227_._set_name(u'anonymous') + var.get(u'Ep').put(u'getUnmarkedCurrentLoc', PyJs_anonymous_1227_) + @Js + def PyJs_anonymous_1228_(loc, this, arguments, var=var): + var = Scope({u'this':this, u'loc':loc, u'arguments':arguments}, var) + var.registers([u'loc']) + if var.get(u'loc'): + var.get(u't').callprop(u'assertLiteral', var.get(u'loc')) + if PyJsStrictEq(var.get(u'loc').get(u'value'),(-Js(1.0))): + var.get(u'loc').put(u'value', var.get(u"this").get(u'listing').get(u'length')) + else: + var.get(u'_assert2').get(u'default').callprop(u'strictEqual', var.get(u'loc').get(u'value'), var.get(u"this").get(u'listing').get(u'length')) + else: + var.put(u'loc', var.get(u"this").callprop(u'getUnmarkedCurrentLoc')) + var.get(u"this").callprop(u'emitAssign', var.get(u"this").callprop(u'contextProperty', Js(u'prev')), var.get(u'loc')) + PyJs_anonymous_1228_._set_name(u'anonymous') + var.get(u'Ep').put(u'updateContextPrevLoc', PyJs_anonymous_1228_) + @Js + def PyJs_anonymous_1229_(path, ignoreResult, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'ignoreResult':ignoreResult, u'arguments':arguments}, var) + var.registers([u'finish', u'ignoreResult', u'expr', u'self', u'after', u'_ret3', u'result', u'hasLeapingChildren', u'path', u'explodeViaTempVar']) + @Js + def PyJsHoisted_explodeViaTempVar_(tempVar, childPath, ignoreChildResult, this, arguments, var=var): + var = Scope({u'this':this, u'ignoreChildResult':ignoreChildResult, u'childPath':childPath, u'tempVar':tempVar, u'arguments':arguments}, var) + var.registers([u'childPath', u'ignoreChildResult', u'result', u'tempVar']) + var.get(u'_assert2').get(u'default').callprop(u'ok', (var.get(u'ignoreChildResult').neg() or var.get(u'tempVar').neg()), (Js(u'Ignoring the result of a child expression but forcing it to ')+Js(u'be assigned to a temporary variable?'))) + var.put(u'result', var.get(u'self').callprop(u'explodeExpression', var.get(u'childPath'), var.get(u'ignoreChildResult'))) + if var.get(u'ignoreChildResult'): + pass + else: + if (var.get(u'tempVar') or (var.get(u'hasLeapingChildren') and var.get(u't').callprop(u'isLiteral', var.get(u'result')).neg())): + var.put(u'result', var.get(u'self').callprop(u'emitAssign', (var.get(u'tempVar') or var.get(u'self').callprop(u'makeTempVar')), var.get(u'result'))) + return var.get(u'result') + PyJsHoisted_explodeViaTempVar_.func_name = u'explodeViaTempVar' + var.put(u'explodeViaTempVar', PyJsHoisted_explodeViaTempVar_) + @Js + def PyJsHoisted_finish_(expr, this, arguments, var=var): + var = Scope({u'this':this, u'expr':expr, u'arguments':arguments}, var) + var.registers([u'expr']) + var.get(u't').callprop(u'assertExpression', var.get(u'expr')) + if var.get(u'ignoreResult'): + var.get(u'self').callprop(u'emit', var.get(u'expr')) + else: + return var.get(u'expr') + PyJsHoisted_finish_.func_name = u'finish' + var.put(u'finish', PyJsHoisted_finish_) + var.put(u'expr', var.get(u'path').get(u'node')) + if var.get(u'expr'): + var.get(u't').callprop(u'assertExpression', var.get(u'expr')) + else: + return var.get(u'expr') + var.put(u'self', var.get(u"this")) + var.put(u'result', PyJsComma(Js(0.0), Js(None))) + var.put(u'after', PyJsComma(Js(0.0), Js(None))) + pass + if var.get(u'meta').callprop(u'containsLeap', var.get(u'expr')).neg(): + return var.get(u'finish')(var.get(u'expr')) + var.put(u'hasLeapingChildren', var.get(u'meta').get(u'containsLeap').callprop(u'onlyChildren', var.get(u'expr'))) + pass + @Js + def PyJs_anonymous_1230_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'argsPath', u'_result', u'hasLeapingArgs', u'calleePath', u'lastIndex', u'newProperty', u'newObject', u'arg', u'test', u'newCallee', u'newArgs', u'elseLoc', u'left']) + while 1: + SWITCHED = False + CONDITION = (var.get(u'expr').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'MemberExpression')): + SWITCHED = True + PyJs_Object_1231_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'memberExpression', var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'object'))), (var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'path').callprop(u'get', Js(u'property'))) if var.get(u'expr').get(u'computed') else var.get(u'expr').get(u'property')), var.get(u'expr').get(u'computed')))}) + return PyJs_Object_1231_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'CallExpression')): + SWITCHED = True + var.put(u'calleePath', var.get(u'path').callprop(u'get', Js(u'callee'))) + var.put(u'argsPath', var.get(u'path').callprop(u'get', Js(u'arguments'))) + var.put(u'newCallee', PyJsComma(Js(0.0), Js(None))) + var.put(u'newArgs', Js([])) + var.put(u'hasLeapingArgs', Js(False)) + @Js + def PyJs_anonymous_1232_(argPath, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'argPath':argPath}, var) + var.registers([u'argPath']) + var.put(u'hasLeapingArgs', (var.get(u'hasLeapingArgs') or var.get(u'meta').callprop(u'containsLeap', var.get(u'argPath').get(u'node')))) + PyJs_anonymous_1232_._set_name(u'anonymous') + var.get(u'argsPath').callprop(u'forEach', PyJs_anonymous_1232_) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'calleePath').get(u'node')): + if var.get(u'hasLeapingArgs'): + var.put(u'newObject', var.get(u'explodeViaTempVar')(var.get(u'self').callprop(u'makeTempVar'), var.get(u'calleePath').callprop(u'get', Js(u'object')))) + var.put(u'newProperty', (var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'calleePath').callprop(u'get', Js(u'property'))) if var.get(u'calleePath').get(u'node').get(u'computed') else var.get(u'calleePath').get(u'node').get(u'property'))) + var.get(u'newArgs').callprop(u'unshift', var.get(u'newObject')) + var.put(u'newCallee', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'memberExpression', var.get(u'newObject'), var.get(u'newProperty'), var.get(u'calleePath').get(u'node').get(u'computed')), var.get(u't').callprop(u'identifier', Js(u'call')), Js(False))) + else: + var.put(u'newCallee', var.get(u'self').callprop(u'explodeExpression', var.get(u'calleePath'))) + else: + var.put(u'newCallee', var.get(u'self').callprop(u'explodeExpression', var.get(u'calleePath'))) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'newCallee')): + var.put(u'newCallee', var.get(u't').callprop(u'sequenceExpression', Js([var.get(u't').callprop(u'numericLiteral', Js(0.0)), var.get(u'newCallee')]))) + @Js + def PyJs_anonymous_1233_(argPath, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'argPath':argPath}, var) + var.registers([u'argPath']) + var.get(u'newArgs').callprop(u'push', var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'argPath'))) + PyJs_anonymous_1233_._set_name(u'anonymous') + var.get(u'argsPath').callprop(u'forEach', PyJs_anonymous_1233_) + PyJs_Object_1234_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'callExpression', var.get(u'newCallee'), var.get(u'newArgs')))}) + return PyJs_Object_1234_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'NewExpression')): + SWITCHED = True + @Js + def PyJs_anonymous_1236_(argPath, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'argPath':argPath}, var) + var.registers([u'argPath']) + return var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'argPath')) + PyJs_anonymous_1236_._set_name(u'anonymous') + PyJs_Object_1235_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'newExpression', var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'path').callprop(u'get', Js(u'callee'))), var.get(u'path').callprop(u'get', Js(u'arguments')).callprop(u'map', PyJs_anonymous_1236_)))}) + return PyJs_Object_1235_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ObjectExpression')): + SWITCHED = True + @Js + def PyJs_anonymous_1238_(propPath, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'propPath':propPath}, var) + var.registers([u'propPath']) + if var.get(u'propPath').callprop(u'isObjectProperty'): + return var.get(u't').callprop(u'objectProperty', var.get(u'propPath').get(u'node').get(u'key'), var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'propPath').callprop(u'get', Js(u'value'))), var.get(u'propPath').get(u'node').get(u'computed')) + else: + return var.get(u'propPath').get(u'node') + PyJs_anonymous_1238_._set_name(u'anonymous') + PyJs_Object_1237_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'objectExpression', var.get(u'path').callprop(u'get', Js(u'properties')).callprop(u'map', PyJs_anonymous_1238_)))}) + return PyJs_Object_1237_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ArrayExpression')): + SWITCHED = True + @Js + def PyJs_anonymous_1240_(elemPath, this, arguments, var=var): + var = Scope({u'this':this, u'elemPath':elemPath, u'arguments':arguments}, var) + var.registers([u'elemPath']) + return var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'elemPath')) + PyJs_anonymous_1240_._set_name(u'anonymous') + PyJs_Object_1239_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'arrayExpression', var.get(u'path').callprop(u'get', Js(u'elements')).callprop(u'map', PyJs_anonymous_1240_)))}) + return PyJs_Object_1239_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'SequenceExpression')): + SWITCHED = True + var.put(u'lastIndex', (var.get(u'expr').get(u'expressions').get(u'length')-Js(1.0))) + @Js + def PyJs_anonymous_1241_(exprPath, this, arguments, var=var): + var = Scope({u'exprPath':exprPath, u'this':this, u'arguments':arguments}, var) + var.registers([u'exprPath']) + if PyJsStrictEq(var.get(u'exprPath').get(u'key'),var.get(u'lastIndex')): + var.put(u'result', var.get(u'self').callprop(u'explodeExpression', var.get(u'exprPath'), var.get(u'ignoreResult'))) + else: + var.get(u'self').callprop(u'explodeExpression', var.get(u'exprPath'), var.get(u'true')) + PyJs_anonymous_1241_._set_name(u'anonymous') + var.get(u'path').callprop(u'get', Js(u'expressions')).callprop(u'forEach', PyJs_anonymous_1241_) + PyJs_Object_1242_ = Js({u'v':var.get(u'result')}) + return PyJs_Object_1242_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'LogicalExpression')): + SWITCHED = True + var.put(u'after', var.get(u'loc')()) + if var.get(u'ignoreResult').neg(): + var.put(u'result', var.get(u'self').callprop(u'makeTempVar')) + var.put(u'left', var.get(u'explodeViaTempVar')(var.get(u'result'), var.get(u'path').callprop(u'get', Js(u'left')))) + if PyJsStrictEq(var.get(u'expr').get(u'operator'),Js(u'&&')): + var.get(u'self').callprop(u'jumpIfNot', var.get(u'left'), var.get(u'after')) + else: + var.get(u'_assert2').get(u'default').callprop(u'strictEqual', var.get(u'expr').get(u'operator'), Js(u'||')) + var.get(u'self').callprop(u'jumpIf', var.get(u'left'), var.get(u'after')) + var.get(u'explodeViaTempVar')(var.get(u'result'), var.get(u'path').callprop(u'get', Js(u'right')), var.get(u'ignoreResult')) + var.get(u'self').callprop(u'mark', var.get(u'after')) + PyJs_Object_1243_ = Js({u'v':var.get(u'result')}) + return PyJs_Object_1243_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ConditionalExpression')): + SWITCHED = True + var.put(u'elseLoc', var.get(u'loc')()) + var.put(u'after', var.get(u'loc')()) + var.put(u'test', var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'test')))) + var.get(u'self').callprop(u'jumpIfNot', var.get(u'test'), var.get(u'elseLoc')) + if var.get(u'ignoreResult').neg(): + var.put(u'result', var.get(u'self').callprop(u'makeTempVar')) + var.get(u'explodeViaTempVar')(var.get(u'result'), var.get(u'path').callprop(u'get', Js(u'consequent')), var.get(u'ignoreResult')) + var.get(u'self').callprop(u'jump', var.get(u'after')) + var.get(u'self').callprop(u'mark', var.get(u'elseLoc')) + var.get(u'explodeViaTempVar')(var.get(u'result'), var.get(u'path').callprop(u'get', Js(u'alternate')), var.get(u'ignoreResult')) + var.get(u'self').callprop(u'mark', var.get(u'after')) + PyJs_Object_1244_ = Js({u'v':var.get(u'result')}) + return PyJs_Object_1244_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'UnaryExpression')): + SWITCHED = True + PyJs_Object_1245_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'unaryExpression', var.get(u'expr').get(u'operator'), var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'argument'))), var.get(u'expr').get(u'prefix').neg().neg()))}) + return PyJs_Object_1245_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'BinaryExpression')): + SWITCHED = True + PyJs_Object_1246_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'binaryExpression', var.get(u'expr').get(u'operator'), var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'path').callprop(u'get', Js(u'left'))), var.get(u'explodeViaTempVar')(var.get(u"null"), var.get(u'path').callprop(u'get', Js(u'right')))))}) + return PyJs_Object_1246_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'AssignmentExpression')): + SWITCHED = True + PyJs_Object_1247_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'assignmentExpression', var.get(u'expr').get(u'operator'), var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'left'))), var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'right')))))}) + return PyJs_Object_1247_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'UpdateExpression')): + SWITCHED = True + PyJs_Object_1248_ = Js({u'v':var.get(u'finish')(var.get(u't').callprop(u'updateExpression', var.get(u'expr').get(u'operator'), var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'argument'))), var.get(u'expr').get(u'prefix')))}) + return PyJs_Object_1248_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'YieldExpression')): + SWITCHED = True + var.put(u'after', var.get(u'loc')()) + var.put(u'arg', (var.get(u'expr').get(u'argument') and var.get(u'self').callprop(u'explodeExpression', var.get(u'path').callprop(u'get', Js(u'argument'))))) + if (var.get(u'arg') and var.get(u'expr').get(u'delegate')): + var.put(u'_result', var.get(u'self').callprop(u'makeTempVar')) + var.get(u'self').callprop(u'emit', var.get(u't').callprop(u'returnStatement', var.get(u't').callprop(u'callExpression', var.get(u'self').callprop(u'contextProperty', Js(u'delegateYield')), Js([var.get(u'arg'), var.get(u't').callprop(u'stringLiteral', var.get(u'_result').get(u'property').get(u'name')), var.get(u'after')])))) + var.get(u'self').callprop(u'mark', var.get(u'after')) + PyJs_Object_1249_ = Js({u'v':var.get(u'_result')}) + return PyJs_Object_1249_ + var.get(u'self').callprop(u'emitAssign', var.get(u'self').callprop(u'contextProperty', Js(u'next')), var.get(u'after')) + var.get(u'self').callprop(u'emit', var.get(u't').callprop(u'returnStatement', (var.get(u'arg') or var.get(u"null")))) + var.get(u'self').callprop(u'mark', var.get(u'after')) + PyJs_Object_1250_ = Js({u'v':var.get(u'self').callprop(u'contextProperty', Js(u'sent'))}) + return PyJs_Object_1250_ + if True: + SWITCHED = True + PyJsTempException = JsToPyException(var.get(u'Error').create((Js(u'unknown Expression of type ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'expr').get(u'type'))))) + raise PyJsTempException + SWITCHED = True + break + PyJs_anonymous_1230_._set_name(u'anonymous') + var.put(u'_ret3', PyJs_anonymous_1230_()) + if PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'_ret3',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'_ret3'))),Js(u'object')): + return var.get(u'_ret3').get(u'v') + PyJs_anonymous_1229_._set_name(u'anonymous') + var.get(u'Ep').put(u'explodeExpression', PyJs_anonymous_1229_) +PyJs_anonymous_1182_._set_name(u'anonymous') +PyJs_Object_1251_ = Js({u'./leap':Js(90.0),u'./meta':Js(91.0),u'./util':Js(92.0),u'assert':Js(524.0),u'babel-runtime/core-js/json/stringify':Js(97.0),u'babel-runtime/helpers/typeof':Js(114.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1252_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'module', u'exports', u'_interopRequireWildcard', u'require', u'_babelTypes', u'hasOwn', u'_keys2', u'_keys', u't', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1254_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1254_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1253_ = Js({}) + var.put(u'newObj', PyJs_Object_1253_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.put(u'_keys', var.get(u'require')(Js(u'babel-runtime/core-js/object/keys'))) + var.put(u'_keys2', var.get(u'_interopRequireDefault')(var.get(u'_keys'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + var.put(u'hasOwn', var.get(u'Object').get(u'prototype').get(u'hasOwnProperty')) + @Js + def PyJs_anonymous_1255_(funPath, this, arguments, var=var): + var = Scope({u'this':this, u'funPath':funPath, u'arguments':arguments}, var) + var.registers([u'varDeclToExpr', u'funPath', u'paramNames', u'declarations', u'vars']) + @Js + def PyJsHoisted_varDeclToExpr_(vdec, includeIdentifiers, this, arguments, var=var): + var = Scope({u'this':this, u'vdec':vdec, u'arguments':arguments, u'includeIdentifiers':includeIdentifiers}, var) + var.registers([u'exprs', u'vdec', u'includeIdentifiers']) + var.get(u't').callprop(u'assertVariableDeclaration', var.get(u'vdec')) + var.put(u'exprs', Js([])) + @Js + def PyJs_anonymous_1257_(dec, this, arguments, var=var): + var = Scope({u'this':this, u'dec':dec, u'arguments':arguments}, var) + var.registers([u'dec']) + var.get(u'vars').put(var.get(u'dec').get(u'id').get(u'name'), var.get(u't').callprop(u'identifier', var.get(u'dec').get(u'id').get(u'name'))) + if var.get(u'dec').get(u'init'): + var.get(u'exprs').callprop(u'push', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'dec').get(u'id'), var.get(u'dec').get(u'init'))) + else: + if var.get(u'includeIdentifiers'): + var.get(u'exprs').callprop(u'push', var.get(u'dec').get(u'id')) + PyJs_anonymous_1257_._set_name(u'anonymous') + var.get(u'vdec').get(u'declarations').callprop(u'forEach', PyJs_anonymous_1257_) + if PyJsStrictEq(var.get(u'exprs').get(u'length'),Js(0.0)): + return var.get(u"null") + if PyJsStrictEq(var.get(u'exprs').get(u'length'),Js(1.0)): + return var.get(u'exprs').get(u'0') + return var.get(u't').callprop(u'sequenceExpression', var.get(u'exprs')) + PyJsHoisted_varDeclToExpr_.func_name = u'varDeclToExpr' + var.put(u'varDeclToExpr', PyJsHoisted_varDeclToExpr_) + var.get(u't').callprop(u'assertFunction', var.get(u'funPath').get(u'node')) + PyJs_Object_1256_ = Js({}) + var.put(u'vars', PyJs_Object_1256_) + pass + @Js + def PyJs_exit_1260_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'exit':PyJs_exit_1260_, u'arguments':arguments}, var) + var.registers([u'expr', u'path']) + var.put(u'expr', var.get(u'varDeclToExpr')(var.get(u'path').get(u'node'), Js(False))) + if PyJsStrictEq(var.get(u'expr'),var.get(u"null")): + var.get(u'path').callprop(u'remove') + else: + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'expressionStatement', var.get(u'expr'))) + var.get(u'path').callprop(u'skip') + PyJs_exit_1260_._set_name(u'exit') + PyJs_Object_1259_ = Js({u'exit':PyJs_exit_1260_}) + @Js + def PyJs_ForStatement_1261_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'ForStatement':PyJs_ForStatement_1261_}, var) + var.registers([u'path', u'init']) + var.put(u'init', var.get(u'path').get(u'node').get(u'init')) + if var.get(u't').callprop(u'isVariableDeclaration', var.get(u'init')): + var.get(u'path').callprop(u'get', Js(u'init')).callprop(u'replaceWith', var.get(u'varDeclToExpr')(var.get(u'init'), Js(False))) + PyJs_ForStatement_1261_._set_name(u'ForStatement') + @Js + def PyJs_ForXStatement_1262_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'ForXStatement':PyJs_ForXStatement_1262_}, var) + var.registers([u'path', u'left']) + var.put(u'left', var.get(u'path').callprop(u'get', Js(u'left'))) + if var.get(u'left').callprop(u'isVariableDeclaration'): + var.get(u'left').callprop(u'replaceWith', var.get(u'varDeclToExpr')(var.get(u'left').get(u'node'), var.get(u'true'))) + PyJs_ForXStatement_1262_._set_name(u'ForXStatement') + @Js + def PyJs_FunctionDeclaration_1263_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'FunctionDeclaration':PyJs_FunctionDeclaration_1263_}, var) + var.registers([u'node', u'assignment', u'path']) + var.put(u'node', var.get(u'path').get(u'node')) + var.get(u'vars').put(var.get(u'node').get(u'id').get(u'name'), var.get(u'node').get(u'id')) + var.put(u'assignment', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'node').get(u'id'), var.get(u't').callprop(u'functionExpression', var.get(u'node').get(u'id'), var.get(u'node').get(u'params'), var.get(u'node').get(u'body'), var.get(u'node').get(u'generator'), var.get(u'node').get(u'expression'))))) + if var.get(u'path').get(u'parentPath').callprop(u'isBlockStatement'): + var.get(u'path').get(u'parentPath').callprop(u'unshiftContainer', Js(u'body'), var.get(u'assignment')) + var.get(u'path').callprop(u'remove') + else: + var.get(u'path').callprop(u'replaceWith', var.get(u'assignment')) + var.get(u'path').callprop(u'skip') + PyJs_FunctionDeclaration_1263_._set_name(u'FunctionDeclaration') + @Js + def PyJs_FunctionExpression_1264_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'FunctionExpression':PyJs_FunctionExpression_1264_, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'path').callprop(u'skip') + PyJs_FunctionExpression_1264_._set_name(u'FunctionExpression') + PyJs_Object_1258_ = Js({u'VariableDeclaration':PyJs_Object_1259_,u'ForStatement':PyJs_ForStatement_1261_,u'ForXStatement':PyJs_ForXStatement_1262_,u'FunctionDeclaration':PyJs_FunctionDeclaration_1263_,u'FunctionExpression':PyJs_FunctionExpression_1264_}) + var.get(u'funPath').callprop(u'get', Js(u'body')).callprop(u'traverse', PyJs_Object_1258_) + PyJs_Object_1265_ = Js({}) + var.put(u'paramNames', PyJs_Object_1265_) + @Js + def PyJs_anonymous_1266_(paramPath, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'paramPath':paramPath}, var) + var.registers([u'param', u'paramPath']) + var.put(u'param', var.get(u'paramPath').get(u'node')) + if var.get(u't').callprop(u'isIdentifier', var.get(u'param')): + var.get(u'paramNames').put(var.get(u'param').get(u'name'), var.get(u'param')) + else: + pass + PyJs_anonymous_1266_._set_name(u'anonymous') + var.get(u'funPath').callprop(u'get', Js(u'params')).callprop(u'forEach', PyJs_anonymous_1266_) + var.put(u'declarations', Js([])) + @Js + def PyJs_anonymous_1267_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + if var.get(u'hasOwn').callprop(u'call', var.get(u'paramNames'), var.get(u'name')).neg(): + var.get(u'declarations').callprop(u'push', var.get(u't').callprop(u'variableDeclarator', var.get(u'vars').get(var.get(u'name')), var.get(u"null"))) + PyJs_anonymous_1267_._set_name(u'anonymous') + PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u'vars')).callprop(u'forEach', PyJs_anonymous_1267_) + if PyJsStrictEq(var.get(u'declarations').get(u'length'),Js(0.0)): + return var.get(u"null") + return var.get(u't').callprop(u'variableDeclaration', Js(u'var'), var.get(u'declarations')) + PyJs_anonymous_1255_._set_name(u'anonymous') + var.get(u'exports').put(u'hoist', PyJs_anonymous_1255_) +PyJs_anonymous_1252_._set_name(u'anonymous') +PyJs_Object_1268_ = Js({u'babel-runtime/core-js/object/keys':Js(103.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1269_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_1270_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'require')(Js(u'./visit')) + PyJs_anonymous_1270_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1270_) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1269_._set_name(u'anonymous') +PyJs_Object_1271_ = Js({u'./visit':Js(93.0)}) +@Js +def PyJs_anonymous_1272_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'CatchEntry', u'LabeledEntry', u'SwitchEntry', u'module', u'TryEntry', u'_interopRequireWildcard', u'LMp', u'_assert2', u'require', u'_babelTypes', u'exports', u'_util', u'LeapManager', u't', u'_assert', u'FunctionEntry', u'_interopRequireDefault', u'Entry', u'LoopEntry', u'FinallyEntry']) + @Js + def PyJsHoisted_CatchEntry_(firstLoc, paramId, this, arguments, var=var): + var = Scope({u'firstLoc':firstLoc, u'this':this, u'paramId':paramId, u'arguments':arguments}, var) + var.registers([u'firstLoc', u'paramId']) + var.get(u'Entry').callprop(u'call', var.get(u"this")) + var.get(u't').callprop(u'assertLiteral', var.get(u'firstLoc')) + var.get(u't').callprop(u'assertIdentifier', var.get(u'paramId')) + var.get(u"this").put(u'firstLoc', var.get(u'firstLoc')) + var.get(u"this").put(u'paramId', var.get(u'paramId')) + PyJsHoisted_CatchEntry_.func_name = u'CatchEntry' + var.put(u'CatchEntry', PyJsHoisted_CatchEntry_) + @Js + def PyJsHoisted_LabeledEntry_(breakLoc, label, this, arguments, var=var): + var = Scope({u'this':this, u'breakLoc':breakLoc, u'arguments':arguments, u'label':label}, var) + var.registers([u'breakLoc', u'label']) + var.get(u'Entry').callprop(u'call', var.get(u"this")) + var.get(u't').callprop(u'assertLiteral', var.get(u'breakLoc')) + var.get(u't').callprop(u'assertIdentifier', var.get(u'label')) + var.get(u"this").put(u'breakLoc', var.get(u'breakLoc')) + var.get(u"this").put(u'label', var.get(u'label')) + PyJsHoisted_LabeledEntry_.func_name = u'LabeledEntry' + var.put(u'LabeledEntry', PyJsHoisted_LabeledEntry_) + @Js + def PyJsHoisted_SwitchEntry_(breakLoc, this, arguments, var=var): + var = Scope({u'this':this, u'breakLoc':breakLoc, u'arguments':arguments}, var) + var.registers([u'breakLoc']) + var.get(u'Entry').callprop(u'call', var.get(u"this")) + var.get(u't').callprop(u'assertLiteral', var.get(u'breakLoc')) + var.get(u"this").put(u'breakLoc', var.get(u'breakLoc')) + PyJsHoisted_SwitchEntry_.func_name = u'SwitchEntry' + var.put(u'SwitchEntry', PyJsHoisted_SwitchEntry_) + @Js + def PyJsHoisted_TryEntry_(firstLoc, catchEntry, finallyEntry, this, arguments, var=var): + var = Scope({u'firstLoc':firstLoc, u'catchEntry':catchEntry, u'this':this, u'arguments':arguments, u'finallyEntry':finallyEntry}, var) + var.registers([u'firstLoc', u'catchEntry', u'finallyEntry']) + var.get(u'Entry').callprop(u'call', var.get(u"this")) + var.get(u't').callprop(u'assertLiteral', var.get(u'firstLoc')) + if var.get(u'catchEntry'): + var.get(u'_assert2').get(u'default').callprop(u'ok', var.get(u'catchEntry').instanceof(var.get(u'CatchEntry'))) + else: + var.put(u'catchEntry', var.get(u"null")) + if var.get(u'finallyEntry'): + var.get(u'_assert2').get(u'default').callprop(u'ok', var.get(u'finallyEntry').instanceof(var.get(u'FinallyEntry'))) + else: + var.put(u'finallyEntry', var.get(u"null")) + var.get(u'_assert2').get(u'default').callprop(u'ok', (var.get(u'catchEntry') or var.get(u'finallyEntry'))) + var.get(u"this").put(u'firstLoc', var.get(u'firstLoc')) + var.get(u"this").put(u'catchEntry', var.get(u'catchEntry')) + var.get(u"this").put(u'finallyEntry', var.get(u'finallyEntry')) + PyJsHoisted_TryEntry_.func_name = u'TryEntry' + var.put(u'TryEntry', PyJsHoisted_TryEntry_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1273_ = Js({}) + var.put(u'newObj', PyJs_Object_1273_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_LeapManager_(emitter, this, arguments, var=var): + var = Scope({u'this':this, u'emitter':emitter, u'arguments':arguments}, var) + var.registers([u'Emitter', u'emitter']) + var.get(u'_assert2').get(u'default').callprop(u'ok', var.get(u"this").instanceof(var.get(u'LeapManager'))) + var.put(u'Emitter', var.get(u'require')(Js(u'./emit')).get(u'Emitter')) + var.get(u'_assert2').get(u'default').callprop(u'ok', var.get(u'emitter').instanceof(var.get(u'Emitter'))) + var.get(u"this").put(u'emitter', var.get(u'emitter')) + var.get(u"this").put(u'entryStack', Js([var.get(u'FunctionEntry').create(var.get(u'emitter').get(u'finalLoc'))])) + PyJsHoisted_LeapManager_.func_name = u'LeapManager' + var.put(u'LeapManager', PyJsHoisted_LeapManager_) + @Js + def PyJsHoisted_FunctionEntry_(returnLoc, this, arguments, var=var): + var = Scope({u'this':this, u'returnLoc':returnLoc, u'arguments':arguments}, var) + var.registers([u'returnLoc']) + var.get(u'Entry').callprop(u'call', var.get(u"this")) + var.get(u't').callprop(u'assertLiteral', var.get(u'returnLoc')) + var.get(u"this").put(u'returnLoc', var.get(u'returnLoc')) + PyJsHoisted_FunctionEntry_.func_name = u'FunctionEntry' + var.put(u'FunctionEntry', PyJsHoisted_FunctionEntry_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1274_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1274_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_Entry_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'_assert2').get(u'default').callprop(u'ok', var.get(u"this").instanceof(var.get(u'Entry'))) + PyJsHoisted_Entry_.func_name = u'Entry' + var.put(u'Entry', PyJsHoisted_Entry_) + @Js + def PyJsHoisted_LoopEntry_(breakLoc, continueLoc, label, this, arguments, var=var): + var = Scope({u'continueLoc':continueLoc, u'breakLoc':breakLoc, u'this':this, u'arguments':arguments, u'label':label}, var) + var.registers([u'continueLoc', u'breakLoc', u'label']) + var.get(u'Entry').callprop(u'call', var.get(u"this")) + var.get(u't').callprop(u'assertLiteral', var.get(u'breakLoc')) + var.get(u't').callprop(u'assertLiteral', var.get(u'continueLoc')) + if var.get(u'label'): + var.get(u't').callprop(u'assertIdentifier', var.get(u'label')) + else: + var.put(u'label', var.get(u"null")) + var.get(u"this").put(u'breakLoc', var.get(u'breakLoc')) + var.get(u"this").put(u'continueLoc', var.get(u'continueLoc')) + var.get(u"this").put(u'label', var.get(u'label')) + PyJsHoisted_LoopEntry_.func_name = u'LoopEntry' + var.put(u'LoopEntry', PyJsHoisted_LoopEntry_) + @Js + def PyJsHoisted_FinallyEntry_(firstLoc, afterLoc, this, arguments, var=var): + var = Scope({u'firstLoc':firstLoc, u'this':this, u'afterLoc':afterLoc, u'arguments':arguments}, var) + var.registers([u'firstLoc', u'afterLoc']) + var.get(u'Entry').callprop(u'call', var.get(u"this")) + var.get(u't').callprop(u'assertLiteral', var.get(u'firstLoc')) + var.get(u't').callprop(u'assertLiteral', var.get(u'afterLoc')) + var.get(u"this").put(u'firstLoc', var.get(u'firstLoc')) + var.get(u"this").put(u'afterLoc', var.get(u'afterLoc')) + PyJsHoisted_FinallyEntry_.func_name = u'FinallyEntry' + var.put(u'FinallyEntry', PyJsHoisted_FinallyEntry_) + Js(u'use strict') + var.put(u'_assert', var.get(u'require')(Js(u'assert'))) + var.put(u'_assert2', var.get(u'_interopRequireDefault')(var.get(u'_assert'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_util', var.get(u'require')(Js(u'util'))) + pass + pass + pass + pass + PyJsComma(Js(0.0),var.get(u'_util').get(u'inherits'))(var.get(u'FunctionEntry'), var.get(u'Entry')) + var.get(u'exports').put(u'FunctionEntry', var.get(u'FunctionEntry')) + pass + PyJsComma(Js(0.0),var.get(u'_util').get(u'inherits'))(var.get(u'LoopEntry'), var.get(u'Entry')) + var.get(u'exports').put(u'LoopEntry', var.get(u'LoopEntry')) + pass + PyJsComma(Js(0.0),var.get(u'_util').get(u'inherits'))(var.get(u'SwitchEntry'), var.get(u'Entry')) + var.get(u'exports').put(u'SwitchEntry', var.get(u'SwitchEntry')) + pass + PyJsComma(Js(0.0),var.get(u'_util').get(u'inherits'))(var.get(u'TryEntry'), var.get(u'Entry')) + var.get(u'exports').put(u'TryEntry', var.get(u'TryEntry')) + pass + PyJsComma(Js(0.0),var.get(u'_util').get(u'inherits'))(var.get(u'CatchEntry'), var.get(u'Entry')) + var.get(u'exports').put(u'CatchEntry', var.get(u'CatchEntry')) + pass + PyJsComma(Js(0.0),var.get(u'_util').get(u'inherits'))(var.get(u'FinallyEntry'), var.get(u'Entry')) + var.get(u'exports').put(u'FinallyEntry', var.get(u'FinallyEntry')) + pass + PyJsComma(Js(0.0),var.get(u'_util').get(u'inherits'))(var.get(u'LabeledEntry'), var.get(u'Entry')) + var.get(u'exports').put(u'LabeledEntry', var.get(u'LabeledEntry')) + pass + var.put(u'LMp', var.get(u'LeapManager').get(u'prototype')) + var.get(u'exports').put(u'LeapManager', var.get(u'LeapManager')) + @Js + def PyJs_anonymous_1275_(entry, callback, this, arguments, var=var): + var = Scope({u'this':this, u'entry':entry, u'arguments':arguments, u'callback':callback}, var) + var.registers([u'entry', u'popped', u'callback']) + var.get(u'_assert2').get(u'default').callprop(u'ok', var.get(u'entry').instanceof(var.get(u'Entry'))) + var.get(u"this").get(u'entryStack').callprop(u'push', var.get(u'entry')) + try: + var.get(u'callback').callprop(u'call', var.get(u"this").get(u'emitter')) + finally: + var.put(u'popped', var.get(u"this").get(u'entryStack').callprop(u'pop')) + var.get(u'_assert2').get(u'default').callprop(u'strictEqual', var.get(u'popped'), var.get(u'entry')) + PyJs_anonymous_1275_._set_name(u'anonymous') + var.get(u'LMp').put(u'withEntry', PyJs_anonymous_1275_) + @Js + def PyJs_anonymous_1276_(property, label, this, arguments, var=var): + var = Scope({u'this':this, u'property':property, u'arguments':arguments, u'label':label}, var) + var.registers([u'i', u'entry', u'property', u'label', u'loc']) + #for JS loop + var.put(u'i', (var.get(u"this").get(u'entryStack').get(u'length')-Js(1.0))) + while (var.get(u'i')>=Js(0.0)): + try: + var.put(u'entry', var.get(u"this").get(u'entryStack').get(var.get(u'i'))) + var.put(u'loc', var.get(u'entry').get(var.get(u'property'))) + if var.get(u'loc'): + if var.get(u'label'): + if (var.get(u'entry').get(u'label') and PyJsStrictEq(var.get(u'entry').get(u'label').get(u'name'),var.get(u'label').get(u'name'))): + return var.get(u'loc') + else: + if var.get(u'entry').instanceof(var.get(u'LabeledEntry')): + pass + else: + return var.get(u'loc') + finally: + var.put(u'i',Js(var.get(u'i').to_number())-Js(1)) + return var.get(u"null") + PyJs_anonymous_1276_._set_name(u'anonymous') + var.get(u'LMp').put(u'_findLeapLocation', PyJs_anonymous_1276_) + @Js + def PyJs_anonymous_1277_(label, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'label':label}, var) + var.registers([u'label']) + return var.get(u"this").callprop(u'_findLeapLocation', Js(u'breakLoc'), var.get(u'label')) + PyJs_anonymous_1277_._set_name(u'anonymous') + var.get(u'LMp').put(u'getBreakLoc', PyJs_anonymous_1277_) + @Js + def PyJs_anonymous_1278_(label, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'label':label}, var) + var.registers([u'label']) + return var.get(u"this").callprop(u'_findLeapLocation', Js(u'continueLoc'), var.get(u'label')) + PyJs_anonymous_1278_._set_name(u'anonymous') + var.get(u'LMp').put(u'getContinueLoc', PyJs_anonymous_1278_) +PyJs_anonymous_1272_._set_name(u'anonymous') +PyJs_Object_1279_ = Js({u'./emit':Js(87.0),u'assert':Js(524.0),u'babel-types':Js(258.0),u'util':Js(534.0)}) +@Js +def PyJs_anonymous_1280_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'module', u'sideEffectTypes', u'opaqueTypes', u'_interopRequireWildcard', u'leapTypes', u'_assert2', u'require', u'_babelTypes', u'm', u'exports', u'hasOwn', u'makePredicate', u't', u'_assert', u'_interopRequireDefault', u'type']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1282_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1282_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_makePredicate_(propertyName, knownTypes, this, arguments, var=var): + var = Scope({u'this':this, u'propertyName':propertyName, u'arguments':arguments, u'knownTypes':knownTypes}, var) + var.registers([u'predicate', u'onlyChildren', u'propertyName', u'knownTypes']) + @Js + def PyJsHoisted_predicate_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'meta']) + var.get(u't').callprop(u'assertNode', var.get(u'node')) + var.put(u'meta', var.get(u'm')(var.get(u'node'))) + if var.get(u'hasOwn').callprop(u'call', var.get(u'meta'), var.get(u'propertyName')): + return var.get(u'meta').get(var.get(u'propertyName')) + if var.get(u'hasOwn').callprop(u'call', var.get(u'opaqueTypes'), var.get(u'node').get(u'type')): + return var.get(u'meta').put(var.get(u'propertyName'), Js(False)) + if var.get(u'hasOwn').callprop(u'call', var.get(u'knownTypes'), var.get(u'node').get(u'type')): + return var.get(u'meta').put(var.get(u'propertyName'), var.get(u'true')) + return var.get(u'meta').put(var.get(u'propertyName'), var.get(u'onlyChildren')(var.get(u'node'))) + PyJsHoisted_predicate_.func_name = u'predicate' + var.put(u'predicate', PyJsHoisted_predicate_) + @Js + def PyJsHoisted_onlyChildren_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'keys', u'i', u'result', u'key', u'child', u'check']) + @Js + def PyJsHoisted_check_(child, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'child':child}, var) + var.registers([u'child']) + if var.get(u'result'): + pass + else: + if var.get(u'Array').callprop(u'isArray', var.get(u'child')): + var.get(u'child').callprop(u'some', var.get(u'check')) + else: + if var.get(u't').callprop(u'isNode', var.get(u'child')): + var.get(u'_assert2').get(u'default').callprop(u'strictEqual', var.get(u'result'), Js(False)) + var.put(u'result', var.get(u'predicate')(var.get(u'child'))) + return var.get(u'result') + PyJsHoisted_check_.func_name = u'check' + var.put(u'check', PyJsHoisted_check_) + var.get(u't').callprop(u'assertNode', var.get(u'node')) + var.put(u'result', Js(False)) + pass + var.put(u'keys', var.get(u't').get(u'VISITOR_KEYS').get(var.get(u'node').get(u'type'))) + if var.get(u'keys'): + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(0.0)): + var.get(u'bodyBlockPath').get(u'node').put(u'body', var.get(u'innerBody')) + var.put(u'outerFnExpr', var.get(u'getOuterFnExpr')(var.get(u'path'))) + var.get(u't').callprop(u'assertIdentifier', var.get(u'node').get(u'id')) + var.put(u'innerFnId', var.get(u't').callprop(u'identifier', (var.get(u'node').get(u'id').get(u'name')+Js(u'$')))) + var.put(u'vars', PyJsComma(Js(0.0),var.get(u'_hoist').get(u'hoist'))(var.get(u'path'))) + var.put(u'didRenameArguments', var.get(u'renameArguments')(var.get(u'path'), var.get(u'argsId'))) + if var.get(u'didRenameArguments'): + var.put(u'vars', (var.get(u'vars') or var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([])))) + var.get(u'vars').get(u'declarations').callprop(u'push', var.get(u't').callprop(u'variableDeclarator', var.get(u'argsId'), var.get(u't').callprop(u'identifier', Js(u'arguments')))) + var.put(u'emitter', var.get(u'_emit').get(u'Emitter').create(var.get(u'contextId'))) + var.get(u'emitter').callprop(u'explode', var.get(u'path').callprop(u'get', Js(u'body'))) + if (var.get(u'vars') and (var.get(u'vars').get(u'declarations').get(u'length')>Js(0.0))): + var.get(u'outerBody').callprop(u'push', var.get(u'vars')) + var.put(u'wrapArgs', Js([var.get(u'emitter').callprop(u'getContextFunction', var.get(u'innerFnId')), (var.get(u'outerFnExpr') if var.get(u'node').get(u'generator') else var.get(u't').callprop(u'nullLiteral')), var.get(u't').callprop(u'thisExpression')])) + var.put(u'tryLocsList', var.get(u'emitter').callprop(u'getTryLocsList')) + if var.get(u'tryLocsList'): + var.get(u'wrapArgs').callprop(u'push', var.get(u'tryLocsList')) + var.put(u'wrapCall', var.get(u't').callprop(u'callExpression', var.get(u'util').callprop(u'runtimeProperty', (Js(u'async') if var.get(u'node').get(u'async') else Js(u'wrap'))), var.get(u'wrapArgs'))) + var.get(u'outerBody').callprop(u'push', var.get(u't').callprop(u'returnStatement', var.get(u'wrapCall'))) + var.get(u'node').put(u'body', var.get(u't').callprop(u'blockStatement', var.get(u'outerBody'))) + var.put(u'wasGeneratorFunction', var.get(u'node').get(u'generator')) + if var.get(u'wasGeneratorFunction'): + var.get(u'node').put(u'generator', Js(False)) + if var.get(u'node').get(u'async'): + var.get(u'node').put(u'async', Js(False)) + if (var.get(u'wasGeneratorFunction') and var.get(u't').callprop(u'isExpression', var.get(u'node'))): + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'callExpression', var.get(u'util').callprop(u'runtimeProperty', Js(u'mark')), Js([var.get(u'node')]))) + var.get(u'path').callprop(u'requeue') + PyJs_exit_1296_._set_name(u'exit') + PyJs_Object_1295_ = Js({u'exit':PyJs_exit_1296_}) + PyJs_Object_1294_ = Js({u'Function':PyJs_Object_1295_}) + var.get(u'exports').put(u'visitor', PyJs_Object_1294_) + pass + pass + pass + @Js + def PyJs_FunctionExpressionFunctionDeclaration_1303_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'FunctionExpressionFunctionDeclaration':PyJs_FunctionExpressionFunctionDeclaration_1303_}, var) + var.registers([u'path']) + var.get(u'path').callprop(u'skip') + PyJs_FunctionExpressionFunctionDeclaration_1303_._set_name(u'FunctionExpressionFunctionDeclaration') + @Js + def PyJs_Identifier_1304_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'Identifier':PyJs_Identifier_1304_, u'arguments':arguments}, var) + var.registers([u'path', u'state']) + if (PyJsStrictEq(var.get(u'path').get(u'node').get(u'name'),Js(u'arguments')) and var.get(u'util').callprop(u'isReference', var.get(u'path'))): + var.get(u'path').callprop(u'replaceWith', var.get(u'state').get(u'argsId')) + var.get(u'state').put(u'didRenameArguments', var.get(u'true')) + PyJs_Identifier_1304_._set_name(u'Identifier') + PyJs_Object_1302_ = Js({u'FunctionExpression|FunctionDeclaration':PyJs_FunctionExpressionFunctionDeclaration_1303_,u'Identifier':PyJs_Identifier_1304_}) + var.put(u'argumentsVisitor', PyJs_Object_1302_) + @Js + def PyJs_MetaProperty_1306_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'MetaProperty':PyJs_MetaProperty_1306_, u'arguments':arguments}, var) + var.registers([u'node', u'path']) + var.put(u'node', var.get(u'path').get(u'node')) + if (PyJsStrictEq(var.get(u'node').get(u'meta').get(u'name'),Js(u'function')) and PyJsStrictEq(var.get(u'node').get(u'property').get(u'name'),Js(u'sent'))): + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'memberExpression', var.get(u"this").get(u'context'), var.get(u't').callprop(u'identifier', Js(u'_sent')))) + PyJs_MetaProperty_1306_._set_name(u'MetaProperty') + PyJs_Object_1305_ = Js({u'MetaProperty':PyJs_MetaProperty_1306_}) + var.put(u'functionSentVisitor', PyJs_Object_1305_) + @Js + def PyJs_Function_1308_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'Function':PyJs_Function_1308_, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'path').callprop(u'skip') + PyJs_Function_1308_._set_name(u'Function') + @Js + def PyJs_AwaitExpression_1309_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'AwaitExpression':PyJs_AwaitExpression_1309_}, var) + var.registers([u'path', u'argument']) + var.put(u'argument', var.get(u'path').get(u'node').get(u'argument')) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'yieldExpression', var.get(u't').callprop(u'callExpression', var.get(u'util').callprop(u'runtimeProperty', Js(u'awrap')), Js([var.get(u'argument')])), Js(False))) + PyJs_AwaitExpression_1309_._set_name(u'AwaitExpression') + PyJs_Object_1307_ = Js({u'Function':PyJs_Function_1308_,u'AwaitExpression':PyJs_AwaitExpression_1309_}) + var.put(u'awaitVisitor', PyJs_Object_1307_) +PyJs_anonymous_1291_._set_name(u'anonymous') +PyJs_Object_1310_ = Js({u'./emit':Js(87.0),u'./hoist':Js(88.0),u'./util':Js(92.0),u'assert':Js(524.0),u'babel-types':Js(258.0),u'private':Js(500.0)}) +@Js +def PyJs_anonymous_1311_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_interopRequireWildcard', u'require', u'_babelTypes', u'module', u't', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1317_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1317_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1316_ = Js({}) + var.put(u'newObj', PyJs_Object_1316_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + @Js + def PyJs_anonymous_1312_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_Program_1315_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'Program':PyJs_Program_1315_, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'directive', u'state', u'_i', u'path', u'_ref']) + if (PyJsStrictEq(var.get(u'state').get(u'opts').get(u'strict'),Js(False)) or PyJsStrictEq(var.get(u'state').get(u'opts').get(u'strictMode'),Js(False))): + return var.get('undefined') + var.put(u'node', var.get(u'path').get(u'node')) + #for JS loop + var.put(u'_iterator', var.get(u'node').get(u'directives')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'directive', var.get(u'_ref')) + if PyJsStrictEq(var.get(u'directive').get(u'value').get(u'value'),Js(u'use strict')): + return var.get('undefined') + + var.get(u'path').callprop(u'unshiftContainer', Js(u'directives'), var.get(u't').callprop(u'directive', var.get(u't').callprop(u'directiveLiteral', Js(u'use strict')))) + PyJs_Program_1315_._set_name(u'Program') + PyJs_Object_1314_ = Js({u'Program':PyJs_Program_1315_}) + PyJs_Object_1313_ = Js({u'visitor':PyJs_Object_1314_}) + return PyJs_Object_1313_ + PyJs_anonymous_1312_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1312_) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1311_._set_name(u'anonymous') +PyJs_Object_1318_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1319_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_babelPluginTransformEs2015ModulesCommonjs', u'_babelPluginTransformEs2015ComputedProperties', u'_babelPluginTransformEs2015BlockScopedFunctions2', u'_babelPluginTransformEs2015ForOf2', u'_babelPluginTransformEs2015ModulesUmd', u'_babelPluginTransformEs2015ArrowFunctions', u'_babelPluginTransformEs2015TypeofSymbol', u'exports', u'module', u'_interopRequireDefault', u'_babelPluginTransformEs2015ForOf', u'_babelPluginTransformEs2015BlockScoping', u'_babelPluginTransformEs2015Parameters2', u'_babelPluginTransformEs2015TemplateLiterals', u'_babelPluginTransformEs2015ComputedProperties2', u'_babelPluginTransformEs2015Spread', u'_babelPluginCheckEs2015Constants', u'_babelPluginTransformEs2015Destructuring', u'_babelPluginTransformEs2015DuplicateKeys2', u'_babelPluginTransformEs2015ModulesCommonjs2', u'_babelPluginTransformEs2015TemplateLiterals2', u'_babelPluginTransformEs2015Parameters', u'_babelPluginCheckEs2015Constants2', u'_babelPluginTransformEs2015StickyRegex2', u'_babelPluginTransformEs2015BlockScopedFunctions', u'_babelPluginTransformEs2015ShorthandProperties2', u'_babelPluginTransformRegenerator', u'_babelPluginTransformEs2015ModulesSystemjs', u'_babelPluginTransformEs2015DuplicateKeys', u'_babelPluginTransformEs2015ModulesAmd2', u'_babelPluginTransformEs2015FunctionName', u'_babelPluginTransformEs2015ObjectSuper2', u'_babelPluginTransformEs2015Destructuring2', u'_babelPluginTransformEs2015ShorthandProperties', u'_babelPluginTransformEs2015StickyRegex', u'_babelPluginTransformEs2015ModulesAmd', u'_babelPluginTransformEs2015ModulesUmd2', u'_babelPluginTransformEs2015Classes2', u'preset', u'_babelPluginTransformEs2015ObjectSuper', u'_babelPluginTransformEs2015TypeofSymbol2', u'_babelPluginTransformEs2015UnicodeRegex', u'_babelPluginTransformEs2015Classes', u'_babelPluginTransformEs2015Literals2', u'_babelPluginTransformEs2015ModulesSystemjs2', u'_babelPluginTransformEs2015Literals', u'_babelPluginTransformEs2015UnicodeRegex2', u'_babelPluginTransformEs2015FunctionName2', u'_babelPluginTransformEs2015BlockScoping2', u'_babelPluginTransformRegenerator2', u'oldConfig', u'_babelPluginTransformEs2015Spread2', u'require', u'_babelPluginTransformEs2015ArrowFunctions2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1320_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1320_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_preset_(context, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'context':context}, var) + var.registers([u'optsLoose', u'moduleTypes', u'loose', u'modules', u'context', u'spec', u'opts']) + PyJs_Object_1321_ = Js({}) + var.put(u'opts', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_1321_)) + var.put(u'moduleTypes', Js([Js(u'commonjs'), Js(u'amd'), Js(u'umd'), Js(u'systemjs')])) + var.put(u'loose', Js(False)) + var.put(u'modules', Js(u'commonjs')) + var.put(u'spec', Js(False)) + if PyJsStrictNeq(var.get(u'opts'),var.get(u'undefined')): + if PyJsStrictNeq(var.get(u'opts').get(u'loose'),var.get(u'undefined')): + var.put(u'loose', var.get(u'opts').get(u'loose')) + if PyJsStrictNeq(var.get(u'opts').get(u'modules'),var.get(u'undefined')): + var.put(u'modules', var.get(u'opts').get(u'modules')) + if PyJsStrictNeq(var.get(u'opts').get(u'spec'),var.get(u'undefined')): + var.put(u'spec', var.get(u'opts').get(u'spec')) + if PyJsStrictNeq(var.get(u'loose',throw=False).typeof(),Js(u'boolean')): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"Preset es2015 'loose' option must be a boolean."))) + raise PyJsTempException + if PyJsStrictNeq(var.get(u'spec',throw=False).typeof(),Js(u'boolean')): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"Preset es2015 'spec' option must be a boolean."))) + raise PyJsTempException + if (PyJsStrictNeq(var.get(u'modules'),Js(False)) and PyJsStrictEq(var.get(u'moduleTypes').callprop(u'indexOf', var.get(u'modules')),(-Js(1.0)))): + PyJsTempException = JsToPyException(var.get(u'Error').create((Js(u"Preset es2015 'modules' option must be 'false' to indicate no modules\n")+Js(u"or a module type which be be one of: 'commonjs' (default), 'amd', 'umd', 'systemjs'")))) + raise PyJsTempException + PyJs_Object_1322_ = Js({u'loose':var.get(u'loose')}) + var.put(u'optsLoose', PyJs_Object_1322_) + def PyJs_LONG_1327_(var=var): + PyJs_Object_1324_ = Js({u'loose':var.get(u'loose'),u'spec':var.get(u'spec')}) + PyJs_Object_1325_ = Js({u'spec':var.get(u'spec')}) + PyJs_Object_1326_ = Js({u'async':Js(False),u'asyncGenerators':Js(False)}) + return Js([Js([var.get(u'_babelPluginTransformEs2015TemplateLiterals2').get(u'default'), PyJs_Object_1324_]), var.get(u'_babelPluginTransformEs2015Literals2').get(u'default'), var.get(u'_babelPluginTransformEs2015FunctionName2').get(u'default'), Js([var.get(u'_babelPluginTransformEs2015ArrowFunctions2').get(u'default'), PyJs_Object_1325_]), var.get(u'_babelPluginTransformEs2015BlockScopedFunctions2').get(u'default'), Js([var.get(u'_babelPluginTransformEs2015Classes2').get(u'default'), var.get(u'optsLoose')]), var.get(u'_babelPluginTransformEs2015ObjectSuper2').get(u'default'), var.get(u'_babelPluginTransformEs2015ShorthandProperties2').get(u'default'), var.get(u'_babelPluginTransformEs2015DuplicateKeys2').get(u'default'), Js([var.get(u'_babelPluginTransformEs2015ComputedProperties2').get(u'default'), var.get(u'optsLoose')]), Js([var.get(u'_babelPluginTransformEs2015ForOf2').get(u'default'), var.get(u'optsLoose')]), var.get(u'_babelPluginTransformEs2015StickyRegex2').get(u'default'), var.get(u'_babelPluginTransformEs2015UnicodeRegex2').get(u'default'), var.get(u'_babelPluginCheckEs2015Constants2').get(u'default'), Js([var.get(u'_babelPluginTransformEs2015Spread2').get(u'default'), var.get(u'optsLoose')]), var.get(u'_babelPluginTransformEs2015Parameters2').get(u'default'), Js([var.get(u'_babelPluginTransformEs2015Destructuring2').get(u'default'), var.get(u'optsLoose')]), var.get(u'_babelPluginTransformEs2015BlockScoping2').get(u'default'), var.get(u'_babelPluginTransformEs2015TypeofSymbol2').get(u'default'), (PyJsStrictEq(var.get(u'modules'),Js(u'commonjs')) and Js([var.get(u'_babelPluginTransformEs2015ModulesCommonjs2').get(u'default'), var.get(u'optsLoose')])), (PyJsStrictEq(var.get(u'modules'),Js(u'systemjs')) and Js([var.get(u'_babelPluginTransformEs2015ModulesSystemjs2').get(u'default'), var.get(u'optsLoose')])), (PyJsStrictEq(var.get(u'modules'),Js(u'amd')) and Js([var.get(u'_babelPluginTransformEs2015ModulesAmd2').get(u'default'), var.get(u'optsLoose')])), (PyJsStrictEq(var.get(u'modules'),Js(u'umd')) and Js([var.get(u'_babelPluginTransformEs2015ModulesUmd2').get(u'default'), var.get(u'optsLoose')])), Js([var.get(u'_babelPluginTransformRegenerator2').get(u'default'), PyJs_Object_1326_])]).callprop(u'filter', var.get(u'Boolean')) + PyJs_Object_1323_ = Js({u'plugins':PyJs_LONG_1327_()}) + return PyJs_Object_1323_ + PyJsHoisted_preset_.func_name = u'preset' + var.put(u'preset', PyJsHoisted_preset_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_babelPluginTransformEs2015TemplateLiterals', var.get(u'require')(Js(u'babel-plugin-transform-es2015-template-literals'))) + var.put(u'_babelPluginTransformEs2015TemplateLiterals2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015TemplateLiterals'))) + var.put(u'_babelPluginTransformEs2015Literals', var.get(u'require')(Js(u'babel-plugin-transform-es2015-literals'))) + var.put(u'_babelPluginTransformEs2015Literals2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015Literals'))) + var.put(u'_babelPluginTransformEs2015FunctionName', var.get(u'require')(Js(u'babel-plugin-transform-es2015-function-name'))) + var.put(u'_babelPluginTransformEs2015FunctionName2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015FunctionName'))) + var.put(u'_babelPluginTransformEs2015ArrowFunctions', var.get(u'require')(Js(u'babel-plugin-transform-es2015-arrow-functions'))) + var.put(u'_babelPluginTransformEs2015ArrowFunctions2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ArrowFunctions'))) + var.put(u'_babelPluginTransformEs2015BlockScopedFunctions', var.get(u'require')(Js(u'babel-plugin-transform-es2015-block-scoped-functions'))) + var.put(u'_babelPluginTransformEs2015BlockScopedFunctions2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015BlockScopedFunctions'))) + var.put(u'_babelPluginTransformEs2015Classes', var.get(u'require')(Js(u'babel-plugin-transform-es2015-classes'))) + var.put(u'_babelPluginTransformEs2015Classes2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015Classes'))) + var.put(u'_babelPluginTransformEs2015ObjectSuper', var.get(u'require')(Js(u'babel-plugin-transform-es2015-object-super'))) + var.put(u'_babelPluginTransformEs2015ObjectSuper2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ObjectSuper'))) + var.put(u'_babelPluginTransformEs2015ShorthandProperties', var.get(u'require')(Js(u'babel-plugin-transform-es2015-shorthand-properties'))) + var.put(u'_babelPluginTransformEs2015ShorthandProperties2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ShorthandProperties'))) + var.put(u'_babelPluginTransformEs2015DuplicateKeys', var.get(u'require')(Js(u'babel-plugin-transform-es2015-duplicate-keys'))) + var.put(u'_babelPluginTransformEs2015DuplicateKeys2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015DuplicateKeys'))) + var.put(u'_babelPluginTransformEs2015ComputedProperties', var.get(u'require')(Js(u'babel-plugin-transform-es2015-computed-properties'))) + var.put(u'_babelPluginTransformEs2015ComputedProperties2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ComputedProperties'))) + var.put(u'_babelPluginTransformEs2015ForOf', var.get(u'require')(Js(u'babel-plugin-transform-es2015-for-of'))) + var.put(u'_babelPluginTransformEs2015ForOf2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ForOf'))) + var.put(u'_babelPluginTransformEs2015StickyRegex', var.get(u'require')(Js(u'babel-plugin-transform-es2015-sticky-regex'))) + var.put(u'_babelPluginTransformEs2015StickyRegex2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015StickyRegex'))) + var.put(u'_babelPluginTransformEs2015UnicodeRegex', var.get(u'require')(Js(u'babel-plugin-transform-es2015-unicode-regex'))) + var.put(u'_babelPluginTransformEs2015UnicodeRegex2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015UnicodeRegex'))) + var.put(u'_babelPluginCheckEs2015Constants', var.get(u'require')(Js(u'babel-plugin-check-es2015-constants'))) + var.put(u'_babelPluginCheckEs2015Constants2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginCheckEs2015Constants'))) + var.put(u'_babelPluginTransformEs2015Spread', var.get(u'require')(Js(u'babel-plugin-transform-es2015-spread'))) + var.put(u'_babelPluginTransformEs2015Spread2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015Spread'))) + var.put(u'_babelPluginTransformEs2015Parameters', var.get(u'require')(Js(u'babel-plugin-transform-es2015-parameters'))) + var.put(u'_babelPluginTransformEs2015Parameters2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015Parameters'))) + var.put(u'_babelPluginTransformEs2015Destructuring', var.get(u'require')(Js(u'babel-plugin-transform-es2015-destructuring'))) + var.put(u'_babelPluginTransformEs2015Destructuring2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015Destructuring'))) + var.put(u'_babelPluginTransformEs2015BlockScoping', var.get(u'require')(Js(u'babel-plugin-transform-es2015-block-scoping'))) + var.put(u'_babelPluginTransformEs2015BlockScoping2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015BlockScoping'))) + var.put(u'_babelPluginTransformEs2015TypeofSymbol', var.get(u'require')(Js(u'babel-plugin-transform-es2015-typeof-symbol'))) + var.put(u'_babelPluginTransformEs2015TypeofSymbol2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015TypeofSymbol'))) + var.put(u'_babelPluginTransformEs2015ModulesCommonjs', var.get(u'require')(Js(u'babel-plugin-transform-es2015-modules-commonjs'))) + var.put(u'_babelPluginTransformEs2015ModulesCommonjs2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ModulesCommonjs'))) + var.put(u'_babelPluginTransformEs2015ModulesSystemjs', var.get(u'require')(Js(u'babel-plugin-transform-es2015-modules-systemjs'))) + var.put(u'_babelPluginTransformEs2015ModulesSystemjs2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ModulesSystemjs'))) + var.put(u'_babelPluginTransformEs2015ModulesAmd', var.get(u'require')(Js(u'babel-plugin-transform-es2015-modules-amd'))) + var.put(u'_babelPluginTransformEs2015ModulesAmd2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ModulesAmd'))) + var.put(u'_babelPluginTransformEs2015ModulesUmd', var.get(u'require')(Js(u'babel-plugin-transform-es2015-modules-umd'))) + var.put(u'_babelPluginTransformEs2015ModulesUmd2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformEs2015ModulesUmd'))) + var.put(u'_babelPluginTransformRegenerator', var.get(u'require')(Js(u'babel-plugin-transform-regenerator'))) + var.put(u'_babelPluginTransformRegenerator2', var.get(u'_interopRequireDefault')(var.get(u'_babelPluginTransformRegenerator'))) + pass + pass + PyJs_Object_1328_ = Js({}) + var.put(u'oldConfig', var.get(u'preset')(PyJs_Object_1328_)) + var.get(u'exports').put(u'default', var.get(u'oldConfig')) + PyJs_Object_1329_ = Js({u'configurable':var.get(u'true'),u'writable':var.get(u'true'),u'enumerable':Js(False),u'value':var.get(u'preset')}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'oldConfig'), Js(u'buildPreset'), PyJs_Object_1329_) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1319_._set_name(u'anonymous') +PyJs_Object_1330_ = Js({u'babel-plugin-check-es2015-constants':Js(58.0),u'babel-plugin-transform-es2015-arrow-functions':Js(59.0),u'babel-plugin-transform-es2015-block-scoped-functions':Js(60.0),u'babel-plugin-transform-es2015-block-scoping':Js(61.0),u'babel-plugin-transform-es2015-classes':Js(63.0),u'babel-plugin-transform-es2015-computed-properties':Js(66.0),u'babel-plugin-transform-es2015-destructuring':Js(67.0),u'babel-plugin-transform-es2015-duplicate-keys':Js(68.0),u'babel-plugin-transform-es2015-for-of':Js(69.0),u'babel-plugin-transform-es2015-function-name':Js(70.0),u'babel-plugin-transform-es2015-literals':Js(71.0),u'babel-plugin-transform-es2015-modules-amd':Js(72.0),u'babel-plugin-transform-es2015-modules-commonjs':Js(73.0),u'babel-plugin-transform-es2015-modules-systemjs':Js(74.0),u'babel-plugin-transform-es2015-modules-umd':Js(75.0),u'babel-plugin-transform-es2015-object-super':Js(76.0),u'babel-plugin-transform-es2015-parameters':Js(79.0),u'babel-plugin-transform-es2015-shorthand-properties':Js(81.0),u'babel-plugin-transform-es2015-spread':Js(82.0),u'babel-plugin-transform-es2015-sticky-regex':Js(83.0),u'babel-plugin-transform-es2015-template-literals':Js(84.0),u'babel-plugin-transform-es2015-typeof-symbol':Js(85.0),u'babel-plugin-transform-es2015-unicode-regex':Js(86.0),u'babel-plugin-transform-regenerator':Js(89.0)}) +@Js +def PyJs_anonymous_1331_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1332_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/get-iterator')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1332_) +PyJs_anonymous_1331_._set_name(u'anonymous') +PyJs_Object_1333_ = Js({u'core-js/library/fn/get-iterator':Js(115.0)}) +@Js +def PyJs_anonymous_1334_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1335_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/json/stringify')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1335_) +PyJs_anonymous_1334_._set_name(u'anonymous') +PyJs_Object_1336_ = Js({u'core-js/library/fn/json/stringify':Js(116.0)}) +@Js +def PyJs_anonymous_1337_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1338_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/map')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1338_) +PyJs_anonymous_1337_._set_name(u'anonymous') +PyJs_Object_1339_ = Js({u'core-js/library/fn/map':Js(117.0)}) +@Js +def PyJs_anonymous_1340_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1341_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/number/max-safe-integer')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1341_) +PyJs_anonymous_1340_._set_name(u'anonymous') +PyJs_Object_1342_ = Js({u'core-js/library/fn/number/max-safe-integer':Js(118.0)}) +@Js +def PyJs_anonymous_1343_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1344_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/object/assign')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1344_) +PyJs_anonymous_1343_._set_name(u'anonymous') +PyJs_Object_1345_ = Js({u'core-js/library/fn/object/assign':Js(119.0)}) +@Js +def PyJs_anonymous_1346_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1347_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/object/create')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1347_) +PyJs_anonymous_1346_._set_name(u'anonymous') +PyJs_Object_1348_ = Js({u'core-js/library/fn/object/create':Js(120.0)}) +@Js +def PyJs_anonymous_1349_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1350_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/object/get-own-property-symbols')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1350_) +PyJs_anonymous_1349_._set_name(u'anonymous') +PyJs_Object_1351_ = Js({u'core-js/library/fn/object/get-own-property-symbols':Js(121.0)}) +@Js +def PyJs_anonymous_1352_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1353_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/object/keys')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1353_) +PyJs_anonymous_1352_._set_name(u'anonymous') +PyJs_Object_1354_ = Js({u'core-js/library/fn/object/keys':Js(122.0)}) +@Js +def PyJs_anonymous_1355_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1356_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/object/set-prototype-of')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1356_) +PyJs_anonymous_1355_._set_name(u'anonymous') +PyJs_Object_1357_ = Js({u'core-js/library/fn/object/set-prototype-of':Js(123.0)}) +@Js +def PyJs_anonymous_1358_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1359_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/symbol')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1359_) +PyJs_anonymous_1358_._set_name(u'anonymous') +PyJs_Object_1360_ = Js({u'core-js/library/fn/symbol':Js(125.0)}) +@Js +def PyJs_anonymous_1361_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1362_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/symbol/for')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1362_) +PyJs_anonymous_1361_._set_name(u'anonymous') +PyJs_Object_1363_ = Js({u'core-js/library/fn/symbol/for':Js(124.0)}) +@Js +def PyJs_anonymous_1364_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1365_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/symbol/iterator')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1365_) +PyJs_anonymous_1364_._set_name(u'anonymous') +PyJs_Object_1366_ = Js({u'core-js/library/fn/symbol/iterator':Js(126.0)}) +@Js +def PyJs_anonymous_1367_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1368_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/weak-map')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1368_) +PyJs_anonymous_1367_._set_name(u'anonymous') +PyJs_Object_1369_ = Js({u'core-js/library/fn/weak-map':Js(127.0)}) +@Js +def PyJs_anonymous_1370_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1371_ = Js({u'default':var.get(u'require')(Js(u'core-js/library/fn/weak-set')),u'__esModule':var.get(u'true')}) + var.get(u'module').put(u'exports', PyJs_Object_1371_) +PyJs_anonymous_1370_._set_name(u'anonymous') +PyJs_Object_1372_ = Js({u'core-js/library/fn/weak-set':Js(128.0)}) +@Js +def PyJs_anonymous_1373_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_1374_(instance, Constructor, this, arguments, var=var): + var = Scope({u'this':this, u'instance':instance, u'arguments':arguments, u'Constructor':Constructor}, var) + var.registers([u'instance', u'Constructor']) + if var.get(u'instance').instanceof(var.get(u'Constructor')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Cannot call a class as a function'))) + raise PyJsTempException + PyJs_anonymous_1374_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1374_) +PyJs_anonymous_1373_._set_name(u'anonymous') +PyJs_Object_1375_ = Js({}) +@Js +def PyJs_anonymous_1376_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_create', u'_typeof2', u'_typeof3', u'_setPrototypeOf', u'require', u'exports', u'module', u'_create2', u'_setPrototypeOf2', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1377_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1377_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_setPrototypeOf', var.get(u'require')(Js(u'../core-js/object/set-prototype-of'))) + var.put(u'_setPrototypeOf2', var.get(u'_interopRequireDefault')(var.get(u'_setPrototypeOf'))) + var.put(u'_create', var.get(u'require')(Js(u'../core-js/object/create'))) + var.put(u'_create2', var.get(u'_interopRequireDefault')(var.get(u'_create'))) + var.put(u'_typeof2', var.get(u'require')(Js(u'../helpers/typeof'))) + var.put(u'_typeof3', var.get(u'_interopRequireDefault')(var.get(u'_typeof2'))) + pass + @Js + def PyJs_anonymous_1378_(subClass, superClass, this, arguments, var=var): + var = Scope({u'this':this, u'superClass':superClass, u'subClass':subClass, u'arguments':arguments}, var) + var.registers([u'superClass', u'subClass']) + if (PyJsStrictNeq(var.get(u'superClass',throw=False).typeof(),Js(u'function')) and PyJsStrictNeq(var.get(u'superClass'),var.get(u"null"))): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Super expression must either be null or a function, not ')+(Js(u'undefined') if PyJsStrictEq(var.get(u'superClass',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'superClass')))))) + raise PyJsTempException + PyJs_Object_1380_ = Js({u'value':var.get(u'subClass'),u'enumerable':Js(False),u'writable':var.get(u'true'),u'configurable':var.get(u'true')}) + PyJs_Object_1379_ = Js({u'constructor':PyJs_Object_1380_}) + var.get(u'subClass').put(u'prototype', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))((var.get(u'superClass') and var.get(u'superClass').get(u'prototype')), PyJs_Object_1379_)) + if var.get(u'superClass'): + (PyJsComma(Js(0.0),var.get(u'_setPrototypeOf2').get(u'default'))(var.get(u'subClass'), var.get(u'superClass')) if var.get(u'_setPrototypeOf2').get(u'default') else var.get(u'subClass').put(u'__proto__', var.get(u'superClass'))) + PyJs_anonymous_1378_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1378_) +PyJs_anonymous_1376_._set_name(u'anonymous') +PyJs_Object_1381_ = Js({u'../core-js/object/create':Js(101.0),u'../core-js/object/set-prototype-of':Js(104.0),u'../helpers/typeof':Js(114.0)}) +@Js +def PyJs_anonymous_1382_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_1383_(obj, keys, this, arguments, var=var): + var = Scope({u'keys':keys, u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'i', u'keys', u'obj', u'target']) + PyJs_Object_1384_ = Js({}) + var.put(u'target', PyJs_Object_1384_) + for PyJsTemp in var.get(u'obj'): + var.put(u'i', PyJsTemp) + if (var.get(u'keys').callprop(u'indexOf', var.get(u'i'))>=Js(0.0)): + continue + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'i')).neg(): + continue + var.get(u'target').put(var.get(u'i'), var.get(u'obj').get(var.get(u'i'))) + return var.get(u'target') + PyJs_anonymous_1383_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1383_) +PyJs_anonymous_1382_._set_name(u'anonymous') +PyJs_Object_1385_ = Js({}) +@Js +def PyJs_anonymous_1386_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_typeof2', u'_typeof3', u'require', u'exports', u'module', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1387_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1387_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_typeof2', var.get(u'require')(Js(u'../helpers/typeof'))) + var.put(u'_typeof3', var.get(u'_interopRequireDefault')(var.get(u'_typeof2'))) + pass + @Js + def PyJs_anonymous_1388_(self, call, this, arguments, var=var): + var = Scope({u'this':this, u'self':self, u'call':call, u'arguments':arguments}, var) + var.registers([u'self', u'call']) + if var.get(u'self').neg(): + PyJsTempException = JsToPyException(var.get(u'ReferenceError').create(Js(u"this hasn't been initialised - super() hasn't been called"))) + raise PyJsTempException + return (var.get(u'call') if (var.get(u'call') and (PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'call',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'call'))),Js(u'object')) or PyJsStrictEq(var.get(u'call',throw=False).typeof(),Js(u'function')))) else var.get(u'self')) + PyJs_anonymous_1388_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1388_) +PyJs_anonymous_1386_._set_name(u'anonymous') +PyJs_Object_1389_ = Js({u'../helpers/typeof':Js(114.0)}) +@Js +def PyJs_anonymous_1390_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_symbol2', u'_iterator', u'require', u'module', u'_typeof', u'_symbol', u'_interopRequireDefault', u'_iterator2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1393_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1393_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_iterator', var.get(u'require')(Js(u'../core-js/symbol/iterator'))) + var.put(u'_iterator2', var.get(u'_interopRequireDefault')(var.get(u'_iterator'))) + var.put(u'_symbol', var.get(u'require')(Js(u'../core-js/symbol'))) + var.put(u'_symbol2', var.get(u'_interopRequireDefault')(var.get(u'_symbol'))) + @Js + def PyJs_anonymous_1391_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + return var.get(u'obj',throw=False).typeof() + PyJs_anonymous_1391_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1392_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + return (Js(u'symbol') if (((var.get(u'obj') and PyJsStrictEq(var.get(u'_symbol2').get(u'default').typeof(),Js(u'function'))) and PyJsStrictEq(var.get(u'obj').get(u'constructor'),var.get(u'_symbol2').get(u'default'))) and PyJsStrictNeq(var.get(u'obj'),var.get(u'_symbol2').get(u'default').get(u'prototype'))) else var.get(u'obj',throw=False).typeof()) + PyJs_anonymous_1392_._set_name(u'anonymous') + var.put(u'_typeof', (PyJs_anonymous_1391_ if (PyJsStrictEq(var.get(u'_symbol2').get(u'default').typeof(),Js(u'function')) and PyJsStrictEq(var.get(u'_iterator2').get(u'default').typeof(),Js(u'symbol'))) else PyJs_anonymous_1392_)) + pass + @Js + def PyJs_anonymous_1394_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + return (Js(u'undefined') if PyJsStrictEq(var.get(u'obj',throw=False).typeof(),Js(u'undefined')) else var.get(u'_typeof')(var.get(u'obj'))) + PyJs_anonymous_1394_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1395_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + def PyJs_LONG_1396_(var=var): + return (Js(u'symbol') if (((var.get(u'obj') and PyJsStrictEq(var.get(u'_symbol2').get(u'default').typeof(),Js(u'function'))) and PyJsStrictEq(var.get(u'obj').get(u'constructor'),var.get(u'_symbol2').get(u'default'))) and PyJsStrictNeq(var.get(u'obj'),var.get(u'_symbol2').get(u'default').get(u'prototype'))) else (Js(u'undefined') if PyJsStrictEq(var.get(u'obj',throw=False).typeof(),Js(u'undefined')) else var.get(u'_typeof')(var.get(u'obj')))) + return PyJs_LONG_1396_() + PyJs_anonymous_1395_._set_name(u'anonymous') + var.get(u'exports').put(u'default', (PyJs_anonymous_1394_ if (PyJsStrictEq(var.get(u'_symbol2').get(u'default').typeof(),Js(u'function')) and PyJsStrictEq(var.get(u'_typeof')(var.get(u'_iterator2').get(u'default')),Js(u'symbol'))) else PyJs_anonymous_1395_)) +PyJs_anonymous_1390_._set_name(u'anonymous') +PyJs_Object_1397_ = Js({u'../core-js/symbol':Js(105.0),u'../core-js/symbol/iterator':Js(107.0)}) +@Js +def PyJs_anonymous_1398_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../modules/web.dom.iterable')) + var.get(u'require')(Js(u'../modules/es6.string.iterator')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../modules/core.get-iterator'))) +PyJs_anonymous_1398_._set_name(u'anonymous') +PyJs_Object_1399_ = Js({u'../modules/core.get-iterator':Js(204.0),u'../modules/es6.string.iterator':Js(213.0),u'../modules/web.dom.iterable':Js(220.0)}) +@Js +def PyJs_anonymous_1400_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'core', u'require', u'exports', u'module', u'$JSON']) + var.put(u'core', var.get(u'require')(Js(u'../../modules/_core'))) + PyJs_Object_1401_ = Js({u'stringify':var.get(u'JSON').get(u'stringify')}) + var.put(u'$JSON', (var.get(u'core').get(u'JSON') or var.get(u'core').put(u'JSON', PyJs_Object_1401_))) + @Js + def PyJs_stringify_1402_(it, this, arguments, var=var): + var = Scope({u'this':this, u'stringify':PyJs_stringify_1402_, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return var.get(u'$JSON').get(u'stringify').callprop(u'apply', var.get(u'$JSON'), var.get(u'arguments')) + PyJs_stringify_1402_._set_name(u'stringify') + var.get(u'module').put(u'exports', PyJs_stringify_1402_) +PyJs_anonymous_1400_._set_name(u'anonymous') +PyJs_Object_1403_ = Js({u'../../modules/_core':Js(144.0)}) +@Js +def PyJs_anonymous_1404_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../modules/es6.object.to-string')) + var.get(u'require')(Js(u'../modules/es6.string.iterator')) + var.get(u'require')(Js(u'../modules/web.dom.iterable')) + var.get(u'require')(Js(u'../modules/es6.map')) + var.get(u'require')(Js(u'../modules/es7.map.to-json')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../modules/_core')).get(u'Map')) +PyJs_anonymous_1404_._set_name(u'anonymous') +PyJs_Object_1405_ = Js({u'../modules/_core':Js(144.0),u'../modules/es6.map':Js(206.0),u'../modules/es6.object.to-string':Js(212.0),u'../modules/es6.string.iterator':Js(213.0),u'../modules/es7.map.to-json':Js(217.0),u'../modules/web.dom.iterable':Js(220.0)}) +@Js +def PyJs_anonymous_1406_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../../modules/es6.number.max-safe-integer')) + var.get(u'module').put(u'exports', Js(9007199254740991)) +PyJs_anonymous_1406_._set_name(u'anonymous') +PyJs_Object_1407_ = Js({u'../../modules/es6.number.max-safe-integer':Js(207.0)}) +@Js +def PyJs_anonymous_1408_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../../modules/es6.object.assign')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../../modules/_core')).get(u'Object').get(u'assign')) +PyJs_anonymous_1408_._set_name(u'anonymous') +PyJs_Object_1409_ = Js({u'../../modules/_core':Js(144.0),u'../../modules/es6.object.assign':Js(208.0)}) +@Js +def PyJs_anonymous_1410_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module', u'$Object']) + var.get(u'require')(Js(u'../../modules/es6.object.create')) + var.put(u'$Object', var.get(u'require')(Js(u'../../modules/_core')).get(u'Object')) + @Js + def PyJs_create_1411_(P, D, this, arguments, var=var): + var = Scope({u'this':this, u'P':P, u'create':PyJs_create_1411_, u'D':D, u'arguments':arguments}, var) + var.registers([u'P', u'D']) + return var.get(u'$Object').callprop(u'create', var.get(u'P'), var.get(u'D')) + PyJs_create_1411_._set_name(u'create') + var.get(u'module').put(u'exports', PyJs_create_1411_) +PyJs_anonymous_1410_._set_name(u'anonymous') +PyJs_Object_1412_ = Js({u'../../modules/_core':Js(144.0),u'../../modules/es6.object.create':Js(209.0)}) +@Js +def PyJs_anonymous_1413_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../../modules/es6.symbol')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../../modules/_core')).get(u'Object').get(u'getOwnPropertySymbols')) +PyJs_anonymous_1413_._set_name(u'anonymous') +PyJs_Object_1414_ = Js({u'../../modules/_core':Js(144.0),u'../../modules/es6.symbol':Js(214.0)}) +@Js +def PyJs_anonymous_1415_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../../modules/es6.object.keys')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../../modules/_core')).get(u'Object').get(u'keys')) +PyJs_anonymous_1415_._set_name(u'anonymous') +PyJs_Object_1416_ = Js({u'../../modules/_core':Js(144.0),u'../../modules/es6.object.keys':Js(210.0)}) +@Js +def PyJs_anonymous_1417_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../../modules/es6.object.set-prototype-of')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../../modules/_core')).get(u'Object').get(u'setPrototypeOf')) +PyJs_anonymous_1417_._set_name(u'anonymous') +PyJs_Object_1418_ = Js({u'../../modules/_core':Js(144.0),u'../../modules/es6.object.set-prototype-of':Js(211.0)}) +@Js +def PyJs_anonymous_1419_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../../modules/es6.symbol')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../../modules/_core')).get(u'Symbol').get(u'for')) +PyJs_anonymous_1419_._set_name(u'anonymous') +PyJs_Object_1420_ = Js({u'../../modules/_core':Js(144.0),u'../../modules/es6.symbol':Js(214.0)}) +@Js +def PyJs_anonymous_1421_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../../modules/es6.symbol')) + var.get(u'require')(Js(u'../../modules/es6.object.to-string')) + var.get(u'require')(Js(u'../../modules/es7.symbol.async-iterator')) + var.get(u'require')(Js(u'../../modules/es7.symbol.observable')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../../modules/_core')).get(u'Symbol')) +PyJs_anonymous_1421_._set_name(u'anonymous') +PyJs_Object_1422_ = Js({u'../../modules/_core':Js(144.0),u'../../modules/es6.object.to-string':Js(212.0),u'../../modules/es6.symbol':Js(214.0),u'../../modules/es7.symbol.async-iterator':Js(218.0),u'../../modules/es7.symbol.observable':Js(219.0)}) +@Js +def PyJs_anonymous_1423_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../../modules/es6.string.iterator')) + var.get(u'require')(Js(u'../../modules/web.dom.iterable')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../../modules/_wks-ext')).callprop(u'f', Js(u'iterator'))) +PyJs_anonymous_1423_._set_name(u'anonymous') +PyJs_Object_1424_ = Js({u'../../modules/_wks-ext':Js(201.0),u'../../modules/es6.string.iterator':Js(213.0),u'../../modules/web.dom.iterable':Js(220.0)}) +@Js +def PyJs_anonymous_1425_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../modules/es6.object.to-string')) + var.get(u'require')(Js(u'../modules/web.dom.iterable')) + var.get(u'require')(Js(u'../modules/es6.weak-map')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../modules/_core')).get(u'WeakMap')) +PyJs_anonymous_1425_._set_name(u'anonymous') +PyJs_Object_1426_ = Js({u'../modules/_core':Js(144.0),u'../modules/es6.object.to-string':Js(212.0),u'../modules/es6.weak-map':Js(215.0),u'../modules/web.dom.iterable':Js(220.0)}) +@Js +def PyJs_anonymous_1427_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'../modules/es6.object.to-string')) + var.get(u'require')(Js(u'../modules/web.dom.iterable')) + var.get(u'require')(Js(u'../modules/es6.weak-set')) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'../modules/_core')).get(u'WeakSet')) +PyJs_anonymous_1427_._set_name(u'anonymous') +PyJs_Object_1428_ = Js({u'../modules/_core':Js(144.0),u'../modules/es6.object.to-string':Js(212.0),u'../modules/es6.weak-set':Js(216.0),u'../modules/web.dom.iterable':Js(220.0)}) +@Js +def PyJs_anonymous_1429_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1430_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + if (var.get(u'it',throw=False).typeof()!=Js(u'function')): + PyJsTempException = JsToPyException(var.get(u'TypeError')((var.get(u'it')+Js(u' is not a function!')))) + raise PyJsTempException + return var.get(u'it') + PyJs_anonymous_1430_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1430_) +PyJs_anonymous_1429_._set_name(u'anonymous') +PyJs_Object_1431_ = Js({}) +@Js +def PyJs_anonymous_1432_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1433_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + pass + PyJs_anonymous_1433_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1433_) +PyJs_anonymous_1432_._set_name(u'anonymous') +PyJs_Object_1434_ = Js({}) +@Js +def PyJs_anonymous_1435_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1436_(it, Constructor, name, forbiddenField, this, arguments, var=var): + var = Scope({u'name':name, u'Constructor':Constructor, u'this':this, u'arguments':arguments, u'it':it, u'forbiddenField':forbiddenField}, var) + var.registers([u'forbiddenField', u'it', u'name', u'Constructor']) + if (var.get(u'it').instanceof(var.get(u'Constructor')).neg() or (PyJsStrictNeq(var.get(u'forbiddenField'),var.get(u'undefined')) and var.get(u'it').contains(var.get(u'forbiddenField')))): + PyJsTempException = JsToPyException(var.get(u'TypeError')((var.get(u'name')+Js(u': incorrect invocation!')))) + raise PyJsTempException + return var.get(u'it') + PyJs_anonymous_1436_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1436_) +PyJs_anonymous_1435_._set_name(u'anonymous') +PyJs_Object_1437_ = Js({}) +@Js +def PyJs_anonymous_1438_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'isObject', u'module']) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + @Js + def PyJs_anonymous_1439_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + if var.get(u'isObject')(var.get(u'it')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError')((var.get(u'it')+Js(u' is not an object!')))) + raise PyJsTempException + return var.get(u'it') + PyJs_anonymous_1439_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1439_) +PyJs_anonymous_1438_._set_name(u'anonymous') +PyJs_Object_1440_ = Js({u'./_is-object':Js(162.0)}) +@Js +def PyJs_anonymous_1441_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'forOf', u'exports', u'module']) + var.put(u'forOf', var.get(u'require')(Js(u'./_for-of'))) + @Js + def PyJs_anonymous_1442_(iter, ITERATOR, this, arguments, var=var): + var = Scope({u'this':this, u'ITERATOR':ITERATOR, u'iter':iter, u'arguments':arguments}, var) + var.registers([u'ITERATOR', u'result', u'iter']) + var.put(u'result', Js([])) + var.get(u'forOf')(var.get(u'iter'), Js(False), var.get(u'result').get(u'push'), var.get(u'result'), var.get(u'ITERATOR')) + return var.get(u'result') + PyJs_anonymous_1442_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1442_) +PyJs_anonymous_1441_._set_name(u'anonymous') +PyJs_Object_1443_ = Js({u'./_for-of':Js(153.0)}) +@Js +def PyJs_anonymous_1444_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'toLength', u'require', u'toIndex', u'module', u'toIObject']) + var.put(u'toIObject', var.get(u'require')(Js(u'./_to-iobject'))) + var.put(u'toLength', var.get(u'require')(Js(u'./_to-length'))) + var.put(u'toIndex', var.get(u'require')(Js(u'./_to-index'))) + @Js + def PyJs_anonymous_1445_(IS_INCLUDES, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'IS_INCLUDES':IS_INCLUDES}, var) + var.registers([u'IS_INCLUDES']) + @Js + def PyJs_anonymous_1446_(PyJsArg_2474686973_, el, fromIndex, this, arguments, var=var): + var = Scope({u'this':this, u'el':el, u'$this':PyJsArg_2474686973_, u'arguments':arguments, u'fromIndex':fromIndex}, var) + var.registers([u'el', u'index', u'$this', u'value', u'fromIndex', u'length', u'O']) + var.put(u'O', var.get(u'toIObject')(var.get(u'$this'))) + var.put(u'length', var.get(u'toLength')(var.get(u'O').get(u'length'))) + var.put(u'index', var.get(u'toIndex')(var.get(u'fromIndex'), var.get(u'length'))) + if (var.get(u'IS_INCLUDES') and (var.get(u'el')!=var.get(u'el'))): + while (var.get(u'length')>var.get(u'index')): + var.put(u'value', var.get(u'O').get((var.put(u'index',Js(var.get(u'index').to_number())+Js(1))-Js(1)))) + if (var.get(u'value')!=var.get(u'value')): + return var.get(u'true') + else: + #for JS loop + + while (var.get(u'length')>var.get(u'index')): + try: + if (var.get(u'IS_INCLUDES') or var.get(u'O').contains(var.get(u'index'))): + if PyJsStrictEq(var.get(u'O').get(var.get(u'index')),var.get(u'el')): + return ((var.get(u'IS_INCLUDES') or var.get(u'index')) or Js(0.0)) + finally: + (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))-Js(1)) + return (var.get(u'IS_INCLUDES').neg() and (-Js(1.0))) + PyJs_anonymous_1446_._set_name(u'anonymous') + return PyJs_anonymous_1446_ + PyJs_anonymous_1445_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1445_) +PyJs_anonymous_1444_._set_name(u'anonymous') +PyJs_Object_1447_ = Js({u'./_to-index':Js(193.0),u'./_to-iobject':Js(195.0),u'./_to-length':Js(196.0)}) +@Js +def PyJs_anonymous_1448_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'toLength', u'IObject', u'toObject', u'ctx', u'module', u'asc', u'require']) + var.put(u'ctx', var.get(u'require')(Js(u'./_ctx'))) + var.put(u'IObject', var.get(u'require')(Js(u'./_iobject'))) + var.put(u'toObject', var.get(u'require')(Js(u'./_to-object'))) + var.put(u'toLength', var.get(u'require')(Js(u'./_to-length'))) + var.put(u'asc', var.get(u'require')(Js(u'./_array-species-create'))) + @Js + def PyJs_anonymous_1449_(TYPE, PyJsArg_24637265617465_, this, arguments, var=var): + var = Scope({u'this':this, u'TYPE':TYPE, u'arguments':arguments, u'$create':PyJsArg_24637265617465_}, var) + var.registers([u'IS_FIND_INDEX', u'IS_SOME', u'IS_MAP', u'$create', u'NO_HOLES', u'IS_EVERY', u'IS_FILTER', u'TYPE', u'create']) + var.put(u'IS_MAP', (var.get(u'TYPE')==Js(1.0))) + var.put(u'IS_FILTER', (var.get(u'TYPE')==Js(2.0))) + var.put(u'IS_SOME', (var.get(u'TYPE')==Js(3.0))) + var.put(u'IS_EVERY', (var.get(u'TYPE')==Js(4.0))) + var.put(u'IS_FIND_INDEX', (var.get(u'TYPE')==Js(6.0))) + var.put(u'NO_HOLES', ((var.get(u'TYPE')==Js(5.0)) or var.get(u'IS_FIND_INDEX'))) + var.put(u'create', (var.get(u'$create') or var.get(u'asc'))) + @Js + def PyJs_anonymous_1450_(PyJsArg_2474686973_, callbackfn, that, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'callbackfn':callbackfn, u'$this':PyJsArg_2474686973_, u'that':that}, var) + var.registers([u'index', u'callbackfn', u'val', u'f', u'res', u'self', u'that', u'$this', u'O', u'length', u'result']) + var.put(u'O', var.get(u'toObject')(var.get(u'$this'))) + var.put(u'self', var.get(u'IObject')(var.get(u'O'))) + var.put(u'f', var.get(u'ctx')(var.get(u'callbackfn'), var.get(u'that'), Js(3.0))) + var.put(u'length', var.get(u'toLength')(var.get(u'self').get(u'length'))) + var.put(u'index', Js(0.0)) + var.put(u'result', (var.get(u'create')(var.get(u'$this'), var.get(u'length')) if var.get(u'IS_MAP') else (var.get(u'create')(var.get(u'$this'), Js(0.0)) if var.get(u'IS_FILTER') else var.get(u'undefined')))) + #for JS loop + + while (var.get(u'length')>var.get(u'index')): + try: + if (var.get(u'NO_HOLES') or var.get(u'self').contains(var.get(u'index'))): + var.put(u'val', var.get(u'self').get(var.get(u'index'))) + var.put(u'res', var.get(u'f')(var.get(u'val'), var.get(u'index'), var.get(u'O'))) + if var.get(u'TYPE'): + if var.get(u'IS_MAP'): + var.get(u'result').put(var.get(u'index'), var.get(u'res')) + else: + if var.get(u'res'): + while 1: + SWITCHED = False + CONDITION = (var.get(u'TYPE')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(3.0)): + SWITCHED = True + return var.get(u'true') + if SWITCHED or PyJsStrictEq(CONDITION, Js(5.0)): + SWITCHED = True + return var.get(u'val') + if SWITCHED or PyJsStrictEq(CONDITION, Js(6.0)): + SWITCHED = True + return var.get(u'index') + if SWITCHED or PyJsStrictEq(CONDITION, Js(2.0)): + SWITCHED = True + var.get(u'result').callprop(u'push', var.get(u'val')) + SWITCHED = True + break + else: + if var.get(u'IS_EVERY'): + return Js(False) + finally: + (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))-Js(1)) + return ((-Js(1.0)) if var.get(u'IS_FIND_INDEX') else (var.get(u'IS_EVERY') if (var.get(u'IS_SOME') or var.get(u'IS_EVERY')) else var.get(u'result'))) + PyJs_anonymous_1450_._set_name(u'anonymous') + return PyJs_anonymous_1450_ + PyJs_anonymous_1449_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1449_) +PyJs_anonymous_1448_._set_name(u'anonymous') +PyJs_Object_1451_ = Js({u'./_array-species-create':Js(137.0),u'./_ctx':Js(145.0),u'./_iobject':Js(159.0),u'./_to-length':Js(196.0),u'./_to-object':Js(197.0)}) +@Js +def PyJs_anonymous_1452_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'isArray', u'exports', u'require', u'module', u'SPECIES', u'isObject']) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + var.put(u'isArray', var.get(u'require')(Js(u'./_is-array'))) + var.put(u'SPECIES', var.get(u'require')(Js(u'./_wks'))(Js(u'species'))) + @Js + def PyJs_anonymous_1453_(original, this, arguments, var=var): + var = Scope({u'this':this, u'original':original, u'arguments':arguments}, var) + var.registers([u'C', u'original']) + pass + if var.get(u'isArray')(var.get(u'original')): + var.put(u'C', var.get(u'original').get(u'constructor')) + if ((var.get(u'C',throw=False).typeof()==Js(u'function')) and (PyJsStrictEq(var.get(u'C'),var.get(u'Array')) or var.get(u'isArray')(var.get(u'C').get(u'prototype')))): + var.put(u'C', var.get(u'undefined')) + if var.get(u'isObject')(var.get(u'C')): + var.put(u'C', var.get(u'C').get(var.get(u'SPECIES'))) + if PyJsStrictEq(var.get(u'C'),var.get(u"null")): + var.put(u'C', var.get(u'undefined')) + return (var.get(u'Array') if PyJsStrictEq(var.get(u'C'),var.get(u'undefined')) else var.get(u'C')) + PyJs_anonymous_1453_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1453_) +PyJs_anonymous_1452_._set_name(u'anonymous') +PyJs_Object_1454_ = Js({u'./_is-array':Js(161.0),u'./_is-object':Js(162.0),u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1455_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'speciesConstructor', u'require', u'exports', u'module']) + var.put(u'speciesConstructor', var.get(u'require')(Js(u'./_array-species-constructor'))) + @Js + def PyJs_anonymous_1456_(original, length, this, arguments, var=var): + var = Scope({u'this':this, u'length':length, u'original':original, u'arguments':arguments}, var) + var.registers([u'length', u'original']) + return var.get(u'speciesConstructor')(var.get(u'original')).create(var.get(u'length')) + PyJs_anonymous_1456_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1456_) +PyJs_anonymous_1455_._set_name(u'anonymous') +PyJs_Object_1457_ = Js({u'./_array-species-constructor':Js(136.0)}) +@Js +def PyJs_anonymous_1458_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'cof', u'module', u'tryGet', u'TAG', u'ARG']) + var.put(u'cof', var.get(u'require')(Js(u'./_cof'))) + var.put(u'TAG', var.get(u'require')(Js(u'./_wks'))(Js(u'toStringTag'))) + @Js + def PyJs_anonymous_1459_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'arguments') + PyJs_anonymous_1459_._set_name(u'anonymous') + var.put(u'ARG', (var.get(u'cof')(PyJs_anonymous_1459_())==Js(u'Arguments'))) + @Js + def PyJs_anonymous_1460_(it, key, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'key':key, u'arguments':arguments}, var) + var.registers([u'it', u'key']) + try: + return var.get(u'it').get(var.get(u'key')) + except PyJsException as PyJsTempException: + PyJsHolder_65_48759406 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + pass + finally: + if PyJsHolder_65_48759406 is not None: + var.own[u'e'] = PyJsHolder_65_48759406 + else: + del var.own[u'e'] + del PyJsHolder_65_48759406 + PyJs_anonymous_1460_._set_name(u'anonymous') + var.put(u'tryGet', PyJs_anonymous_1460_) + @Js + def PyJs_anonymous_1461_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'B', u'T', u'O', u'it']) + pass + def PyJs_LONG_1462_(var=var): + return (Js(u'Null') if PyJsStrictEq(var.get(u'it'),var.get(u"null")) else (var.get(u'T') if (var.put(u'T', var.get(u'tryGet')(var.put(u'O', var.get(u'Object')(var.get(u'it'))), var.get(u'TAG'))).typeof()==Js(u'string')) else (var.get(u'cof')(var.get(u'O')) if var.get(u'ARG') else (Js(u'Arguments') if ((var.put(u'B', var.get(u'cof')(var.get(u'O')))==Js(u'Object')) and (var.get(u'O').get(u'callee').typeof()==Js(u'function'))) else var.get(u'B'))))) + return (Js(u'Undefined') if PyJsStrictEq(var.get(u'it'),var.get(u'undefined')) else PyJs_LONG_1462_()) + PyJs_anonymous_1461_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1461_) +PyJs_anonymous_1458_._set_name(u'anonymous') +PyJs_Object_1463_ = Js({u'./_cof':Js(139.0),u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1464_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'toString', u'exports', u'module']) + PyJs_Object_1465_ = Js({}) + var.put(u'toString', PyJs_Object_1465_.get(u'toString')) + @Js + def PyJs_anonymous_1466_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return var.get(u'toString').callprop(u'call', var.get(u'it')).callprop(u'slice', Js(8.0), (-Js(1.0))) + PyJs_anonymous_1466_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1466_) +PyJs_anonymous_1464_._set_name(u'anonymous') +PyJs_Object_1467_ = Js({}) +@Js +def PyJs_anonymous_1468_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'fastKey', u'exports', u'forOf', u'anInstance', u'defined', u'$iterDefine', u'create', u'ctx', u'module', u'setSpecies', u'getEntry', u'step', u'redefineAll', u'DESCRIPTORS', u'require', u'dP', u'SIZE']) + Js(u'use strict') + var.put(u'dP', var.get(u'require')(Js(u'./_object-dp')).get(u'f')) + var.put(u'create', var.get(u'require')(Js(u'./_object-create'))) + var.put(u'redefineAll', var.get(u'require')(Js(u'./_redefine-all'))) + var.put(u'ctx', var.get(u'require')(Js(u'./_ctx'))) + var.put(u'anInstance', var.get(u'require')(Js(u'./_an-instance'))) + var.put(u'defined', var.get(u'require')(Js(u'./_defined'))) + var.put(u'forOf', var.get(u'require')(Js(u'./_for-of'))) + var.put(u'$iterDefine', var.get(u'require')(Js(u'./_iter-define'))) + var.put(u'step', var.get(u'require')(Js(u'./_iter-step'))) + var.put(u'setSpecies', var.get(u'require')(Js(u'./_set-species'))) + var.put(u'DESCRIPTORS', var.get(u'require')(Js(u'./_descriptors'))) + var.put(u'fastKey', var.get(u'require')(Js(u'./_meta')).get(u'fastKey')) + var.put(u'SIZE', (Js(u'_s') if var.get(u'DESCRIPTORS') else Js(u'size'))) + @Js + def PyJs_anonymous_1469_(that, key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key, u'that':that}, var) + var.registers([u'index', u'that', u'key', u'entry']) + var.put(u'index', var.get(u'fastKey')(var.get(u'key'))) + if PyJsStrictNeq(var.get(u'index'),Js(u'F')): + return var.get(u'that').get(u'_i').get(var.get(u'index')) + #for JS loop + var.put(u'entry', var.get(u'that').get(u'_f')) + while var.get(u'entry'): + try: + if (var.get(u'entry').get(u'k')==var.get(u'key')): + return var.get(u'entry') + finally: + var.put(u'entry', var.get(u'entry').get(u'n')) + PyJs_anonymous_1469_._set_name(u'anonymous') + var.put(u'getEntry', PyJs_anonymous_1469_) + @Js + def PyJs_anonymous_1471_(wrapper, NAME, IS_MAP, ADDER, this, arguments, var=var): + var = Scope({u'ADDER':ADDER, u'this':this, u'arguments':arguments, u'IS_MAP':IS_MAP, u'wrapper':wrapper, u'NAME':NAME}, var) + var.registers([u'ADDER', u'C', u'NAME', u'wrapper', u'IS_MAP']) + @Js + def PyJs_anonymous_1472_(that, iterable, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'iterable':iterable, u'that':that}, var) + var.registers([u'iterable', u'that']) + var.get(u'anInstance')(var.get(u'that'), var.get(u'C'), var.get(u'NAME'), Js(u'_i')) + var.get(u'that').put(u'_i', var.get(u'create')(var.get(u"null"))) + var.get(u'that').put(u'_f', var.get(u'undefined')) + var.get(u'that').put(u'_l', var.get(u'undefined')) + var.get(u'that').put(var.get(u'SIZE'), Js(0.0)) + if (var.get(u'iterable')!=var.get(u'undefined')): + var.get(u'forOf')(var.get(u'iterable'), var.get(u'IS_MAP'), var.get(u'that').get(var.get(u'ADDER')), var.get(u'that')) + PyJs_anonymous_1472_._set_name(u'anonymous') + var.put(u'C', var.get(u'wrapper')(PyJs_anonymous_1472_)) + @Js + def PyJs_clear_1474_(this, arguments, var=var): + var = Scope({u'this':this, u'clear':PyJs_clear_1474_, u'arguments':arguments}, var) + var.registers([u'entry', u'data', u'that']) + #for JS loop + var.put(u'that', var.get(u"this")) + var.put(u'data', var.get(u'that').get(u'_i')) + var.put(u'entry', var.get(u'that').get(u'_f')) + while var.get(u'entry'): + try: + var.get(u'entry').put(u'r', var.get(u'true')) + if var.get(u'entry').get(u'p'): + var.get(u'entry').put(u'p', var.get(u'entry').get(u'p').put(u'n', var.get(u'undefined'))) + var.get(u'data').delete(var.get(u'entry').get(u'i')) + finally: + var.put(u'entry', var.get(u'entry').get(u'n')) + var.get(u'that').put(u'_f', var.get(u'that').put(u'_l', var.get(u'undefined'))) + var.get(u'that').put(var.get(u'SIZE'), Js(0.0)) + PyJs_clear_1474_._set_name(u'clear') + @Js + def PyJs_anonymous_1475_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'prev', u'entry', u'next', u'key', u'that']) + var.put(u'that', var.get(u"this")) + var.put(u'entry', var.get(u'getEntry')(var.get(u'that'), var.get(u'key'))) + if var.get(u'entry'): + var.put(u'next', var.get(u'entry').get(u'n')) + var.put(u'prev', var.get(u'entry').get(u'p')) + var.get(u'that').get(u'_i').delete(var.get(u'entry').get(u'i')) + var.get(u'entry').put(u'r', var.get(u'true')) + if var.get(u'prev'): + var.get(u'prev').put(u'n', var.get(u'next')) + if var.get(u'next'): + var.get(u'next').put(u'p', var.get(u'prev')) + if (var.get(u'that').get(u'_f')==var.get(u'entry')): + var.get(u'that').put(u'_f', var.get(u'next')) + if (var.get(u'that').get(u'_l')==var.get(u'entry')): + var.get(u'that').put(u'_l', var.get(u'prev')) + (var.get(u'that').put(var.get(u'SIZE'),Js(var.get(u'that').get(var.get(u'SIZE')).to_number())-Js(1))+Js(1)) + return var.get(u'entry').neg().neg() + PyJs_anonymous_1475_._set_name(u'anonymous') + @Js + def PyJs_forEach_1476_(callbackfn, this, arguments, var=var): + var = Scope({u'this':this, u'callbackfn':callbackfn, u'arguments':arguments, u'forEach':PyJs_forEach_1476_}, var) + var.registers([u'entry', u'callbackfn', u'f']) + var.get(u'anInstance')(var.get(u"this"), var.get(u'C'), Js(u'forEach')) + var.put(u'f', var.get(u'ctx')(var.get(u'callbackfn'), (var.get(u'arguments').get(u'1') if (var.get(u'arguments').get(u'length')>Js(1.0)) else var.get(u'undefined')), Js(3.0))) + while var.put(u'entry', (var.get(u'entry').get(u'n') if var.get(u'entry') else var.get(u"this").get(u'_f'))): + var.get(u'f')(var.get(u'entry').get(u'v'), var.get(u'entry').get(u'k'), var.get(u"this")) + while (var.get(u'entry') and var.get(u'entry').get(u'r')): + var.put(u'entry', var.get(u'entry').get(u'p')) + PyJs_forEach_1476_._set_name(u'forEach') + @Js + def PyJs_has_1477_(key, this, arguments, var=var): + var = Scope({u'this':this, u'has':PyJs_has_1477_, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + return var.get(u'getEntry')(var.get(u"this"), var.get(u'key')).neg().neg() + PyJs_has_1477_._set_name(u'has') + PyJs_Object_1473_ = Js({u'clear':PyJs_clear_1474_,u'delete':PyJs_anonymous_1475_,u'forEach':PyJs_forEach_1476_,u'has':PyJs_has_1477_}) + var.get(u'redefineAll')(var.get(u'C').get(u'prototype'), PyJs_Object_1473_) + if var.get(u'DESCRIPTORS'): + @Js + def PyJs_anonymous_1479_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'defined')(var.get(u"this").get(var.get(u'SIZE'))) + PyJs_anonymous_1479_._set_name(u'anonymous') + PyJs_Object_1478_ = Js({u'get':PyJs_anonymous_1479_}) + var.get(u'dP')(var.get(u'C').get(u'prototype'), Js(u'size'), PyJs_Object_1478_) + return var.get(u'C') + PyJs_anonymous_1471_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1480_(that, key, value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value, u'key':key, u'that':that}, var) + var.registers([u'index', u'that', u'value', u'key', u'entry', u'prev']) + var.put(u'entry', var.get(u'getEntry')(var.get(u'that'), var.get(u'key'))) + if var.get(u'entry'): + var.get(u'entry').put(u'v', var.get(u'value')) + else: + PyJs_Object_1481_ = Js({u'i':var.put(u'index', var.get(u'fastKey')(var.get(u'key'), var.get(u'true'))),u'k':var.get(u'key'),u'v':var.get(u'value'),u'p':var.put(u'prev', var.get(u'that').get(u'_l')),u'n':var.get(u'undefined'),u'r':Js(False)}) + var.get(u'that').put(u'_l', var.put(u'entry', PyJs_Object_1481_)) + if var.get(u'that').get(u'_f').neg(): + var.get(u'that').put(u'_f', var.get(u'entry')) + if var.get(u'prev'): + var.get(u'prev').put(u'n', var.get(u'entry')) + (var.get(u'that').put(var.get(u'SIZE'),Js(var.get(u'that').get(var.get(u'SIZE')).to_number())+Js(1))-Js(1)) + if PyJsStrictNeq(var.get(u'index'),Js(u'F')): + var.get(u'that').get(u'_i').put(var.get(u'index'), var.get(u'entry')) + return var.get(u'that') + PyJs_anonymous_1480_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1482_(C, NAME, IS_MAP, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'C':C, u'NAME':NAME, u'IS_MAP':IS_MAP}, var) + var.registers([u'C', u'NAME', u'IS_MAP']) + @Js + def PyJs_anonymous_1483_(iterated, kind, this, arguments, var=var): + var = Scope({u'this':this, u'kind':kind, u'arguments':arguments, u'iterated':iterated}, var) + var.registers([u'kind', u'iterated']) + var.get(u"this").put(u'_t', var.get(u'iterated')) + var.get(u"this").put(u'_k', var.get(u'kind')) + var.get(u"this").put(u'_l', var.get(u'undefined')) + PyJs_anonymous_1483_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1484_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'entry', u'kind', u'that']) + var.put(u'that', var.get(u"this")) + var.put(u'kind', var.get(u'that').get(u'_k')) + var.put(u'entry', var.get(u'that').get(u'_l')) + while (var.get(u'entry') and var.get(u'entry').get(u'r')): + var.put(u'entry', var.get(u'entry').get(u'p')) + if (var.get(u'that').get(u'_t').neg() or var.get(u'that').put(u'_l', var.put(u'entry', (var.get(u'entry').get(u'n') if var.get(u'entry') else var.get(u'that').get(u'_t').get(u'_f')))).neg()): + var.get(u'that').put(u'_t', var.get(u'undefined')) + return var.get(u'step')(Js(1.0)) + if (var.get(u'kind')==Js(u'keys')): + return var.get(u'step')(Js(0.0), var.get(u'entry').get(u'k')) + if (var.get(u'kind')==Js(u'values')): + return var.get(u'step')(Js(0.0), var.get(u'entry').get(u'v')) + return var.get(u'step')(Js(0.0), Js([var.get(u'entry').get(u'k'), var.get(u'entry').get(u'v')])) + PyJs_anonymous_1484_._set_name(u'anonymous') + var.get(u'$iterDefine')(var.get(u'C'), var.get(u'NAME'), PyJs_anonymous_1483_, PyJs_anonymous_1484_, (Js(u'entries') if var.get(u'IS_MAP') else Js(u'values')), var.get(u'IS_MAP').neg(), var.get(u'true')) + var.get(u'setSpecies')(var.get(u'NAME')) + PyJs_anonymous_1482_._set_name(u'anonymous') + PyJs_Object_1470_ = Js({u'getConstructor':PyJs_anonymous_1471_,u'def':PyJs_anonymous_1480_,u'getEntry':var.get(u'getEntry'),u'setStrong':PyJs_anonymous_1482_}) + var.get(u'module').put(u'exports', PyJs_Object_1470_) +PyJs_anonymous_1468_._set_name(u'anonymous') +PyJs_Object_1485_ = Js({u'./_an-instance':Js(131.0),u'./_ctx':Js(145.0),u'./_defined':Js(146.0),u'./_descriptors':Js(147.0),u'./_for-of':Js(153.0),u'./_iter-define':Js(165.0),u'./_iter-step':Js(166.0),u'./_meta':Js(170.0),u'./_object-create':Js(172.0),u'./_object-dp':Js(173.0),u'./_redefine-all':Js(185.0),u'./_set-species':Js(188.0)}) +@Js +def PyJs_anonymous_1486_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'from', u'require', u'classof', u'exports', u'module']) + var.put(u'classof', var.get(u'require')(Js(u'./_classof'))) + var.put(u'from', var.get(u'require')(Js(u'./_array-from-iterable'))) + @Js + def PyJs_anonymous_1487_(NAME, this, arguments, var=var): + var = Scope({u'this':this, u'NAME':NAME, u'arguments':arguments}, var) + var.registers([u'NAME']) + @Js + def PyJs_toJSON_1488_(this, arguments, var=var): + var = Scope({u'this':this, u'toJSON':PyJs_toJSON_1488_, u'arguments':arguments}, var) + var.registers([]) + if (var.get(u'classof')(var.get(u"this"))!=var.get(u'NAME')): + PyJsTempException = JsToPyException(var.get(u'TypeError')((var.get(u'NAME')+Js(u"#toJSON isn't generic")))) + raise PyJsTempException + return var.get(u'from')(var.get(u"this")) + PyJs_toJSON_1488_._set_name(u'toJSON') + return PyJs_toJSON_1488_ + PyJs_anonymous_1487_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1487_) +PyJs_anonymous_1486_._set_name(u'anonymous') +PyJs_Object_1489_ = Js({u'./_array-from-iterable':Js(133.0),u'./_classof':Js(138.0)}) +@Js +def PyJs_anonymous_1490_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'forOf', u'findUncaughtFrozen', u'createArrayMethod', u'anInstance', u'require', u'arrayFindIndex', u'module', u'id', u'$has', u'anObject', u'uncaughtFrozenStore', u'UncaughtFrozenStore', u'redefineAll', u'getWeak', u'isObject', u'arrayFind']) + Js(u'use strict') + var.put(u'redefineAll', var.get(u'require')(Js(u'./_redefine-all'))) + var.put(u'getWeak', var.get(u'require')(Js(u'./_meta')).get(u'getWeak')) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + var.put(u'anInstance', var.get(u'require')(Js(u'./_an-instance'))) + var.put(u'forOf', var.get(u'require')(Js(u'./_for-of'))) + var.put(u'createArrayMethod', var.get(u'require')(Js(u'./_array-methods'))) + var.put(u'$has', var.get(u'require')(Js(u'./_has'))) + var.put(u'arrayFind', var.get(u'createArrayMethod')(Js(5.0))) + var.put(u'arrayFindIndex', var.get(u'createArrayMethod')(Js(6.0))) + var.put(u'id', Js(0.0)) + @Js + def PyJs_anonymous_1491_(that, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'that':that}, var) + var.registers([u'that']) + return (var.get(u'that').get(u'_l') or var.get(u'that').put(u'_l', var.get(u'UncaughtFrozenStore').create())) + PyJs_anonymous_1491_._set_name(u'anonymous') + var.put(u'uncaughtFrozenStore', PyJs_anonymous_1491_) + @Js + def PyJs_anonymous_1492_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'a', Js([])) + PyJs_anonymous_1492_._set_name(u'anonymous') + var.put(u'UncaughtFrozenStore', PyJs_anonymous_1492_) + @Js + def PyJs_anonymous_1493_(store, key, this, arguments, var=var): + var = Scope({u'this':this, u'key':key, u'store':store, u'arguments':arguments}, var) + var.registers([u'key', u'store']) + @Js + def PyJs_anonymous_1494_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return PyJsStrictEq(var.get(u'it').get(u'0'),var.get(u'key')) + PyJs_anonymous_1494_._set_name(u'anonymous') + return var.get(u'arrayFind')(var.get(u'store').get(u'a'), PyJs_anonymous_1494_) + PyJs_anonymous_1493_._set_name(u'anonymous') + var.put(u'findUncaughtFrozen', PyJs_anonymous_1493_) + @Js + def PyJs_anonymous_1496_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'entry', u'key']) + var.put(u'entry', var.get(u'findUncaughtFrozen')(var.get(u"this"), var.get(u'key'))) + if var.get(u'entry'): + return var.get(u'entry').get(u'1') + PyJs_anonymous_1496_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1497_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + return var.get(u'findUncaughtFrozen')(var.get(u"this"), var.get(u'key')).neg().neg() + PyJs_anonymous_1497_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1498_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'entry', u'value', u'key']) + var.put(u'entry', var.get(u'findUncaughtFrozen')(var.get(u"this"), var.get(u'key'))) + if var.get(u'entry'): + var.get(u'entry').put(u'1', var.get(u'value')) + else: + var.get(u"this").get(u'a').callprop(u'push', Js([var.get(u'key'), var.get(u'value')])) + PyJs_anonymous_1498_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1499_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'index', u'key']) + @Js + def PyJs_anonymous_1500_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return PyJsStrictEq(var.get(u'it').get(u'0'),var.get(u'key')) + PyJs_anonymous_1500_._set_name(u'anonymous') + var.put(u'index', var.get(u'arrayFindIndex')(var.get(u"this").get(u'a'), PyJs_anonymous_1500_)) + if (~var.get(u'index')): + var.get(u"this").get(u'a').callprop(u'splice', var.get(u'index'), Js(1.0)) + return (~var.get(u'index')).neg().neg() + PyJs_anonymous_1499_._set_name(u'anonymous') + PyJs_Object_1495_ = Js({u'get':PyJs_anonymous_1496_,u'has':PyJs_anonymous_1497_,u'set':PyJs_anonymous_1498_,u'delete':PyJs_anonymous_1499_}) + var.get(u'UncaughtFrozenStore').put(u'prototype', PyJs_Object_1495_) + @Js + def PyJs_anonymous_1502_(wrapper, NAME, IS_MAP, ADDER, this, arguments, var=var): + var = Scope({u'ADDER':ADDER, u'this':this, u'arguments':arguments, u'IS_MAP':IS_MAP, u'wrapper':wrapper, u'NAME':NAME}, var) + var.registers([u'ADDER', u'C', u'NAME', u'wrapper', u'IS_MAP']) + @Js + def PyJs_anonymous_1503_(that, iterable, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'iterable':iterable, u'that':that}, var) + var.registers([u'iterable', u'that']) + var.get(u'anInstance')(var.get(u'that'), var.get(u'C'), var.get(u'NAME'), Js(u'_i')) + var.get(u'that').put(u'_i', (var.put(u'id',Js(var.get(u'id').to_number())+Js(1))-Js(1))) + var.get(u'that').put(u'_l', var.get(u'undefined')) + if (var.get(u'iterable')!=var.get(u'undefined')): + var.get(u'forOf')(var.get(u'iterable'), var.get(u'IS_MAP'), var.get(u'that').get(var.get(u'ADDER')), var.get(u'that')) + PyJs_anonymous_1503_._set_name(u'anonymous') + var.put(u'C', var.get(u'wrapper')(PyJs_anonymous_1503_)) + @Js + def PyJs_anonymous_1505_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'data', u'key']) + if var.get(u'isObject')(var.get(u'key')).neg(): + return Js(False) + var.put(u'data', var.get(u'getWeak')(var.get(u'key'))) + if PyJsStrictEq(var.get(u'data'),var.get(u'true')): + return var.get(u'uncaughtFrozenStore')(var.get(u"this")).callprop(u'delete', var.get(u'key')) + return ((var.get(u'data') and var.get(u'$has')(var.get(u'data'), var.get(u"this").get(u'_i'))) and var.get(u'data').delete(var.get(u"this").get(u'_i'))) + PyJs_anonymous_1505_._set_name(u'anonymous') + @Js + def PyJs_has_1506_(key, this, arguments, var=var): + var = Scope({u'this':this, u'has':PyJs_has_1506_, u'arguments':arguments, u'key':key}, var) + var.registers([u'data', u'key']) + if var.get(u'isObject')(var.get(u'key')).neg(): + return Js(False) + var.put(u'data', var.get(u'getWeak')(var.get(u'key'))) + if PyJsStrictEq(var.get(u'data'),var.get(u'true')): + return var.get(u'uncaughtFrozenStore')(var.get(u"this")).callprop(u'has', var.get(u'key')) + return (var.get(u'data') and var.get(u'$has')(var.get(u'data'), var.get(u"this").get(u'_i'))) + PyJs_has_1506_._set_name(u'has') + PyJs_Object_1504_ = Js({u'delete':PyJs_anonymous_1505_,u'has':PyJs_has_1506_}) + var.get(u'redefineAll')(var.get(u'C').get(u'prototype'), PyJs_Object_1504_) + return var.get(u'C') + PyJs_anonymous_1502_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1507_(that, key, value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value, u'key':key, u'that':that}, var) + var.registers([u'data', u'value', u'key', u'that']) + var.put(u'data', var.get(u'getWeak')(var.get(u'anObject')(var.get(u'key')), var.get(u'true'))) + if PyJsStrictEq(var.get(u'data'),var.get(u'true')): + var.get(u'uncaughtFrozenStore')(var.get(u'that')).callprop(u'set', var.get(u'key'), var.get(u'value')) + else: + var.get(u'data').put(var.get(u'that').get(u'_i'), var.get(u'value')) + return var.get(u'that') + PyJs_anonymous_1507_._set_name(u'anonymous') + PyJs_Object_1501_ = Js({u'getConstructor':PyJs_anonymous_1502_,u'def':PyJs_anonymous_1507_,u'ufstore':var.get(u'uncaughtFrozenStore')}) + var.get(u'module').put(u'exports', PyJs_Object_1501_) +PyJs_anonymous_1490_._set_name(u'anonymous') +PyJs_Object_1508_ = Js({u'./_an-instance':Js(131.0),u'./_an-object':Js(132.0),u'./_array-methods':Js(135.0),u'./_for-of':Js(153.0),u'./_has':Js(155.0),u'./_is-object':Js(162.0),u'./_meta':Js(170.0),u'./_redefine-all':Js(185.0)}) +@Js +def PyJs_anonymous_1509_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'fails', u'forOf', u'hide', u'anInstance', u'$export', u'setToStringTag', u'global', u'require', u'module', u'DESCRIPTORS', u'meta', u'redefineAll', u'each', u'isObject', u'dP']) + Js(u'use strict') + var.put(u'global', var.get(u'require')(Js(u'./_global'))) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + var.put(u'meta', var.get(u'require')(Js(u'./_meta'))) + var.put(u'fails', var.get(u'require')(Js(u'./_fails'))) + var.put(u'hide', var.get(u'require')(Js(u'./_hide'))) + var.put(u'redefineAll', var.get(u'require')(Js(u'./_redefine-all'))) + var.put(u'forOf', var.get(u'require')(Js(u'./_for-of'))) + var.put(u'anInstance', var.get(u'require')(Js(u'./_an-instance'))) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + var.put(u'setToStringTag', var.get(u'require')(Js(u'./_set-to-string-tag'))) + var.put(u'dP', var.get(u'require')(Js(u'./_object-dp')).get(u'f')) + var.put(u'each', var.get(u'require')(Js(u'./_array-methods'))(Js(0.0))) + var.put(u'DESCRIPTORS', var.get(u'require')(Js(u'./_descriptors'))) + @Js + def PyJs_anonymous_1510_(NAME, wrapper, methods, common, IS_MAP, IS_WEAK, this, arguments, var=var): + var = Scope({u'NAME':NAME, u'this':this, u'arguments':arguments, u'IS_MAP':IS_MAP, u'wrapper':wrapper, u'IS_WEAK':IS_WEAK, u'common':common, u'methods':methods}, var) + var.registers([u'C', u'wrapper', u'NAME', u'proto', u'IS_MAP', u'O', u'common', u'Base', u'IS_WEAK', u'ADDER', u'methods']) + var.put(u'Base', var.get(u'global').get(var.get(u'NAME'))) + var.put(u'C', var.get(u'Base')) + var.put(u'ADDER', (Js(u'set') if var.get(u'IS_MAP') else Js(u'add'))) + var.put(u'proto', (var.get(u'C') and var.get(u'C').get(u'prototype'))) + PyJs_Object_1511_ = Js({}) + var.put(u'O', PyJs_Object_1511_) + @Js + def PyJs_anonymous_1512_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'C').create().callprop(u'entries').callprop(u'next') + PyJs_anonymous_1512_._set_name(u'anonymous') + if ((var.get(u'DESCRIPTORS').neg() or (var.get(u'C',throw=False).typeof()!=Js(u'function'))) or (var.get(u'IS_WEAK') or (var.get(u'proto').get(u'forEach') and var.get(u'fails')(PyJs_anonymous_1512_).neg())).neg()): + var.put(u'C', var.get(u'common').callprop(u'getConstructor', var.get(u'wrapper'), var.get(u'NAME'), var.get(u'IS_MAP'), var.get(u'ADDER'))) + var.get(u'redefineAll')(var.get(u'C').get(u'prototype'), var.get(u'methods')) + var.get(u'meta').put(u'NEED', var.get(u'true')) + else: + @Js + def PyJs_anonymous_1513_(target, iterable, this, arguments, var=var): + var = Scope({u'this':this, u'target':target, u'iterable':iterable, u'arguments':arguments}, var) + var.registers([u'target', u'iterable']) + var.get(u'anInstance')(var.get(u'target'), var.get(u'C'), var.get(u'NAME'), Js(u'_c')) + var.get(u'target').put(u'_c', var.get(u'Base').create()) + if (var.get(u'iterable')!=var.get(u'undefined')): + var.get(u'forOf')(var.get(u'iterable'), var.get(u'IS_MAP'), var.get(u'target').get(var.get(u'ADDER')), var.get(u'target')) + PyJs_anonymous_1513_._set_name(u'anonymous') + var.put(u'C', var.get(u'wrapper')(PyJs_anonymous_1513_)) + @Js + def PyJs_anonymous_1514_(KEY, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'KEY':KEY}, var) + var.registers([u'IS_ADDER', u'KEY']) + var.put(u'IS_ADDER', ((var.get(u'KEY')==Js(u'add')) or (var.get(u'KEY')==Js(u'set')))) + if (var.get(u'proto').contains(var.get(u'KEY')) and (var.get(u'IS_WEAK') and (var.get(u'KEY')==Js(u'clear'))).neg()): + @Js + def PyJs_anonymous_1515_(a, b, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'b':b, u'arguments':arguments}, var) + var.registers([u'a', u'b', u'result']) + var.get(u'anInstance')(var.get(u"this"), var.get(u'C'), var.get(u'KEY')) + if ((var.get(u'IS_ADDER').neg() and var.get(u'IS_WEAK')) and var.get(u'isObject')(var.get(u'a')).neg()): + return (var.get(u'undefined') if (var.get(u'KEY')==Js(u'get')) else Js(False)) + var.put(u'result', var.get(u"this").get(u'_c').callprop(var.get(u'KEY'), (Js(0.0) if PyJsStrictEq(var.get(u'a'),Js(0.0)) else var.get(u'a')), var.get(u'b'))) + return (var.get(u"this") if var.get(u'IS_ADDER') else var.get(u'result')) + PyJs_anonymous_1515_._set_name(u'anonymous') + var.get(u'hide')(var.get(u'C').get(u'prototype'), var.get(u'KEY'), PyJs_anonymous_1515_) + PyJs_anonymous_1514_._set_name(u'anonymous') + var.get(u'each')(Js(u'add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON').callprop(u'split', Js(u',')), PyJs_anonymous_1514_) + if var.get(u'proto').contains(Js(u'size')): + @Js + def PyJs_anonymous_1517_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").get(u'_c').get(u'size') + PyJs_anonymous_1517_._set_name(u'anonymous') + PyJs_Object_1516_ = Js({u'get':PyJs_anonymous_1517_}) + var.get(u'dP')(var.get(u'C').get(u'prototype'), Js(u'size'), PyJs_Object_1516_) + var.get(u'setToStringTag')(var.get(u'C'), var.get(u'NAME')) + var.get(u'O').put(var.get(u'NAME'), var.get(u'C')) + var.get(u'$export')(((var.get(u'$export').get(u'G')+var.get(u'$export').get(u'W'))+var.get(u'$export').get(u'F')), var.get(u'O')) + if var.get(u'IS_WEAK').neg(): + var.get(u'common').callprop(u'setStrong', var.get(u'C'), var.get(u'NAME'), var.get(u'IS_MAP')) + return var.get(u'C') + PyJs_anonymous_1510_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1510_) +PyJs_anonymous_1509_._set_name(u'anonymous') +PyJs_Object_1518_ = Js({u'./_an-instance':Js(131.0),u'./_array-methods':Js(135.0),u'./_descriptors':Js(147.0),u'./_export':Js(151.0),u'./_fails':Js(152.0),u'./_for-of':Js(153.0),u'./_global':Js(154.0),u'./_hide':Js(156.0),u'./_is-object':Js(162.0),u'./_meta':Js(170.0),u'./_object-dp':Js(173.0),u'./_redefine-all':Js(185.0),u'./_set-to-string-tag':Js(189.0)}) +@Js +def PyJs_anonymous_1519_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'core', u'require', u'exports', u'module']) + PyJs_Object_1520_ = Js({u'version':Js(u'2.4.0')}) + var.put(u'core', var.get(u'module').put(u'exports', PyJs_Object_1520_)) + if (var.get(u'__e',throw=False).typeof()==Js(u'number')): + var.put(u'__e', var.get(u'core')) +PyJs_anonymous_1519_._set_name(u'anonymous') +PyJs_Object_1521_ = Js({}) +@Js +def PyJs_anonymous_1522_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'aFunction', u'require', u'exports', u'module']) + var.put(u'aFunction', var.get(u'require')(Js(u'./_a-function'))) + @Js + def PyJs_anonymous_1523_(fn, that, length, this, arguments, var=var): + var = Scope({u'this':this, u'length':length, u'arguments':arguments, u'fn':fn, u'that':that}, var) + var.registers([u'length', u'fn', u'that']) + var.get(u'aFunction')(var.get(u'fn')) + if PyJsStrictEq(var.get(u'that'),var.get(u'undefined')): + return var.get(u'fn') + while 1: + SWITCHED = False + CONDITION = (var.get(u'length')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(1.0)): + SWITCHED = True + @Js + def PyJs_anonymous_1524_(a, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'arguments':arguments}, var) + var.registers([u'a']) + return var.get(u'fn').callprop(u'call', var.get(u'that'), var.get(u'a')) + PyJs_anonymous_1524_._set_name(u'anonymous') + return PyJs_anonymous_1524_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(2.0)): + SWITCHED = True + @Js + def PyJs_anonymous_1525_(a, b, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'b':b, u'arguments':arguments}, var) + var.registers([u'a', u'b']) + return var.get(u'fn').callprop(u'call', var.get(u'that'), var.get(u'a'), var.get(u'b')) + PyJs_anonymous_1525_._set_name(u'anonymous') + return PyJs_anonymous_1525_ + if SWITCHED or PyJsStrictEq(CONDITION, Js(3.0)): + SWITCHED = True + @Js + def PyJs_anonymous_1526_(a, b, c, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'c':c, u'b':b, u'arguments':arguments}, var) + var.registers([u'a', u'c', u'b']) + return var.get(u'fn').callprop(u'call', var.get(u'that'), var.get(u'a'), var.get(u'b'), var.get(u'c')) + PyJs_anonymous_1526_._set_name(u'anonymous') + return PyJs_anonymous_1526_ + SWITCHED = True + break + @Js + def PyJs_anonymous_1527_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'fn').callprop(u'apply', var.get(u'that'), var.get(u'arguments')) + PyJs_anonymous_1527_._set_name(u'anonymous') + return PyJs_anonymous_1527_ + PyJs_anonymous_1523_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1523_) +PyJs_anonymous_1522_._set_name(u'anonymous') +PyJs_Object_1528_ = Js({u'./_a-function':Js(129.0)}) +@Js +def PyJs_anonymous_1529_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1530_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + if (var.get(u'it')==var.get(u'undefined')): + PyJsTempException = JsToPyException(var.get(u'TypeError')((Js(u"Can't call method on ")+var.get(u'it')))) + raise PyJsTempException + return var.get(u'it') + PyJs_anonymous_1530_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1530_) +PyJs_anonymous_1529_._set_name(u'anonymous') +PyJs_Object_1531_ = Js({}) +@Js +def PyJs_anonymous_1532_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1533_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + PyJs_Object_1534_ = Js({}) + @Js + def PyJs_anonymous_1536_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return Js(7.0) + PyJs_anonymous_1536_._set_name(u'anonymous') + PyJs_Object_1535_ = Js({u'get':PyJs_anonymous_1536_}) + return (var.get(u'Object').callprop(u'defineProperty', PyJs_Object_1534_, Js(u'a'), PyJs_Object_1535_).get(u'a')!=Js(7.0)) + PyJs_anonymous_1533_._set_name(u'anonymous') + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./_fails'))(PyJs_anonymous_1533_).neg()) +PyJs_anonymous_1532_._set_name(u'anonymous') +PyJs_Object_1537_ = Js({u'./_fails':Js(152.0)}) +@Js +def PyJs_anonymous_1538_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'is', u'module', u'isObject', u'document', u'require']) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + var.put(u'document', var.get(u'require')(Js(u'./_global')).get(u'document')) + var.put(u'is', (var.get(u'isObject')(var.get(u'document')) and var.get(u'isObject')(var.get(u'document').get(u'createElement')))) + @Js + def PyJs_anonymous_1539_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + PyJs_Object_1540_ = Js({}) + return (var.get(u'document').callprop(u'createElement', var.get(u'it')) if var.get(u'is') else PyJs_Object_1540_) + PyJs_anonymous_1539_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1539_) +PyJs_anonymous_1538_._set_name(u'anonymous') +PyJs_Object_1541_ = Js({u'./_global':Js(154.0),u'./_is-object':Js(162.0)}) +@Js +def PyJs_anonymous_1542_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'module').put(u'exports', Js(u'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf').callprop(u'split', Js(u','))) +PyJs_anonymous_1542_._set_name(u'anonymous') +PyJs_Object_1543_ = Js({}) +@Js +def PyJs_anonymous_1544_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'pIE', u'module', u'gOPS', u'getKeys']) + var.put(u'getKeys', var.get(u'require')(Js(u'./_object-keys'))) + var.put(u'gOPS', var.get(u'require')(Js(u'./_object-gops'))) + var.put(u'pIE', var.get(u'require')(Js(u'./_object-pie'))) + @Js + def PyJs_anonymous_1545_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'getSymbols', u'i', u'it', u'symbols', u'isEnum', u'result', u'key']) + var.put(u'result', var.get(u'getKeys')(var.get(u'it'))) + var.put(u'getSymbols', var.get(u'gOPS').get(u'f')) + if var.get(u'getSymbols'): + var.put(u'symbols', var.get(u'getSymbols')(var.get(u'it'))) + var.put(u'isEnum', var.get(u'pIE').get(u'f')) + var.put(u'i', Js(0.0)) + while (var.get(u'symbols').get(u'length')>var.get(u'i')): + if var.get(u'isEnum').callprop(u'call', var.get(u'it'), var.put(u'key', var.get(u'symbols').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1))))): + var.get(u'result').callprop(u'push', var.get(u'key')) + return var.get(u'result') + PyJs_anonymous_1545_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1545_) +PyJs_anonymous_1544_._set_name(u'anonymous') +PyJs_Object_1546_ = Js({u'./_object-gops':Js(178.0),u'./_object-keys':Js(181.0),u'./_object-pie':Js(182.0)}) +@Js +def PyJs_anonymous_1547_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'core', u'exports', u'hide', u'$export', u'require', u'global', u'ctx', u'module', u'PROTOTYPE']) + var.put(u'global', var.get(u'require')(Js(u'./_global'))) + var.put(u'core', var.get(u'require')(Js(u'./_core'))) + var.put(u'ctx', var.get(u'require')(Js(u'./_ctx'))) + var.put(u'hide', var.get(u'require')(Js(u'./_hide'))) + var.put(u'PROTOTYPE', Js(u'prototype')) + @Js + def PyJs_anonymous_1548_(type, name, source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'type':type, u'name':name, u'arguments':arguments}, var) + var.registers([u'IS_STATIC', u'IS_WRAP', u'exports', u'IS_GLOBAL', u'target', u'expProto', u'name', u'source', u'IS_PROTO', u'key', u'own', u'IS_FORCED', u'type', u'IS_BIND', u'out']) + var.put(u'IS_FORCED', (var.get(u'type')&var.get(u'$export').get(u'F'))) + var.put(u'IS_GLOBAL', (var.get(u'type')&var.get(u'$export').get(u'G'))) + var.put(u'IS_STATIC', (var.get(u'type')&var.get(u'$export').get(u'S'))) + var.put(u'IS_PROTO', (var.get(u'type')&var.get(u'$export').get(u'P'))) + var.put(u'IS_BIND', (var.get(u'type')&var.get(u'$export').get(u'B'))) + var.put(u'IS_WRAP', (var.get(u'type')&var.get(u'$export').get(u'W'))) + PyJs_Object_1549_ = Js({}) + var.put(u'exports', (var.get(u'core') if var.get(u'IS_GLOBAL') else (var.get(u'core').get(var.get(u'name')) or var.get(u'core').put(var.get(u'name'), PyJs_Object_1549_)))) + var.put(u'expProto', var.get(u'exports').get(var.get(u'PROTOTYPE'))) + PyJs_Object_1550_ = Js({}) + var.put(u'target', (var.get(u'global') if var.get(u'IS_GLOBAL') else (var.get(u'global').get(var.get(u'name')) if var.get(u'IS_STATIC') else (var.get(u'global').get(var.get(u'name')) or PyJs_Object_1550_).get(var.get(u'PROTOTYPE'))))) + if var.get(u'IS_GLOBAL'): + var.put(u'source', var.get(u'name')) + for PyJsTemp in var.get(u'source'): + var.put(u'key', PyJsTemp) + var.put(u'own', ((var.get(u'IS_FORCED').neg() and var.get(u'target')) and PyJsStrictNeq(var.get(u'target').get(var.get(u'key')),var.get(u'undefined')))) + if (var.get(u'own') and var.get(u'exports').contains(var.get(u'key'))): + continue + var.put(u'out', (var.get(u'target').get(var.get(u'key')) if var.get(u'own') else var.get(u'source').get(var.get(u'key')))) + def PyJs_LONG_1553_(var=var): + @Js + def PyJs_anonymous_1551_(C, this, arguments, var=var): + var = Scope({u'this':this, u'C':C, u'arguments':arguments}, var) + var.registers([u'C', u'F']) + @Js + def PyJs_anonymous_1552_(a, b, c, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'c':c, u'b':b, u'arguments':arguments}, var) + var.registers([u'a', u'c', u'b']) + if var.get(u"this").instanceof(var.get(u'C')): + while 1: + SWITCHED = False + CONDITION = (var.get(u'arguments').get(u'length')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(0.0)): + SWITCHED = True + return var.get(u'C').create() + if SWITCHED or PyJsStrictEq(CONDITION, Js(1.0)): + SWITCHED = True + return var.get(u'C').create(var.get(u'a')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(2.0)): + SWITCHED = True + return var.get(u'C').create(var.get(u'a'), var.get(u'b')) + SWITCHED = True + break + return var.get(u'C').create(var.get(u'a'), var.get(u'b'), var.get(u'c')) + return var.get(u'C').callprop(u'apply', var.get(u"this"), var.get(u'arguments')) + PyJs_anonymous_1552_._set_name(u'anonymous') + var.put(u'F', PyJs_anonymous_1552_) + var.get(u'F').put(var.get(u'PROTOTYPE'), var.get(u'C').get(var.get(u'PROTOTYPE'))) + return var.get(u'F') + PyJs_anonymous_1551_._set_name(u'anonymous') + return (var.get(u'ctx')(var.get(u'out'), var.get(u'global')) if (var.get(u'IS_BIND') and var.get(u'own')) else (PyJs_anonymous_1551_(var.get(u'out')) if (var.get(u'IS_WRAP') and (var.get(u'target').get(var.get(u'key'))==var.get(u'out'))) else (var.get(u'ctx')(var.get(u'Function').get(u'call'), var.get(u'out')) if (var.get(u'IS_PROTO') and (var.get(u'out',throw=False).typeof()==Js(u'function'))) else var.get(u'out')))) + var.get(u'exports').put(var.get(u'key'), (var.get(u'source').get(var.get(u'key')) if (var.get(u'IS_GLOBAL') and (var.get(u'target').get(var.get(u'key')).typeof()!=Js(u'function'))) else PyJs_LONG_1553_())) + if var.get(u'IS_PROTO'): + PyJs_Object_1554_ = Js({}) + (var.get(u'exports').get(u'virtual') or var.get(u'exports').put(u'virtual', PyJs_Object_1554_)).put(var.get(u'key'), var.get(u'out')) + if (((var.get(u'type')&var.get(u'$export').get(u'R')) and var.get(u'expProto')) and var.get(u'expProto').get(var.get(u'key')).neg()): + var.get(u'hide')(var.get(u'expProto'), var.get(u'key'), var.get(u'out')) + PyJs_anonymous_1548_._set_name(u'anonymous') + var.put(u'$export', PyJs_anonymous_1548_) + var.get(u'$export').put(u'F', Js(1.0)) + var.get(u'$export').put(u'G', Js(2.0)) + var.get(u'$export').put(u'S', Js(4.0)) + var.get(u'$export').put(u'P', Js(8.0)) + var.get(u'$export').put(u'B', Js(16.0)) + var.get(u'$export').put(u'W', Js(32.0)) + var.get(u'$export').put(u'U', Js(64.0)) + var.get(u'$export').put(u'R', Js(128.0)) + var.get(u'module').put(u'exports', var.get(u'$export')) +PyJs_anonymous_1547_._set_name(u'anonymous') +PyJs_Object_1555_ = Js({u'./_core':Js(144.0),u'./_ctx':Js(145.0),u'./_global':Js(154.0),u'./_hide':Js(156.0)}) +@Js +def PyJs_anonymous_1556_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1557_(PyJsArg_65786563_, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'exec':PyJsArg_65786563_}, var) + var.registers([u'exec']) + try: + return var.get(u'exec')().neg().neg() + except PyJsException as PyJsTempException: + PyJsHolder_65_66067223 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + return var.get(u'true') + finally: + if PyJsHolder_65_66067223 is not None: + var.own[u'e'] = PyJsHolder_65_66067223 + else: + del var.own[u'e'] + del PyJsHolder_65_66067223 + PyJs_anonymous_1557_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1557_) +PyJs_anonymous_1556_._set_name(u'anonymous') +PyJs_Object_1558_ = Js({}) +@Js +def PyJs_anonymous_1559_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'getIterFn', u'RETURN', u'require', u'ctx', u'module', u'BREAK', u'toLength', u'call', u'isArrayIter', u'anObject']) + var.put(u'ctx', var.get(u'require')(Js(u'./_ctx'))) + var.put(u'call', var.get(u'require')(Js(u'./_iter-call'))) + var.put(u'isArrayIter', var.get(u'require')(Js(u'./_is-array-iter'))) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + var.put(u'toLength', var.get(u'require')(Js(u'./_to-length'))) + var.put(u'getIterFn', var.get(u'require')(Js(u'./core.get-iterator-method'))) + PyJs_Object_1560_ = Js({}) + var.put(u'BREAK', PyJs_Object_1560_) + PyJs_Object_1561_ = Js({}) + var.put(u'RETURN', PyJs_Object_1561_) + @Js + def PyJs_anonymous_1562_(iterable, entries, fn, that, ITERATOR, this, arguments, var=var): + var = Scope({u'iterable':iterable, u'ITERATOR':ITERATOR, u'that':that, u'this':this, u'entries':entries, u'fn':fn, u'arguments':arguments}, var) + var.registers([u'iterFn', u'index', u'ITERATOR', u'iterator', u'f', u'that', u'step', u'length', u'result', u'entries', u'fn', u'iterable']) + @Js + def PyJs_anonymous_1563_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'iterable') + PyJs_anonymous_1563_._set_name(u'anonymous') + var.put(u'iterFn', (PyJs_anonymous_1563_ if var.get(u'ITERATOR') else var.get(u'getIterFn')(var.get(u'iterable')))) + var.put(u'f', var.get(u'ctx')(var.get(u'fn'), var.get(u'that'), (Js(2.0) if var.get(u'entries') else Js(1.0)))) + var.put(u'index', Js(0.0)) + if (var.get(u'iterFn',throw=False).typeof()!=Js(u'function')): + PyJsTempException = JsToPyException(var.get(u'TypeError')((var.get(u'iterable')+Js(u' is not iterable!')))) + raise PyJsTempException + if var.get(u'isArrayIter')(var.get(u'iterFn')): + #for JS loop + var.put(u'length', var.get(u'toLength')(var.get(u'iterable').get(u'length'))) + while (var.get(u'length')>var.get(u'index')): + try: + var.put(u'result', (var.get(u'f')(var.get(u'anObject')(var.put(u'step', var.get(u'iterable').get(var.get(u'index')))).get(u'0'), var.get(u'step').get(u'1')) if var.get(u'entries') else var.get(u'f')(var.get(u'iterable').get(var.get(u'index'))))) + if (PyJsStrictEq(var.get(u'result'),var.get(u'BREAK')) or PyJsStrictEq(var.get(u'result'),var.get(u'RETURN'))): + return var.get(u'result') + finally: + (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))-Js(1)) + else: + #for JS loop + var.put(u'iterator', var.get(u'iterFn').callprop(u'call', var.get(u'iterable'))) + while var.put(u'step', var.get(u'iterator').callprop(u'next')).get(u'done').neg(): + var.put(u'result', var.get(u'call')(var.get(u'iterator'), var.get(u'f'), var.get(u'step').get(u'value'), var.get(u'entries'))) + if (PyJsStrictEq(var.get(u'result'),var.get(u'BREAK')) or PyJsStrictEq(var.get(u'result'),var.get(u'RETURN'))): + return var.get(u'result') + + PyJs_anonymous_1562_._set_name(u'anonymous') + var.put(u'exports', var.get(u'module').put(u'exports', PyJs_anonymous_1562_)) + var.get(u'exports').put(u'BREAK', var.get(u'BREAK')) + var.get(u'exports').put(u'RETURN', var.get(u'RETURN')) +PyJs_anonymous_1559_._set_name(u'anonymous') +PyJs_Object_1564_ = Js({u'./_an-object':Js(132.0),u'./_ctx':Js(145.0),u'./_is-array-iter':Js(160.0),u'./_iter-call':Js(163.0),u'./_to-length':Js(196.0),u'./core.get-iterator-method':Js(203.0)}) +@Js +def PyJs_anonymous_1565_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'global', u'exports', u'module']) + var.put(u'global', var.get(u'module').put(u'exports', (var.get(u'window') if ((var.get(u'window',throw=False).typeof()!=Js(u'undefined')) and (var.get(u'window').get(u'Math')==var.get(u'Math'))) else (var.get(u'self') if ((var.get(u'self',throw=False).typeof()!=Js(u'undefined')) and (var.get(u'self').get(u'Math')==var.get(u'Math'))) else var.get(u'Function')(Js(u'return this'))())))) + if (var.get(u'__g',throw=False).typeof()==Js(u'number')): + var.put(u'__g', var.get(u'global')) +PyJs_anonymous_1565_._set_name(u'anonymous') +PyJs_Object_1566_ = Js({}) +@Js +def PyJs_anonymous_1567_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'hasOwnProperty', u'module']) + PyJs_Object_1568_ = Js({}) + var.put(u'hasOwnProperty', PyJs_Object_1568_.get(u'hasOwnProperty')) + @Js + def PyJs_anonymous_1569_(it, key, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'key':key, u'arguments':arguments}, var) + var.registers([u'it', u'key']) + return var.get(u'hasOwnProperty').callprop(u'call', var.get(u'it'), var.get(u'key')) + PyJs_anonymous_1569_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1569_) +PyJs_anonymous_1567_._set_name(u'anonymous') +PyJs_Object_1570_ = Js({}) +@Js +def PyJs_anonymous_1571_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'module', u'require', u'exports', u'createDesc', u'dP']) + var.put(u'dP', var.get(u'require')(Js(u'./_object-dp'))) + var.put(u'createDesc', var.get(u'require')(Js(u'./_property-desc'))) + @Js + def PyJs_anonymous_1572_(object, key, value, this, arguments, var=var): + var = Scope({u'this':this, u'object':object, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'object', u'value', u'key']) + return var.get(u'dP').callprop(u'f', var.get(u'object'), var.get(u'key'), var.get(u'createDesc')(Js(1.0), var.get(u'value'))) + PyJs_anonymous_1572_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1573_(object, key, value, this, arguments, var=var): + var = Scope({u'this':this, u'object':object, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'object', u'value', u'key']) + var.get(u'object').put(var.get(u'key'), var.get(u'value')) + return var.get(u'object') + PyJs_anonymous_1573_._set_name(u'anonymous') + var.get(u'module').put(u'exports', (PyJs_anonymous_1572_ if var.get(u'require')(Js(u'./_descriptors')) else PyJs_anonymous_1573_)) +PyJs_anonymous_1571_._set_name(u'anonymous') +PyJs_Object_1574_ = Js({u'./_descriptors':Js(147.0),u'./_object-dp':Js(173.0),u'./_property-desc':Js(184.0)}) +@Js +def PyJs_anonymous_1575_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'module').put(u'exports', (var.get(u'require')(Js(u'./_global')).get(u'document') and var.get(u'document').get(u'documentElement'))) +PyJs_anonymous_1575_._set_name(u'anonymous') +PyJs_Object_1576_ = Js({u'./_global':Js(154.0)}) +@Js +def PyJs_anonymous_1577_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1578_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_anonymous_1580_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return Js(7.0) + PyJs_anonymous_1580_._set_name(u'anonymous') + PyJs_Object_1579_ = Js({u'get':PyJs_anonymous_1580_}) + return (var.get(u'Object').callprop(u'defineProperty', var.get(u'require')(Js(u'./_dom-create'))(Js(u'div')), Js(u'a'), PyJs_Object_1579_).get(u'a')!=Js(7.0)) + PyJs_anonymous_1578_._set_name(u'anonymous') + var.get(u'module').put(u'exports', (var.get(u'require')(Js(u'./_descriptors')).neg() and var.get(u'require')(Js(u'./_fails'))(PyJs_anonymous_1578_).neg())) +PyJs_anonymous_1577_._set_name(u'anonymous') +PyJs_Object_1581_ = Js({u'./_descriptors':Js(147.0),u'./_dom-create':Js(148.0),u'./_fails':Js(152.0)}) +@Js +def PyJs_anonymous_1582_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module', u'cof']) + var.put(u'cof', var.get(u'require')(Js(u'./_cof'))) + @Js + def PyJs_anonymous_1583_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return (var.get(u'it').callprop(u'split', Js(u'')) if (var.get(u'cof')(var.get(u'it'))==Js(u'String')) else var.get(u'Object')(var.get(u'it'))) + PyJs_anonymous_1583_._set_name(u'anonymous') + var.get(u'module').put(u'exports', (var.get(u'Object') if var.get(u'Object')(Js(u'z')).callprop(u'propertyIsEnumerable', Js(0.0)) else PyJs_anonymous_1583_)) +PyJs_anonymous_1582_._set_name(u'anonymous') +PyJs_Object_1584_ = Js({u'./_cof':Js(139.0)}) +@Js +def PyJs_anonymous_1585_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'ITERATOR', u'ArrayProto', u'require', u'module', u'Iterators']) + var.put(u'Iterators', var.get(u'require')(Js(u'./_iterators'))) + var.put(u'ITERATOR', var.get(u'require')(Js(u'./_wks'))(Js(u'iterator'))) + var.put(u'ArrayProto', var.get(u'Array').get(u'prototype')) + @Js + def PyJs_anonymous_1586_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return (PyJsStrictNeq(var.get(u'it'),var.get(u'undefined')) and (PyJsStrictEq(var.get(u'Iterators').get(u'Array'),var.get(u'it')) or PyJsStrictEq(var.get(u'ArrayProto').get(var.get(u'ITERATOR')),var.get(u'it')))) + PyJs_anonymous_1586_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1586_) +PyJs_anonymous_1585_._set_name(u'anonymous') +PyJs_Object_1587_ = Js({u'./_iterators':Js(167.0),u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1588_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module', u'cof']) + var.put(u'cof', var.get(u'require')(Js(u'./_cof'))) + @Js + def PyJs_isArray_1589_(arg, this, arguments, var=var): + var = Scope({u'this':this, u'isArray':PyJs_isArray_1589_, u'arguments':arguments, u'arg':arg}, var) + var.registers([u'arg']) + return (var.get(u'cof')(var.get(u'arg'))==Js(u'Array')) + PyJs_isArray_1589_._set_name(u'isArray') + var.get(u'module').put(u'exports', (var.get(u'Array').get(u'isArray') or PyJs_isArray_1589_)) +PyJs_anonymous_1588_._set_name(u'anonymous') +PyJs_Object_1590_ = Js({u'./_cof':Js(139.0)}) +@Js +def PyJs_anonymous_1591_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1592_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return (PyJsStrictNeq(var.get(u'it'),var.get(u"null")) if PyJsStrictEq(var.get(u'it',throw=False).typeof(),Js(u'object')) else PyJsStrictEq(var.get(u'it',throw=False).typeof(),Js(u'function'))) + PyJs_anonymous_1592_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1592_) +PyJs_anonymous_1591_._set_name(u'anonymous') +PyJs_Object_1593_ = Js({}) +@Js +def PyJs_anonymous_1594_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'anObject', u'exports', u'module']) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + @Js + def PyJs_anonymous_1595_(iterator, fn, value, entries, this, arguments, var=var): + var = Scope({u'fn':fn, u'iterator':iterator, u'entries':entries, u'this':this, u'value':value, u'arguments':arguments}, var) + var.registers([u'fn', u'value', u'iterator', u'ret', u'entries']) + try: + return (var.get(u'fn')(var.get(u'anObject')(var.get(u'value')).get(u'0'), var.get(u'value').get(u'1')) if var.get(u'entries') else var.get(u'fn')(var.get(u'value'))) + except PyJsException as PyJsTempException: + PyJsHolder_65_64523188 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + var.put(u'ret', var.get(u'iterator').get(u'return')) + if PyJsStrictNeq(var.get(u'ret'),var.get(u'undefined')): + var.get(u'anObject')(var.get(u'ret').callprop(u'call', var.get(u'iterator'))) + PyJsTempException = JsToPyException(var.get(u'e')) + raise PyJsTempException + finally: + if PyJsHolder_65_64523188 is not None: + var.own[u'e'] = PyJsHolder_65_64523188 + else: + del var.own[u'e'] + del PyJsHolder_65_64523188 + PyJs_anonymous_1595_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1595_) +PyJs_anonymous_1594_._set_name(u'anonymous') +PyJs_Object_1596_ = Js({u'./_an-object':Js(132.0)}) +@Js +def PyJs_anonymous_1597_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'setToStringTag', u'exports', u'IteratorPrototype', u'create', u'module', u'descriptor', u'require']) + Js(u'use strict') + var.put(u'create', var.get(u'require')(Js(u'./_object-create'))) + var.put(u'descriptor', var.get(u'require')(Js(u'./_property-desc'))) + var.put(u'setToStringTag', var.get(u'require')(Js(u'./_set-to-string-tag'))) + PyJs_Object_1598_ = Js({}) + var.put(u'IteratorPrototype', PyJs_Object_1598_) + @Js + def PyJs_anonymous_1599_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this") + PyJs_anonymous_1599_._set_name(u'anonymous') + var.get(u'require')(Js(u'./_hide'))(var.get(u'IteratorPrototype'), var.get(u'require')(Js(u'./_wks'))(Js(u'iterator')), PyJs_anonymous_1599_) + @Js + def PyJs_anonymous_1600_(Constructor, NAME, next, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'next':next, u'NAME':NAME, u'Constructor':Constructor}, var) + var.registers([u'next', u'NAME', u'Constructor']) + PyJs_Object_1601_ = Js({u'next':var.get(u'descriptor')(Js(1.0), var.get(u'next'))}) + var.get(u'Constructor').put(u'prototype', var.get(u'create')(var.get(u'IteratorPrototype'), PyJs_Object_1601_)) + var.get(u'setToStringTag')(var.get(u'Constructor'), (var.get(u'NAME')+Js(u' Iterator'))) + PyJs_anonymous_1600_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1600_) +PyJs_anonymous_1597_._set_name(u'anonymous') +PyJs_Object_1602_ = Js({u'./_hide':Js(156.0),u'./_object-create':Js(172.0),u'./_property-desc':Js(184.0),u'./_set-to-string-tag':Js(189.0),u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1603_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'returnThis', u'$iterCreate', u'redefine', u'hide', u'ITERATOR', u'KEYS', u'$export', u'setToStringTag', u'BUGGY', u'require', u'LIBRARY', u'getPrototypeOf', u'Iterators', u'VALUES', u'module', u'has', u'FF_ITERATOR', u'exports']) + Js(u'use strict') + var.put(u'LIBRARY', var.get(u'require')(Js(u'./_library'))) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + var.put(u'redefine', var.get(u'require')(Js(u'./_redefine'))) + var.put(u'hide', var.get(u'require')(Js(u'./_hide'))) + var.put(u'has', var.get(u'require')(Js(u'./_has'))) + var.put(u'Iterators', var.get(u'require')(Js(u'./_iterators'))) + var.put(u'$iterCreate', var.get(u'require')(Js(u'./_iter-create'))) + var.put(u'setToStringTag', var.get(u'require')(Js(u'./_set-to-string-tag'))) + var.put(u'getPrototypeOf', var.get(u'require')(Js(u'./_object-gpo'))) + var.put(u'ITERATOR', var.get(u'require')(Js(u'./_wks'))(Js(u'iterator'))) + var.put(u'BUGGY', (Js([]).get(u'keys') and Js([]).callprop(u'keys').contains(Js(u'next'))).neg()) + var.put(u'FF_ITERATOR', Js(u'@@iterator')) + var.put(u'KEYS', Js(u'keys')) + var.put(u'VALUES', Js(u'values')) + @Js + def PyJs_anonymous_1604_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this") + PyJs_anonymous_1604_._set_name(u'anonymous') + var.put(u'returnThis', PyJs_anonymous_1604_) + @Js + def PyJs_anonymous_1605_(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED, this, arguments, var=var): + var = Scope({u'FORCED':FORCED, u'NAME':NAME, u'DEFAULT':DEFAULT, u'Constructor':Constructor, u'next':next, u'this':this, u'Base':Base, u'arguments':arguments, u'IS_SET':IS_SET}, var) + var.registers([u'DEF_VALUES', u'Base', u'$entries', u'methods', u'$default', u'proto', u'DEFAULT', u'IteratorPrototype', u'Constructor', u'getMethod', u'next', u'IS_SET', u'$anyNative', u'TAG', u'key', u'VALUES_BUG', u'$native', u'FORCED', u'NAME']) + var.get(u'$iterCreate')(var.get(u'Constructor'), var.get(u'NAME'), var.get(u'next')) + @Js + def PyJs_anonymous_1606_(kind, this, arguments, var=var): + var = Scope({u'this':this, u'kind':kind, u'arguments':arguments}, var) + var.registers([u'kind']) + if (var.get(u'BUGGY').neg() and var.get(u'proto').contains(var.get(u'kind'))): + return var.get(u'proto').get(var.get(u'kind')) + while 1: + SWITCHED = False + CONDITION = (var.get(u'kind')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'KEYS')): + SWITCHED = True + @Js + def PyJs_keys_1607_(this, arguments, var=var): + var = Scope({u'this':this, u'keys':PyJs_keys_1607_, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'Constructor').create(var.get(u"this"), var.get(u'kind')) + PyJs_keys_1607_._set_name(u'keys') + return PyJs_keys_1607_ + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'VALUES')): + SWITCHED = True + @Js + def PyJs_values_1608_(this, arguments, var=var): + var = Scope({u'this':this, u'values':PyJs_values_1608_, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'Constructor').create(var.get(u"this"), var.get(u'kind')) + PyJs_values_1608_._set_name(u'values') + return PyJs_values_1608_ + SWITCHED = True + break + @Js + def PyJs_entries_1609_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'entries':PyJs_entries_1609_}, var) + var.registers([]) + return var.get(u'Constructor').create(var.get(u"this"), var.get(u'kind')) + PyJs_entries_1609_._set_name(u'entries') + return PyJs_entries_1609_ + PyJs_anonymous_1606_._set_name(u'anonymous') + var.put(u'getMethod', PyJs_anonymous_1606_) + var.put(u'TAG', (var.get(u'NAME')+Js(u' Iterator'))) + var.put(u'DEF_VALUES', (var.get(u'DEFAULT')==var.get(u'VALUES'))) + var.put(u'VALUES_BUG', Js(False)) + var.put(u'proto', var.get(u'Base').get(u'prototype')) + var.put(u'$native', ((var.get(u'proto').get(var.get(u'ITERATOR')) or var.get(u'proto').get(var.get(u'FF_ITERATOR'))) or (var.get(u'DEFAULT') and var.get(u'proto').get(var.get(u'DEFAULT'))))) + var.put(u'$default', (var.get(u'$native') or var.get(u'getMethod')(var.get(u'DEFAULT')))) + var.put(u'$entries', ((var.get(u'$default') if var.get(u'DEF_VALUES').neg() else var.get(u'getMethod')(Js(u'entries'))) if var.get(u'DEFAULT') else var.get(u'undefined'))) + var.put(u'$anyNative', ((var.get(u'proto').get(u'entries') or var.get(u'$native')) if (var.get(u'NAME')==Js(u'Array')) else var.get(u'$native'))) + if var.get(u'$anyNative'): + var.put(u'IteratorPrototype', var.get(u'getPrototypeOf')(var.get(u'$anyNative').callprop(u'call', var.get(u'Base').create()))) + if PyJsStrictNeq(var.get(u'IteratorPrototype'),var.get(u'Object').get(u'prototype')): + var.get(u'setToStringTag')(var.get(u'IteratorPrototype'), var.get(u'TAG'), var.get(u'true')) + if (var.get(u'LIBRARY').neg() and var.get(u'has')(var.get(u'IteratorPrototype'), var.get(u'ITERATOR')).neg()): + var.get(u'hide')(var.get(u'IteratorPrototype'), var.get(u'ITERATOR'), var.get(u'returnThis')) + if ((var.get(u'DEF_VALUES') and var.get(u'$native')) and PyJsStrictNeq(var.get(u'$native').get(u'name'),var.get(u'VALUES'))): + var.put(u'VALUES_BUG', var.get(u'true')) + @Js + def PyJs_values_1610_(this, arguments, var=var): + var = Scope({u'this':this, u'values':PyJs_values_1610_, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'$native').callprop(u'call', var.get(u"this")) + PyJs_values_1610_._set_name(u'values') + var.put(u'$default', PyJs_values_1610_) + if ((var.get(u'LIBRARY').neg() or var.get(u'FORCED')) and ((var.get(u'BUGGY') or var.get(u'VALUES_BUG')) or var.get(u'proto').get(var.get(u'ITERATOR')).neg())): + var.get(u'hide')(var.get(u'proto'), var.get(u'ITERATOR'), var.get(u'$default')) + var.get(u'Iterators').put(var.get(u'NAME'), var.get(u'$default')) + var.get(u'Iterators').put(var.get(u'TAG'), var.get(u'returnThis')) + if var.get(u'DEFAULT'): + PyJs_Object_1611_ = Js({u'values':(var.get(u'$default') if var.get(u'DEF_VALUES') else var.get(u'getMethod')(var.get(u'VALUES'))),u'keys':(var.get(u'$default') if var.get(u'IS_SET') else var.get(u'getMethod')(var.get(u'KEYS'))),u'entries':var.get(u'$entries')}) + var.put(u'methods', PyJs_Object_1611_) + if var.get(u'FORCED'): + for PyJsTemp in var.get(u'methods'): + var.put(u'key', PyJsTemp) + if var.get(u'proto').contains(var.get(u'key')).neg(): + var.get(u'redefine')(var.get(u'proto'), var.get(u'key'), var.get(u'methods').get(var.get(u'key'))) + else: + var.get(u'$export')((var.get(u'$export').get(u'P')+(var.get(u'$export').get(u'F')*(var.get(u'BUGGY') or var.get(u'VALUES_BUG')))), var.get(u'NAME'), var.get(u'methods')) + return var.get(u'methods') + PyJs_anonymous_1605_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1605_) +PyJs_anonymous_1603_._set_name(u'anonymous') +PyJs_Object_1612_ = Js({u'./_export':Js(151.0),u'./_has':Js(155.0),u'./_hide':Js(156.0),u'./_iter-create':Js(164.0),u'./_iterators':Js(167.0),u'./_library':Js(169.0),u'./_object-gpo':Js(179.0),u'./_redefine':Js(186.0),u'./_set-to-string-tag':Js(189.0),u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1613_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1614_(done, value, this, arguments, var=var): + var = Scope({u'this':this, u'done':done, u'arguments':arguments, u'value':value}, var) + var.registers([u'done', u'value']) + PyJs_Object_1615_ = Js({u'value':var.get(u'value'),u'done':var.get(u'done').neg().neg()}) + return PyJs_Object_1615_ + PyJs_anonymous_1614_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1614_) +PyJs_anonymous_1613_._set_name(u'anonymous') +PyJs_Object_1616_ = Js({}) +@Js +def PyJs_anonymous_1617_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1618_ = Js({}) + var.get(u'module').put(u'exports', PyJs_Object_1618_) +PyJs_anonymous_1617_._set_name(u'anonymous') +PyJs_Object_1619_ = Js({}) +@Js +def PyJs_anonymous_1620_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'toIObject', u'exports', u'module', u'getKeys']) + var.put(u'getKeys', var.get(u'require')(Js(u'./_object-keys'))) + var.put(u'toIObject', var.get(u'require')(Js(u'./_to-iobject'))) + @Js + def PyJs_anonymous_1621_(object, el, this, arguments, var=var): + var = Scope({u'this':this, u'el':el, u'object':object, u'arguments':arguments}, var) + var.registers([u'index', u'el', u'keys', u'object', u'O', u'length', u'key']) + var.put(u'O', var.get(u'toIObject')(var.get(u'object'))) + var.put(u'keys', var.get(u'getKeys')(var.get(u'O'))) + var.put(u'length', var.get(u'keys').get(u'length')) + var.put(u'index', Js(0.0)) + while (var.get(u'length')>var.get(u'index')): + if PyJsStrictEq(var.get(u'O').get(var.put(u'key', var.get(u'keys').get((var.put(u'index',Js(var.get(u'index').to_number())+Js(1))-Js(1))))),var.get(u'el')): + return var.get(u'key') + PyJs_anonymous_1621_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1621_) +PyJs_anonymous_1620_._set_name(u'anonymous') +PyJs_Object_1622_ = Js({u'./_object-keys':Js(181.0),u'./_to-iobject':Js(195.0)}) +@Js +def PyJs_anonymous_1623_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'module').put(u'exports', var.get(u'true')) +PyJs_anonymous_1623_._set_name(u'anonymous') +PyJs_Object_1624_ = Js({}) +@Js +def PyJs_anonymous_1625_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'fastKey', u'FREEZE', u'getWeak', u'require', u'isExtensible', u'exports', u'module', u'id', u'setMeta', u'META', u'meta', u'onFreeze', u'has', u'setDesc', u'isObject']) + var.put(u'META', var.get(u'require')(Js(u'./_uid'))(Js(u'meta'))) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + var.put(u'has', var.get(u'require')(Js(u'./_has'))) + var.put(u'setDesc', var.get(u'require')(Js(u'./_object-dp')).get(u'f')) + var.put(u'id', Js(0.0)) + @Js + def PyJs_anonymous_1626_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'true') + PyJs_anonymous_1626_._set_name(u'anonymous') + var.put(u'isExtensible', (var.get(u'Object').get(u'isExtensible') or PyJs_anonymous_1626_)) + @Js + def PyJs_anonymous_1627_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + PyJs_Object_1628_ = Js({}) + return var.get(u'isExtensible')(var.get(u'Object').callprop(u'preventExtensions', PyJs_Object_1628_)) + PyJs_anonymous_1627_._set_name(u'anonymous') + var.put(u'FREEZE', var.get(u'require')(Js(u'./_fails'))(PyJs_anonymous_1627_).neg()) + @Js + def PyJs_anonymous_1629_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + PyJs_Object_1632_ = Js({}) + PyJs_Object_1631_ = Js({u'i':(Js(u'O')+var.put(u'id',Js(var.get(u'id').to_number())+Js(1))),u'w':PyJs_Object_1632_}) + PyJs_Object_1630_ = Js({u'value':PyJs_Object_1631_}) + var.get(u'setDesc')(var.get(u'it'), var.get(u'META'), PyJs_Object_1630_) + PyJs_anonymous_1629_._set_name(u'anonymous') + var.put(u'setMeta', PyJs_anonymous_1629_) + @Js + def PyJs_anonymous_1633_(it, create, this, arguments, var=var): + var = Scope({u'this':this, u'create':create, u'it':it, u'arguments':arguments}, var) + var.registers([u'create', u'it']) + if var.get(u'isObject')(var.get(u'it')).neg(): + return (var.get(u'it') if (var.get(u'it',throw=False).typeof()==Js(u'symbol')) else ((Js(u'S') if (var.get(u'it',throw=False).typeof()==Js(u'string')) else Js(u'P'))+var.get(u'it'))) + if var.get(u'has')(var.get(u'it'), var.get(u'META')).neg(): + if var.get(u'isExtensible')(var.get(u'it')).neg(): + return Js(u'F') + if var.get(u'create').neg(): + return Js(u'E') + var.get(u'setMeta')(var.get(u'it')) + return var.get(u'it').get(var.get(u'META')).get(u'i') + PyJs_anonymous_1633_._set_name(u'anonymous') + var.put(u'fastKey', PyJs_anonymous_1633_) + @Js + def PyJs_anonymous_1634_(it, create, this, arguments, var=var): + var = Scope({u'this':this, u'create':create, u'it':it, u'arguments':arguments}, var) + var.registers([u'create', u'it']) + if var.get(u'has')(var.get(u'it'), var.get(u'META')).neg(): + if var.get(u'isExtensible')(var.get(u'it')).neg(): + return var.get(u'true') + if var.get(u'create').neg(): + return Js(False) + var.get(u'setMeta')(var.get(u'it')) + return var.get(u'it').get(var.get(u'META')).get(u'w') + PyJs_anonymous_1634_._set_name(u'anonymous') + var.put(u'getWeak', PyJs_anonymous_1634_) + @Js + def PyJs_anonymous_1635_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + if (((var.get(u'FREEZE') and var.get(u'meta').get(u'NEED')) and var.get(u'isExtensible')(var.get(u'it'))) and var.get(u'has')(var.get(u'it'), var.get(u'META')).neg()): + var.get(u'setMeta')(var.get(u'it')) + return var.get(u'it') + PyJs_anonymous_1635_._set_name(u'anonymous') + var.put(u'onFreeze', PyJs_anonymous_1635_) + PyJs_Object_1636_ = Js({u'KEY':var.get(u'META'),u'NEED':Js(False),u'fastKey':var.get(u'fastKey'),u'getWeak':var.get(u'getWeak'),u'onFreeze':var.get(u'onFreeze')}) + var.put(u'meta', var.get(u'module').put(u'exports', PyJs_Object_1636_)) +PyJs_anonymous_1625_._set_name(u'anonymous') +PyJs_Object_1637_ = Js({u'./_fails':Js(152.0),u'./_has':Js(155.0),u'./_is-object':Js(162.0),u'./_object-dp':Js(173.0),u'./_uid':Js(199.0)}) +@Js +def PyJs_anonymous_1638_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'IObject', u'$assign', u'toObject', u'pIE', u'module', u'gOPS', u'getKeys', u'require']) + Js(u'use strict') + var.put(u'getKeys', var.get(u'require')(Js(u'./_object-keys'))) + var.put(u'gOPS', var.get(u'require')(Js(u'./_object-gops'))) + var.put(u'pIE', var.get(u'require')(Js(u'./_object-pie'))) + var.put(u'toObject', var.get(u'require')(Js(u'./_to-object'))) + var.put(u'IObject', var.get(u'require')(Js(u'./_iobject'))) + var.put(u'$assign', var.get(u'Object').get(u'assign')) + @Js + def PyJs_assign_1639_(target, source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'assign':PyJs_assign_1639_, u'target':target, u'arguments':arguments}, var) + var.registers([u'index', u'target', u'getSymbols', u'keys', u'j', u'S', u'isEnum', u'aLen', u'T', u'key', u'length', u'source']) + var.put(u'T', var.get(u'toObject')(var.get(u'target'))) + var.put(u'aLen', var.get(u'arguments').get(u'length')) + var.put(u'index', Js(1.0)) + var.put(u'getSymbols', var.get(u'gOPS').get(u'f')) + var.put(u'isEnum', var.get(u'pIE').get(u'f')) + while (var.get(u'aLen')>var.get(u'index')): + var.put(u'S', var.get(u'IObject')(var.get(u'arguments').get((var.put(u'index',Js(var.get(u'index').to_number())+Js(1))-Js(1))))) + var.put(u'keys', (var.get(u'getKeys')(var.get(u'S')).callprop(u'concat', var.get(u'getSymbols')(var.get(u'S'))) if var.get(u'getSymbols') else var.get(u'getKeys')(var.get(u'S')))) + var.put(u'length', var.get(u'keys').get(u'length')) + var.put(u'j', Js(0.0)) + while (var.get(u'length')>var.get(u'j')): + if var.get(u'isEnum').callprop(u'call', var.get(u'S'), var.put(u'key', var.get(u'keys').get((var.put(u'j',Js(var.get(u'j').to_number())+Js(1))-Js(1))))): + var.get(u'T').put(var.get(u'key'), var.get(u'S').get(var.get(u'key'))) + return var.get(u'T') + PyJs_assign_1639_._set_name(u'assign') + @Js + def PyJs_anonymous_1640_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'A', u'S', u'B', u'K']) + PyJs_Object_1641_ = Js({}) + var.put(u'A', PyJs_Object_1641_) + PyJs_Object_1642_ = Js({}) + var.put(u'B', PyJs_Object_1642_) + var.put(u'S', var.get(u'Symbol')()) + var.put(u'K', Js(u'abcdefghijklmnopqrst')) + var.get(u'A').put(var.get(u'S'), Js(7.0)) + @Js + def PyJs_anonymous_1643_(k, this, arguments, var=var): + var = Scope({u'this':this, u'k':k, u'arguments':arguments}, var) + var.registers([u'k']) + var.get(u'B').put(var.get(u'k'), var.get(u'k')) + PyJs_anonymous_1643_._set_name(u'anonymous') + var.get(u'K').callprop(u'split', Js(u'')).callprop(u'forEach', PyJs_anonymous_1643_) + PyJs_Object_1644_ = Js({}) + PyJs_Object_1645_ = Js({}) + return ((var.get(u'$assign')(PyJs_Object_1644_, var.get(u'A')).get(var.get(u'S'))!=Js(7.0)) or (var.get(u'Object').callprop(u'keys', var.get(u'$assign')(PyJs_Object_1645_, var.get(u'B'))).callprop(u'join', Js(u''))!=var.get(u'K'))) + PyJs_anonymous_1640_._set_name(u'anonymous') + var.get(u'module').put(u'exports', (PyJs_assign_1639_ if (var.get(u'$assign').neg() or var.get(u'require')(Js(u'./_fails'))(PyJs_anonymous_1640_)) else var.get(u'$assign'))) +PyJs_anonymous_1638_._set_name(u'anonymous') +PyJs_Object_1646_ = Js({u'./_fails':Js(152.0),u'./_iobject':Js(159.0),u'./_object-gops':Js(178.0),u'./_object-keys':Js(181.0),u'./_object-pie':Js(182.0),u'./_to-object':Js(197.0)}) +@Js +def PyJs_anonymous_1647_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'dPs', u'require', u'enumBugKeys', u'module', u'IE_PROTO', u'anObject', u'createDict', u'PROTOTYPE', u'Empty']) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + var.put(u'dPs', var.get(u'require')(Js(u'./_object-dps'))) + var.put(u'enumBugKeys', var.get(u'require')(Js(u'./_enum-bug-keys'))) + var.put(u'IE_PROTO', var.get(u'require')(Js(u'./_shared-key'))(Js(u'IE_PROTO'))) + @Js + def PyJs_anonymous_1648_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + pass + PyJs_anonymous_1648_._set_name(u'anonymous') + var.put(u'Empty', PyJs_anonymous_1648_) + var.put(u'PROTOTYPE', Js(u'prototype')) + @Js + def PyJs_anonymous_1649_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'lt', u'gt', u'iframeDocument', u'iframe']) + var.put(u'iframe', var.get(u'require')(Js(u'./_dom-create'))(Js(u'iframe'))) + var.put(u'i', var.get(u'enumBugKeys').get(u'length')) + var.put(u'lt', Js(u'<')) + var.put(u'gt', Js(u'>')) + var.get(u'iframe').get(u'style').put(u'display', Js(u'none')) + var.get(u'require')(Js(u'./_html')).callprop(u'appendChild', var.get(u'iframe')) + var.get(u'iframe').put(u'src', Js(u'javascript:')) + var.put(u'iframeDocument', var.get(u'iframe').get(u'contentWindow').get(u'document')) + var.get(u'iframeDocument').callprop(u'open') + var.get(u'iframeDocument').callprop(u'write', ((((((var.get(u'lt')+Js(u'script'))+var.get(u'gt'))+Js(u'document.F=Object'))+var.get(u'lt'))+Js(u'/script'))+var.get(u'gt'))) + var.get(u'iframeDocument').callprop(u'close') + var.put(u'createDict', var.get(u'iframeDocument').get(u'F')) + while (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)): + var.get(u'createDict').get(var.get(u'PROTOTYPE')).delete(var.get(u'enumBugKeys').get(var.get(u'i'))) + return var.get(u'createDict')() + PyJs_anonymous_1649_._set_name(u'anonymous') + var.put(u'createDict', PyJs_anonymous_1649_) + @Js + def PyJs_create_1650_(O, Properties, this, arguments, var=var): + var = Scope({u'this':this, u'create':PyJs_create_1650_, u'Properties':Properties, u'O':O, u'arguments':arguments}, var) + var.registers([u'result', u'O', u'Properties']) + pass + if PyJsStrictNeq(var.get(u'O'),var.get(u"null")): + var.get(u'Empty').put(var.get(u'PROTOTYPE'), var.get(u'anObject')(var.get(u'O'))) + var.put(u'result', var.get(u'Empty').create()) + var.get(u'Empty').put(var.get(u'PROTOTYPE'), var.get(u"null")) + var.get(u'result').put(var.get(u'IE_PROTO'), var.get(u'O')) + else: + var.put(u'result', var.get(u'createDict')()) + return (var.get(u'result') if PyJsStrictEq(var.get(u'Properties'),var.get(u'undefined')) else var.get(u'dPs')(var.get(u'result'), var.get(u'Properties'))) + PyJs_create_1650_._set_name(u'create') + var.get(u'module').put(u'exports', (var.get(u'Object').get(u'create') or PyJs_create_1650_)) +PyJs_anonymous_1647_._set_name(u'anonymous') +PyJs_Object_1651_ = Js({u'./_an-object':Js(132.0),u'./_dom-create':Js(148.0),u'./_enum-bug-keys':Js(149.0),u'./_html':Js(157.0),u'./_object-dps':Js(174.0),u'./_shared-key':Js(190.0)}) +@Js +def PyJs_anonymous_1652_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'toPrimitive', u'module', u'anObject', u'IE8_DOM_DEFINE', u'dP']) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + var.put(u'IE8_DOM_DEFINE', var.get(u'require')(Js(u'./_ie8-dom-define'))) + var.put(u'toPrimitive', var.get(u'require')(Js(u'./_to-primitive'))) + var.put(u'dP', var.get(u'Object').get(u'defineProperty')) + @Js + def PyJs_defineProperty_1653_(O, P, Attributes, this, arguments, var=var): + var = Scope({u'this':this, u'O':O, u'P':P, u'arguments':arguments, u'defineProperty':PyJs_defineProperty_1653_, u'Attributes':Attributes}, var) + var.registers([u'P', u'O', u'Attributes']) + var.get(u'anObject')(var.get(u'O')) + var.put(u'P', var.get(u'toPrimitive')(var.get(u'P'), var.get(u'true'))) + var.get(u'anObject')(var.get(u'Attributes')) + if var.get(u'IE8_DOM_DEFINE'): + try: + return var.get(u'dP')(var.get(u'O'), var.get(u'P'), var.get(u'Attributes')) + except PyJsException as PyJsTempException: + PyJsHolder_65_75205354 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + pass + finally: + if PyJsHolder_65_75205354 is not None: + var.own[u'e'] = PyJsHolder_65_75205354 + else: + del var.own[u'e'] + del PyJsHolder_65_75205354 + if (var.get(u'Attributes').contains(Js(u'get')) or var.get(u'Attributes').contains(Js(u'set'))): + PyJsTempException = JsToPyException(var.get(u'TypeError')(Js(u'Accessors not supported!'))) + raise PyJsTempException + if var.get(u'Attributes').contains(Js(u'value')): + var.get(u'O').put(var.get(u'P'), var.get(u'Attributes').get(u'value')) + return var.get(u'O') + PyJs_defineProperty_1653_._set_name(u'defineProperty') + var.get(u'exports').put(u'f', (var.get(u'Object').get(u'defineProperty') if var.get(u'require')(Js(u'./_descriptors')) else PyJs_defineProperty_1653_)) +PyJs_anonymous_1652_._set_name(u'anonymous') +PyJs_Object_1654_ = Js({u'./_an-object':Js(132.0),u'./_descriptors':Js(147.0),u'./_ie8-dom-define':Js(158.0),u'./_to-primitive':Js(198.0)}) +@Js +def PyJs_anonymous_1655_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'getKeys', u'anObject', u'dP']) + var.put(u'dP', var.get(u'require')(Js(u'./_object-dp'))) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + var.put(u'getKeys', var.get(u'require')(Js(u'./_object-keys'))) + @Js + def PyJs_defineProperties_1656_(O, Properties, this, arguments, var=var): + var = Scope({u'this':this, u'defineProperties':PyJs_defineProperties_1656_, u'Properties':Properties, u'O':O, u'arguments':arguments}, var) + var.registers([u'P', u'keys', u'O', u'i', u'length', u'Properties']) + var.get(u'anObject')(var.get(u'O')) + var.put(u'keys', var.get(u'getKeys')(var.get(u'Properties'))) + var.put(u'length', var.get(u'keys').get(u'length')) + var.put(u'i', Js(0.0)) + while (var.get(u'length')>var.get(u'i')): + var.get(u'dP').callprop(u'f', var.get(u'O'), var.put(u'P', var.get(u'keys').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))), var.get(u'Properties').get(var.get(u'P'))) + return var.get(u'O') + PyJs_defineProperties_1656_._set_name(u'defineProperties') + var.get(u'module').put(u'exports', (var.get(u'Object').get(u'defineProperties') if var.get(u'require')(Js(u'./_descriptors')) else PyJs_defineProperties_1656_)) +PyJs_anonymous_1655_._set_name(u'anonymous') +PyJs_Object_1657_ = Js({u'./_an-object':Js(132.0),u'./_descriptors':Js(147.0),u'./_object-dp':Js(173.0),u'./_object-keys':Js(181.0)}) +@Js +def PyJs_anonymous_1658_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'toPrimitive', u'module', u'pIE', u'toIObject', u'IE8_DOM_DEFINE', u'gOPD', u'has', u'createDesc']) + var.put(u'pIE', var.get(u'require')(Js(u'./_object-pie'))) + var.put(u'createDesc', var.get(u'require')(Js(u'./_property-desc'))) + var.put(u'toIObject', var.get(u'require')(Js(u'./_to-iobject'))) + var.put(u'toPrimitive', var.get(u'require')(Js(u'./_to-primitive'))) + var.put(u'has', var.get(u'require')(Js(u'./_has'))) + var.put(u'IE8_DOM_DEFINE', var.get(u'require')(Js(u'./_ie8-dom-define'))) + var.put(u'gOPD', var.get(u'Object').get(u'getOwnPropertyDescriptor')) + @Js + def PyJs_getOwnPropertyDescriptor_1659_(O, P, this, arguments, var=var): + var = Scope({u'this':this, u'P':P, u'getOwnPropertyDescriptor':PyJs_getOwnPropertyDescriptor_1659_, u'arguments':arguments, u'O':O}, var) + var.registers([u'P', u'O']) + var.put(u'O', var.get(u'toIObject')(var.get(u'O'))) + var.put(u'P', var.get(u'toPrimitive')(var.get(u'P'), var.get(u'true'))) + if var.get(u'IE8_DOM_DEFINE'): + try: + return var.get(u'gOPD')(var.get(u'O'), var.get(u'P')) + except PyJsException as PyJsTempException: + PyJsHolder_65_6934147 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + pass + finally: + if PyJsHolder_65_6934147 is not None: + var.own[u'e'] = PyJsHolder_65_6934147 + else: + del var.own[u'e'] + del PyJsHolder_65_6934147 + if var.get(u'has')(var.get(u'O'), var.get(u'P')): + return var.get(u'createDesc')(var.get(u'pIE').get(u'f').callprop(u'call', var.get(u'O'), var.get(u'P')).neg(), var.get(u'O').get(var.get(u'P'))) + PyJs_getOwnPropertyDescriptor_1659_._set_name(u'getOwnPropertyDescriptor') + var.get(u'exports').put(u'f', (var.get(u'gOPD') if var.get(u'require')(Js(u'./_descriptors')) else PyJs_getOwnPropertyDescriptor_1659_)) +PyJs_anonymous_1658_._set_name(u'anonymous') +PyJs_Object_1660_ = Js({u'./_descriptors':Js(147.0),u'./_has':Js(155.0),u'./_ie8-dom-define':Js(158.0),u'./_object-pie':Js(182.0),u'./_property-desc':Js(184.0),u'./_to-iobject':Js(195.0),u'./_to-primitive':Js(198.0)}) +@Js +def PyJs_anonymous_1661_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'getWindowNames', u'windowNames', u'gOPN', u'toString', u'module', u'toIObject']) + var.put(u'toIObject', var.get(u'require')(Js(u'./_to-iobject'))) + var.put(u'gOPN', var.get(u'require')(Js(u'./_object-gopn')).get(u'f')) + PyJs_Object_1662_ = Js({}) + var.put(u'toString', PyJs_Object_1662_.get(u'toString')) + var.put(u'windowNames', (var.get(u'Object').callprop(u'getOwnPropertyNames', var.get(u'window')) if (((var.get(u'window',throw=False).typeof()==Js(u'object')) and var.get(u'window')) and var.get(u'Object').get(u'getOwnPropertyNames')) else Js([]))) + @Js + def PyJs_anonymous_1663_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + try: + return var.get(u'gOPN')(var.get(u'it')) + except PyJsException as PyJsTempException: + PyJsHolder_65_72290655 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + return var.get(u'windowNames').callprop(u'slice') + finally: + if PyJsHolder_65_72290655 is not None: + var.own[u'e'] = PyJsHolder_65_72290655 + else: + del var.own[u'e'] + del PyJsHolder_65_72290655 + PyJs_anonymous_1663_._set_name(u'anonymous') + var.put(u'getWindowNames', PyJs_anonymous_1663_) + @Js + def PyJs_getOwnPropertyNames_1664_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'getOwnPropertyNames':PyJs_getOwnPropertyNames_1664_, u'arguments':arguments}, var) + var.registers([u'it']) + return (var.get(u'getWindowNames')(var.get(u'it')) if (var.get(u'windowNames') and (var.get(u'toString').callprop(u'call', var.get(u'it'))==Js(u'[object Window]'))) else var.get(u'gOPN')(var.get(u'toIObject')(var.get(u'it')))) + PyJs_getOwnPropertyNames_1664_._set_name(u'getOwnPropertyNames') + var.get(u'module').get(u'exports').put(u'f', PyJs_getOwnPropertyNames_1664_) +PyJs_anonymous_1661_._set_name(u'anonymous') +PyJs_Object_1665_ = Js({u'./_object-gopn':Js(177.0),u'./_to-iobject':Js(195.0)}) +@Js +def PyJs_anonymous_1666_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'hiddenKeys', u'require', u'$keys', u'module']) + var.put(u'$keys', var.get(u'require')(Js(u'./_object-keys-internal'))) + var.put(u'hiddenKeys', var.get(u'require')(Js(u'./_enum-bug-keys')).callprop(u'concat', Js(u'length'), Js(u'prototype'))) + @Js + def PyJs_getOwnPropertyNames_1667_(O, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'O':O, u'getOwnPropertyNames':PyJs_getOwnPropertyNames_1667_}, var) + var.registers([u'O']) + return var.get(u'$keys')(var.get(u'O'), var.get(u'hiddenKeys')) + PyJs_getOwnPropertyNames_1667_._set_name(u'getOwnPropertyNames') + var.get(u'exports').put(u'f', (var.get(u'Object').get(u'getOwnPropertyNames') or PyJs_getOwnPropertyNames_1667_)) +PyJs_anonymous_1666_._set_name(u'anonymous') +PyJs_Object_1668_ = Js({u'./_enum-bug-keys':Js(149.0),u'./_object-keys-internal':Js(180.0)}) +@Js +def PyJs_anonymous_1669_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'exports').put(u'f', var.get(u'Object').get(u'getOwnPropertySymbols')) +PyJs_anonymous_1669_._set_name(u'anonymous') +PyJs_Object_1670_ = Js({}) +@Js +def PyJs_anonymous_1671_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'toObject', u'module', u'IE_PROTO', u'ObjectProto', u'has', u'require']) + var.put(u'has', var.get(u'require')(Js(u'./_has'))) + var.put(u'toObject', var.get(u'require')(Js(u'./_to-object'))) + var.put(u'IE_PROTO', var.get(u'require')(Js(u'./_shared-key'))(Js(u'IE_PROTO'))) + var.put(u'ObjectProto', var.get(u'Object').get(u'prototype')) + @Js + def PyJs_anonymous_1672_(O, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'O':O}, var) + var.registers([u'O']) + var.put(u'O', var.get(u'toObject')(var.get(u'O'))) + if var.get(u'has')(var.get(u'O'), var.get(u'IE_PROTO')): + return var.get(u'O').get(var.get(u'IE_PROTO')) + if ((var.get(u'O').get(u'constructor').typeof()==Js(u'function')) and var.get(u'O').instanceof(var.get(u'O').get(u'constructor'))): + return var.get(u'O').get(u'constructor').get(u'prototype') + return (var.get(u'ObjectProto') if var.get(u'O').instanceof(var.get(u'Object')) else var.get(u"null")) + PyJs_anonymous_1672_._set_name(u'anonymous') + var.get(u'module').put(u'exports', (var.get(u'Object').get(u'getPrototypeOf') or PyJs_anonymous_1672_)) +PyJs_anonymous_1671_._set_name(u'anonymous') +PyJs_Object_1673_ = Js({u'./_has':Js(155.0),u'./_shared-key':Js(190.0),u'./_to-object':Js(197.0)}) +@Js +def PyJs_anonymous_1674_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'IE_PROTO', u'toIObject', u'arrayIndexOf', u'has']) + var.put(u'has', var.get(u'require')(Js(u'./_has'))) + var.put(u'toIObject', var.get(u'require')(Js(u'./_to-iobject'))) + var.put(u'arrayIndexOf', var.get(u'require')(Js(u'./_array-includes'))(Js(False))) + var.put(u'IE_PROTO', var.get(u'require')(Js(u'./_shared-key'))(Js(u'IE_PROTO'))) + @Js + def PyJs_anonymous_1675_(object, names, this, arguments, var=var): + var = Scope({u'this':this, u'object':object, u'names':names, u'arguments':arguments}, var) + var.registers([u'i', u'object', u'O', u'result', u'key', u'names']) + var.put(u'O', var.get(u'toIObject')(var.get(u'object'))) + var.put(u'i', Js(0.0)) + var.put(u'result', Js([])) + for PyJsTemp in var.get(u'O'): + var.put(u'key', PyJsTemp) + if (var.get(u'key')!=var.get(u'IE_PROTO')): + (var.get(u'has')(var.get(u'O'), var.get(u'key')) and var.get(u'result').callprop(u'push', var.get(u'key'))) + while (var.get(u'names').get(u'length')>var.get(u'i')): + if var.get(u'has')(var.get(u'O'), var.put(u'key', var.get(u'names').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1))))): + ((~var.get(u'arrayIndexOf')(var.get(u'result'), var.get(u'key'))) or var.get(u'result').callprop(u'push', var.get(u'key'))) + return var.get(u'result') + PyJs_anonymous_1675_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1675_) +PyJs_anonymous_1674_._set_name(u'anonymous') +PyJs_Object_1676_ = Js({u'./_array-includes':Js(134.0),u'./_has':Js(155.0),u'./_shared-key':Js(190.0),u'./_to-iobject':Js(195.0)}) +@Js +def PyJs_anonymous_1677_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'enumBugKeys', u'$keys', u'module']) + var.put(u'$keys', var.get(u'require')(Js(u'./_object-keys-internal'))) + var.put(u'enumBugKeys', var.get(u'require')(Js(u'./_enum-bug-keys'))) + @Js + def PyJs_keys_1678_(O, this, arguments, var=var): + var = Scope({u'this':this, u'keys':PyJs_keys_1678_, u'arguments':arguments, u'O':O}, var) + var.registers([u'O']) + return var.get(u'$keys')(var.get(u'O'), var.get(u'enumBugKeys')) + PyJs_keys_1678_._set_name(u'keys') + var.get(u'module').put(u'exports', (var.get(u'Object').get(u'keys') or PyJs_keys_1678_)) +PyJs_anonymous_1677_._set_name(u'anonymous') +PyJs_Object_1679_ = Js({u'./_enum-bug-keys':Js(149.0),u'./_object-keys-internal':Js(180.0)}) +@Js +def PyJs_anonymous_1680_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1681_ = Js({}) + var.get(u'exports').put(u'f', PyJs_Object_1681_.get(u'propertyIsEnumerable')) +PyJs_anonymous_1680_._set_name(u'anonymous') +PyJs_Object_1682_ = Js({}) +@Js +def PyJs_anonymous_1683_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'core', u'fails', u'$export', u'require', u'exports', u'module']) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + var.put(u'core', var.get(u'require')(Js(u'./_core'))) + var.put(u'fails', var.get(u'require')(Js(u'./_fails'))) + @Js + def PyJs_anonymous_1684_(KEY, PyJsArg_65786563_, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'KEY':KEY, u'exec':PyJsArg_65786563_}, var) + var.registers([u'KEY', u'exp', u'fn', u'exec']) + PyJs_Object_1685_ = Js({}) + var.put(u'fn', ((var.get(u'core').get(u'Object') or PyJs_Object_1685_).get(var.get(u'KEY')) or var.get(u'Object').get(var.get(u'KEY')))) + PyJs_Object_1686_ = Js({}) + var.put(u'exp', PyJs_Object_1686_) + var.get(u'exp').put(var.get(u'KEY'), var.get(u'exec')(var.get(u'fn'))) + @Js + def PyJs_anonymous_1687_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'fn')(Js(1.0)) + PyJs_anonymous_1687_._set_name(u'anonymous') + var.get(u'$export')((var.get(u'$export').get(u'S')+(var.get(u'$export').get(u'F')*var.get(u'fails')(PyJs_anonymous_1687_))), Js(u'Object'), var.get(u'exp')) + PyJs_anonymous_1684_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1684_) +PyJs_anonymous_1683_._set_name(u'anonymous') +PyJs_Object_1688_ = Js({u'./_core':Js(144.0),u'./_export':Js(151.0),u'./_fails':Js(152.0)}) +@Js +def PyJs_anonymous_1689_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_1690_(bitmap, value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value, u'bitmap':bitmap}, var) + var.registers([u'value', u'bitmap']) + PyJs_Object_1691_ = Js({u'enumerable':(var.get(u'bitmap')&Js(1.0)).neg(),u'configurable':(var.get(u'bitmap')&Js(2.0)).neg(),u'writable':(var.get(u'bitmap')&Js(4.0)).neg(),u'value':var.get(u'value')}) + return PyJs_Object_1691_ + PyJs_anonymous_1690_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1690_) +PyJs_anonymous_1689_._set_name(u'anonymous') +PyJs_Object_1692_ = Js({}) +@Js +def PyJs_anonymous_1693_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'hide', u'exports', u'module']) + var.put(u'hide', var.get(u'require')(Js(u'./_hide'))) + @Js + def PyJs_anonymous_1694_(target, src, safe, this, arguments, var=var): + var = Scope({u'this':this, u'src':src, u'safe':safe, u'target':target, u'arguments':arguments}, var) + var.registers([u'src', u'safe', u'target', u'key']) + for PyJsTemp in var.get(u'src'): + var.put(u'key', PyJsTemp) + if (var.get(u'safe') and var.get(u'target').get(var.get(u'key'))): + var.get(u'target').put(var.get(u'key'), var.get(u'src').get(var.get(u'key'))) + else: + var.get(u'hide')(var.get(u'target'), var.get(u'key'), var.get(u'src').get(var.get(u'key'))) + return var.get(u'target') + PyJs_anonymous_1694_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1694_) +PyJs_anonymous_1693_._set_name(u'anonymous') +PyJs_Object_1695_ = Js({u'./_hide':Js(156.0)}) +@Js +def PyJs_anonymous_1696_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./_hide'))) +PyJs_anonymous_1696_._set_name(u'anonymous') +PyJs_Object_1697_ = Js({u'./_hide':Js(156.0)}) +@Js +def PyJs_anonymous_1698_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'check', u'anObject', u'isObject']) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + @Js + def PyJs_anonymous_1699_(O, proto, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'O':O, u'proto':proto}, var) + var.registers([u'O', u'proto']) + var.get(u'anObject')(var.get(u'O')) + if (var.get(u'isObject')(var.get(u'proto')).neg() and PyJsStrictNeq(var.get(u'proto'),var.get(u"null"))): + PyJsTempException = JsToPyException(var.get(u'TypeError')((var.get(u'proto')+Js(u": can't set as prototype!")))) + raise PyJsTempException + PyJs_anonymous_1699_._set_name(u'anonymous') + var.put(u'check', PyJs_anonymous_1699_) + PyJs_Object_1701_ = Js({}) + @Js + def PyJs_anonymous_1702_(test, buggy, set, this, arguments, var=var): + var = Scope({u'test':test, u'this':this, u'buggy':buggy, u'set':set, u'arguments':arguments}, var) + var.registers([u'test', u'buggy', u'set']) + try: + var.put(u'set', var.get(u'require')(Js(u'./_ctx'))(var.get(u'Function').get(u'call'), var.get(u'require')(Js(u'./_object-gopd')).callprop(u'f', var.get(u'Object').get(u'prototype'), Js(u'__proto__')).get(u'set'), Js(2.0))) + var.get(u'set')(var.get(u'test'), Js([])) + var.put(u'buggy', var.get(u'test').instanceof(var.get(u'Array')).neg()) + except PyJsException as PyJsTempException: + PyJsHolder_65_30361003 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + var.put(u'buggy', var.get(u'true')) + finally: + if PyJsHolder_65_30361003 is not None: + var.own[u'e'] = PyJsHolder_65_30361003 + else: + del var.own[u'e'] + del PyJsHolder_65_30361003 + @Js + def PyJs_setPrototypeOf_1703_(O, proto, this, arguments, var=var): + var = Scope({u'this':this, u'setPrototypeOf':PyJs_setPrototypeOf_1703_, u'arguments':arguments, u'O':O, u'proto':proto}, var) + var.registers([u'O', u'proto']) + var.get(u'check')(var.get(u'O'), var.get(u'proto')) + if var.get(u'buggy'): + var.get(u'O').put(u'__proto__', var.get(u'proto')) + else: + var.get(u'set')(var.get(u'O'), var.get(u'proto')) + return var.get(u'O') + PyJs_setPrototypeOf_1703_._set_name(u'setPrototypeOf') + return PyJs_setPrototypeOf_1703_ + PyJs_anonymous_1702_._set_name(u'anonymous') + PyJs_Object_1704_ = Js({}) + PyJs_Object_1700_ = Js({u'set':(var.get(u'Object').get(u'setPrototypeOf') or (PyJs_anonymous_1702_(PyJs_Object_1701_, Js(False)) if PyJs_Object_1704_.contains(Js(u'__proto__')) else var.get(u'undefined'))),u'check':var.get(u'check')}) + var.get(u'module').put(u'exports', PyJs_Object_1700_) +PyJs_anonymous_1698_._set_name(u'anonymous') +PyJs_Object_1705_ = Js({u'./_an-object':Js(132.0),u'./_ctx':Js(145.0),u'./_is-object':Js(162.0),u'./_object-gopd':Js(175.0)}) +@Js +def PyJs_anonymous_1706_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'core', u'exports', u'DESCRIPTORS', u'require', u'global', u'module', u'SPECIES', u'dP']) + Js(u'use strict') + var.put(u'global', var.get(u'require')(Js(u'./_global'))) + var.put(u'core', var.get(u'require')(Js(u'./_core'))) + var.put(u'dP', var.get(u'require')(Js(u'./_object-dp'))) + var.put(u'DESCRIPTORS', var.get(u'require')(Js(u'./_descriptors'))) + var.put(u'SPECIES', var.get(u'require')(Js(u'./_wks'))(Js(u'species'))) + @Js + def PyJs_anonymous_1707_(KEY, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'KEY':KEY}, var) + var.registers([u'C', u'KEY']) + var.put(u'C', (var.get(u'core').get(var.get(u'KEY')) if (var.get(u'core').get(var.get(u'KEY')).typeof()==Js(u'function')) else var.get(u'global').get(var.get(u'KEY')))) + if ((var.get(u'DESCRIPTORS') and var.get(u'C')) and var.get(u'C').get(var.get(u'SPECIES')).neg()): + @Js + def PyJs_anonymous_1709_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this") + PyJs_anonymous_1709_._set_name(u'anonymous') + PyJs_Object_1708_ = Js({u'configurable':var.get(u'true'),u'get':PyJs_anonymous_1709_}) + var.get(u'dP').callprop(u'f', var.get(u'C'), var.get(u'SPECIES'), PyJs_Object_1708_) + PyJs_anonymous_1707_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1707_) +PyJs_anonymous_1706_._set_name(u'anonymous') +PyJs_Object_1710_ = Js({u'./_core':Js(144.0),u'./_descriptors':Js(147.0),u'./_global':Js(154.0),u'./_object-dp':Js(173.0),u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1711_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'TAG', u'has', u'def']) + var.put(u'def', var.get(u'require')(Js(u'./_object-dp')).get(u'f')) + var.put(u'has', var.get(u'require')(Js(u'./_has'))) + var.put(u'TAG', var.get(u'require')(Js(u'./_wks'))(Js(u'toStringTag'))) + @Js + def PyJs_anonymous_1712_(it, tag, stat, this, arguments, var=var): + var = Scope({u'this':this, u'stat':stat, u'tag':tag, u'it':it, u'arguments':arguments}, var) + var.registers([u'stat', u'tag', u'it']) + if (var.get(u'it') and var.get(u'has')(var.put(u'it', (var.get(u'it') if var.get(u'stat') else var.get(u'it').get(u'prototype'))), var.get(u'TAG')).neg()): + PyJs_Object_1713_ = Js({u'configurable':var.get(u'true'),u'value':var.get(u'tag')}) + var.get(u'def')(var.get(u'it'), var.get(u'TAG'), PyJs_Object_1713_) + PyJs_anonymous_1712_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1712_) +PyJs_anonymous_1711_._set_name(u'anonymous') +PyJs_Object_1714_ = Js({u'./_has':Js(155.0),u'./_object-dp':Js(173.0),u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1715_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'shared', u'require', u'exports', u'uid', u'module']) + var.put(u'shared', var.get(u'require')(Js(u'./_shared'))(Js(u'keys'))) + var.put(u'uid', var.get(u'require')(Js(u'./_uid'))) + @Js + def PyJs_anonymous_1716_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + return (var.get(u'shared').get(var.get(u'key')) or var.get(u'shared').put(var.get(u'key'), var.get(u'uid')(var.get(u'key')))) + PyJs_anonymous_1716_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1716_) +PyJs_anonymous_1715_._set_name(u'anonymous') +PyJs_Object_1717_ = Js({u'./_shared':Js(191.0),u'./_uid':Js(199.0)}) +@Js +def PyJs_anonymous_1718_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'global', u'module', u'SHARED', u'store']) + var.put(u'global', var.get(u'require')(Js(u'./_global'))) + var.put(u'SHARED', Js(u'__core-js_shared__')) + PyJs_Object_1719_ = Js({}) + var.put(u'store', (var.get(u'global').get(var.get(u'SHARED')) or var.get(u'global').put(var.get(u'SHARED'), PyJs_Object_1719_))) + @Js + def PyJs_anonymous_1720_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + PyJs_Object_1721_ = Js({}) + return (var.get(u'store').get(var.get(u'key')) or var.get(u'store').put(var.get(u'key'), PyJs_Object_1721_)) + PyJs_anonymous_1720_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1720_) +PyJs_anonymous_1718_._set_name(u'anonymous') +PyJs_Object_1722_ = Js({u'./_global':Js(154.0)}) +@Js +def PyJs_anonymous_1723_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'defined', u'toInteger', u'exports', u'require', u'module']) + var.put(u'toInteger', var.get(u'require')(Js(u'./_to-integer'))) + var.put(u'defined', var.get(u'require')(Js(u'./_defined'))) + @Js + def PyJs_anonymous_1724_(TO_STRING, this, arguments, var=var): + var = Scope({u'TO_STRING':TO_STRING, u'this':this, u'arguments':arguments}, var) + var.registers([u'TO_STRING']) + @Js + def PyJs_anonymous_1725_(that, pos, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'pos':pos, u'that':that}, var) + var.registers([u'a', u'b', u'that', u'i', u'l', u'pos', u's']) + var.put(u's', var.get(u'String')(var.get(u'defined')(var.get(u'that')))) + var.put(u'i', var.get(u'toInteger')(var.get(u'pos'))) + var.put(u'l', var.get(u's').get(u'length')) + if ((var.get(u'i')=var.get(u'l'))): + return (Js(u'') if var.get(u'TO_STRING') else var.get(u'undefined')) + var.put(u'a', var.get(u's').callprop(u'charCodeAt', var.get(u'i'))) + def PyJs_LONG_1726_(var=var): + return ((var.get(u's').callprop(u'charAt', var.get(u'i')) if var.get(u'TO_STRING') else var.get(u'a')) if (((((var.get(u'a')Js(56319))) or PyJsStrictEq((var.get(u'i')+Js(1.0)),var.get(u'l'))) or (var.put(u'b', var.get(u's').callprop(u'charCodeAt', (var.get(u'i')+Js(1.0))))Js(57343))) else (var.get(u's').callprop(u'slice', var.get(u'i'), (var.get(u'i')+Js(2.0))) if var.get(u'TO_STRING') else ((((var.get(u'a')-Js(55296))<Js(0.0)) else var.get(u'ceil'))(var.get(u'it'))) + PyJs_anonymous_1732_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1732_) +PyJs_anonymous_1731_._set_name(u'anonymous') +PyJs_Object_1733_ = Js({}) +@Js +def PyJs_anonymous_1734_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'defined', u'require', u'exports', u'module', u'IObject']) + var.put(u'IObject', var.get(u'require')(Js(u'./_iobject'))) + var.put(u'defined', var.get(u'require')(Js(u'./_defined'))) + @Js + def PyJs_anonymous_1735_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return var.get(u'IObject')(var.get(u'defined')(var.get(u'it'))) + PyJs_anonymous_1735_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1735_) +PyJs_anonymous_1734_._set_name(u'anonymous') +PyJs_Object_1736_ = Js({u'./_defined':Js(146.0),u'./_iobject':Js(159.0)}) +@Js +def PyJs_anonymous_1737_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'toInteger', u'exports', u'require', u'module', u'min']) + var.put(u'toInteger', var.get(u'require')(Js(u'./_to-integer'))) + var.put(u'min', var.get(u'Math').get(u'min')) + @Js + def PyJs_anonymous_1738_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return (var.get(u'min')(var.get(u'toInteger')(var.get(u'it')), Js(9007199254740991)) if (var.get(u'it')>Js(0.0)) else Js(0.0)) + PyJs_anonymous_1738_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1738_) +PyJs_anonymous_1737_._set_name(u'anonymous') +PyJs_Object_1739_ = Js({u'./_to-integer':Js(194.0)}) +@Js +def PyJs_anonymous_1740_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'defined', u'require', u'exports', u'module']) + var.put(u'defined', var.get(u'require')(Js(u'./_defined'))) + @Js + def PyJs_anonymous_1741_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return var.get(u'Object')(var.get(u'defined')(var.get(u'it'))) + PyJs_anonymous_1741_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1741_) +PyJs_anonymous_1740_._set_name(u'anonymous') +PyJs_Object_1742_ = Js({u'./_defined':Js(146.0)}) +@Js +def PyJs_anonymous_1743_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'isObject', u'module']) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + @Js + def PyJs_anonymous_1744_(it, S, this, arguments, var=var): + var = Scope({u'this':this, u'S':S, u'it':it, u'arguments':arguments}, var) + var.registers([u'S', u'val', u'fn', u'it']) + if var.get(u'isObject')(var.get(u'it')).neg(): + return var.get(u'it') + pass + if ((var.get(u'S') and (var.put(u'fn', var.get(u'it').get(u'toString')).typeof()==Js(u'function'))) and var.get(u'isObject')(var.put(u'val', var.get(u'fn').callprop(u'call', var.get(u'it')))).neg()): + return var.get(u'val') + if ((var.put(u'fn', var.get(u'it').get(u'valueOf')).typeof()==Js(u'function')) and var.get(u'isObject')(var.put(u'val', var.get(u'fn').callprop(u'call', var.get(u'it')))).neg()): + return var.get(u'val') + if ((var.get(u'S').neg() and (var.put(u'fn', var.get(u'it').get(u'toString')).typeof()==Js(u'function'))) and var.get(u'isObject')(var.put(u'val', var.get(u'fn').callprop(u'call', var.get(u'it')))).neg()): + return var.get(u'val') + PyJsTempException = JsToPyException(var.get(u'TypeError')(Js(u"Can't convert object to primitive value"))) + raise PyJsTempException + PyJs_anonymous_1744_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1744_) +PyJs_anonymous_1743_._set_name(u'anonymous') +PyJs_Object_1745_ = Js({u'./_is-object':Js(162.0)}) +@Js +def PyJs_anonymous_1746_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'px', u'require', u'id', u'module']) + var.put(u'id', Js(0.0)) + var.put(u'px', var.get(u'Math').callprop(u'random')) + @Js + def PyJs_anonymous_1747_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + return Js(u'Symbol(').callprop(u'concat', (Js(u'') if PyJsStrictEq(var.get(u'key'),var.get(u'undefined')) else var.get(u'key')), Js(u')_'), (var.put(u'id',Js(var.get(u'id').to_number())+Js(1))+var.get(u'px')).callprop(u'toString', Js(36.0))) + PyJs_anonymous_1747_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1747_) +PyJs_anonymous_1746_._set_name(u'anonymous') +PyJs_Object_1748_ = Js({}) +@Js +def PyJs_anonymous_1749_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'core', u'exports', u'wksExt', u'require', u'global', u'LIBRARY', u'module', u'defineProperty']) + var.put(u'global', var.get(u'require')(Js(u'./_global'))) + var.put(u'core', var.get(u'require')(Js(u'./_core'))) + var.put(u'LIBRARY', var.get(u'require')(Js(u'./_library'))) + var.put(u'wksExt', var.get(u'require')(Js(u'./_wks-ext'))) + var.put(u'defineProperty', var.get(u'require')(Js(u'./_object-dp')).get(u'f')) + @Js + def PyJs_anonymous_1750_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name', u'$Symbol']) + PyJs_Object_1751_ = Js({}) + PyJs_Object_1752_ = Js({}) + var.put(u'$Symbol', (var.get(u'core').get(u'Symbol') or var.get(u'core').put(u'Symbol', (PyJs_Object_1751_ if var.get(u'LIBRARY') else (var.get(u'global').get(u'Symbol') or PyJs_Object_1752_))))) + if ((var.get(u'name').callprop(u'charAt', Js(0.0))!=Js(u'_')) and var.get(u'$Symbol').contains(var.get(u'name')).neg()): + PyJs_Object_1753_ = Js({u'value':var.get(u'wksExt').callprop(u'f', var.get(u'name'))}) + var.get(u'defineProperty')(var.get(u'$Symbol'), var.get(u'name'), PyJs_Object_1753_) + PyJs_anonymous_1750_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_1750_) +PyJs_anonymous_1749_._set_name(u'anonymous') +PyJs_Object_1754_ = Js({u'./_core':Js(144.0),u'./_global':Js(154.0),u'./_library':Js(169.0),u'./_object-dp':Js(173.0),u'./_wks-ext':Js(201.0)}) +@Js +def PyJs_anonymous_1755_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'exports').put(u'f', var.get(u'require')(Js(u'./_wks'))) +PyJs_anonymous_1755_._set_name(u'anonymous') +PyJs_Object_1756_ = Js({u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1757_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'uid', u'Symbol', u'module', u'$exports', u'require', u'store', u'USE_SYMBOL']) + var.put(u'store', var.get(u'require')(Js(u'./_shared'))(Js(u'wks'))) + var.put(u'uid', var.get(u'require')(Js(u'./_uid'))) + var.put(u'Symbol', var.get(u'require')(Js(u'./_global')).get(u'Symbol')) + var.put(u'USE_SYMBOL', (var.get(u'Symbol',throw=False).typeof()==Js(u'function'))) + @Js + def PyJs_anonymous_1758_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + return (var.get(u'store').get(var.get(u'name')) or var.get(u'store').put(var.get(u'name'), ((var.get(u'USE_SYMBOL') and var.get(u'Symbol').get(var.get(u'name'))) or (var.get(u'Symbol') if var.get(u'USE_SYMBOL') else var.get(u'uid'))((Js(u'Symbol.')+var.get(u'name')))))) + PyJs_anonymous_1758_._set_name(u'anonymous') + var.put(u'$exports', var.get(u'module').put(u'exports', PyJs_anonymous_1758_)) + var.get(u'$exports').put(u'store', var.get(u'store')) +PyJs_anonymous_1757_._set_name(u'anonymous') +PyJs_Object_1759_ = Js({u'./_global':Js(154.0),u'./_shared':Js(191.0),u'./_uid':Js(199.0)}) +@Js +def PyJs_anonymous_1760_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'ITERATOR', u'require', u'module', u'Iterators', u'classof']) + var.put(u'classof', var.get(u'require')(Js(u'./_classof'))) + var.put(u'ITERATOR', var.get(u'require')(Js(u'./_wks'))(Js(u'iterator'))) + var.put(u'Iterators', var.get(u'require')(Js(u'./_iterators'))) + @Js + def PyJs_anonymous_1761_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + if (var.get(u'it')!=var.get(u'undefined')): + return ((var.get(u'it').get(var.get(u'ITERATOR')) or var.get(u'it').get(u'@@iterator')) or var.get(u'Iterators').get(var.get(u'classof')(var.get(u'it')))) + PyJs_anonymous_1761_._set_name(u'anonymous') + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./_core')).put(u'getIteratorMethod', PyJs_anonymous_1761_)) +PyJs_anonymous_1760_._set_name(u'anonymous') +PyJs_Object_1762_ = Js({u'./_classof':Js(138.0),u'./_core':Js(144.0),u'./_iterators':Js(167.0),u'./_wks':Js(202.0)}) +@Js +def PyJs_anonymous_1763_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'anObject', u'exports', u'module', u'get']) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + var.put(u'get', var.get(u'require')(Js(u'./core.get-iterator-method'))) + @Js + def PyJs_anonymous_1764_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'iterFn', u'it']) + var.put(u'iterFn', var.get(u'get')(var.get(u'it'))) + if (var.get(u'iterFn',throw=False).typeof()!=Js(u'function')): + PyJsTempException = JsToPyException(var.get(u'TypeError')((var.get(u'it')+Js(u' is not iterable!')))) + raise PyJsTempException + return var.get(u'anObject')(var.get(u'iterFn').callprop(u'call', var.get(u'it'))) + PyJs_anonymous_1764_._set_name(u'anonymous') + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./_core')).put(u'getIterator', PyJs_anonymous_1764_)) +PyJs_anonymous_1763_._set_name(u'anonymous') +PyJs_Object_1765_ = Js({u'./_an-object':Js(132.0),u'./_core':Js(144.0),u'./core.get-iterator-method':Js(203.0)}) +@Js +def PyJs_anonymous_1766_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'addToUnscopables', u'Iterators', u'step', u'toIObject']) + Js(u'use strict') + var.put(u'addToUnscopables', var.get(u'require')(Js(u'./_add-to-unscopables'))) + var.put(u'step', var.get(u'require')(Js(u'./_iter-step'))) + var.put(u'Iterators', var.get(u'require')(Js(u'./_iterators'))) + var.put(u'toIObject', var.get(u'require')(Js(u'./_to-iobject'))) + @Js + def PyJs_anonymous_1767_(iterated, kind, this, arguments, var=var): + var = Scope({u'this':this, u'kind':kind, u'arguments':arguments, u'iterated':iterated}, var) + var.registers([u'kind', u'iterated']) + var.get(u"this").put(u'_t', var.get(u'toIObject')(var.get(u'iterated'))) + var.get(u"this").put(u'_i', Js(0.0)) + var.get(u"this").put(u'_k', var.get(u'kind')) + PyJs_anonymous_1767_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1768_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'index', u'kind', u'O']) + var.put(u'O', var.get(u"this").get(u'_t')) + var.put(u'kind', var.get(u"this").get(u'_k')) + var.put(u'index', (var.get(u"this").put(u'_i',Js(var.get(u"this").get(u'_i').to_number())+Js(1))-Js(1))) + if (var.get(u'O').neg() or (var.get(u'index')>=var.get(u'O').get(u'length'))): + var.get(u"this").put(u'_t', var.get(u'undefined')) + return var.get(u'step')(Js(1.0)) + if (var.get(u'kind')==Js(u'keys')): + return var.get(u'step')(Js(0.0), var.get(u'index')) + if (var.get(u'kind')==Js(u'values')): + return var.get(u'step')(Js(0.0), var.get(u'O').get(var.get(u'index'))) + return var.get(u'step')(Js(0.0), Js([var.get(u'index'), var.get(u'O').get(var.get(u'index'))])) + PyJs_anonymous_1768_._set_name(u'anonymous') + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./_iter-define'))(var.get(u'Array'), Js(u'Array'), PyJs_anonymous_1767_, PyJs_anonymous_1768_, Js(u'values'))) + var.get(u'Iterators').put(u'Arguments', var.get(u'Iterators').get(u'Array')) + var.get(u'addToUnscopables')(Js(u'keys')) + var.get(u'addToUnscopables')(Js(u'values')) + var.get(u'addToUnscopables')(Js(u'entries')) +PyJs_anonymous_1766_._set_name(u'anonymous') +PyJs_Object_1769_ = Js({u'./_add-to-unscopables':Js(130.0),u'./_iter-define':Js(165.0),u'./_iter-step':Js(166.0),u'./_iterators':Js(167.0),u'./_to-iobject':Js(195.0)}) +@Js +def PyJs_anonymous_1770_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'strong', u'exports', u'module']) + Js(u'use strict') + var.put(u'strong', var.get(u'require')(Js(u'./_collection-strong'))) + @Js + def PyJs_anonymous_1771_(get, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':get}, var) + var.registers([u'get']) + @Js + def PyJs_Map_1772_(this, arguments, var=var): + var = Scope({u'this':this, u'Map':PyJs_Map_1772_, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'get')(var.get(u"this"), (var.get(u'arguments').get(u'0') if (var.get(u'arguments').get(u'length')>Js(0.0)) else var.get(u'undefined'))) + PyJs_Map_1772_._set_name(u'Map') + return PyJs_Map_1772_ + PyJs_anonymous_1771_._set_name(u'anonymous') + @Js + def PyJs_get_1774_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key, u'get':PyJs_get_1774_}, var) + var.registers([u'entry', u'key']) + var.put(u'entry', var.get(u'strong').callprop(u'getEntry', var.get(u"this"), var.get(u'key'))) + return (var.get(u'entry') and var.get(u'entry').get(u'v')) + PyJs_get_1774_._set_name(u'get') + @Js + def PyJs_set_1775_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'set':PyJs_set_1775_, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'value', u'key']) + return var.get(u'strong').callprop(u'def', var.get(u"this"), (Js(0.0) if PyJsStrictEq(var.get(u'key'),Js(0.0)) else var.get(u'key')), var.get(u'value')) + PyJs_set_1775_._set_name(u'set') + PyJs_Object_1773_ = Js({u'get':PyJs_get_1774_,u'set':PyJs_set_1775_}) + var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./_collection'))(Js(u'Map'), PyJs_anonymous_1771_, PyJs_Object_1773_, var.get(u'strong'), var.get(u'true'))) +PyJs_anonymous_1770_._set_name(u'anonymous') +PyJs_Object_1776_ = Js({u'./_collection':Js(143.0),u'./_collection-strong':Js(140.0)}) +@Js +def PyJs_anonymous_1777_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'$export', u'require', u'exports', u'module']) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + PyJs_Object_1778_ = Js({u'MAX_SAFE_INTEGER':Js(9007199254740991)}) + var.get(u'$export')(var.get(u'$export').get(u'S'), Js(u'Number'), PyJs_Object_1778_) +PyJs_anonymous_1777_._set_name(u'anonymous') +PyJs_Object_1779_ = Js({u'./_export':Js(151.0)}) +@Js +def PyJs_anonymous_1780_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'$export', u'require', u'exports', u'module']) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + PyJs_Object_1781_ = Js({u'assign':var.get(u'require')(Js(u'./_object-assign'))}) + var.get(u'$export')((var.get(u'$export').get(u'S')+var.get(u'$export').get(u'F')), Js(u'Object'), PyJs_Object_1781_) +PyJs_anonymous_1780_._set_name(u'anonymous') +PyJs_Object_1782_ = Js({u'./_export':Js(151.0),u'./_object-assign':Js(171.0)}) +@Js +def PyJs_anonymous_1783_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'$export', u'require', u'exports', u'module']) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + PyJs_Object_1784_ = Js({u'create':var.get(u'require')(Js(u'./_object-create'))}) + var.get(u'$export')(var.get(u'$export').get(u'S'), Js(u'Object'), PyJs_Object_1784_) +PyJs_anonymous_1783_._set_name(u'anonymous') +PyJs_Object_1785_ = Js({u'./_export':Js(151.0),u'./_object-create':Js(172.0)}) +@Js +def PyJs_anonymous_1786_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'toObject', u'require', u'$keys', u'module']) + var.put(u'toObject', var.get(u'require')(Js(u'./_to-object'))) + var.put(u'$keys', var.get(u'require')(Js(u'./_object-keys'))) + @Js + def PyJs_anonymous_1787_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_keys_1788_(it, this, arguments, var=var): + var = Scope({u'this':this, u'keys':PyJs_keys_1788_, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return var.get(u'$keys')(var.get(u'toObject')(var.get(u'it'))) + PyJs_keys_1788_._set_name(u'keys') + return PyJs_keys_1788_ + PyJs_anonymous_1787_._set_name(u'anonymous') + var.get(u'require')(Js(u'./_object-sap'))(Js(u'keys'), PyJs_anonymous_1787_) +PyJs_anonymous_1786_._set_name(u'anonymous') +PyJs_Object_1789_ = Js({u'./_object-keys':Js(181.0),u'./_object-sap':Js(183.0),u'./_to-object':Js(197.0)}) +@Js +def PyJs_anonymous_1790_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'$export', u'require', u'exports', u'module']) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + PyJs_Object_1791_ = Js({u'setPrototypeOf':var.get(u'require')(Js(u'./_set-proto')).get(u'set')}) + var.get(u'$export')(var.get(u'$export').get(u'S'), Js(u'Object'), PyJs_Object_1791_) +PyJs_anonymous_1790_._set_name(u'anonymous') +PyJs_Object_1792_ = Js({u'./_export':Js(151.0),u'./_set-proto':Js(187.0)}) +@Js +def PyJs_anonymous_1793_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + pass +PyJs_anonymous_1793_._set_name(u'anonymous') +PyJs_Object_1794_ = Js({}) +@Js +def PyJs_anonymous_1795_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'$at', u'require', u'exports', u'module']) + Js(u'use strict') + var.put(u'$at', var.get(u'require')(Js(u'./_string-at'))(var.get(u'true'))) + @Js + def PyJs_anonymous_1796_(iterated, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'iterated':iterated}, var) + var.registers([u'iterated']) + var.get(u"this").put(u'_t', var.get(u'String')(var.get(u'iterated'))) + var.get(u"this").put(u'_i', Js(0.0)) + PyJs_anonymous_1796_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1797_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'index', u'O', u'point']) + var.put(u'O', var.get(u"this").get(u'_t')) + var.put(u'index', var.get(u"this").get(u'_i')) + if (var.get(u'index')>=var.get(u'O').get(u'length')): + PyJs_Object_1798_ = Js({u'value':var.get(u'undefined'),u'done':var.get(u'true')}) + return PyJs_Object_1798_ + var.put(u'point', var.get(u'$at')(var.get(u'O'), var.get(u'index'))) + var.get(u"this").put(u'_i', var.get(u'point').get(u'length'), u'+') + PyJs_Object_1799_ = Js({u'value':var.get(u'point'),u'done':Js(False)}) + return PyJs_Object_1799_ + PyJs_anonymous_1797_._set_name(u'anonymous') + var.get(u'require')(Js(u'./_iter-define'))(var.get(u'String'), Js(u'String'), PyJs_anonymous_1796_, PyJs_anonymous_1797_) +PyJs_anonymous_1795_._set_name(u'anonymous') +PyJs_Object_1800_ = Js({u'./_iter-define':Js(165.0),u'./_string-at':Js(192.0)}) +@Js +def PyJs_anonymous_1801_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_create', u'redefine', u'uid', u'setter', u'global', u'$keys', u'$create', u'$JSON', u'$getOwnPropertySymbols', u'META', u'toIObject', u'$defineProperty', u'wrap', u'wks', u'PROTOTYPE', u'$propertyIsEnumerable', u'ObjectProto', u'OPSymbols', u'$export', u'gOPNExt', u'$DP', u'toPrimitive', u'$GOPD', u'gOPN', u'isEnum', u'keyOf', u'shared', u'gOPD', u'has', u'isArray', u'exports', u'wksExt', u'$fails', u'TO_PRIMITIVE', u'setToStringTag', u'enumKeys', u'SymbolRegistry', u'$defineProperties', u'anObject', u'module', u'$getOwnPropertyDescriptor', u'AllSymbols', u'USE_NATIVE', u'symbols', u'setSymbolDesc', u'i', u'DESCRIPTORS', u'require', u'$getOwnPropertyNames', u'$Symbol', u'_stringify', u'wksDefine', u'HIDDEN', u'isSymbol', u'createDesc', u'dP', u'QObject']) + Js(u'use strict') + var.put(u'global', var.get(u'require')(Js(u'./_global'))) + var.put(u'has', var.get(u'require')(Js(u'./_has'))) + var.put(u'DESCRIPTORS', var.get(u'require')(Js(u'./_descriptors'))) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + var.put(u'redefine', var.get(u'require')(Js(u'./_redefine'))) + var.put(u'META', var.get(u'require')(Js(u'./_meta')).get(u'KEY')) + var.put(u'$fails', var.get(u'require')(Js(u'./_fails'))) + var.put(u'shared', var.get(u'require')(Js(u'./_shared'))) + var.put(u'setToStringTag', var.get(u'require')(Js(u'./_set-to-string-tag'))) + var.put(u'uid', var.get(u'require')(Js(u'./_uid'))) + var.put(u'wks', var.get(u'require')(Js(u'./_wks'))) + var.put(u'wksExt', var.get(u'require')(Js(u'./_wks-ext'))) + var.put(u'wksDefine', var.get(u'require')(Js(u'./_wks-define'))) + var.put(u'keyOf', var.get(u'require')(Js(u'./_keyof'))) + var.put(u'enumKeys', var.get(u'require')(Js(u'./_enum-keys'))) + var.put(u'isArray', var.get(u'require')(Js(u'./_is-array'))) + var.put(u'anObject', var.get(u'require')(Js(u'./_an-object'))) + var.put(u'toIObject', var.get(u'require')(Js(u'./_to-iobject'))) + var.put(u'toPrimitive', var.get(u'require')(Js(u'./_to-primitive'))) + var.put(u'createDesc', var.get(u'require')(Js(u'./_property-desc'))) + var.put(u'_create', var.get(u'require')(Js(u'./_object-create'))) + var.put(u'gOPNExt', var.get(u'require')(Js(u'./_object-gopn-ext'))) + var.put(u'$GOPD', var.get(u'require')(Js(u'./_object-gopd'))) + var.put(u'$DP', var.get(u'require')(Js(u'./_object-dp'))) + var.put(u'$keys', var.get(u'require')(Js(u'./_object-keys'))) + var.put(u'gOPD', var.get(u'$GOPD').get(u'f')) + var.put(u'dP', var.get(u'$DP').get(u'f')) + var.put(u'gOPN', var.get(u'gOPNExt').get(u'f')) + var.put(u'$Symbol', var.get(u'global').get(u'Symbol')) + var.put(u'$JSON', var.get(u'global').get(u'JSON')) + var.put(u'_stringify', (var.get(u'$JSON') and var.get(u'$JSON').get(u'stringify'))) + var.put(u'PROTOTYPE', Js(u'prototype')) + var.put(u'HIDDEN', var.get(u'wks')(Js(u'_hidden'))) + var.put(u'TO_PRIMITIVE', var.get(u'wks')(Js(u'toPrimitive'))) + PyJs_Object_1802_ = Js({}) + var.put(u'isEnum', PyJs_Object_1802_.get(u'propertyIsEnumerable')) + var.put(u'SymbolRegistry', var.get(u'shared')(Js(u'symbol-registry'))) + var.put(u'AllSymbols', var.get(u'shared')(Js(u'symbols'))) + var.put(u'OPSymbols', var.get(u'shared')(Js(u'op-symbols'))) + var.put(u'ObjectProto', var.get(u'Object').get(var.get(u'PROTOTYPE'))) + var.put(u'USE_NATIVE', (var.get(u'$Symbol',throw=False).typeof()==Js(u'function'))) + var.put(u'QObject', var.get(u'global').get(u'QObject')) + var.put(u'setter', ((var.get(u'QObject').neg() or var.get(u'QObject').get(var.get(u'PROTOTYPE')).neg()) or var.get(u'QObject').get(var.get(u'PROTOTYPE')).get(u'findChild').neg())) + @Js + def PyJs_anonymous_1803_(it, key, D, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'it':it, u'key':key, u'D':D}, var) + var.registers([u'protoDesc', u'it', u'key', u'D']) + var.put(u'protoDesc', var.get(u'gOPD')(var.get(u'ObjectProto'), var.get(u'key'))) + if var.get(u'protoDesc'): + var.get(u'ObjectProto').delete(var.get(u'key')) + var.get(u'dP')(var.get(u'it'), var.get(u'key'), var.get(u'D')) + if (var.get(u'protoDesc') and PyJsStrictNeq(var.get(u'it'),var.get(u'ObjectProto'))): + var.get(u'dP')(var.get(u'ObjectProto'), var.get(u'key'), var.get(u'protoDesc')) + PyJs_anonymous_1803_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1804_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + PyJs_Object_1805_ = Js({}) + @Js + def PyJs_anonymous_1807_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + PyJs_Object_1808_ = Js({u'value':Js(7.0)}) + return var.get(u'dP')(var.get(u"this"), Js(u'a'), PyJs_Object_1808_).get(u'a') + PyJs_anonymous_1807_._set_name(u'anonymous') + PyJs_Object_1806_ = Js({u'get':PyJs_anonymous_1807_}) + return (var.get(u'_create')(var.get(u'dP')(PyJs_Object_1805_, Js(u'a'), PyJs_Object_1806_)).get(u'a')!=Js(7.0)) + PyJs_anonymous_1804_._set_name(u'anonymous') + var.put(u'setSymbolDesc', (PyJs_anonymous_1803_ if (var.get(u'DESCRIPTORS') and var.get(u'$fails')(PyJs_anonymous_1804_)) else var.get(u'dP'))) + @Js + def PyJs_anonymous_1809_(tag, this, arguments, var=var): + var = Scope({u'this':this, u'tag':tag, u'arguments':arguments}, var) + var.registers([u'tag', u'sym']) + var.put(u'sym', var.get(u'AllSymbols').put(var.get(u'tag'), var.get(u'_create')(var.get(u'$Symbol').get(var.get(u'PROTOTYPE'))))) + var.get(u'sym').put(u'_k', var.get(u'tag')) + return var.get(u'sym') + PyJs_anonymous_1809_._set_name(u'anonymous') + var.put(u'wrap', PyJs_anonymous_1809_) + @Js + def PyJs_anonymous_1810_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return (var.get(u'it',throw=False).typeof()==Js(u'symbol')) + PyJs_anonymous_1810_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1811_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'arguments':arguments}, var) + var.registers([u'it']) + return var.get(u'it').instanceof(var.get(u'$Symbol')) + PyJs_anonymous_1811_._set_name(u'anonymous') + var.put(u'isSymbol', (PyJs_anonymous_1810_ if (var.get(u'USE_NATIVE') and (var.get(u'$Symbol').get(u'iterator').typeof()==Js(u'symbol'))) else PyJs_anonymous_1811_)) + @Js + def PyJs_defineProperty_1812_(it, key, D, this, arguments, var=var): + var = Scope({u'D':D, u'this':this, u'it':it, u'arguments':arguments, u'key':key, u'defineProperty':PyJs_defineProperty_1812_}, var) + var.registers([u'it', u'key', u'D']) + if PyJsStrictEq(var.get(u'it'),var.get(u'ObjectProto')): + var.get(u'$defineProperty')(var.get(u'OPSymbols'), var.get(u'key'), var.get(u'D')) + var.get(u'anObject')(var.get(u'it')) + var.put(u'key', var.get(u'toPrimitive')(var.get(u'key'), var.get(u'true'))) + var.get(u'anObject')(var.get(u'D')) + if var.get(u'has')(var.get(u'AllSymbols'), var.get(u'key')): + if var.get(u'D').get(u'enumerable').neg(): + if var.get(u'has')(var.get(u'it'), var.get(u'HIDDEN')).neg(): + PyJs_Object_1813_ = Js({}) + var.get(u'dP')(var.get(u'it'), var.get(u'HIDDEN'), var.get(u'createDesc')(Js(1.0), PyJs_Object_1813_)) + var.get(u'it').get(var.get(u'HIDDEN')).put(var.get(u'key'), var.get(u'true')) + else: + if (var.get(u'has')(var.get(u'it'), var.get(u'HIDDEN')) and var.get(u'it').get(var.get(u'HIDDEN')).get(var.get(u'key'))): + var.get(u'it').get(var.get(u'HIDDEN')).put(var.get(u'key'), Js(False)) + PyJs_Object_1814_ = Js({u'enumerable':var.get(u'createDesc')(Js(0.0), Js(False))}) + var.put(u'D', var.get(u'_create')(var.get(u'D'), PyJs_Object_1814_)) + return var.get(u'setSymbolDesc')(var.get(u'it'), var.get(u'key'), var.get(u'D')) + return var.get(u'dP')(var.get(u'it'), var.get(u'key'), var.get(u'D')) + PyJs_defineProperty_1812_._set_name(u'defineProperty') + var.put(u'$defineProperty', PyJs_defineProperty_1812_) + @Js + def PyJs_defineProperties_1815_(it, P, this, arguments, var=var): + var = Scope({u'this':this, u'P':P, u'it':it, u'defineProperties':PyJs_defineProperties_1815_, u'arguments':arguments}, var) + var.registers([u'P', u'keys', u'l', u'it', u'i', u'key']) + var.get(u'anObject')(var.get(u'it')) + var.put(u'keys', var.get(u'enumKeys')(var.put(u'P', var.get(u'toIObject')(var.get(u'P'))))) + var.put(u'i', Js(0.0)) + var.put(u'l', var.get(u'keys').get(u'length')) + while (var.get(u'l')>var.get(u'i')): + var.get(u'$defineProperty')(var.get(u'it'), var.put(u'key', var.get(u'keys').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))), var.get(u'P').get(var.get(u'key'))) + return var.get(u'it') + PyJs_defineProperties_1815_._set_name(u'defineProperties') + var.put(u'$defineProperties', PyJs_defineProperties_1815_) + @Js + def PyJs_create_1816_(it, P, this, arguments, var=var): + var = Scope({u'this':this, u'P':P, u'create':PyJs_create_1816_, u'it':it, u'arguments':arguments}, var) + var.registers([u'P', u'it']) + return (var.get(u'_create')(var.get(u'it')) if PyJsStrictEq(var.get(u'P'),var.get(u'undefined')) else var.get(u'$defineProperties')(var.get(u'_create')(var.get(u'it')), var.get(u'P'))) + PyJs_create_1816_._set_name(u'create') + var.put(u'$create', PyJs_create_1816_) + @Js + def PyJs_propertyIsEnumerable_1817_(key, this, arguments, var=var): + var = Scope({u'this':this, u'propertyIsEnumerable':PyJs_propertyIsEnumerable_1817_, u'arguments':arguments, u'key':key}, var) + var.registers([u'E', u'key']) + var.put(u'E', var.get(u'isEnum').callprop(u'call', var.get(u"this"), var.put(u'key', var.get(u'toPrimitive')(var.get(u'key'), var.get(u'true'))))) + if ((PyJsStrictEq(var.get(u"this"),var.get(u'ObjectProto')) and var.get(u'has')(var.get(u'AllSymbols'), var.get(u'key'))) and var.get(u'has')(var.get(u'OPSymbols'), var.get(u'key')).neg()): + return Js(False) + return (var.get(u'E') if (((var.get(u'E') or var.get(u'has')(var.get(u"this"), var.get(u'key')).neg()) or var.get(u'has')(var.get(u'AllSymbols'), var.get(u'key')).neg()) or (var.get(u'has')(var.get(u"this"), var.get(u'HIDDEN')) and var.get(u"this").get(var.get(u'HIDDEN')).get(var.get(u'key')))) else var.get(u'true')) + PyJs_propertyIsEnumerable_1817_._set_name(u'propertyIsEnumerable') + var.put(u'$propertyIsEnumerable', PyJs_propertyIsEnumerable_1817_) + @Js + def PyJs_getOwnPropertyDescriptor_1818_(it, key, this, arguments, var=var): + var = Scope({u'this':this, u'getOwnPropertyDescriptor':PyJs_getOwnPropertyDescriptor_1818_, u'it':it, u'key':key, u'arguments':arguments}, var) + var.registers([u'D', u'key', u'it']) + var.put(u'it', var.get(u'toIObject')(var.get(u'it'))) + var.put(u'key', var.get(u'toPrimitive')(var.get(u'key'), var.get(u'true'))) + if ((PyJsStrictEq(var.get(u'it'),var.get(u'ObjectProto')) and var.get(u'has')(var.get(u'AllSymbols'), var.get(u'key'))) and var.get(u'has')(var.get(u'OPSymbols'), var.get(u'key')).neg()): + return var.get('undefined') + var.put(u'D', var.get(u'gOPD')(var.get(u'it'), var.get(u'key'))) + if ((var.get(u'D') and var.get(u'has')(var.get(u'AllSymbols'), var.get(u'key'))) and (var.get(u'has')(var.get(u'it'), var.get(u'HIDDEN')) and var.get(u'it').get(var.get(u'HIDDEN')).get(var.get(u'key'))).neg()): + var.get(u'D').put(u'enumerable', var.get(u'true')) + return var.get(u'D') + PyJs_getOwnPropertyDescriptor_1818_._set_name(u'getOwnPropertyDescriptor') + var.put(u'$getOwnPropertyDescriptor', PyJs_getOwnPropertyDescriptor_1818_) + @Js + def PyJs_getOwnPropertyNames_1819_(it, this, arguments, var=var): + var = Scope({u'this':this, u'it':it, u'getOwnPropertyNames':PyJs_getOwnPropertyNames_1819_, u'arguments':arguments}, var) + var.registers([u'i', u'it', u'names', u'key', u'result']) + var.put(u'names', var.get(u'gOPN')(var.get(u'toIObject')(var.get(u'it')))) + var.put(u'result', Js([])) + var.put(u'i', Js(0.0)) + while (var.get(u'names').get(u'length')>var.get(u'i')): + if ((var.get(u'has')(var.get(u'AllSymbols'), var.put(u'key', var.get(u'names').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1))))).neg() and (var.get(u'key')!=var.get(u'HIDDEN'))) and (var.get(u'key')!=var.get(u'META'))): + var.get(u'result').callprop(u'push', var.get(u'key')) + return var.get(u'result') + PyJs_getOwnPropertyNames_1819_._set_name(u'getOwnPropertyNames') + var.put(u'$getOwnPropertyNames', PyJs_getOwnPropertyNames_1819_) + @Js + def PyJs_getOwnPropertySymbols_1820_(it, this, arguments, var=var): + var = Scope({u'this':this, u'getOwnPropertySymbols':PyJs_getOwnPropertySymbols_1820_, u'it':it, u'arguments':arguments}, var) + var.registers([u'i', u'it', u'names', u'key', u'IS_OP', u'result']) + var.put(u'IS_OP', PyJsStrictEq(var.get(u'it'),var.get(u'ObjectProto'))) + var.put(u'names', var.get(u'gOPN')((var.get(u'OPSymbols') if var.get(u'IS_OP') else var.get(u'toIObject')(var.get(u'it'))))) + var.put(u'result', Js([])) + var.put(u'i', Js(0.0)) + while (var.get(u'names').get(u'length')>var.get(u'i')): + if (var.get(u'has')(var.get(u'AllSymbols'), var.put(u'key', var.get(u'names').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1))))) and (var.get(u'has')(var.get(u'ObjectProto'), var.get(u'key')) if var.get(u'IS_OP') else var.get(u'true'))): + var.get(u'result').callprop(u'push', var.get(u'AllSymbols').get(var.get(u'key'))) + return var.get(u'result') + PyJs_getOwnPropertySymbols_1820_._set_name(u'getOwnPropertySymbols') + var.put(u'$getOwnPropertySymbols', PyJs_getOwnPropertySymbols_1820_) + if var.get(u'USE_NATIVE').neg(): + @Js + def PyJs_Symbol_1821_(this, arguments, var=var): + var = Scope({u'this':this, u'Symbol':PyJs_Symbol_1821_, u'arguments':arguments}, var) + var.registers([u'$set', u'tag']) + if var.get(u"this").instanceof(var.get(u'$Symbol')): + PyJsTempException = JsToPyException(var.get(u'TypeError')(Js(u'Symbol is not a constructor!'))) + raise PyJsTempException + var.put(u'tag', var.get(u'uid')((var.get(u'arguments').get(u'0') if (var.get(u'arguments').get(u'length')>Js(0.0)) else var.get(u'undefined')))) + @Js + def PyJs_anonymous_1822_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + if PyJsStrictEq(var.get(u"this"),var.get(u'ObjectProto')): + var.get(u'$set').callprop(u'call', var.get(u'OPSymbols'), var.get(u'value')) + if (var.get(u'has')(var.get(u"this"), var.get(u'HIDDEN')) and var.get(u'has')(var.get(u"this").get(var.get(u'HIDDEN')), var.get(u'tag'))): + var.get(u"this").get(var.get(u'HIDDEN')).put(var.get(u'tag'), Js(False)) + var.get(u'setSymbolDesc')(var.get(u"this"), var.get(u'tag'), var.get(u'createDesc')(Js(1.0), var.get(u'value'))) + PyJs_anonymous_1822_._set_name(u'anonymous') + var.put(u'$set', PyJs_anonymous_1822_) + if (var.get(u'DESCRIPTORS') and var.get(u'setter')): + PyJs_Object_1823_ = Js({u'configurable':var.get(u'true'),u'set':var.get(u'$set')}) + var.get(u'setSymbolDesc')(var.get(u'ObjectProto'), var.get(u'tag'), PyJs_Object_1823_) + return var.get(u'wrap')(var.get(u'tag')) + PyJs_Symbol_1821_._set_name(u'Symbol') + var.put(u'$Symbol', PyJs_Symbol_1821_) + @Js + def PyJs_toString_1824_(this, arguments, var=var): + var = Scope({u'this':this, u'toString':PyJs_toString_1824_, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").get(u'_k') + PyJs_toString_1824_._set_name(u'toString') + var.get(u'redefine')(var.get(u'$Symbol').get(var.get(u'PROTOTYPE')), Js(u'toString'), PyJs_toString_1824_) + var.get(u'$GOPD').put(u'f', var.get(u'$getOwnPropertyDescriptor')) + var.get(u'$DP').put(u'f', var.get(u'$defineProperty')) + var.get(u'require')(Js(u'./_object-gopn')).put(u'f', var.get(u'gOPNExt').put(u'f', var.get(u'$getOwnPropertyNames'))) + var.get(u'require')(Js(u'./_object-pie')).put(u'f', var.get(u'$propertyIsEnumerable')) + var.get(u'require')(Js(u'./_object-gops')).put(u'f', var.get(u'$getOwnPropertySymbols')) + if (var.get(u'DESCRIPTORS') and var.get(u'require')(Js(u'./_library')).neg()): + var.get(u'redefine')(var.get(u'ObjectProto'), Js(u'propertyIsEnumerable'), var.get(u'$propertyIsEnumerable'), var.get(u'true')) + @Js + def PyJs_anonymous_1825_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + return var.get(u'wrap')(var.get(u'wks')(var.get(u'name'))) + PyJs_anonymous_1825_._set_name(u'anonymous') + var.get(u'wksExt').put(u'f', PyJs_anonymous_1825_) + PyJs_Object_1826_ = Js({u'Symbol':var.get(u'$Symbol')}) + var.get(u'$export')(((var.get(u'$export').get(u'G')+var.get(u'$export').get(u'W'))+(var.get(u'$export').get(u'F')*var.get(u'USE_NATIVE').neg())), PyJs_Object_1826_) + #for JS loop + var.put(u'symbols', Js(u'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables').callprop(u'split', Js(u','))) + var.put(u'i', Js(0.0)) + while (var.get(u'symbols').get(u'length')>var.get(u'i')): + var.get(u'wks')(var.get(u'symbols').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))) + + #for JS loop + var.put(u'symbols', var.get(u'$keys')(var.get(u'wks').get(u'store'))) + var.put(u'i', Js(0.0)) + while (var.get(u'symbols').get(u'length')>var.get(u'i')): + var.get(u'wksDefine')(var.get(u'symbols').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))) + + @Js + def PyJs_anonymous_1828_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + return (var.get(u'SymbolRegistry').get(var.get(u'key')) if var.get(u'has')(var.get(u'SymbolRegistry'), var.put(u'key', Js(u''), u'+')) else var.get(u'SymbolRegistry').put(var.get(u'key'), var.get(u'$Symbol')(var.get(u'key')))) + PyJs_anonymous_1828_._set_name(u'anonymous') + @Js + def PyJs_keyFor_1829_(key, this, arguments, var=var): + var = Scope({u'this':this, u'keyFor':PyJs_keyFor_1829_, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + if var.get(u'isSymbol')(var.get(u'key')): + return var.get(u'keyOf')(var.get(u'SymbolRegistry'), var.get(u'key')) + PyJsTempException = JsToPyException(var.get(u'TypeError')((var.get(u'key')+Js(u' is not a symbol!')))) + raise PyJsTempException + PyJs_keyFor_1829_._set_name(u'keyFor') + @Js + def PyJs_anonymous_1830_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.put(u'setter', var.get(u'true')) + PyJs_anonymous_1830_._set_name(u'anonymous') + @Js + def PyJs_anonymous_1831_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.put(u'setter', Js(False)) + PyJs_anonymous_1831_._set_name(u'anonymous') + PyJs_Object_1827_ = Js({u'for':PyJs_anonymous_1828_,u'keyFor':PyJs_keyFor_1829_,u'useSetter':PyJs_anonymous_1830_,u'useSimple':PyJs_anonymous_1831_}) + var.get(u'$export')((var.get(u'$export').get(u'S')+(var.get(u'$export').get(u'F')*var.get(u'USE_NATIVE').neg())), Js(u'Symbol'), PyJs_Object_1827_) + PyJs_Object_1832_ = Js({u'create':var.get(u'$create'),u'defineProperty':var.get(u'$defineProperty'),u'defineProperties':var.get(u'$defineProperties'),u'getOwnPropertyDescriptor':var.get(u'$getOwnPropertyDescriptor'),u'getOwnPropertyNames':var.get(u'$getOwnPropertyNames'),u'getOwnPropertySymbols':var.get(u'$getOwnPropertySymbols')}) + var.get(u'$export')((var.get(u'$export').get(u'S')+(var.get(u'$export').get(u'F')*var.get(u'USE_NATIVE').neg())), Js(u'Object'), PyJs_Object_1832_) + @Js + def PyJs_anonymous_1833_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'S']) + var.put(u'S', var.get(u'$Symbol')()) + PyJs_Object_1834_ = Js({u'a':var.get(u'S')}) + return (((var.get(u'_stringify')(Js([var.get(u'S')]))!=Js(u'[null]')) or (var.get(u'_stringify')(PyJs_Object_1834_)!=Js(u'{}'))) or (var.get(u'_stringify')(var.get(u'Object')(var.get(u'S')))!=Js(u'{}'))) + PyJs_anonymous_1833_._set_name(u'anonymous') + @Js + def PyJs_stringify_1836_(it, this, arguments, var=var): + var = Scope({u'this':this, u'stringify':PyJs_stringify_1836_, u'it':it, u'arguments':arguments}, var) + var.registers([u'i', u'replacer', u'args', u'it', u'$replacer']) + if (PyJsStrictEq(var.get(u'it'),var.get(u'undefined')) or var.get(u'isSymbol')(var.get(u'it'))): + return var.get('undefined') + var.put(u'args', Js([var.get(u'it')])) + var.put(u'i', Js(1.0)) + while (var.get(u'arguments').get(u'length')>var.get(u'i')): + var.get(u'args').callprop(u'push', var.get(u'arguments').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))) + var.put(u'replacer', var.get(u'args').get(u'1')) + if (var.get(u'replacer',throw=False).typeof()==Js(u'function')): + var.put(u'$replacer', var.get(u'replacer')) + if (var.get(u'$replacer') or var.get(u'isArray')(var.get(u'replacer')).neg()): + @Js + def PyJs_anonymous_1837_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'value', u'key']) + if var.get(u'$replacer'): + var.put(u'value', var.get(u'$replacer').callprop(u'call', var.get(u"this"), var.get(u'key'), var.get(u'value'))) + if var.get(u'isSymbol')(var.get(u'value')).neg(): + return var.get(u'value') + PyJs_anonymous_1837_._set_name(u'anonymous') + var.put(u'replacer', PyJs_anonymous_1837_) + var.get(u'args').put(u'1', var.get(u'replacer')) + return var.get(u'_stringify').callprop(u'apply', var.get(u'$JSON'), var.get(u'args')) + PyJs_stringify_1836_._set_name(u'stringify') + PyJs_Object_1835_ = Js({u'stringify':PyJs_stringify_1836_}) + (var.get(u'$JSON') and var.get(u'$export')((var.get(u'$export').get(u'S')+(var.get(u'$export').get(u'F')*(var.get(u'USE_NATIVE').neg() or var.get(u'$fails')(PyJs_anonymous_1833_)))), Js(u'JSON'), PyJs_Object_1835_)) + (var.get(u'$Symbol').get(var.get(u'PROTOTYPE')).get(var.get(u'TO_PRIMITIVE')) or var.get(u'require')(Js(u'./_hide'))(var.get(u'$Symbol').get(var.get(u'PROTOTYPE')), var.get(u'TO_PRIMITIVE'), var.get(u'$Symbol').get(var.get(u'PROTOTYPE')).get(u'valueOf'))) + var.get(u'setToStringTag')(var.get(u'$Symbol'), Js(u'Symbol')) + var.get(u'setToStringTag')(var.get(u'Math'), Js(u'Math'), var.get(u'true')) + var.get(u'setToStringTag')(var.get(u'global').get(u'JSON'), Js(u'JSON'), var.get(u'true')) +PyJs_anonymous_1801_._set_name(u'anonymous') +PyJs_Object_1838_ = Js({u'./_an-object':Js(132.0),u'./_descriptors':Js(147.0),u'./_enum-keys':Js(150.0),u'./_export':Js(151.0),u'./_fails':Js(152.0),u'./_global':Js(154.0),u'./_has':Js(155.0),u'./_hide':Js(156.0),u'./_is-array':Js(161.0),u'./_keyof':Js(168.0),u'./_library':Js(169.0),u'./_meta':Js(170.0),u'./_object-create':Js(172.0),u'./_object-dp':Js(173.0),u'./_object-gopd':Js(175.0),u'./_object-gopn':Js(177.0),u'./_object-gopn-ext':Js(176.0),u'./_object-gops':Js(178.0),u'./_object-keys':Js(181.0),u'./_object-pie':Js(182.0),u'./_property-desc':Js(184.0),u'./_redefine':Js(186.0),u'./_set-to-string-tag':Js(189.0),u'./_shared':Js(191.0),u'./_to-iobject':Js(195.0),u'./_to-primitive':Js(198.0),u'./_uid':Js(199.0),u'./_wks':Js(202.0),u'./_wks-define':Js(200.0),u'./_wks-ext':Js(201.0)}) +@Js +def PyJs_anonymous_1839_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'tmp', u'redefine', u'InternalMap', u'methods', u'$WeakMap', u'require', u'isExtensible', u'weak', u'exports', u'wrapper', u'isObject', u'meta', u'module', u'each', u'uncaughtFrozenStore', u'getWeak', u'assign']) + Js(u'use strict') + var.put(u'each', var.get(u'require')(Js(u'./_array-methods'))(Js(0.0))) + var.put(u'redefine', var.get(u'require')(Js(u'./_redefine'))) + var.put(u'meta', var.get(u'require')(Js(u'./_meta'))) + var.put(u'assign', var.get(u'require')(Js(u'./_object-assign'))) + var.put(u'weak', var.get(u'require')(Js(u'./_collection-weak'))) + var.put(u'isObject', var.get(u'require')(Js(u'./_is-object'))) + var.put(u'getWeak', var.get(u'meta').get(u'getWeak')) + var.put(u'isExtensible', var.get(u'Object').get(u'isExtensible')) + var.put(u'uncaughtFrozenStore', var.get(u'weak').get(u'ufstore')) + PyJs_Object_1840_ = Js({}) + var.put(u'tmp', PyJs_Object_1840_) + @Js + def PyJs_anonymous_1841_(get, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':get}, var) + var.registers([u'get']) + @Js + def PyJs_WeakMap_1842_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'WeakMap':PyJs_WeakMap_1842_}, var) + var.registers([]) + return var.get(u'get')(var.get(u"this"), (var.get(u'arguments').get(u'0') if (var.get(u'arguments').get(u'length')>Js(0.0)) else var.get(u'undefined'))) + PyJs_WeakMap_1842_._set_name(u'WeakMap') + return PyJs_WeakMap_1842_ + PyJs_anonymous_1841_._set_name(u'anonymous') + var.put(u'wrapper', PyJs_anonymous_1841_) + @Js + def PyJs_get_1844_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key, u'get':PyJs_get_1844_}, var) + var.registers([u'data', u'key']) + if var.get(u'isObject')(var.get(u'key')): + var.put(u'data', var.get(u'getWeak')(var.get(u'key'))) + if PyJsStrictEq(var.get(u'data'),var.get(u'true')): + return var.get(u'uncaughtFrozenStore')(var.get(u"this")).callprop(u'get', var.get(u'key')) + return (var.get(u'data').get(var.get(u"this").get(u'_i')) if var.get(u'data') else var.get(u'undefined')) + PyJs_get_1844_._set_name(u'get') + @Js + def PyJs_set_1845_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'set':PyJs_set_1845_, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'value', u'key']) + return var.get(u'weak').callprop(u'def', var.get(u"this"), var.get(u'key'), var.get(u'value')) + PyJs_set_1845_._set_name(u'set') + PyJs_Object_1843_ = Js({u'get':PyJs_get_1844_,u'set':PyJs_set_1845_}) + var.put(u'methods', PyJs_Object_1843_) + var.put(u'$WeakMap', var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./_collection'))(Js(u'WeakMap'), var.get(u'wrapper'), var.get(u'methods'), var.get(u'weak'), var.get(u'true'), var.get(u'true')))) + if (var.get(u'$WeakMap').create().callprop(u'set', (var.get(u'Object').get(u'freeze') or var.get(u'Object'))(var.get(u'tmp')), Js(7.0)).callprop(u'get', var.get(u'tmp'))!=Js(7.0)): + var.put(u'InternalMap', var.get(u'weak').callprop(u'getConstructor', var.get(u'wrapper'))) + var.get(u'assign')(var.get(u'InternalMap').get(u'prototype'), var.get(u'methods')) + var.get(u'meta').put(u'NEED', var.get(u'true')) + @Js + def PyJs_anonymous_1846_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'method', u'key', u'proto']) + var.put(u'proto', var.get(u'$WeakMap').get(u'prototype')) + var.put(u'method', var.get(u'proto').get(var.get(u'key'))) + @Js + def PyJs_anonymous_1847_(a, b, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'b':b, u'arguments':arguments}, var) + var.registers([u'a', u'b', u'result']) + if (var.get(u'isObject')(var.get(u'a')) and var.get(u'isExtensible')(var.get(u'a')).neg()): + if var.get(u"this").get(u'_f').neg(): + var.get(u"this").put(u'_f', var.get(u'InternalMap').create()) + var.put(u'result', var.get(u"this").get(u'_f').callprop(var.get(u'key'), var.get(u'a'), var.get(u'b'))) + return (var.get(u"this") if (var.get(u'key')==Js(u'set')) else var.get(u'result')) + return var.get(u'method').callprop(u'call', var.get(u"this"), var.get(u'a'), var.get(u'b')) + PyJs_anonymous_1847_._set_name(u'anonymous') + var.get(u'redefine')(var.get(u'proto'), var.get(u'key'), PyJs_anonymous_1847_) + PyJs_anonymous_1846_._set_name(u'anonymous') + var.get(u'each')(Js([Js(u'delete'), Js(u'has'), Js(u'get'), Js(u'set')]), PyJs_anonymous_1846_) +PyJs_anonymous_1839_._set_name(u'anonymous') +PyJs_Object_1848_ = Js({u'./_array-methods':Js(135.0),u'./_collection':Js(143.0),u'./_collection-weak':Js(142.0),u'./_is-object':Js(162.0),u'./_meta':Js(170.0),u'./_object-assign':Js(171.0),u'./_redefine':Js(186.0)}) +@Js +def PyJs_anonymous_1849_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'weak', u'exports', u'module']) + Js(u'use strict') + var.put(u'weak', var.get(u'require')(Js(u'./_collection-weak'))) + @Js + def PyJs_anonymous_1850_(get, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':get}, var) + var.registers([u'get']) + @Js + def PyJs_WeakSet_1851_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'WeakSet':PyJs_WeakSet_1851_}, var) + var.registers([]) + return var.get(u'get')(var.get(u"this"), (var.get(u'arguments').get(u'0') if (var.get(u'arguments').get(u'length')>Js(0.0)) else var.get(u'undefined'))) + PyJs_WeakSet_1851_._set_name(u'WeakSet') + return PyJs_WeakSet_1851_ + PyJs_anonymous_1850_._set_name(u'anonymous') + @Js + def PyJs_add_1853_(value, this, arguments, var=var): + var = Scope({u'this':this, u'add':PyJs_add_1853_, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return var.get(u'weak').callprop(u'def', var.get(u"this"), var.get(u'value'), var.get(u'true')) + PyJs_add_1853_._set_name(u'add') + PyJs_Object_1852_ = Js({u'add':PyJs_add_1853_}) + var.get(u'require')(Js(u'./_collection'))(Js(u'WeakSet'), PyJs_anonymous_1850_, PyJs_Object_1852_, var.get(u'weak'), Js(False), var.get(u'true')) +PyJs_anonymous_1849_._set_name(u'anonymous') +PyJs_Object_1854_ = Js({u'./_collection':Js(143.0),u'./_collection-weak':Js(142.0)}) +@Js +def PyJs_anonymous_1855_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'$export', u'require', u'exports', u'module']) + var.put(u'$export', var.get(u'require')(Js(u'./_export'))) + PyJs_Object_1856_ = Js({u'toJSON':var.get(u'require')(Js(u'./_collection-to-json'))(Js(u'Map'))}) + var.get(u'$export')((var.get(u'$export').get(u'P')+var.get(u'$export').get(u'R')), Js(u'Map'), PyJs_Object_1856_) +PyJs_anonymous_1855_._set_name(u'anonymous') +PyJs_Object_1857_ = Js({u'./_collection-to-json':Js(141.0),u'./_export':Js(151.0)}) +@Js +def PyJs_anonymous_1858_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'./_wks-define'))(Js(u'asyncIterator')) +PyJs_anonymous_1858_._set_name(u'anonymous') +PyJs_Object_1859_ = Js({u'./_wks-define':Js(200.0)}) +@Js +def PyJs_anonymous_1860_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'require')(Js(u'./_wks-define'))(Js(u'observable')) +PyJs_anonymous_1860_._set_name(u'anonymous') +PyJs_Object_1861_ = Js({u'./_wks-define':Js(200.0)}) +@Js +def PyJs_anonymous_1862_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'TO_STRING_TAG', u'exports', u'hide', u'NAME', u'proto', u'i', u'require', u'global', u'Collection', u'Iterators', u'collections', u'module']) + var.get(u'require')(Js(u'./es6.array.iterator')) + var.put(u'global', var.get(u'require')(Js(u'./_global'))) + var.put(u'hide', var.get(u'require')(Js(u'./_hide'))) + var.put(u'Iterators', var.get(u'require')(Js(u'./_iterators'))) + var.put(u'TO_STRING_TAG', var.get(u'require')(Js(u'./_wks'))(Js(u'toStringTag'))) + #for JS loop + var.put(u'collections', Js([Js(u'NodeList'), Js(u'DOMTokenList'), Js(u'MediaList'), Js(u'StyleSheetList'), Js(u'CSSRuleList')])) + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(1.0)): + return var.get(u'program').get(u'body') + else: + return var.get(u'program').get(u'body').get(u'0') + PyJsHoisted_useTemplate_.func_name = u'useTemplate' + var.put(u'useTemplate', PyJsHoisted_useTemplate_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1872_ = Js({}) + var.put(u'newObj', PyJs_Object_1872_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_symbol', var.get(u'require')(Js(u'babel-runtime/core-js/symbol'))) + var.put(u'_symbol2', var.get(u'_interopRequireDefault')(var.get(u'_symbol'))) + @Js + def PyJs_anonymous_1865_(code, opts, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'_getAst', u'code', u'stack', u'opts']) + var.put(u'stack', PyJsComma(Js(0.0), Js(None))) + try: + PyJsTempException = JsToPyException(var.get(u'Error').create()) + raise PyJsTempException + except PyJsException as PyJsTempException: + PyJsHolder_6572726f72_58122749 = var.own.get(u'error') + var.force_own_put(u'error', PyExceptionToJs(PyJsTempException)) + try: + if var.get(u'error').get(u'stack'): + var.put(u'stack', var.get(u'error').get(u'stack').callprop(u'split', Js(u'\n')).callprop(u'slice', Js(1.0)).callprop(u'join', Js(u'\n'))) + finally: + if PyJsHolder_6572726f72_58122749 is not None: + var.own[u'error'] = PyJsHolder_6572726f72_58122749 + else: + del var.own[u'error'] + del PyJsHolder_6572726f72_58122749 + PyJs_Object_1866_ = Js({u'allowReturnOutsideFunction':var.get(u'true'),u'allowSuperOutsideMethod':var.get(u'true'),u'preserveComments':Js(False)}) + var.put(u'opts', PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(PyJs_Object_1866_, var.get(u'opts'))) + @Js + def PyJs_getAst_1867_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getAst':PyJs_getAst_1867_}, var) + var.registers([u'ast']) + var.put(u'ast', PyJsComma(Js(0.0), Js(None))) + try: + var.put(u'ast', var.get(u'babylon').callprop(u'parse', var.get(u'code'), var.get(u'opts'))) + PyJs_Object_1868_ = Js({u'preserveComments':var.get(u'opts').get(u'preserveComments')}) + var.put(u'ast', var.get(u'_babelTraverse2').get(u'default').callprop(u'removeProperties', var.get(u'ast'), PyJs_Object_1868_)) + @Js + def PyJs_anonymous_1869_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u'node').put(var.get(u'FROM_TEMPLATE'), var.get(u'true')) + PyJs_anonymous_1869_._set_name(u'anonymous') + var.get(u'_babelTraverse2').get(u'default').callprop(u'cheap', var.get(u'ast'), PyJs_anonymous_1869_) + except PyJsException as PyJsTempException: + PyJsHolder_657272_43794349 = var.own.get(u'err') + var.force_own_put(u'err', PyExceptionToJs(PyJsTempException)) + try: + var.get(u'err').put(u'stack', ((var.get(u'err').get(u'stack')+Js(u'from\n'))+var.get(u'stack'))) + PyJsTempException = JsToPyException(var.get(u'err')) + raise PyJsTempException + finally: + if PyJsHolder_657272_43794349 is not None: + var.own[u'err'] = PyJsHolder_657272_43794349 + else: + del var.own[u'err'] + del PyJsHolder_657272_43794349 + @Js + def PyJs_getAst_1870_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getAst':PyJs_getAst_1870_}, var) + var.registers([]) + return var.get(u'ast') + PyJs_getAst_1870_._set_name(u'getAst') + var.put(u'_getAst', PyJs_getAst_1870_) + return var.get(u'ast') + PyJs_getAst_1867_._set_name(u'getAst') + var.put(u'_getAst', PyJs_getAst_1867_) + @Js + def PyJs_anonymous_1871_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'_len', u'_key', u'args']) + #for JS loop + var.put(u'_len', var.get(u'arguments').get(u'length')) + var.put(u'args', var.get(u'Array')(var.get(u'_len'))) + var.put(u'_key', Js(0.0)) + while (var.get(u'_key')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'key', var.get(u'_ref')) + if var.get(u'node').get(var.get(u'key')): + return var.get(u'true') + + return Js(False) + PyJs_shouldVisit_1886_._set_name(u'shouldVisit') + var.get(u'TraversalContext').get(u'prototype').put(u'shouldVisit', PyJs_shouldVisit_1886_) + @Js + def PyJs_create_1887_(node, obj, key, listKey, this, arguments, var=var): + var = Scope({u'node':node, u'obj':obj, u'arguments':arguments, u'key':key, u'this':this, u'listKey':listKey, u'create':PyJs_create_1887_}, var) + var.registers([u'node', u'listKey', u'obj', u'key']) + PyJs_Object_1888_ = Js({u'parentPath':var.get(u"this").get(u'parentPath'),u'parent':var.get(u'node'),u'container':var.get(u'obj'),u'key':var.get(u'key'),u'listKey':var.get(u'listKey')}) + return var.get(u'_path3').get(u'default').callprop(u'get', PyJs_Object_1888_) + PyJs_create_1887_._set_name(u'create') + var.get(u'TraversalContext').get(u'prototype').put(u'create', PyJs_create_1887_) + @Js + def PyJs_maybeQueue_1889_(path, notPriority, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'maybeQueue':PyJs_maybeQueue_1889_, u'notPriority':notPriority, u'arguments':arguments}, var) + var.registers([u'path', u'notPriority']) + if var.get(u"this").get(u'trap'): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'Infinite cycle detected'))) + raise PyJsTempException + if var.get(u"this").get(u'queue'): + if var.get(u'notPriority'): + var.get(u"this").get(u'queue').callprop(u'push', var.get(u'path')) + else: + var.get(u"this").get(u'priorityQueue').callprop(u'push', var.get(u'path')) + PyJs_maybeQueue_1889_._set_name(u'maybeQueue') + var.get(u'TraversalContext').get(u'prototype').put(u'maybeQueue', PyJs_maybeQueue_1889_) + @Js + def PyJs_visitMultiple_1890_(container, parent, listKey, this, arguments, var=var): + var = Scope({u'visitMultiple':PyJs_visitMultiple_1890_, u'container':container, u'parent':parent, u'this':this, u'listKey':listKey, u'arguments':arguments}, var) + var.registers([u'node', u'container', u'parent', u'listKey', u'queue', u'key']) + if PyJsStrictEq(var.get(u'container').get(u'length'),Js(0.0)): + return Js(False) + var.put(u'queue', Js([])) + #for JS loop + var.put(u'key', Js(0.0)) + while (var.get(u'key')=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'path', var.get(u'_ref2')) + var.get(u'path').callprop(u'resync') + if (PyJsStrictEq(var.get(u'path').get(u'contexts').get(u'length'),Js(0.0)) or PyJsStrictNeq(var.get(u'path').get(u'contexts').get((var.get(u'path').get(u'contexts').get(u'length')-Js(1.0))),var.get(u"this"))): + var.get(u'path').callprop(u'pushContext', var.get(u"this")) + if PyJsStrictEq(var.get(u'path').get(u'key'),var.get(u"null")): + continue + if (var.get(u'testing') and (var.get(u'queue').get(u'length')>=Js(10000.0))): + var.get(u"this").put(u'trap', var.get(u'true')) + if (var.get(u'visited').callprop(u'indexOf', var.get(u'path').get(u'node'))>=Js(0.0)): + continue + var.get(u'visited').callprop(u'push', var.get(u'path').get(u'node')) + if var.get(u'path').callprop(u'visit'): + var.put(u'stop', var.get(u'true')) + break + if var.get(u"this").get(u'priorityQueue').get(u'length'): + var.put(u'stop', var.get(u"this").callprop(u'visitQueue', var.get(u"this").get(u'priorityQueue'))) + var.get(u"this").put(u'priorityQueue', Js([])) + var.get(u"this").put(u'queue', var.get(u'queue')) + if var.get(u'stop'): + break + + #for JS loop + var.put(u'_iterator3', var.get(u'queue')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'_path', var.get(u'_ref3')) + var.get(u'_path').callprop(u'popContext') + + var.get(u"this").put(u'queue', var.get(u"null")) + return var.get(u'stop') + PyJs_visitQueue_1892_._set_name(u'visitQueue') + var.get(u'TraversalContext').get(u'prototype').put(u'visitQueue', PyJs_visitQueue_1892_) + @Js + def PyJs_visit_1893_(node, key, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'visit':PyJs_visit_1893_, u'arguments':arguments, u'key':key}, var) + var.registers([u'node', u'nodes', u'key']) + var.put(u'nodes', var.get(u'node').get(var.get(u'key'))) + if var.get(u'nodes').neg(): + return Js(False) + if var.get(u'Array').callprop(u'isArray', var.get(u'nodes')): + return var.get(u"this").callprop(u'visitMultiple', var.get(u'nodes'), var.get(u'node'), var.get(u'key')) + else: + return var.get(u"this").callprop(u'visitSingle', var.get(u'node'), var.get(u'key')) + PyJs_visit_1893_._set_name(u'visit') + var.get(u'TraversalContext').get(u'prototype').put(u'visit', PyJs_visit_1893_) + return var.get(u'TraversalContext') + PyJs_anonymous_1885_._set_name(u'anonymous') + var.put(u'TraversalContext', PyJs_anonymous_1885_()) + var.get(u'exports').put(u'default', var.get(u'TraversalContext')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) + PyJs_anonymous_1882_._set_name(u'anonymous') + PyJs_anonymous_1882_.callprop(u'call', var.get(u"this"), var.get(u'require')(Js(u'_process'))) +PyJs_anonymous_1881_._set_name(u'anonymous') +PyJs_Object_1894_ = Js({u'./path':Js(232.0),u'_process':Js(531.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1895_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'Hub', u'require', u'module', u'_interopRequireDefault', u'_classCallCheck3', u'_classCallCheck2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1896_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1896_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + pass + @Js + def PyJs_Hub_1897_(file, options, this, arguments, var=var): + var = Scope({u'this':this, u'Hub':PyJs_Hub_1897_, u'options':options, u'file':file, u'arguments':arguments}, var) + var.registers([u'options', u'file']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Hub')) + var.get(u"this").put(u'file', var.get(u'file')) + var.get(u"this").put(u'options', var.get(u'options')) + PyJs_Hub_1897_._set_name(u'Hub') + var.put(u'Hub', PyJs_Hub_1897_) + var.get(u'exports').put(u'default', var.get(u'Hub')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1895_._set_name(u'anonymous') +PyJs_Object_1898_ = Js({u'babel-runtime/helpers/classCallCheck':Js(110.0)}) +@Js +def PyJs_anonymous_1899_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'traverse', u'_context', u'_scope', u'module', u'_hub', u'_interopRequireDefault', u'_cache', u'_getIterator2', u'_getIterator3', u'_context2', u'_visitors', u'cache', u'hasBlacklistedType', u'_babelMessages', u'exports', u'_interopRequireWildcard', u'_babelTypes', u'_includes2', u'visitors', u'_includes', u'require', u'messages', u't', u'_path']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1907_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1907_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_traverse_(parent, opts, scope, state, parentPath, this, arguments, var=var): + var = Scope({u'state':state, u'arguments':arguments, u'parent':parent, u'parentPath':parentPath, u'this':this, u'scope':scope, u'opts':opts}, var) + var.registers([u'scope', u'state', u'opts', u'parent', u'parentPath']) + if var.get(u'parent').neg(): + return var.get('undefined') + if var.get(u'opts').neg(): + PyJs_Object_1908_ = Js({}) + var.put(u'opts', PyJs_Object_1908_) + if (var.get(u'opts').get(u'noScope').neg() and var.get(u'scope').neg()): + if (PyJsStrictNeq(var.get(u'parent').get(u'type'),Js(u'Program')) and PyJsStrictNeq(var.get(u'parent').get(u'type'),Js(u'File'))): + PyJsTempException = JsToPyException(var.get(u'Error').create(var.get(u'messages').callprop(u'get', Js(u'traverseNeedsParent'), var.get(u'parent').get(u'type')))) + raise PyJsTempException + var.get(u'visitors').callprop(u'explode', var.get(u'opts')) + var.get(u'traverse').callprop(u'node', var.get(u'parent'), var.get(u'opts'), var.get(u'scope'), var.get(u'state'), var.get(u'parentPath')) + PyJsHoisted_traverse_.func_name = u'traverse' + var.put(u'traverse', PyJsHoisted_traverse_) + @Js + def PyJsHoisted_hasBlacklistedType_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments}, var) + var.registers([u'path', u'state']) + if PyJsStrictEq(var.get(u'path').get(u'node').get(u'type'),var.get(u'state').get(u'type')): + var.get(u'state').put(u'has', var.get(u'true')) + var.get(u'path').callprop(u'stop') + PyJsHoisted_hasBlacklistedType_.func_name = u'hasBlacklistedType' + var.put(u'hasBlacklistedType', PyJsHoisted_hasBlacklistedType_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1906_ = Js({}) + var.put(u'newObj', PyJs_Object_1906_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'visitors', var.get(u'exports').put(u'Hub', var.get(u'exports').put(u'Scope', var.get(u'exports').put(u'NodePath', var.get(u'undefined'))))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_path', var.get(u'require')(Js(u'./path'))) + @Js + def PyJs_get_1901_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_1901_}, var) + var.registers([]) + return var.get(u'_interopRequireDefault')(var.get(u'_path')).get(u'default') + PyJs_get_1901_._set_name(u'get') + PyJs_Object_1900_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_1901_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'NodePath'), PyJs_Object_1900_) + var.put(u'_scope', var.get(u'require')(Js(u'./scope'))) + @Js + def PyJs_get_1903_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_1903_}, var) + var.registers([]) + return var.get(u'_interopRequireDefault')(var.get(u'_scope')).get(u'default') + PyJs_get_1903_._set_name(u'get') + PyJs_Object_1902_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_1903_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'Scope'), PyJs_Object_1902_) + var.put(u'_hub', var.get(u'require')(Js(u'./hub'))) + @Js + def PyJs_get_1905_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_1905_}, var) + var.registers([]) + return var.get(u'_interopRequireDefault')(var.get(u'_hub')).get(u'default') + PyJs_get_1905_._set_name(u'get') + PyJs_Object_1904_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_1905_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'Hub'), PyJs_Object_1904_) + var.get(u'exports').put(u'default', var.get(u'traverse')) + var.put(u'_context', var.get(u'require')(Js(u'./context'))) + var.put(u'_context2', var.get(u'_interopRequireDefault')(var.get(u'_context'))) + var.put(u'_visitors', var.get(u'require')(Js(u'./visitors'))) + var.put(u'visitors', var.get(u'_interopRequireWildcard')(var.get(u'_visitors'))) + var.put(u'_babelMessages', var.get(u'require')(Js(u'babel-messages'))) + var.put(u'messages', var.get(u'_interopRequireWildcard')(var.get(u'_babelMessages'))) + var.put(u'_includes', var.get(u'require')(Js(u'lodash/includes'))) + var.put(u'_includes2', var.get(u'_interopRequireDefault')(var.get(u'_includes'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_cache', var.get(u'require')(Js(u'./cache'))) + var.put(u'cache', var.get(u'_interopRequireWildcard')(var.get(u'_cache'))) + pass + pass + var.get(u'exports').put(u'visitors', var.get(u'visitors')) + pass + var.get(u'traverse').put(u'visitors', var.get(u'visitors')) + var.get(u'traverse').put(u'verify', var.get(u'visitors').get(u'verify')) + var.get(u'traverse').put(u'explode', var.get(u'visitors').get(u'explode')) + var.get(u'traverse').put(u'NodePath', var.get(u'require')(Js(u'./path'))) + var.get(u'traverse').put(u'Scope', var.get(u'require')(Js(u'./scope'))) + var.get(u'traverse').put(u'Hub', var.get(u'require')(Js(u'./hub'))) + @Js + def PyJs_anonymous_1909_(node, enter, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'enter':enter}, var) + var.registers([u'node', u'enter']) + return var.get(u't').callprop(u'traverseFast', var.get(u'node'), var.get(u'enter')) + PyJs_anonymous_1909_._set_name(u'anonymous') + var.get(u'traverse').put(u'cheap', PyJs_anonymous_1909_) + @Js + def PyJs_anonymous_1910_(node, opts, scope, state, parentPath, skipKeys, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'state':state, u'skipKeys':skipKeys, u'parentPath':parentPath, u'scope':scope, u'opts':opts, u'arguments':arguments}, var) + var.registers([u'key', u'node', u'_isArray', u'_iterator', u'context', u'keys', u'state', u'skipKeys', u'_i', u'parentPath', u'scope', u'_ref', u'opts']) + var.put(u'keys', var.get(u't').get(u'VISITOR_KEYS').get(var.get(u'node').get(u'type'))) + if var.get(u'keys').neg(): + return var.get('undefined') + var.put(u'context', var.get(u'_context2').get(u'default').create(var.get(u'scope'), var.get(u'opts'), var.get(u'state'), var.get(u'parentPath'))) + #for JS loop + var.put(u'_iterator', var.get(u'keys')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'key', var.get(u'_ref')) + if (var.get(u'skipKeys') and var.get(u'skipKeys').get(var.get(u'key'))): + continue + if var.get(u'context').callprop(u'visit', var.get(u'node'), var.get(u'key')): + return var.get('undefined') + + PyJs_anonymous_1910_._set_name(u'anonymous') + var.get(u'traverse').put(u'node', PyJs_anonymous_1910_) + @Js + def PyJs_anonymous_1911_(node, opts, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'node', u'opts']) + var.get(u't').callprop(u'removeProperties', var.get(u'node'), var.get(u'opts')) + var.get(u'cache').get(u'path').callprop(u'delete', var.get(u'node')) + PyJs_anonymous_1911_._set_name(u'anonymous') + var.get(u'traverse').put(u'clearNode', PyJs_anonymous_1911_) + @Js + def PyJs_anonymous_1912_(tree, opts, this, arguments, var=var): + var = Scope({u'this':this, u'tree':tree, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'tree', u'opts']) + var.get(u't').callprop(u'traverseFast', var.get(u'tree'), var.get(u'traverse').get(u'clearNode'), var.get(u'opts')) + return var.get(u'tree') + PyJs_anonymous_1912_._set_name(u'anonymous') + var.get(u'traverse').put(u'removeProperties', PyJs_anonymous_1912_) + pass + @Js + def PyJs_anonymous_1913_(tree, scope, type, blacklistTypes, this, arguments, var=var): + var = Scope({u'arguments':arguments, u'type':type, u'this':this, u'scope':scope, u'tree':tree, u'blacklistTypes':blacklistTypes}, var) + var.registers([u'scope', u'state', u'tree', u'blacklistTypes', u'type']) + if PyJsComma(Js(0.0),var.get(u'_includes2').get(u'default'))(var.get(u'blacklistTypes'), var.get(u'tree').get(u'type')): + return Js(False) + if PyJsStrictEq(var.get(u'tree').get(u'type'),var.get(u'type')): + return var.get(u'true') + PyJs_Object_1914_ = Js({u'has':Js(False),u'type':var.get(u'type')}) + var.put(u'state', PyJs_Object_1914_) + PyJs_Object_1915_ = Js({u'blacklist':var.get(u'blacklistTypes'),u'enter':var.get(u'hasBlacklistedType')}) + var.get(u'traverse')(var.get(u'tree'), PyJs_Object_1915_, var.get(u'scope'), var.get(u'state')) + return var.get(u'state').get(u'has') + PyJs_anonymous_1913_._set_name(u'anonymous') + var.get(u'traverse').put(u'hasType', PyJs_anonymous_1913_) + @Js + def PyJs_anonymous_1916_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'cache').callprop(u'clear') + PyJs_anonymous_1916_._set_name(u'anonymous') + var.get(u'traverse').put(u'clearCache', PyJs_anonymous_1916_) + @Js + def PyJs_anonymous_1917_(source, destination, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'destination':destination, u'arguments':arguments}, var) + var.registers([u'source', u'destination']) + if var.get(u'cache').get(u'path').callprop(u'has', var.get(u'source')): + var.get(u'cache').get(u'path').callprop(u'set', var.get(u'destination'), var.get(u'cache').get(u'path').callprop(u'get', var.get(u'source'))) + PyJs_anonymous_1917_._set_name(u'anonymous') + var.get(u'traverse').put(u'copyCache', PyJs_anonymous_1917_) +PyJs_anonymous_1899_._set_name(u'anonymous') +PyJs_Object_1918_ = Js({u'./cache':Js(222.0),u'./context':Js(223.0),u'./hub':Js(224.0),u'./path':Js(232.0),u'./scope':Js(244.0),u'./visitors':Js(246.0),u'babel-messages':Js(57.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0),u'lodash/includes':Js(456.0)}) +@Js +def PyJs_anonymous_1919_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'findParent', u'_interopRequireWildcard', u'_index', u'require', u'_babelTypes', u'getAncestry', u'inShadow', u'module', u'inType', u'getStatementParent', u'getEarliestCommonAncestorFrom', u't', u'_index2', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'find', u'getDeepestCommonAncestorFrom', u'getFunctionParent']) + @Js + def PyJsHoisted_inType_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'_isArray3', u'_ref3', u'_i3', u'path', u'type', u'_iterator3']) + var.put(u'path', var.get(u"this")) + while var.get(u'path'): + #for JS loop + var.put(u'_iterator3', var.get(u'arguments')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'type', var.get(u'_ref3')) + if PyJsStrictEq(var.get(u'path').get(u'node').get(u'type'),var.get(u'type')): + return var.get(u'true') + + var.put(u'path', var.get(u'path').get(u'parentPath')) + return Js(False) + PyJsHoisted_inType_.func_name = u'inType' + var.put(u'inType', PyJsHoisted_inType_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1920_ = Js({}) + var.put(u'newObj', PyJs_Object_1920_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_findParent_(callback, this, arguments, var=var): + var = Scope({u'this':this, u'callback':callback, u'arguments':arguments}, var) + var.registers([u'path', u'callback']) + var.put(u'path', var.get(u"this")) + while var.put(u'path', var.get(u'path').get(u'parentPath')): + if var.get(u'callback')(var.get(u'path')): + return var.get(u'path') + return var.get(u"null") + PyJsHoisted_findParent_.func_name = u'findParent' + var.put(u'findParent', PyJsHoisted_findParent_) + @Js + def PyJsHoisted_getAncestry_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'path', u'paths']) + var.put(u'path', var.get(u"this")) + var.put(u'paths', Js([])) + while 1: + var.get(u'paths').callprop(u'push', var.get(u'path')) + if not var.put(u'path', var.get(u'path').get(u'parentPath')): + break + return var.get(u'paths') + PyJsHoisted_getAncestry_.func_name = u'getAncestry' + var.put(u'getAncestry', PyJsHoisted_getAncestry_) + @Js + def PyJsHoisted_getStatementParent_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'path']) + var.put(u'path', var.get(u"this")) + while 1: + if var.get(u'Array').callprop(u'isArray', var.get(u'path').get(u'container')): + return var.get(u'path') + if not var.put(u'path', var.get(u'path').get(u'parentPath')): + break + PyJsHoisted_getStatementParent_.func_name = u'getStatementParent' + var.put(u'getStatementParent', PyJsHoisted_getStatementParent_) + @Js + def PyJsHoisted_getEarliestCommonAncestorFrom_(paths, this, arguments, var=var): + var = Scope({u'this':this, u'paths':paths, u'arguments':arguments}, var) + var.registers([u'paths']) + @Js + def PyJs_anonymous_1923_(deepest, i, ancestries, this, arguments, var=var): + var = Scope({u'i':i, u'this':this, u'deepest':deepest, u'arguments':arguments, u'ancestries':ancestries}, var) + var.registers([u'_isArray', u'_iterator', u'keys', u'i', u'ancestry', u'earliestKeyIndex', u'deepest', u'_i', u'currentKeyIndex', u'path', u'_ref', u'earliest', u'ancestries']) + var.put(u'earliest', PyJsComma(Js(0.0), Js(None))) + var.put(u'keys', var.get(u't').get(u'VISITOR_KEYS').get(var.get(u'deepest').get(u'type'))) + #for JS loop + var.put(u'_iterator', var.get(u'ancestries')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'ancestry', var.get(u'_ref')) + var.put(u'path', var.get(u'ancestry').get((var.get(u'i')+Js(1.0)))) + if var.get(u'earliest').neg(): + var.put(u'earliest', var.get(u'path')) + continue + if (var.get(u'path').get(u'listKey') and PyJsStrictEq(var.get(u'earliest').get(u'listKey'),var.get(u'path').get(u'listKey'))): + if (var.get(u'path').get(u'key')var.get(u'currentKeyIndex')): + var.put(u'earliest', var.get(u'path')) + + return var.get(u'earliest') + PyJs_anonymous_1923_._set_name(u'anonymous') + return var.get(u"this").callprop(u'getDeepestCommonAncestorFrom', var.get(u'paths'), PyJs_anonymous_1923_) + PyJsHoisted_getEarliestCommonAncestorFrom_.func_name = u'getEarliestCommonAncestorFrom' + var.put(u'getEarliestCommonAncestorFrom', PyJsHoisted_getEarliestCommonAncestorFrom_) + @Js + def PyJsHoisted_getFunctionParent_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + @Js + def PyJs_anonymous_1922_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return (var.get(u'path').callprop(u'isFunction') or var.get(u'path').callprop(u'isProgram')) + PyJs_anonymous_1922_._set_name(u'anonymous') + return var.get(u"this").callprop(u'findParent', PyJs_anonymous_1922_) + PyJsHoisted_getFunctionParent_.func_name = u'getFunctionParent' + var.put(u'getFunctionParent', PyJsHoisted_getFunctionParent_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1921_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1921_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_find_(callback, this, arguments, var=var): + var = Scope({u'this':this, u'callback':callback, u'arguments':arguments}, var) + var.registers([u'path', u'callback']) + var.put(u'path', var.get(u"this")) + while 1: + if var.get(u'callback')(var.get(u'path')): + return var.get(u'path') + if not var.put(u'path', var.get(u'path').get(u'parentPath')): + break + return var.get(u"null") + PyJsHoisted_find_.func_name = u'find' + var.put(u'find', PyJsHoisted_find_) + @Js + def PyJsHoisted_getDeepestCommonAncestorFrom_(paths, filter, this, arguments, var=var): + var = Scope({u'filter':filter, u'paths':paths, u'this':this, u'arguments':arguments}, var) + var.registers([u'paths', u'minDepth', u'_isArray2', u'_this', u'i', u'lastCommonIndex', u'_i2', u'_ref2', u'filter', u'ancestry', u'ancestries', u'lastCommon', u'shouldMatch', u'_iterator2', u'first']) + var.put(u'_this', var.get(u"this")) + if var.get(u'paths').get(u'length').neg(): + return var.get(u"this") + if PyJsStrictEq(var.get(u'paths').get(u'length'),Js(1.0)): + return var.get(u'paths').get(u'0') + var.put(u'minDepth', var.get(u'Infinity')) + var.put(u'lastCommonIndex', PyJsComma(Js(0.0), Js(None))) + var.put(u'lastCommon', PyJsComma(Js(0.0), Js(None))) + @Js + def PyJs_anonymous_1924_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path', u'ancestry']) + var.put(u'ancestry', Js([])) + while 1: + var.get(u'ancestry').callprop(u'unshift', var.get(u'path')) + if not (var.put(u'path', var.get(u'path').get(u'parentPath')) and PyJsStrictNeq(var.get(u'path'),var.get(u'_this'))): + break + if (var.get(u'ancestry').get(u'length')=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'ancestry', var.get(u'_ref2')) + if PyJsStrictNeq(var.get(u'ancestry').get(var.get(u'i')),var.get(u'shouldMatch')): + raise JS_BREAK_LABEL_64657074684c6f6f70("Breaked") + + var.put(u'lastCommonIndex', var.get(u'i')) + var.put(u'lastCommon', var.get(u'shouldMatch')) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + except JS_CONTINUE_LABEL_64657074684c6f6f70: + pass + except JS_BREAK_LABEL_64657074684c6f6f70: + pass + if var.get(u'lastCommon'): + if var.get(u'filter'): + return var.get(u'filter')(var.get(u'lastCommon'), var.get(u'lastCommonIndex'), var.get(u'ancestries')) + else: + return var.get(u'lastCommon') + else: + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"Couldn't find intersection"))) + raise PyJsTempException + PyJsHoisted_getDeepestCommonAncestorFrom_.func_name = u'getDeepestCommonAncestorFrom' + var.put(u'getDeepestCommonAncestorFrom', PyJsHoisted_getDeepestCommonAncestorFrom_) + @Js + def PyJsHoisted_inShadow_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'shadow', u'parentFn', u'key']) + @Js + def PyJs_anonymous_1925_(p, this, arguments, var=var): + var = Scope({u'this':this, u'p':p, u'arguments':arguments}, var) + var.registers([u'p']) + return var.get(u'p').callprop(u'isFunction') + PyJs_anonymous_1925_._set_name(u'anonymous') + var.put(u'parentFn', (var.get(u"this") if var.get(u"this").callprop(u'isFunction') else var.get(u"this").callprop(u'findParent', PyJs_anonymous_1925_))) + if var.get(u'parentFn').neg(): + return var.get('undefined') + if (var.get(u'parentFn').callprop(u'isFunctionExpression') or var.get(u'parentFn').callprop(u'isFunctionDeclaration')): + var.put(u'shadow', var.get(u'parentFn').get(u'node').get(u'shadow')) + if (var.get(u'shadow') and (var.get(u'key').neg() or PyJsStrictNeq(var.get(u'shadow').get(var.get(u'key')),Js(False)))): + return var.get(u'parentFn') + else: + if var.get(u'parentFn').callprop(u'isArrowFunctionExpression'): + return var.get(u'parentFn') + return var.get(u"null") + PyJsHoisted_inShadow_.func_name = u'inShadow' + var.put(u'inShadow', PyJsHoisted_inShadow_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'findParent', var.get(u'findParent')) + var.get(u'exports').put(u'find', var.get(u'find')) + var.get(u'exports').put(u'getFunctionParent', var.get(u'getFunctionParent')) + var.get(u'exports').put(u'getStatementParent', var.get(u'getStatementParent')) + var.get(u'exports').put(u'getEarliestCommonAncestorFrom', var.get(u'getEarliestCommonAncestorFrom')) + var.get(u'exports').put(u'getDeepestCommonAncestorFrom', var.get(u'getDeepestCommonAncestorFrom')) + var.get(u'exports').put(u'getAncestry', var.get(u'getAncestry')) + var.get(u'exports').put(u'inType', var.get(u'inType')) + var.get(u'exports').put(u'inShadow', var.get(u'inShadow')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_1919_._set_name(u'anonymous') +PyJs_Object_1926_ = Js({u'./index':Js(232.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1927_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'addComments', u'module', u'shareCommentsWithSiblings', u'addComment']) + @Js + def PyJsHoisted_addComments_(type, comments, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments, u'comments':comments}, var) + var.registers([u'node', u'type', u'comments', u'key']) + if var.get(u'comments').neg(): + return var.get('undefined') + var.put(u'node', var.get(u"this").get(u'node')) + if var.get(u'node').neg(): + return var.get('undefined') + var.put(u'key', (var.get(u'type')+Js(u'Comments'))) + if var.get(u'node').get(var.get(u'key')): + var.get(u'node').put(var.get(u'key'), var.get(u'node').get(var.get(u'key')).callprop(u'concat', var.get(u'comments'))) + else: + var.get(u'node').put(var.get(u'key'), var.get(u'comments')) + PyJsHoisted_addComments_.func_name = u'addComments' + var.put(u'addComments', PyJsHoisted_addComments_) + @Js + def PyJsHoisted_addComment_(type, content, line, this, arguments, var=var): + var = Scope({u'content':content, u'this':this, u'line':line, u'type':type, u'arguments':arguments}, var) + var.registers([u'content', u'line', u'type']) + PyJs_Object_1928_ = Js({u'type':(Js(u'CommentLine') if var.get(u'line') else Js(u'CommentBlock')),u'value':var.get(u'content')}) + var.get(u"this").callprop(u'addComments', var.get(u'type'), Js([PyJs_Object_1928_])) + PyJsHoisted_addComment_.func_name = u'addComment' + var.put(u'addComment', PyJsHoisted_addComment_) + @Js + def PyJsHoisted_shareCommentsWithSiblings_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'leading', u'prev', u'trailing', u'next']) + var.put(u'node', var.get(u"this").get(u'node')) + if var.get(u'node').neg(): + return var.get('undefined') + var.put(u'trailing', var.get(u'node').get(u'trailingComments')) + var.put(u'leading', var.get(u'node').get(u'leadingComments')) + if (var.get(u'trailing').neg() and var.get(u'leading').neg()): + return var.get('undefined') + var.put(u'prev', var.get(u"this").callprop(u'getSibling', (var.get(u"this").get(u'key')-Js(1.0)))) + var.put(u'next', var.get(u"this").callprop(u'getSibling', (var.get(u"this").get(u'key')+Js(1.0)))) + if var.get(u'prev').get(u'node').neg(): + var.put(u'prev', var.get(u'next')) + if var.get(u'next').get(u'node').neg(): + var.put(u'next', var.get(u'prev')) + var.get(u'prev').callprop(u'addComments', Js(u'trailing'), var.get(u'leading')) + var.get(u'next').callprop(u'addComments', Js(u'leading'), var.get(u'trailing')) + PyJsHoisted_shareCommentsWithSiblings_.func_name = u'shareCommentsWithSiblings' + var.put(u'shareCommentsWithSiblings', PyJsHoisted_shareCommentsWithSiblings_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'shareCommentsWithSiblings', var.get(u'shareCommentsWithSiblings')) + var.get(u'exports').put(u'addComment', var.get(u'addComment')) + var.get(u'exports').put(u'addComments', var.get(u'addComments')) + pass + pass + pass +PyJs_anonymous_1927_._set_name(u'anonymous') +PyJs_Object_1929_ = Js({}) +@Js +def PyJs_anonymous_1930_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_getQueueContexts', u'pushContext', u'skip', u'module', u'resync', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'skipKey', u'_call', u'popContext', u'visit', u'setKey', u'call', u'exports', u'_resyncParent', u'_resyncRemoved', u'isBlacklisted', u'stop', u'_resyncList', u'_resyncKey', u'_index2', u'setContext', u'_index', u'setup', u'setScope', u'requeue', u'require']) + @Js + def PyJsHoisted_popContext_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").get(u'contexts').callprop(u'pop') + var.get(u"this").callprop(u'setContext', var.get(u"this").get(u'contexts').get((var.get(u"this").get(u'contexts').get(u'length')-Js(1.0)))) + PyJsHoisted_popContext_.func_name = u'popContext' + var.put(u'popContext', PyJsHoisted_popContext_) + @Js + def PyJsHoisted_setup_(parentPath, container, listKey, key, this, arguments, var=var): + var = Scope({u'container':container, u'arguments':arguments, u'key':key, u'parentPath':parentPath, u'this':this, u'listKey':listKey}, var) + var.registers([u'listKey', u'container', u'key', u'parentPath']) + var.get(u"this").put(u'inList', var.get(u'listKey').neg().neg()) + var.get(u"this").put(u'listKey', var.get(u'listKey')) + var.get(u"this").put(u'parentKey', (var.get(u'listKey') or var.get(u'key'))) + var.get(u"this").put(u'container', var.get(u'container')) + var.get(u"this").put(u'parentPath', (var.get(u'parentPath') or var.get(u"this").get(u'parentPath'))) + var.get(u"this").callprop(u'setKey', var.get(u'key')) + PyJsHoisted_setup_.func_name = u'setup' + var.put(u'setup', PyJsHoisted_setup_) + @Js + def PyJsHoisted_requeue_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'_isArray2', u'contexts', u'_i2', u'_ref2', u'context', u'pathToQueue', u'_iterator2']) + var.put(u'pathToQueue', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else var.get(u"this"))) + if var.get(u'pathToQueue').get(u'removed'): + return var.get('undefined') + var.put(u'contexts', var.get(u"this").get(u'contexts')) + #for JS loop + var.put(u'_iterator2', var.get(u'contexts')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'context', var.get(u'_ref2')) + var.get(u'context').callprop(u'maybeQueue', var.get(u'pathToQueue')) + + PyJsHoisted_requeue_.func_name = u'requeue' + var.put(u'requeue', PyJsHoisted_requeue_) + @Js + def PyJsHoisted__resyncParent_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").get(u'parentPath'): + var.get(u"this").put(u'parent', var.get(u"this").get(u'parentPath').get(u'node')) + PyJsHoisted__resyncParent_.func_name = u'_resyncParent' + var.put(u'_resyncParent', PyJsHoisted__resyncParent_) + @Js + def PyJsHoisted__resyncRemoved_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if (((var.get(u"this").get(u'key')==var.get(u"null")) or var.get(u"this").get(u'container').neg()) or PyJsStrictNeq(var.get(u"this").get(u'container').get(var.get(u"this").get(u'key')),var.get(u"this").get(u'node'))): + var.get(u"this").callprop(u'_markRemoved') + PyJsHoisted__resyncRemoved_.func_name = u'_resyncRemoved' + var.put(u'_resyncRemoved', PyJsHoisted__resyncRemoved_) + @Js + def PyJsHoisted_skip_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'shouldSkip', var.get(u'true')) + PyJsHoisted_skip_.func_name = u'skip' + var.put(u'skip', PyJsHoisted_skip_) + @Js + def PyJsHoisted_resync_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").get(u'removed'): + return var.get('undefined') + var.get(u"this").callprop(u'_resyncParent') + var.get(u"this").callprop(u'_resyncList') + var.get(u"this").callprop(u'_resyncKey') + PyJsHoisted_resync_.func_name = u'resync' + var.put(u'resync', PyJsHoisted_resync_) + @Js + def PyJsHoisted_isBlacklisted_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'blacklist']) + var.put(u'blacklist', var.get(u"this").get(u'opts').get(u'blacklist')) + return (var.get(u'blacklist') and (var.get(u'blacklist').callprop(u'indexOf', var.get(u"this").get(u'node').get(u'type'))>(-Js(1.0)))) + PyJsHoisted_isBlacklisted_.func_name = u'isBlacklisted' + var.put(u'isBlacklisted', PyJsHoisted_isBlacklisted_) + @Js + def PyJsHoisted_visit_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").get(u'node').neg(): + return Js(False) + if var.get(u"this").callprop(u'isBlacklisted'): + return Js(False) + if (var.get(u"this").get(u'opts').get(u'shouldSkip') and var.get(u"this").get(u'opts').callprop(u'shouldSkip', var.get(u"this"))): + return Js(False) + if (var.get(u"this").callprop(u'call', Js(u'enter')) or var.get(u"this").get(u'shouldSkip')): + @Js + def PyJs_anonymous_1933_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return Js(u'Skip...') + PyJs_anonymous_1933_._set_name(u'anonymous') + var.get(u"this").callprop(u'debug', PyJs_anonymous_1933_) + return var.get(u"this").get(u'shouldStop') + @Js + def PyJs_anonymous_1934_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return Js(u'Recursing into...') + PyJs_anonymous_1934_._set_name(u'anonymous') + var.get(u"this").callprop(u'debug', PyJs_anonymous_1934_) + var.get(u'_index2').get(u'default').callprop(u'node', var.get(u"this").get(u'node'), var.get(u"this").get(u'opts'), var.get(u"this").get(u'scope'), var.get(u"this").get(u'state'), var.get(u"this"), var.get(u"this").get(u'skipKeys')) + var.get(u"this").callprop(u'call', Js(u'exit')) + return var.get(u"this").get(u'shouldStop') + PyJsHoisted_visit_.func_name = u'visit' + var.put(u'visit', PyJsHoisted_visit_) + @Js + def PyJsHoisted__resyncList_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'newContainer']) + if (var.get(u"this").get(u'parent').neg() or var.get(u"this").get(u'inList').neg()): + return var.get('undefined') + var.put(u'newContainer', var.get(u"this").get(u'parent').get(var.get(u"this").get(u'listKey'))) + if PyJsStrictEq(var.get(u"this").get(u'container'),var.get(u'newContainer')): + return var.get('undefined') + var.get(u"this").put(u'container', (var.get(u'newContainer') or var.get(u"null"))) + PyJsHoisted__resyncList_.func_name = u'_resyncList' + var.put(u'_resyncList', PyJsHoisted__resyncList_) + @Js + def PyJsHoisted_stop_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'shouldStop', var.get(u'true')) + var.get(u"this").put(u'shouldSkip', var.get(u'true')) + PyJsHoisted_stop_.func_name = u'stop' + var.put(u'stop', PyJsHoisted_stop_) + @Js + def PyJsHoisted__resyncKey_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'key']) + if var.get(u"this").get(u'container').neg(): + return var.get('undefined') + if PyJsStrictEq(var.get(u"this").get(u'node'),var.get(u"this").get(u'container').get(var.get(u"this").get(u'key'))): + return var.get('undefined') + if var.get(u'Array').callprop(u'isArray', var.get(u"this").get(u'container')): + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'fn', var.get(u'_ref')) + if var.get(u'fn').neg(): + continue + var.put(u'node', var.get(u"this").get(u'node')) + if var.get(u'node').neg(): + return var.get(u'true') + var.put(u'ret', var.get(u'fn').callprop(u'call', var.get(u"this").get(u'state'), var.get(u"this"), var.get(u"this").get(u'state'))) + if var.get(u'ret'): + PyJsTempException = JsToPyException(var.get(u'Error').create((Js(u'Unexpected return value from visitor method ')+var.get(u'fn')))) + raise PyJsTempException + if PyJsStrictNeq(var.get(u"this").get(u'node'),var.get(u'node')): + return var.get(u'true') + if ((var.get(u"this").get(u'shouldStop') or var.get(u"this").get(u'shouldSkip')) or var.get(u"this").get(u'removed')): + return var.get(u'true') + + return Js(False) + PyJsHoisted__call_.func_name = u'_call' + var.put(u'_call', PyJsHoisted__call_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'call', var.get(u'call')) + var.get(u'exports').put(u'_call', var.get(u'_call')) + var.get(u'exports').put(u'isBlacklisted', var.get(u'isBlacklisted')) + var.get(u'exports').put(u'visit', var.get(u'visit')) + var.get(u'exports').put(u'skip', var.get(u'skip')) + var.get(u'exports').put(u'skipKey', var.get(u'skipKey')) + var.get(u'exports').put(u'stop', var.get(u'stop')) + var.get(u'exports').put(u'setScope', var.get(u'setScope')) + var.get(u'exports').put(u'setContext', var.get(u'setContext')) + var.get(u'exports').put(u'resync', var.get(u'resync')) + var.get(u'exports').put(u'_resyncParent', var.get(u'_resyncParent')) + var.get(u'exports').put(u'_resyncKey', var.get(u'_resyncKey')) + var.get(u'exports').put(u'_resyncList', var.get(u'_resyncList')) + var.get(u'exports').put(u'_resyncRemoved', var.get(u'_resyncRemoved')) + var.get(u'exports').put(u'popContext', var.get(u'popContext')) + var.get(u'exports').put(u'pushContext', var.get(u'pushContext')) + var.get(u'exports').put(u'setup', var.get(u'setup')) + var.get(u'exports').put(u'setKey', var.get(u'setKey')) + var.get(u'exports').put(u'requeue', var.get(u'requeue')) + var.get(u'exports').put(u'_getQueueContexts', var.get(u'_getQueueContexts')) + var.put(u'_index', var.get(u'require')(Js(u'../index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_1930_._set_name(u'anonymous') +PyJs_Object_1936_ = Js({u'../index':Js(225.0),u'babel-runtime/core-js/get-iterator':Js(96.0)}) +@Js +def PyJs_anonymous_1937_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'arrowFunctionToShadowed', u'_interopRequireWildcard', u'toComputedKey', u'_babelTypes', u'module', u't', u'ensureBlock', u'require']) + @Js + def PyJsHoisted_toComputedKey_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'key']) + var.put(u'node', var.get(u"this").get(u'node')) + var.put(u'key', PyJsComma(Js(0.0), Js(None))) + if var.get(u"this").callprop(u'isMemberExpression'): + var.put(u'key', var.get(u'node').get(u'property')) + else: + if (var.get(u"this").callprop(u'isProperty') or var.get(u"this").callprop(u'isMethod')): + var.put(u'key', var.get(u'node').get(u'key')) + else: + PyJsTempException = JsToPyException(var.get(u'ReferenceError').create(Js(u'todo'))) + raise PyJsTempException + if var.get(u'node').get(u'computed').neg(): + if var.get(u't').callprop(u'isIdentifier', var.get(u'key')): + var.put(u'key', var.get(u't').callprop(u'stringLiteral', var.get(u'key').get(u'name'))) + return var.get(u'key') + PyJsHoisted_toComputedKey_.func_name = u'toComputedKey' + var.put(u'toComputedKey', PyJsHoisted_toComputedKey_) + @Js + def PyJsHoisted_arrowFunctionToShadowed_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").callprop(u'isArrowFunctionExpression').neg(): + return var.get('undefined') + var.get(u"this").callprop(u'ensureBlock') + var.put(u'node', var.get(u"this").get(u'node')) + var.get(u'node').put(u'expression', Js(False)) + var.get(u'node').put(u'type', Js(u'FunctionExpression')) + var.get(u'node').put(u'shadow', (var.get(u'node').get(u'shadow') or var.get(u'true'))) + PyJsHoisted_arrowFunctionToShadowed_.func_name = u'arrowFunctionToShadowed' + var.put(u'arrowFunctionToShadowed', PyJsHoisted_arrowFunctionToShadowed_) + @Js + def PyJsHoisted_ensureBlock_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'ensureBlock', var.get(u"this").get(u'node')) + PyJsHoisted_ensureBlock_.func_name = u'ensureBlock' + var.put(u'ensureBlock', PyJsHoisted_ensureBlock_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1938_ = Js({}) + var.put(u'newObj', PyJs_Object_1938_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'toComputedKey', var.get(u'toComputedKey')) + var.get(u'exports').put(u'ensureBlock', var.get(u'ensureBlock')) + var.get(u'exports').put(u'arrowFunctionToShadowed', var.get(u'arrowFunctionToShadowed')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass +PyJs_anonymous_1937_._set_name(u'anonymous') +PyJs_Object_1939_ = Js({u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1940_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_1941_ = Js({}) + @Js + def PyJs_anonymous_1942_(PyJsArg_676c6f62616c_, this, arguments, var=var): + var = Scope({u'this':this, u'global':PyJsArg_676c6f62616c_, u'arguments':arguments}, var) + var.registers([u'_typeof2', u'_typeof3', u'_map', u'INVALID_METHODS', u'VALID_CALLEES', u'evaluateTruthy', u'global', u'evaluate', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'_map2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1943_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1943_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_evaluate_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'deoptPath', u'evaluate', u'value', u'_evaluate', u'confident', u'deopt', u'seen']) + @Js + def PyJsHoisted_evaluate_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'node', u'item', u'path', u'val', u'existing']) + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'seen').callprop(u'has', var.get(u'node')): + var.put(u'existing', var.get(u'seen').callprop(u'get', var.get(u'node'))) + if var.get(u'existing').get(u'resolved'): + return var.get(u'existing').get(u'value') + else: + var.get(u'deopt')(var.get(u'path')) + return var.get('undefined') + else: + PyJs_Object_1945_ = Js({u'resolved':Js(False)}) + var.put(u'item', PyJs_Object_1945_) + var.get(u'seen').callprop(u'set', var.get(u'node'), var.get(u'item')) + var.put(u'val', var.get(u'_evaluate')(var.get(u'path'))) + if var.get(u'confident'): + var.get(u'item').put(u'resolved', var.get(u'true')) + var.get(u'item').put(u'value', var.get(u'val')) + return var.get(u'val') + PyJsHoisted_evaluate_.func_name = u'evaluate' + var.put(u'evaluate', PyJsHoisted_evaluate_) + @Js + def PyJsHoisted_deopt_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + if var.get(u'confident').neg(): + return var.get('undefined') + var.put(u'deoptPath', var.get(u'path')) + var.put(u'confident', Js(False)) + PyJsHoisted_deopt_.func_name = u'deopt' + var.put(u'deopt', PyJsHoisted_deopt_) + @Js + def PyJsHoisted__evaluate_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'resolved', u'arr', u'right', u'_isArray3', u'_isArray2', u'leftConfident', u'binding', u'argument', u'_ref2', u'_object', u'_value2', u'arg', u'_ref', u'_exprs', u'_iterator', u'_right', u'_i3', u'_i2', u'prop', u'_i', u'props', u'wasConfident', u'type', u'_left', u'node', u'_type', u'args', u'func', u'testResult', u'object', u'elems', u'_value', u'_elem', u'key', u'path', u'_isArray', u'context', u'obj', u'left', u'valuePath', u'i', u'expr', u'keyPath', u'_ref3', u'elem', u'rightConfident', u'exprs', u'str', u'_property', u'property', u'callee', u'_iterator3', u'_iterator2']) + if var.get(u'confident').neg(): + return var.get('undefined') + var.put(u'node', var.get(u'path').get(u'node')) + if var.get(u'path').callprop(u'isSequenceExpression'): + var.put(u'exprs', var.get(u'path').callprop(u'get', Js(u'expressions'))) + return var.get(u'evaluate')(var.get(u'exprs').get((var.get(u'exprs').get(u'length')-Js(1.0)))) + if ((var.get(u'path').callprop(u'isStringLiteral') or var.get(u'path').callprop(u'isNumericLiteral')) or var.get(u'path').callprop(u'isBooleanLiteral')): + return var.get(u'node').get(u'value') + if var.get(u'path').callprop(u'isNullLiteral'): + return var.get(u"null") + if var.get(u'path').callprop(u'isTemplateLiteral'): + var.put(u'str', Js(u'')) + var.put(u'i', Js(0.0)) + var.put(u'_exprs', var.get(u'path').callprop(u'get', Js(u'expressions'))) + #for JS loop + var.put(u'_iterator', var.get(u'node').get(u'quasis')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'elem', var.get(u'_ref')) + if var.get(u'confident').neg(): + break + var.put(u'str', var.get(u'elem').get(u'value').get(u'cooked'), u'+') + var.put(u'expr', var.get(u'_exprs').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))) + if var.get(u'expr'): + var.put(u'str', var.get(u'String')(var.get(u'evaluate')(var.get(u'expr'))), u'+') + + if var.get(u'confident').neg(): + return var.get('undefined') + return var.get(u'str') + if var.get(u'path').callprop(u'isConditionalExpression'): + var.put(u'testResult', var.get(u'evaluate')(var.get(u'path').callprop(u'get', Js(u'test')))) + if var.get(u'confident').neg(): + return var.get('undefined') + if var.get(u'testResult'): + return var.get(u'evaluate')(var.get(u'path').callprop(u'get', Js(u'consequent'))) + else: + return var.get(u'evaluate')(var.get(u'path').callprop(u'get', Js(u'alternate'))) + if var.get(u'path').callprop(u'isExpressionWrapper'): + return var.get(u'evaluate')(var.get(u'path').callprop(u'get', Js(u'expression'))) + PyJs_Object_1946_ = Js({u'callee':var.get(u'node')}) + if (var.get(u'path').callprop(u'isMemberExpression') and var.get(u'path').get(u'parentPath').callprop(u'isCallExpression', PyJs_Object_1946_).neg()): + var.put(u'property', var.get(u'path').callprop(u'get', Js(u'property'))) + var.put(u'object', var.get(u'path').callprop(u'get', Js(u'object'))) + if (var.get(u'object').callprop(u'isLiteral') and var.get(u'property').callprop(u'isIdentifier')): + var.put(u'_value', var.get(u'object').get(u'node').get(u'value')) + var.put(u'type', (Js(u'undefined') if PyJsStrictEq(var.get(u'_value',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'_value')))) + if (PyJsStrictEq(var.get(u'type'),Js(u'number')) or PyJsStrictEq(var.get(u'type'),Js(u'string'))): + return var.get(u'_value').get(var.get(u'property').get(u'node').get(u'name')) + if var.get(u'path').callprop(u'isReferencedIdentifier'): + var.put(u'binding', var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'node').get(u'name'))) + if (var.get(u'binding') and (var.get(u'binding').get(u'constantViolations').get(u'length')>Js(0.0))): + return var.get(u'deopt')(var.get(u'binding').get(u'path')) + if (var.get(u'binding') and var.get(u'binding').get(u'hasValue')): + return var.get(u'binding').get(u'value') + else: + if PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'undefined')): + return var.get(u'undefined') + else: + if PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'Infinity')): + return var.get(u'Infinity') + else: + if PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'NaN')): + return var.get(u'NaN') + var.put(u'resolved', var.get(u'path').callprop(u'resolve')) + if PyJsStrictEq(var.get(u'resolved'),var.get(u'path')): + return var.get(u'deopt')(var.get(u'path')) + else: + return var.get(u'evaluate')(var.get(u'resolved')) + PyJs_Object_1947_ = Js({u'prefix':var.get(u'true')}) + if var.get(u'path').callprop(u'isUnaryExpression', PyJs_Object_1947_): + if PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'void')): + return var.get(u'undefined') + var.put(u'argument', var.get(u'path').callprop(u'get', Js(u'argument'))) + if (PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'typeof')) and (var.get(u'argument').callprop(u'isFunction') or var.get(u'argument').callprop(u'isClass'))): + return Js(u'function') + var.put(u'arg', var.get(u'evaluate')(var.get(u'argument'))) + if var.get(u'confident').neg(): + return var.get('undefined') + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'operator')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'!')): + SWITCHED = True + return var.get(u'arg').neg() + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'+')): + SWITCHED = True + return (+var.get(u'arg')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'-')): + SWITCHED = True + return (-var.get(u'arg')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'~')): + SWITCHED = True + return (~var.get(u'arg')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'typeof')): + SWITCHED = True + return (Js(u'undefined') if PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'arg'))) + SWITCHED = True + break + if var.get(u'path').callprop(u'isArrayExpression'): + var.put(u'arr', Js([])) + var.put(u'elems', var.get(u'path').callprop(u'get', Js(u'elements'))) + #for JS loop + var.put(u'_iterator2', var.get(u'elems')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'_elem', var.get(u'_ref2')) + var.put(u'_elem', var.get(u'_elem').callprop(u'evaluate')) + if var.get(u'_elem').get(u'confident'): + var.get(u'arr').callprop(u'push', var.get(u'_elem').get(u'value')) + else: + return var.get(u'deopt')(var.get(u'_elem')) + + return var.get(u'arr') + if var.get(u'path').callprop(u'isObjectExpression'): + PyJs_Object_1948_ = Js({}) + var.put(u'obj', PyJs_Object_1948_) + var.put(u'props', var.get(u'path').callprop(u'get', Js(u'properties'))) + #for JS loop + var.put(u'_iterator3', var.get(u'props')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'prop', var.get(u'_ref3')) + if (var.get(u'prop').callprop(u'isObjectMethod') or var.get(u'prop').callprop(u'isSpreadProperty')): + return var.get(u'deopt')(var.get(u'prop')) + var.put(u'keyPath', var.get(u'prop').callprop(u'get', Js(u'key'))) + var.put(u'key', var.get(u'keyPath')) + if var.get(u'prop').get(u'node').get(u'computed'): + var.put(u'key', var.get(u'key').callprop(u'evaluate')) + if var.get(u'key').get(u'confident').neg(): + return var.get(u'deopt')(var.get(u'keyPath')) + var.put(u'key', var.get(u'key').get(u'value')) + else: + if var.get(u'key').callprop(u'isIdentifier'): + var.put(u'key', var.get(u'key').get(u'node').get(u'name')) + else: + var.put(u'key', var.get(u'key').get(u'node').get(u'value')) + var.put(u'valuePath', var.get(u'prop').callprop(u'get', Js(u'value'))) + var.put(u'_value2', var.get(u'valuePath').callprop(u'evaluate')) + if var.get(u'_value2').get(u'confident').neg(): + return var.get(u'deopt')(var.get(u'valuePath')) + var.put(u'_value2', var.get(u'_value2').get(u'value')) + var.get(u'obj').put(var.get(u'key'), var.get(u'_value2')) + + return var.get(u'obj') + if var.get(u'path').callprop(u'isLogicalExpression'): + var.put(u'wasConfident', var.get(u'confident')) + var.put(u'left', var.get(u'evaluate')(var.get(u'path').callprop(u'get', Js(u'left')))) + var.put(u'leftConfident', var.get(u'confident')) + var.put(u'confident', var.get(u'wasConfident')) + var.put(u'right', var.get(u'evaluate')(var.get(u'path').callprop(u'get', Js(u'right')))) + var.put(u'rightConfident', var.get(u'confident')) + var.put(u'confident', (var.get(u'leftConfident') and var.get(u'rightConfident'))) + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'operator')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'||')): + SWITCHED = True + if (var.get(u'left') and var.get(u'leftConfident')): + var.put(u'confident', var.get(u'true')) + return var.get(u'left') + if var.get(u'confident').neg(): + return var.get('undefined') + return (var.get(u'left') or var.get(u'right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'&&')): + SWITCHED = True + if ((var.get(u'left').neg() and var.get(u'leftConfident')) or (var.get(u'right').neg() and var.get(u'rightConfident'))): + var.put(u'confident', var.get(u'true')) + if var.get(u'confident').neg(): + return var.get('undefined') + return (var.get(u'left') and var.get(u'right')) + SWITCHED = True + break + if var.get(u'path').callprop(u'isBinaryExpression'): + var.put(u'_left', var.get(u'evaluate')(var.get(u'path').callprop(u'get', Js(u'left')))) + if var.get(u'confident').neg(): + return var.get('undefined') + var.put(u'_right', var.get(u'evaluate')(var.get(u'path').callprop(u'get', Js(u'right')))) + if var.get(u'confident').neg(): + return var.get('undefined') + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'operator')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'-')): + SWITCHED = True + return (var.get(u'_left')-var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'+')): + SWITCHED = True + return (var.get(u'_left')+var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'/')): + SWITCHED = True + return (var.get(u'_left')/var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'*')): + SWITCHED = True + return (var.get(u'_left')*var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'%')): + SWITCHED = True + return (var.get(u'_left')%var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'**')): + SWITCHED = True + return var.get(u'Math').callprop(u'pow', var.get(u'_left'), var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'<')): + SWITCHED = True + return (var.get(u'_left')')): + SWITCHED = True + return (var.get(u'_left')>var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'<=')): + SWITCHED = True + return (var.get(u'_left')<=var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'>=')): + SWITCHED = True + return (var.get(u'_left')>=var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'==')): + SWITCHED = True + return (var.get(u'_left')==var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'!=')): + SWITCHED = True + return (var.get(u'_left')!=var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'===')): + SWITCHED = True + return PyJsStrictEq(var.get(u'_left'),var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'!==')): + SWITCHED = True + return PyJsStrictNeq(var.get(u'_left'),var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'|')): + SWITCHED = True + return (var.get(u'_left')|var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'&')): + SWITCHED = True + return (var.get(u'_left')&var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'^')): + SWITCHED = True + return (var.get(u'_left')^var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'<<')): + SWITCHED = True + return (var.get(u'_left')<>')): + SWITCHED = True + return (var.get(u'_left')>>var.get(u'_right')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'>>>')): + SWITCHED = True + return PyJsBshift(var.get(u'_left'),var.get(u'_right')) + SWITCHED = True + break + if var.get(u'path').callprop(u'isCallExpression'): + var.put(u'callee', var.get(u'path').callprop(u'get', Js(u'callee'))) + var.put(u'context', PyJsComma(Js(0.0), Js(None))) + var.put(u'func', PyJsComma(Js(0.0), Js(None))) + if ((var.get(u'callee').callprop(u'isIdentifier') and var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'callee').get(u'node').get(u'name'), var.get(u'true')).neg()) and (var.get(u'VALID_CALLEES').callprop(u'indexOf', var.get(u'callee').get(u'node').get(u'name'))>=Js(0.0))): + var.put(u'func', var.get(u'global').get(var.get(u'node').get(u'callee').get(u'name'))) + if var.get(u'callee').callprop(u'isMemberExpression'): + var.put(u'_object', var.get(u'callee').callprop(u'get', Js(u'object'))) + var.put(u'_property', var.get(u'callee').callprop(u'get', Js(u'property'))) + if (((var.get(u'_object').callprop(u'isIdentifier') and var.get(u'_property').callprop(u'isIdentifier')) and (var.get(u'VALID_CALLEES').callprop(u'indexOf', var.get(u'_object').get(u'node').get(u'name'))>=Js(0.0))) and (var.get(u'INVALID_METHODS').callprop(u'indexOf', var.get(u'_property').get(u'node').get(u'name'))=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'part', var.get(u'_ref')) + if PyJsStrictEq(var.get(u'part'),Js(u'.')): + var.put(u'path', var.get(u'path').get(u'parentPath')) + else: + if var.get(u'Array').callprop(u'isArray', var.get(u'path')): + var.put(u'path', var.get(u'path').get(var.get(u'part'))) + else: + var.put(u'path', var.get(u'path').callprop(u'get', var.get(u'part'), var.get(u'context'))) + + return var.get(u'path') + PyJsHoisted__getPattern_.func_name = u'_getPattern' + var.put(u'_getPattern', PyJsHoisted__getPattern_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'getStatementParent', var.get(u'getStatementParent')) + var.get(u'exports').put(u'getOpposite', var.get(u'getOpposite')) + var.get(u'exports').put(u'getCompletionRecords', var.get(u'getCompletionRecords')) + var.get(u'exports').put(u'getSibling', var.get(u'getSibling')) + var.get(u'exports').put(u'get', var.get(u'get')) + var.get(u'exports').put(u'_getKey', var.get(u'_getKey')) + var.get(u'exports').put(u'_getPattern', var.get(u'_getPattern')) + var.get(u'exports').put(u'getBindingIdentifiers', var.get(u'getBindingIdentifiers')) + var.get(u'exports').put(u'getOuterBindingIdentifiers', var.get(u'getOuterBindingIdentifiers')) + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_1950_._set_name(u'anonymous') +PyJs_Object_1958_ = Js({u'./index':Js(232.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1959_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'module', u'_scope', u'_ret', u'_invariant2', u'_virtualTypes', u'_ret2', u'_loop2', u'_interopRequireDefault', u'_cache', u'_getIterator2', u'_getIterator3', u'virtualTypes', u'_iterator', u'_debug', u'_i', u'_classCallCheck3', u'_classCallCheck2', u'type', u'NodePath', u'exports', u'_assign', u'_interopRequireWildcard', u'_babelTypes', u'_debug3', u'_debug2', u'_index2', u'_loop', u'_assign2', u'_isArray', u'_index', u'require', u'_ref2', u't', u'_scope2', u'_invariant']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1961_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1961_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1960_ = Js({}) + var.put(u'newObj', PyJs_Object_1960_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_virtualTypes', var.get(u'require')(Js(u'./lib/virtual-types'))) + var.put(u'virtualTypes', var.get(u'_interopRequireWildcard')(var.get(u'_virtualTypes'))) + var.put(u'_debug2', var.get(u'require')(Js(u'debug'))) + var.put(u'_debug3', var.get(u'_interopRequireDefault')(var.get(u'_debug2'))) + var.put(u'_invariant', var.get(u'require')(Js(u'invariant'))) + var.put(u'_invariant2', var.get(u'_interopRequireDefault')(var.get(u'_invariant'))) + var.put(u'_index', var.get(u'require')(Js(u'../index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + var.put(u'_assign', var.get(u'require')(Js(u'lodash/assign'))) + var.put(u'_assign2', var.get(u'_interopRequireDefault')(var.get(u'_assign'))) + var.put(u'_scope', var.get(u'require')(Js(u'../scope'))) + var.put(u'_scope2', var.get(u'_interopRequireDefault')(var.get(u'_scope'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_cache', var.get(u'require')(Js(u'../cache'))) + pass + pass + var.put(u'_debug', PyJsComma(Js(0.0),var.get(u'_debug3').get(u'default'))(Js(u'babel'))) + @Js + def PyJs_anonymous_1962_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'NodePath']) + @Js + def PyJsHoisted_NodePath_(hub, parent, this, arguments, var=var): + var = Scope({u'this':this, u'parent':parent, u'hub':hub, u'arguments':arguments}, var) + var.registers([u'parent', u'hub']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'NodePath')) + var.get(u"this").put(u'parent', var.get(u'parent')) + var.get(u"this").put(u'hub', var.get(u'hub')) + var.get(u"this").put(u'contexts', Js([])) + PyJs_Object_1963_ = Js({}) + var.get(u"this").put(u'data', PyJs_Object_1963_) + var.get(u"this").put(u'shouldSkip', Js(False)) + var.get(u"this").put(u'shouldStop', Js(False)) + var.get(u"this").put(u'removed', Js(False)) + var.get(u"this").put(u'state', var.get(u"null")) + var.get(u"this").put(u'opts', var.get(u"null")) + var.get(u"this").put(u'skipKeys', var.get(u"null")) + var.get(u"this").put(u'parentPath', var.get(u"null")) + var.get(u"this").put(u'context', var.get(u"null")) + var.get(u"this").put(u'container', var.get(u"null")) + var.get(u"this").put(u'listKey', var.get(u"null")) + var.get(u"this").put(u'inList', Js(False)) + var.get(u"this").put(u'parentKey', var.get(u"null")) + var.get(u"this").put(u'key', var.get(u"null")) + var.get(u"this").put(u'node', var.get(u"null")) + var.get(u"this").put(u'scope', var.get(u"null")) + var.get(u"this").put(u'type', var.get(u"null")) + var.get(u"this").put(u'typeAnnotation', var.get(u"null")) + PyJsHoisted_NodePath_.func_name = u'NodePath' + var.put(u'NodePath', PyJsHoisted_NodePath_) + pass + @Js + def PyJs_get_1964_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments, u'get':PyJs_get_1964_}, var) + var.registers([u'paths', u'container', u'hub', u'parent', u'i', u'listKey', u'targetNode', u'key', u'parentPath', u'path', u'pathCheck', u'_ref']) + var.put(u'hub', var.get(u'_ref').get(u'hub')) + var.put(u'parentPath', var.get(u'_ref').get(u'parentPath')) + var.put(u'parent', var.get(u'_ref').get(u'parent')) + var.put(u'container', var.get(u'_ref').get(u'container')) + var.put(u'listKey', var.get(u'_ref').get(u'listKey')) + var.put(u'key', var.get(u'_ref').get(u'key')) + if (var.get(u'hub').neg() and var.get(u'parentPath')): + var.put(u'hub', var.get(u'parentPath').get(u'hub')) + PyJsComma(Js(0.0),var.get(u'_invariant2').get(u'default'))(var.get(u'parent'), Js(u'To get a node path the parent needs to exist')) + var.put(u'targetNode', var.get(u'container').get(var.get(u'key'))) + var.put(u'paths', (var.get(u'_cache').get(u'path').callprop(u'get', var.get(u'parent')) or Js([]))) + if var.get(u'_cache').get(u'path').callprop(u'has', var.get(u'parent')).neg(): + var.get(u'_cache').get(u'path').callprop(u'set', var.get(u'parent'), var.get(u'paths')) + var.put(u'path', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else var.get(u'SyntaxError'))) + return var.get(u"this").get(u'hub').get(u'file').callprop(u'buildCodeFrameError', var.get(u"this").get(u'node'), var.get(u'msg'), var.get(u'Error')) + PyJs_buildCodeFrameError_1968_._set_name(u'buildCodeFrameError') + var.get(u'NodePath').get(u'prototype').put(u'buildCodeFrameError', PyJs_buildCodeFrameError_1968_) + @Js + def PyJs_traverse_1969_(visitor, state, this, arguments, var=var): + var = Scope({u'this':this, u'visitor':visitor, u'state':state, u'arguments':arguments, u'traverse':PyJs_traverse_1969_}, var) + var.registers([u'visitor', u'state']) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(var.get(u"this").get(u'node'), var.get(u'visitor'), var.get(u"this").get(u'scope'), var.get(u'state'), var.get(u"this")) + PyJs_traverse_1969_._set_name(u'traverse') + var.get(u'NodePath').get(u'prototype').put(u'traverse', PyJs_traverse_1969_) + @Js + def PyJs_mark_1970_(type, message, this, arguments, var=var): + var = Scope({u'this':this, u'message':message, u'type':type, u'arguments':arguments, u'mark':PyJs_mark_1970_}, var) + var.registers([u'message', u'type']) + PyJs_Object_1971_ = Js({u'type':var.get(u'type'),u'message':var.get(u'message'),u'loc':var.get(u"this").get(u'node').get(u'loc')}) + var.get(u"this").get(u'hub').get(u'file').get(u'metadata').get(u'marked').callprop(u'push', PyJs_Object_1971_) + PyJs_mark_1970_._set_name(u'mark') + var.get(u'NodePath').get(u'prototype').put(u'mark', PyJs_mark_1970_) + @Js + def PyJs_set_1972_(key, node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'set':PyJs_set_1972_, u'arguments':arguments, u'key':key}, var) + var.registers([u'node', u'key']) + var.get(u't').callprop(u'validate', var.get(u"this").get(u'node'), var.get(u'key'), var.get(u'node')) + var.get(u"this").get(u'node').put(var.get(u'key'), var.get(u'node')) + PyJs_set_1972_._set_name(u'set') + var.get(u'NodePath').get(u'prototype').put(u'set', PyJs_set_1972_) + @Js + def PyJs_getPathLocation_1973_(this, arguments, var=var): + var = Scope({u'this':this, u'getPathLocation':PyJs_getPathLocation_1973_, u'arguments':arguments}, var) + var.registers([u'path', u'parts', u'key']) + var.put(u'parts', Js([])) + var.put(u'path', var.get(u"this")) + while 1: + var.put(u'key', var.get(u'path').get(u'key')) + if var.get(u'path').get(u'inList'): + var.put(u'key', (((var.get(u'path').get(u'listKey')+Js(u'['))+var.get(u'key'))+Js(u']'))) + var.get(u'parts').callprop(u'unshift', var.get(u'key')) + if not var.put(u'path', var.get(u'path').get(u'parentPath')): + break + return var.get(u'parts').callprop(u'join', Js(u'.')) + PyJs_getPathLocation_1973_._set_name(u'getPathLocation') + var.get(u'NodePath').get(u'prototype').put(u'getPathLocation', PyJs_getPathLocation_1973_) + @Js + def PyJs_debug_1974_(buildMessage, this, arguments, var=var): + var = Scope({u'this':this, u'buildMessage':buildMessage, u'arguments':arguments, u'debug':PyJs_debug_1974_}, var) + var.registers([u'buildMessage']) + if var.get(u'_debug').get(u'enabled').neg(): + return var.get('undefined') + var.get(u'_debug')(((((var.get(u"this").callprop(u'getPathLocation')+Js(u' '))+var.get(u"this").get(u'type'))+Js(u': '))+var.get(u'buildMessage')())) + PyJs_debug_1974_._set_name(u'debug') + var.get(u'NodePath').get(u'prototype').put(u'debug', PyJs_debug_1974_) + return var.get(u'NodePath') + PyJs_anonymous_1962_._set_name(u'anonymous') + var.put(u'NodePath', PyJs_anonymous_1962_()) + var.get(u'exports').put(u'default', var.get(u'NodePath')) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./ancestry'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./inference'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./replacement'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./evaluation'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./conversion'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./introspection'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./context'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./removal'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./modification'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./family'))) + PyJsComma(Js(0.0),var.get(u'_assign2').get(u'default'))(var.get(u'NodePath').get(u'prototype'), var.get(u'require')(Js(u'./comments'))) + @Js + def PyJs__loop2_1975_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'_loop2':PyJs__loop2_1975_}, var) + var.registers([u'typeKey', u'type']) + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + return Js(u'break') + var.put(u'_ref2', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + return Js(u'break') + var.put(u'_ref2', var.get(u'_i').get(u'value')) + var.put(u'type', var.get(u'_ref2')) + var.put(u'typeKey', (Js(u'is')+var.get(u'type'))) + @Js + def PyJs_anonymous_1976_(opts, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'opts']) + return var.get(u't').callprop(var.get(u'typeKey'), var.get(u"this").get(u'node'), var.get(u'opts')) + PyJs_anonymous_1976_._set_name(u'anonymous') + var.get(u'NodePath').get(u'prototype').put(var.get(u'typeKey'), PyJs_anonymous_1976_) + @Js + def PyJs_anonymous_1977_(opts, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'opts']) + if var.get(u"this").callprop(var.get(u'typeKey'), var.get(u'opts')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Expected node path of type ')+var.get(u'type')))) + raise PyJsTempException + PyJs_anonymous_1977_._set_name(u'anonymous') + var.get(u'NodePath').get(u'prototype').put((Js(u'assert')+var.get(u'type')), PyJs_anonymous_1977_) + PyJs__loop2_1975_._set_name(u'_loop2') + var.put(u'_loop2', PyJs__loop2_1975_) + #for JS loop + var.put(u'_iterator', var.get(u't').get(u'TYPES')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + var.put(u'_ret2', var.get(u'_loop2')()) + if PyJsStrictEq(var.get(u'_ret2'),Js(u'break')): + break + + @Js + def PyJs__loop_1978_(type, this, arguments, var=var): + var = Scope({u'this':this, u'_loop':PyJs__loop_1978_, u'type':type, u'arguments':arguments}, var) + var.registers([u'virtualType', u'type']) + if PyJsStrictEq(var.get(u'type').get(u'0'),Js(u'_')): + return Js(u'continue') + if (var.get(u't').get(u'TYPES').callprop(u'indexOf', var.get(u'type'))=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'type2', var.get(u'_ref')) + if (var.get(u't').callprop(u'isAnyTypeAnnotation', var.get(u'type2')) or var.get(u'_isBaseType')(var.get(u'name'), var.get(u'type2'), var.get(u'true'))): + return var.get(u'true') + + return Js(False) + else: + return var.get(u'_isBaseType')(var.get(u'name'), var.get(u'type'), var.get(u'true')) + PyJsHoisted_couldBeBaseType_.func_name = u'couldBeBaseType' + var.put(u'couldBeBaseType', PyJsHoisted_couldBeBaseType_) + @Js + def PyJsHoisted_getTypeAnnotation_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'type']) + if var.get(u"this").get(u'typeAnnotation'): + return var.get(u"this").get(u'typeAnnotation') + var.put(u'type', (var.get(u"this").callprop(u'_getTypeAnnotation') or var.get(u't').callprop(u'anyTypeAnnotation'))) + if var.get(u't').callprop(u'isTypeAnnotation', var.get(u'type')): + var.put(u'type', var.get(u'type').get(u'typeAnnotation')) + return var.get(u"this").put(u'typeAnnotation', var.get(u'type')) + PyJsHoisted_getTypeAnnotation_.func_name = u'getTypeAnnotation' + var.put(u'getTypeAnnotation', PyJsHoisted_getTypeAnnotation_) + @Js + def PyJsHoisted_isBaseType_(baseName, soft, this, arguments, var=var): + var = Scope({u'this':this, u'baseName':baseName, u'soft':soft, u'arguments':arguments}, var) + var.registers([u'baseName', u'soft']) + return var.get(u'_isBaseType')(var.get(u'baseName'), var.get(u"this").callprop(u'getTypeAnnotation'), var.get(u'soft')) + PyJsHoisted_isBaseType_.func_name = u'isBaseType' + var.put(u'isBaseType', PyJsHoisted_isBaseType_) + @Js + def PyJsHoisted_baseTypeStrictlyMatches_(right, this, arguments, var=var): + var = Scope({u'this':this, u'right':right, u'arguments':arguments}, var) + var.registers([u'right', u'left']) + var.put(u'left', var.get(u"this").callprop(u'getTypeAnnotation')) + var.put(u'right', var.get(u'right').callprop(u'getTypeAnnotation')) + if (var.get(u't').callprop(u'isAnyTypeAnnotation', var.get(u'left')).neg() and var.get(u't').callprop(u'isFlowBaseAnnotation', var.get(u'left'))): + return PyJsStrictEq(var.get(u'right').get(u'type'),var.get(u'left').get(u'type')) + PyJsHoisted_baseTypeStrictlyMatches_.func_name = u'baseTypeStrictlyMatches' + var.put(u'baseTypeStrictlyMatches', PyJsHoisted_baseTypeStrictlyMatches_) + @Js + def PyJsHoisted__getTypeAnnotation_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'declarParent', u'inferer', u'declar']) + var.put(u'node', var.get(u"this").get(u'node')) + if var.get(u'node').neg(): + if (PyJsStrictEq(var.get(u"this").get(u'key'),Js(u'init')) and var.get(u"this").get(u'parentPath').callprop(u'isVariableDeclarator')): + var.put(u'declar', var.get(u"this").get(u'parentPath').get(u'parentPath')) + var.put(u'declarParent', var.get(u'declar').get(u'parentPath')) + if (PyJsStrictEq(var.get(u'declar').get(u'key'),Js(u'left')) and var.get(u'declarParent').callprop(u'isForInStatement')): + return var.get(u't').callprop(u'stringTypeAnnotation') + if (PyJsStrictEq(var.get(u'declar').get(u'key'),Js(u'left')) and var.get(u'declarParent').callprop(u'isForOfStatement')): + return var.get(u't').callprop(u'anyTypeAnnotation') + return var.get(u't').callprop(u'voidTypeAnnotation') + else: + return var.get('undefined') + if var.get(u'node').get(u'typeAnnotation'): + return var.get(u'node').get(u'typeAnnotation') + var.put(u'inferer', var.get(u'inferers').get(var.get(u'node').get(u'type'))) + if var.get(u'inferer'): + return var.get(u'inferer').callprop(u'call', var.get(u"this"), var.get(u'node')) + var.put(u'inferer', var.get(u'inferers').get(var.get(u"this").get(u'parentPath').get(u'type'))) + if (var.get(u'inferer') and var.get(u'inferer').get(u'validParent')): + return var.get(u"this").get(u'parentPath').callprop(u'getTypeAnnotation') + PyJsHoisted__getTypeAnnotation_.func_name = u'_getTypeAnnotation' + var.put(u'_getTypeAnnotation', PyJsHoisted__getTypeAnnotation_) + @Js + def PyJsHoisted_isGenericType_(genericName, this, arguments, var=var): + var = Scope({u'this':this, u'genericName':genericName, u'arguments':arguments}, var) + var.registers([u'genericName', u'type']) + var.put(u'type', var.get(u"this").callprop(u'getTypeAnnotation')) + PyJs_Object_1984_ = Js({u'name':var.get(u'genericName')}) + return (var.get(u't').callprop(u'isGenericTypeAnnotation', var.get(u'type')) and var.get(u't').callprop(u'isIdentifier', var.get(u'type').get(u'id'), PyJs_Object_1984_)) + PyJsHoisted_isGenericType_.func_name = u'isGenericType' + var.put(u'isGenericType', PyJsHoisted_isGenericType_) + @Js + def PyJsHoisted__isBaseType_(baseName, type, soft, this, arguments, var=var): + var = Scope({u'this':this, u'soft':soft, u'baseName':baseName, u'type':type, u'arguments':arguments}, var) + var.registers([u'soft', u'baseName', u'type']) + if PyJsStrictEq(var.get(u'baseName'),Js(u'string')): + return var.get(u't').callprop(u'isStringTypeAnnotation', var.get(u'type')) + else: + if PyJsStrictEq(var.get(u'baseName'),Js(u'number')): + return var.get(u't').callprop(u'isNumberTypeAnnotation', var.get(u'type')) + else: + if PyJsStrictEq(var.get(u'baseName'),Js(u'boolean')): + return var.get(u't').callprop(u'isBooleanTypeAnnotation', var.get(u'type')) + else: + if PyJsStrictEq(var.get(u'baseName'),Js(u'any')): + return var.get(u't').callprop(u'isAnyTypeAnnotation', var.get(u'type')) + else: + if PyJsStrictEq(var.get(u'baseName'),Js(u'mixed')): + return var.get(u't').callprop(u'isMixedTypeAnnotation', var.get(u'type')) + else: + if PyJsStrictEq(var.get(u'baseName'),Js(u'empty')): + return var.get(u't').callprop(u'isEmptyTypeAnnotation', var.get(u'type')) + else: + if PyJsStrictEq(var.get(u'baseName'),Js(u'void')): + return var.get(u't').callprop(u'isVoidTypeAnnotation', var.get(u'type')) + else: + if var.get(u'soft'): + return Js(False) + else: + PyJsTempException = JsToPyException(var.get(u'Error').create((Js(u'Unknown base type ')+var.get(u'baseName')))) + raise PyJsTempException + PyJsHoisted__isBaseType_.func_name = u'_isBaseType' + var.put(u'_isBaseType', PyJsHoisted__isBaseType_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1983_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1983_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'getTypeAnnotation', var.get(u'getTypeAnnotation')) + var.get(u'exports').put(u'_getTypeAnnotation', var.get(u'_getTypeAnnotation')) + var.get(u'exports').put(u'isBaseType', var.get(u'isBaseType')) + var.get(u'exports').put(u'couldBeBaseType', var.get(u'couldBeBaseType')) + var.get(u'exports').put(u'baseTypeStrictlyMatches', var.get(u'baseTypeStrictlyMatches')) + var.get(u'exports').put(u'isGenericType', var.get(u'isGenericType')) + var.put(u'_inferers', var.get(u'require')(Js(u'./inferers'))) + var.put(u'inferers', var.get(u'_interopRequireWildcard')(var.get(u'_inferers'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_1981_._set_name(u'anonymous') +PyJs_Object_1985_ = Js({u'./inferers':Js(235.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_1986_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'getConditionalAnnotation', u'_interopRequireWildcard', u'getParentConditionalPath', u'require', u'_babelTypes', u'module', u'inferAnnotationFromBinaryExpression', u't', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'getTypeAnnotationBindingConstantViolations', u'getConstantViolationsBefore']) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_1988_ = Js({}) + var.put(u'newObj', PyJs_Object_1988_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_getParentConditionalPath_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path', u'parentPath']) + var.put(u'parentPath', PyJsComma(Js(0.0), Js(None))) + while var.put(u'parentPath', var.get(u'path').get(u'parentPath')): + if (var.get(u'parentPath').callprop(u'isIfStatement') or var.get(u'parentPath').callprop(u'isConditionalExpression')): + if PyJsStrictEq(var.get(u'path').get(u'key'),Js(u'test')): + return var.get('undefined') + else: + return var.get(u'parentPath') + else: + var.put(u'path', var.get(u'parentPath')) + PyJsHoisted_getParentConditionalPath_.func_name = u'getParentConditionalPath' + var.put(u'getParentConditionalPath', PyJsHoisted_getParentConditionalPath_) + @Js + def PyJsHoisted_inferAnnotationFromBinaryExpression_(name, path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'name':name, u'arguments':arguments}, var) + var.registers([u'right', u'target', u'typeValue', u'typeofPath', u'typePath', u'name', u'operator', u'path', u'left']) + var.put(u'operator', var.get(u'path').get(u'node').get(u'operator')) + var.put(u'right', var.get(u'path').callprop(u'get', Js(u'right')).callprop(u'resolve')) + var.put(u'left', var.get(u'path').callprop(u'get', Js(u'left')).callprop(u'resolve')) + var.put(u'target', PyJsComma(Js(0.0), Js(None))) + PyJs_Object_1993_ = Js({u'name':var.get(u'name')}) + if var.get(u'left').callprop(u'isIdentifier', PyJs_Object_1993_): + var.put(u'target', var.get(u'right')) + else: + PyJs_Object_1994_ = Js({u'name':var.get(u'name')}) + if var.get(u'right').callprop(u'isIdentifier', PyJs_Object_1994_): + var.put(u'target', var.get(u'left')) + if var.get(u'target'): + if PyJsStrictEq(var.get(u'operator'),Js(u'===')): + return var.get(u'target').callprop(u'getTypeAnnotation') + else: + if (var.get(u't').get(u'BOOLEAN_NUMBER_BINARY_OPERATORS').callprop(u'indexOf', var.get(u'operator'))>=Js(0.0)): + return var.get(u't').callprop(u'numberTypeAnnotation') + else: + return var.get('undefined') + else: + if PyJsStrictNeq(var.get(u'operator'),Js(u'===')): + return var.get('undefined') + var.put(u'typeofPath', PyJsComma(Js(0.0), Js(None))) + var.put(u'typePath', PyJsComma(Js(0.0), Js(None))) + PyJs_Object_1995_ = Js({u'operator':Js(u'typeof')}) + if var.get(u'left').callprop(u'isUnaryExpression', PyJs_Object_1995_): + var.put(u'typeofPath', var.get(u'left')) + var.put(u'typePath', var.get(u'right')) + else: + PyJs_Object_1996_ = Js({u'operator':Js(u'typeof')}) + if var.get(u'right').callprop(u'isUnaryExpression', PyJs_Object_1996_): + var.put(u'typeofPath', var.get(u'right')) + var.put(u'typePath', var.get(u'left')) + if (var.get(u'typePath').neg() and var.get(u'typeofPath').neg()): + return var.get('undefined') + var.put(u'typePath', var.get(u'typePath').callprop(u'resolve')) + if var.get(u'typePath').callprop(u'isLiteral').neg(): + return var.get('undefined') + var.put(u'typeValue', var.get(u'typePath').get(u'node').get(u'value')) + if PyJsStrictNeq(var.get(u'typeValue',throw=False).typeof(),Js(u'string')): + return var.get('undefined') + PyJs_Object_1997_ = Js({u'name':var.get(u'name')}) + if var.get(u'typeofPath').callprop(u'get', Js(u'argument')).callprop(u'isIdentifier', PyJs_Object_1997_).neg(): + return var.get('undefined') + return var.get(u't').callprop(u'createTypeAnnotationBasedOnTypeof', var.get(u'typePath').get(u'node').get(u'value')) + PyJsHoisted_inferAnnotationFromBinaryExpression_.func_name = u'inferAnnotationFromBinaryExpression' + var.put(u'inferAnnotationFromBinaryExpression', PyJsHoisted_inferAnnotationFromBinaryExpression_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_1989_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_1989_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_getConstantViolationsBefore_(binding, path, functions, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'functions':functions, u'binding':binding, u'arguments':arguments}, var) + var.registers([u'path', u'violations', u'binding', u'functions']) + var.put(u'violations', var.get(u'binding').get(u'constantViolations').callprop(u'slice')) + var.get(u'violations').callprop(u'unshift', var.get(u'binding').get(u'path')) + @Js + def PyJs_anonymous_1992_(violation, this, arguments, var=var): + var = Scope({u'violation':violation, u'this':this, u'arguments':arguments}, var) + var.registers([u'status', u'violation']) + var.put(u'violation', var.get(u'violation').callprop(u'resolve')) + var.put(u'status', var.get(u'violation').callprop(u'_guessExecutionStatusRelativeTo', var.get(u'path'))) + if (var.get(u'functions') and PyJsStrictEq(var.get(u'status'),Js(u'function'))): + var.get(u'functions').callprop(u'push', var.get(u'violation')) + return PyJsStrictEq(var.get(u'status'),Js(u'before')) + PyJs_anonymous_1992_._set_name(u'anonymous') + return var.get(u'violations').callprop(u'filter', PyJs_anonymous_1992_) + PyJsHoisted_getConstantViolationsBefore_.func_name = u'getConstantViolationsBefore' + var.put(u'getConstantViolationsBefore', PyJsHoisted_getConstantViolationsBefore_) + @Js + def PyJsHoisted_getConditionalAnnotation_(path, name, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'name':name, u'arguments':arguments}, var) + var.registers([u'paths', u'name', u'test', u'path', u'ifStatement', u'type', u'types', u'_path']) + var.put(u'ifStatement', var.get(u'getParentConditionalPath')(var.get(u'path'))) + if var.get(u'ifStatement').neg(): + return var.get('undefined') + var.put(u'test', var.get(u'ifStatement').callprop(u'get', Js(u'test'))) + var.put(u'paths', Js([var.get(u'test')])) + var.put(u'types', Js([])) + while 1: + var.put(u'_path', var.get(u'paths').callprop(u'shift').callprop(u'resolve')) + if var.get(u'_path').callprop(u'isLogicalExpression'): + var.get(u'paths').callprop(u'push', var.get(u'_path').callprop(u'get', Js(u'left'))) + var.get(u'paths').callprop(u'push', var.get(u'_path').callprop(u'get', Js(u'right'))) + if var.get(u'_path').callprop(u'isBinaryExpression'): + var.put(u'type', var.get(u'inferAnnotationFromBinaryExpression')(var.get(u'name'), var.get(u'_path'))) + if var.get(u'type'): + var.get(u'types').callprop(u'push', var.get(u'type')) + if not var.get(u'paths').get(u'length'): + break + if var.get(u'types').get(u'length'): + PyJs_Object_1998_ = Js({u'typeAnnotation':var.get(u't').callprop(u'createUnionTypeAnnotation', var.get(u'types')),u'ifStatement':var.get(u'ifStatement')}) + return PyJs_Object_1998_ + else: + return var.get(u'getConditionalAnnotation')(var.get(u'ifStatement'), var.get(u'name')) + PyJsHoisted_getConditionalAnnotation_.func_name = u'getConditionalAnnotation' + var.put(u'getConditionalAnnotation', PyJsHoisted_getConditionalAnnotation_) + @Js + def PyJsHoisted_getTypeAnnotationBindingConstantViolations_(path, name, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'name':name, u'arguments':arguments}, var) + var.registers([u'_isArray', u'_iterator', u'name', u'violation', u'binding', u'functionConstantViolations', u'_i', u'types', u'path', u'_ref', u'testType', u'constantViolations']) + var.put(u'binding', var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'name'))) + var.put(u'types', Js([])) + var.get(u'path').put(u'typeAnnotation', var.get(u't').callprop(u'unionTypeAnnotation', var.get(u'types'))) + var.put(u'functionConstantViolations', Js([])) + var.put(u'constantViolations', var.get(u'getConstantViolationsBefore')(var.get(u'binding'), var.get(u'path'), var.get(u'functionConstantViolations'))) + var.put(u'testType', var.get(u'getConditionalAnnotation')(var.get(u'path'), var.get(u'name'))) + if var.get(u'testType'): + @Js + def PyJs_anonymous_1990_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'testConstantViolations']) + var.put(u'testConstantViolations', var.get(u'getConstantViolationsBefore')(var.get(u'binding'), var.get(u'testType').get(u'ifStatement'))) + @Js + def PyJs_anonymous_1991_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return (var.get(u'testConstantViolations').callprop(u'indexOf', var.get(u'path'))=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'violation', var.get(u'_ref')) + var.get(u'types').callprop(u'push', var.get(u'violation').callprop(u'getTypeAnnotation')) + + if var.get(u'types').get(u'length'): + return var.get(u't').callprop(u'createUnionTypeAnnotation', var.get(u'types')) + PyJsHoisted_getTypeAnnotationBindingConstantViolations_.func_name = u'getTypeAnnotationBindingConstantViolations' + var.put(u'getTypeAnnotationBindingConstantViolations', PyJsHoisted_getTypeAnnotationBindingConstantViolations_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + @Js + def PyJs_anonymous_1987_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'binding']) + if var.get(u"this").callprop(u'isReferenced').neg(): + return var.get('undefined') + var.put(u'binding', var.get(u"this").get(u'scope').callprop(u'getBinding', var.get(u'node').get(u'name'))) + if var.get(u'binding'): + if var.get(u'binding').get(u'identifier').get(u'typeAnnotation'): + return var.get(u'binding').get(u'identifier').get(u'typeAnnotation') + else: + return var.get(u'getTypeAnnotationBindingConstantViolations')(var.get(u"this"), var.get(u'node').get(u'name')) + if PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'undefined')): + return var.get(u't').callprop(u'voidTypeAnnotation') + else: + if (PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'NaN')) or PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'Infinity'))): + return var.get(u't').callprop(u'numberTypeAnnotation') + else: + if PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'arguments')): + pass + PyJs_anonymous_1987_._set_name(u'anonymous') + var.get(u'exports').put(u'default', PyJs_anonymous_1987_) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + pass + pass + pass + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_1986_._set_name(u'anonymous') +PyJs_Object_1999_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_2000_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'CallExpression', u'UpdateExpression', u'module', u'ObjectExpression', u'_interopRequireDefault', u'resolveCall', u'RegExpLiteral', u'ArrayExpression', u'Func', u'AssignmentExpression', u'exports', u'_interopRequireWildcard', u'RestElement', u'_babelTypes', u'NullLiteral', u'TypeCastExpression', u'SequenceExpression', u'BinaryExpression', u'BooleanLiteral', u'ConditionalExpression', u'UnaryExpression', u'NewExpression', u'require', u'StringLiteral', u'NumericLiteral', u'TaggedTemplateExpression', u't', u'_infererReference', u'TemplateLiteral', u'LogicalExpression', u'VariableDeclarator']) + @Js + def PyJsHoisted_CallExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'resolveCall')(var.get(u"this").callprop(u'get', Js(u'callee'))) + PyJsHoisted_CallExpression_.func_name = u'CallExpression' + var.put(u'CallExpression', PyJsHoisted_CallExpression_) + @Js + def PyJsHoisted_UpdateExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'operator', u'node']) + var.put(u'operator', var.get(u'node').get(u'operator')) + if (PyJsStrictEq(var.get(u'operator'),Js(u'++')) or PyJsStrictEq(var.get(u'operator'),Js(u'--'))): + return var.get(u't').callprop(u'numberTypeAnnotation') + PyJsHoisted_UpdateExpression_.func_name = u'UpdateExpression' + var.put(u'UpdateExpression', PyJsHoisted_UpdateExpression_) + @Js + def PyJsHoisted_ObjectExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'genericTypeAnnotation', var.get(u't').callprop(u'identifier', Js(u'Object'))) + PyJsHoisted_ObjectExpression_.func_name = u'ObjectExpression' + var.put(u'ObjectExpression', PyJsHoisted_ObjectExpression_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2004_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2004_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_resolveCall_(callee, this, arguments, var=var): + var = Scope({u'this':this, u'callee':callee, u'arguments':arguments}, var) + var.registers([u'callee']) + var.put(u'callee', var.get(u'callee').callprop(u'resolve')) + if var.get(u'callee').callprop(u'isFunction'): + if var.get(u'callee').callprop(u'is', Js(u'async')): + if var.get(u'callee').callprop(u'is', Js(u'generator')): + return var.get(u't').callprop(u'genericTypeAnnotation', var.get(u't').callprop(u'identifier', Js(u'AsyncIterator'))) + else: + return var.get(u't').callprop(u'genericTypeAnnotation', var.get(u't').callprop(u'identifier', Js(u'Promise'))) + else: + if var.get(u'callee').get(u'node').get(u'returnType'): + return var.get(u'callee').get(u'node').get(u'returnType') + else: + pass + PyJsHoisted_resolveCall_.func_name = u'resolveCall' + var.put(u'resolveCall', PyJsHoisted_resolveCall_) + @Js + def PyJsHoisted_RegExpLiteral_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'genericTypeAnnotation', var.get(u't').callprop(u'identifier', Js(u'RegExp'))) + PyJsHoisted_RegExpLiteral_.func_name = u'RegExpLiteral' + var.put(u'RegExpLiteral', PyJsHoisted_RegExpLiteral_) + @Js + def PyJsHoisted_ArrayExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'genericTypeAnnotation', var.get(u't').callprop(u'identifier', Js(u'Array'))) + PyJsHoisted_ArrayExpression_.func_name = u'ArrayExpression' + var.put(u'ArrayExpression', PyJsHoisted_ArrayExpression_) + @Js + def PyJsHoisted_Func_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'genericTypeAnnotation', var.get(u't').callprop(u'identifier', Js(u'Function'))) + PyJsHoisted_Func_.func_name = u'Func' + var.put(u'Func', PyJsHoisted_Func_) + @Js + def PyJsHoisted_AssignmentExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").callprop(u'get', Js(u'right')).callprop(u'getTypeAnnotation') + PyJsHoisted_AssignmentExpression_.func_name = u'AssignmentExpression' + var.put(u'AssignmentExpression', PyJsHoisted_AssignmentExpression_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2003_ = Js({}) + var.put(u'newObj', PyJs_Object_2003_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_RestElement_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'ArrayExpression')() + PyJsHoisted_RestElement_.func_name = u'RestElement' + var.put(u'RestElement', PyJsHoisted_RestElement_) + @Js + def PyJsHoisted_NullLiteral_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'nullLiteralTypeAnnotation') + PyJsHoisted_NullLiteral_.func_name = u'NullLiteral' + var.put(u'NullLiteral', PyJsHoisted_NullLiteral_) + @Js + def PyJsHoisted_TypeCastExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return var.get(u'node').get(u'typeAnnotation') + PyJsHoisted_TypeCastExpression_.func_name = u'TypeCastExpression' + var.put(u'TypeCastExpression', PyJsHoisted_TypeCastExpression_) + @Js + def PyJsHoisted_SequenceExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").callprop(u'get', Js(u'expressions')).callprop(u'pop').callprop(u'getTypeAnnotation') + PyJsHoisted_SequenceExpression_.func_name = u'SequenceExpression' + var.put(u'SequenceExpression', PyJsHoisted_SequenceExpression_) + @Js + def PyJsHoisted_BinaryExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'operator', u'node', u'right', u'left']) + var.put(u'operator', var.get(u'node').get(u'operator')) + if (var.get(u't').get(u'NUMBER_BINARY_OPERATORS').callprop(u'indexOf', var.get(u'operator'))>=Js(0.0)): + return var.get(u't').callprop(u'numberTypeAnnotation') + else: + if (var.get(u't').get(u'BOOLEAN_BINARY_OPERATORS').callprop(u'indexOf', var.get(u'operator'))>=Js(0.0)): + return var.get(u't').callprop(u'booleanTypeAnnotation') + else: + if PyJsStrictEq(var.get(u'operator'),Js(u'+')): + var.put(u'right', var.get(u"this").callprop(u'get', Js(u'right'))) + var.put(u'left', var.get(u"this").callprop(u'get', Js(u'left'))) + if (var.get(u'left').callprop(u'isBaseType', Js(u'number')) and var.get(u'right').callprop(u'isBaseType', Js(u'number'))): + return var.get(u't').callprop(u'numberTypeAnnotation') + else: + if (var.get(u'left').callprop(u'isBaseType', Js(u'string')) or var.get(u'right').callprop(u'isBaseType', Js(u'string'))): + return var.get(u't').callprop(u'stringTypeAnnotation') + return var.get(u't').callprop(u'unionTypeAnnotation', Js([var.get(u't').callprop(u'stringTypeAnnotation'), var.get(u't').callprop(u'numberTypeAnnotation')])) + PyJsHoisted_BinaryExpression_.func_name = u'BinaryExpression' + var.put(u'BinaryExpression', PyJsHoisted_BinaryExpression_) + @Js + def PyJsHoisted_BooleanLiteral_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'booleanTypeAnnotation') + PyJsHoisted_BooleanLiteral_.func_name = u'BooleanLiteral' + var.put(u'BooleanLiteral', PyJsHoisted_BooleanLiteral_) + @Js + def PyJsHoisted_ConditionalExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'createUnionTypeAnnotation', Js([var.get(u"this").callprop(u'get', Js(u'consequent')).callprop(u'getTypeAnnotation'), var.get(u"this").callprop(u'get', Js(u'alternate')).callprop(u'getTypeAnnotation')])) + PyJsHoisted_ConditionalExpression_.func_name = u'ConditionalExpression' + var.put(u'ConditionalExpression', PyJsHoisted_ConditionalExpression_) + @Js + def PyJsHoisted_UnaryExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'operator', u'node']) + var.put(u'operator', var.get(u'node').get(u'operator')) + if PyJsStrictEq(var.get(u'operator'),Js(u'void')): + return var.get(u't').callprop(u'voidTypeAnnotation') + else: + if (var.get(u't').get(u'NUMBER_UNARY_OPERATORS').callprop(u'indexOf', var.get(u'operator'))>=Js(0.0)): + return var.get(u't').callprop(u'numberTypeAnnotation') + else: + if (var.get(u't').get(u'STRING_UNARY_OPERATORS').callprop(u'indexOf', var.get(u'operator'))>=Js(0.0)): + return var.get(u't').callprop(u'stringTypeAnnotation') + else: + if (var.get(u't').get(u'BOOLEAN_UNARY_OPERATORS').callprop(u'indexOf', var.get(u'operator'))>=Js(0.0)): + return var.get(u't').callprop(u'booleanTypeAnnotation') + PyJsHoisted_UnaryExpression_.func_name = u'UnaryExpression' + var.put(u'UnaryExpression', PyJsHoisted_UnaryExpression_) + @Js + def PyJsHoisted_NewExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").callprop(u'get', Js(u'callee')).callprop(u'isIdentifier'): + return var.get(u't').callprop(u'genericTypeAnnotation', var.get(u'node').get(u'callee')) + PyJsHoisted_NewExpression_.func_name = u'NewExpression' + var.put(u'NewExpression', PyJsHoisted_NewExpression_) + @Js + def PyJsHoisted_StringLiteral_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'stringTypeAnnotation') + PyJsHoisted_StringLiteral_.func_name = u'StringLiteral' + var.put(u'StringLiteral', PyJsHoisted_StringLiteral_) + @Js + def PyJsHoisted_NumericLiteral_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'numberTypeAnnotation') + PyJsHoisted_NumericLiteral_.func_name = u'NumericLiteral' + var.put(u'NumericLiteral', PyJsHoisted_NumericLiteral_) + @Js + def PyJsHoisted_TaggedTemplateExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'resolveCall')(var.get(u"this").callprop(u'get', Js(u'tag'))) + PyJsHoisted_TaggedTemplateExpression_.func_name = u'TaggedTemplateExpression' + var.put(u'TaggedTemplateExpression', PyJsHoisted_TaggedTemplateExpression_) + @Js + def PyJsHoisted_TemplateLiteral_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'stringTypeAnnotation') + PyJsHoisted_TemplateLiteral_.func_name = u'TemplateLiteral' + var.put(u'TemplateLiteral', PyJsHoisted_TemplateLiteral_) + @Js + def PyJsHoisted_LogicalExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u't').callprop(u'createUnionTypeAnnotation', Js([var.get(u"this").callprop(u'get', Js(u'left')).callprop(u'getTypeAnnotation'), var.get(u"this").callprop(u'get', Js(u'right')).callprop(u'getTypeAnnotation')])) + PyJsHoisted_LogicalExpression_.func_name = u'LogicalExpression' + var.put(u'LogicalExpression', PyJsHoisted_LogicalExpression_) + @Js + def PyJsHoisted_VariableDeclarator_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'id']) + var.put(u'id', var.get(u"this").callprop(u'get', Js(u'id'))) + if var.get(u'id').callprop(u'isIdentifier'): + return var.get(u"this").callprop(u'get', Js(u'init')).callprop(u'getTypeAnnotation') + else: + return var.get('undefined') + PyJsHoisted_VariableDeclarator_.func_name = u'VariableDeclarator' + var.put(u'VariableDeclarator', PyJsHoisted_VariableDeclarator_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'ClassDeclaration', var.get(u'exports').put(u'ClassExpression', var.get(u'exports').put(u'FunctionDeclaration', var.get(u'exports').put(u'ArrowFunctionExpression', var.get(u'exports').put(u'FunctionExpression', var.get(u'exports').put(u'Identifier', var.get(u'undefined'))))))) + var.put(u'_infererReference', var.get(u'require')(Js(u'./inferer-reference'))) + @Js + def PyJs_get_2002_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2002_}, var) + var.registers([]) + return var.get(u'_interopRequireDefault')(var.get(u'_infererReference')).get(u'default') + PyJs_get_2002_._set_name(u'get') + PyJs_Object_2001_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2002_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'Identifier'), PyJs_Object_2001_) + var.get(u'exports').put(u'VariableDeclarator', var.get(u'VariableDeclarator')) + var.get(u'exports').put(u'TypeCastExpression', var.get(u'TypeCastExpression')) + var.get(u'exports').put(u'NewExpression', var.get(u'NewExpression')) + var.get(u'exports').put(u'TemplateLiteral', var.get(u'TemplateLiteral')) + var.get(u'exports').put(u'UnaryExpression', var.get(u'UnaryExpression')) + var.get(u'exports').put(u'BinaryExpression', var.get(u'BinaryExpression')) + var.get(u'exports').put(u'LogicalExpression', var.get(u'LogicalExpression')) + var.get(u'exports').put(u'ConditionalExpression', var.get(u'ConditionalExpression')) + var.get(u'exports').put(u'SequenceExpression', var.get(u'SequenceExpression')) + var.get(u'exports').put(u'AssignmentExpression', var.get(u'AssignmentExpression')) + var.get(u'exports').put(u'UpdateExpression', var.get(u'UpdateExpression')) + var.get(u'exports').put(u'StringLiteral', var.get(u'StringLiteral')) + var.get(u'exports').put(u'NumericLiteral', var.get(u'NumericLiteral')) + var.get(u'exports').put(u'BooleanLiteral', var.get(u'BooleanLiteral')) + var.get(u'exports').put(u'NullLiteral', var.get(u'NullLiteral')) + var.get(u'exports').put(u'RegExpLiteral', var.get(u'RegExpLiteral')) + var.get(u'exports').put(u'ObjectExpression', var.get(u'ObjectExpression')) + var.get(u'exports').put(u'ArrayExpression', var.get(u'ArrayExpression')) + var.get(u'exports').put(u'RestElement', var.get(u'RestElement')) + var.get(u'exports').put(u'CallExpression', var.get(u'CallExpression')) + var.get(u'exports').put(u'TaggedTemplateExpression', var.get(u'TaggedTemplateExpression')) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + var.get(u'TypeCastExpression').put(u'validParent', var.get(u'true')) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + var.get(u'RestElement').put(u'validParent', var.get(u'true')) + pass + var.get(u'exports').put(u'FunctionExpression', var.get(u'Func')) + var.get(u'exports').put(u'ArrowFunctionExpression', var.get(u'Func')) + var.get(u'exports').put(u'FunctionDeclaration', var.get(u'Func')) + var.get(u'exports').put(u'ClassExpression', var.get(u'Func')) + var.get(u'exports').put(u'ClassDeclaration', var.get(u'Func')) + pass + pass + pass +PyJs_anonymous_2000_._set_name(u'anonymous') +PyJs_Object_2005_ = Js({u'./inferer-reference':Js(234.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_2006_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_resolve', u'is', u'exports', u'module', u'isnt', u'canSwapBetweenExpressionAndStatement', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'referencesImport', u'_typeof2', u'_typeof3', u'canHaveVariableDeclarationOrExpression', u'isStatementOrBlock', u't', u'has', u'_guessExecutionStatusRelativeTo', u'_includes', u'isStatic', u'isCompletionRecord', u'_interopRequireWildcard', u'_babelTypes', u'_includes2', u'equals', u'isNodeType', u'_guessExecutionStatusRelativeToDifferentFunctions', u'resolve', u'willIMaybeExecuteBefore', u'require', u'matchesPattern', u'getSource']) + @Js + def PyJsHoisted__resolve_(dangerous, resolved, this, arguments, var=var): + var = Scope({u'resolved':resolved, u'dangerous':dangerous, u'this':this, u'arguments':arguments}, var) + var.registers([u'resolved', u'dangerous', u'_isArray3', u'target', u'_this', u'_ret', u'_i3', u'binding', u'elems', u'prop', u'match', u'key', u'props', u'targetKey', u'elem', u'targetName', u'_ref3', u'_iterator3']) + var.put(u'_this', var.get(u"this")) + if (var.get(u'resolved') and (var.get(u'resolved').callprop(u'indexOf', var.get(u"this"))>=Js(0.0))): + return var.get('undefined') + var.put(u'resolved', (var.get(u'resolved') or Js([]))) + var.get(u'resolved').callprop(u'push', var.get(u"this")) + if var.get(u"this").callprop(u'isVariableDeclarator'): + if var.get(u"this").callprop(u'get', Js(u'id')).callprop(u'isIdentifier'): + return var.get(u"this").callprop(u'get', Js(u'init')).callprop(u'resolve', var.get(u'dangerous'), var.get(u'resolved')) + else: + pass + else: + if var.get(u"this").callprop(u'isReferencedIdentifier'): + var.put(u'binding', var.get(u"this").get(u'scope').callprop(u'getBinding', var.get(u"this").get(u'node').get(u'name'))) + if var.get(u'binding').neg(): + return var.get('undefined') + if var.get(u'binding').get(u'constant').neg(): + return var.get('undefined') + if PyJsStrictEq(var.get(u'binding').get(u'kind'),Js(u'module')): + return var.get('undefined') + if PyJsStrictNeq(var.get(u'binding').get(u'path'),var.get(u"this")): + @Js + def PyJs_anonymous_2010_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'ret']) + var.put(u'ret', var.get(u'binding').get(u'path').callprop(u'resolve', var.get(u'dangerous'), var.get(u'resolved'))) + @Js + def PyJs_anonymous_2011_(parent, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'parent']) + return PyJsStrictEq(var.get(u'parent').get(u'node'),var.get(u'ret').get(u'node')) + PyJs_anonymous_2011_._set_name(u'anonymous') + if var.get(u'_this').callprop(u'find', PyJs_anonymous_2011_): + PyJs_Object_2012_ = Js({u'v':PyJsComma(Js(0.0), Js(None))}) + return PyJs_Object_2012_ + PyJs_Object_2013_ = Js({u'v':var.get(u'ret')}) + return PyJs_Object_2013_ + PyJs_anonymous_2010_._set_name(u'anonymous') + var.put(u'_ret', PyJs_anonymous_2010_()) + if PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'_ret',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'_ret'))),Js(u'object')): + return var.get(u'_ret').get(u'v') + else: + if var.get(u"this").callprop(u'isTypeCastExpression'): + return var.get(u"this").callprop(u'get', Js(u'expression')).callprop(u'resolve', var.get(u'dangerous'), var.get(u'resolved')) + else: + if (var.get(u'dangerous') and var.get(u"this").callprop(u'isMemberExpression')): + var.put(u'targetKey', var.get(u"this").callprop(u'toComputedKey')) + if var.get(u't').callprop(u'isLiteral', var.get(u'targetKey')).neg(): + return var.get('undefined') + var.put(u'targetName', var.get(u'targetKey').get(u'value')) + var.put(u'target', var.get(u"this").callprop(u'get', Js(u'object')).callprop(u'resolve', var.get(u'dangerous'), var.get(u'resolved'))) + if var.get(u'target').callprop(u'isObjectExpression'): + var.put(u'props', var.get(u'target').callprop(u'get', Js(u'properties'))) + #for JS loop + var.put(u'_iterator3', var.get(u'props')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'prop', var.get(u'_ref3')) + if var.get(u'prop').callprop(u'isProperty').neg(): + continue + var.put(u'key', var.get(u'prop').callprop(u'get', Js(u'key'))) + PyJs_Object_2014_ = Js({u'name':var.get(u'targetName')}) + var.put(u'match', (var.get(u'prop').callprop(u'isnt', Js(u'computed')) and var.get(u'key').callprop(u'isIdentifier', PyJs_Object_2014_))) + PyJs_Object_2015_ = Js({u'value':var.get(u'targetName')}) + var.put(u'match', (var.get(u'match') or var.get(u'key').callprop(u'isLiteral', PyJs_Object_2015_))) + if var.get(u'match'): + return var.get(u'prop').callprop(u'get', Js(u'value')).callprop(u'resolve', var.get(u'dangerous'), var.get(u'resolved')) + + else: + if (var.get(u'target').callprop(u'isArrayExpression') and var.get(u'isNaN')((+var.get(u'targetName'))).neg()): + var.put(u'elems', var.get(u'target').callprop(u'get', Js(u'elements'))) + var.put(u'elem', var.get(u'elems').get(var.get(u'targetName'))) + if var.get(u'elem'): + return var.get(u'elem').callprop(u'resolve', var.get(u'dangerous'), var.get(u'resolved')) + PyJsHoisted__resolve_.func_name = u'_resolve' + var.put(u'_resolve', PyJsHoisted__resolve_) + @Js + def PyJsHoisted_isStatic_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").get(u'scope').callprop(u'isStatic', var.get(u"this").get(u'node')) + PyJsHoisted_isStatic_.func_name = u'isStatic' + var.put(u'isStatic', PyJsHoisted_isStatic_) + @Js + def PyJsHoisted_isCompletionRecord_(allowInsideFunction, this, arguments, var=var): + var = Scope({u'this':this, u'allowInsideFunction':allowInsideFunction, u'arguments':arguments}, var) + var.registers([u'path', u'allowInsideFunction', u'container', u'first']) + var.put(u'path', var.get(u"this")) + var.put(u'first', var.get(u'true')) + while 1: + var.put(u'container', var.get(u'path').get(u'container')) + if (var.get(u'path').callprop(u'isFunction') and var.get(u'first').neg()): + return var.get(u'allowInsideFunction').neg().neg() + var.put(u'first', Js(False)) + if (var.get(u'Array').callprop(u'isArray', var.get(u'container')) and PyJsStrictNeq(var.get(u'path').get(u'key'),(var.get(u'container').get(u'length')-Js(1.0)))): + return Js(False) + if not (var.put(u'path', var.get(u'path').get(u'parentPath')) and var.get(u'path').callprop(u'isProgram').neg()): + break + return var.get(u'true') + PyJsHoisted_isCompletionRecord_.func_name = u'isCompletionRecord' + var.put(u'isCompletionRecord', PyJsHoisted_isCompletionRecord_) + @Js + def PyJsHoisted_willIMaybeExecuteBefore_(target, this, arguments, var=var): + var = Scope({u'this':this, u'target':target, u'arguments':arguments}, var) + var.registers([u'target']) + return PyJsStrictNeq(var.get(u"this").callprop(u'_guessExecutionStatusRelativeTo', var.get(u'target')),Js(u'after')) + PyJsHoisted_willIMaybeExecuteBefore_.func_name = u'willIMaybeExecuteBefore' + var.put(u'willIMaybeExecuteBefore', PyJsHoisted_willIMaybeExecuteBefore_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2007_ = Js({}) + var.put(u'newObj', PyJs_Object_2007_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_canHaveVariableDeclarationOrExpression_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return ((PyJsStrictEq(var.get(u"this").get(u'key'),Js(u'init')) or PyJsStrictEq(var.get(u"this").get(u'key'),Js(u'left'))) and var.get(u"this").get(u'parentPath').callprop(u'isFor')) + PyJsHoisted_canHaveVariableDeclarationOrExpression_.func_name = u'canHaveVariableDeclarationOrExpression' + var.put(u'canHaveVariableDeclarationOrExpression', PyJsHoisted_canHaveVariableDeclarationOrExpression_) + @Js + def PyJsHoisted__guessExecutionStatusRelativeTo_(target, this, arguments, var=var): + var = Scope({u'this':this, u'target':target, u'arguments':arguments}, var) + var.registers([u'status', u'targetKeyPosition', u'target', u'selfIndex', u'selfPath', u'commonPath', u'targetRelationship', u'selfRelationship', u'selfFuncParent', u'selfPaths', u'targetFuncParent', u'targetPaths', u'selfKeyPosition', u'targetIndex']) + var.put(u'targetFuncParent', var.get(u'target').get(u'scope').callprop(u'getFunctionParent')) + var.put(u'selfFuncParent', var.get(u"this").get(u'scope').callprop(u'getFunctionParent')) + if PyJsStrictNeq(var.get(u'targetFuncParent').get(u'node'),var.get(u'selfFuncParent').get(u'node')): + var.put(u'status', var.get(u"this").callprop(u'_guessExecutionStatusRelativeToDifferentFunctions', var.get(u'targetFuncParent'))) + if var.get(u'status'): + return var.get(u'status') + else: + var.put(u'target', var.get(u'targetFuncParent').get(u'path')) + var.put(u'targetPaths', var.get(u'target').callprop(u'getAncestry')) + if (var.get(u'targetPaths').callprop(u'indexOf', var.get(u"this"))>=Js(0.0)): + return Js(u'after') + var.put(u'selfPaths', var.get(u"this").callprop(u'getAncestry')) + var.put(u'commonPath', PyJsComma(Js(0.0), Js(None))) + var.put(u'targetIndex', PyJsComma(Js(0.0), Js(None))) + var.put(u'selfIndex', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'selfIndex', Js(0.0)) + while (var.get(u'selfIndex')=Js(0.0)): + var.put(u'commonPath', var.get(u'selfPath')) + break + finally: + (var.put(u'selfIndex',Js(var.get(u'selfIndex').to_number())+Js(1))-Js(1)) + if var.get(u'commonPath').neg(): + return Js(u'before') + var.put(u'targetRelationship', var.get(u'targetPaths').get((var.get(u'targetIndex')-Js(1.0)))) + var.put(u'selfRelationship', var.get(u'selfPaths').get((var.get(u'selfIndex')-Js(1.0)))) + if (var.get(u'targetRelationship').neg() or var.get(u'selfRelationship').neg()): + return Js(u'before') + if (var.get(u'targetRelationship').get(u'listKey') and PyJsStrictEq(var.get(u'targetRelationship').get(u'container'),var.get(u'selfRelationship').get(u'container'))): + return (Js(u'before') if (var.get(u'targetRelationship').get(u'key')>var.get(u'selfRelationship').get(u'key')) else Js(u'after')) + var.put(u'targetKeyPosition', var.get(u't').get(u'VISITOR_KEYS').get(var.get(u'targetRelationship').get(u'type')).callprop(u'indexOf', var.get(u'targetRelationship').get(u'key'))) + var.put(u'selfKeyPosition', var.get(u't').get(u'VISITOR_KEYS').get(var.get(u'selfRelationship').get(u'type')).callprop(u'indexOf', var.get(u'selfRelationship').get(u'key'))) + return (Js(u'before') if (var.get(u'targetKeyPosition')>var.get(u'selfKeyPosition')) else Js(u'after')) + PyJsHoisted__guessExecutionStatusRelativeTo_.func_name = u'_guessExecutionStatusRelativeTo' + var.put(u'_guessExecutionStatusRelativeTo', PyJsHoisted__guessExecutionStatusRelativeTo_) + @Js + def PyJsHoisted_equals_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'value', u'key']) + return PyJsStrictEq(var.get(u"this").get(u'node').get(var.get(u'key')),var.get(u'value')) + PyJsHoisted_equals_.func_name = u'equals' + var.put(u'equals', PyJsHoisted_equals_) + @Js + def PyJsHoisted_isNodeType_(type, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments}, var) + var.registers([u'type']) + return var.get(u't').callprop(u'isType', var.get(u"this").get(u'type'), var.get(u'type')) + PyJsHoisted_isNodeType_.func_name = u'isNodeType' + var.put(u'isNodeType', PyJsHoisted_isNodeType_) + @Js + def PyJsHoisted_isStatementOrBlock_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if (var.get(u"this").get(u'parentPath').callprop(u'isLabeledStatement') or var.get(u't').callprop(u'isBlockStatement', var.get(u"this").get(u'container'))): + return Js(False) + else: + return PyJsComma(Js(0.0),var.get(u'_includes2').get(u'default'))(var.get(u't').get(u'STATEMENT_OR_BLOCK_KEYS'), var.get(u"this").get(u'key')) + PyJsHoisted_isStatementOrBlock_.func_name = u'isStatementOrBlock' + var.put(u'isStatementOrBlock', PyJsHoisted_isStatementOrBlock_) + @Js + def PyJsHoisted_isnt_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + return var.get(u"this").callprop(u'has', var.get(u'key')).neg() + PyJsHoisted_isnt_.func_name = u'isnt' + var.put(u'isnt', PyJsHoisted_isnt_) + @Js + def PyJsHoisted_resolve_(dangerous, resolved, this, arguments, var=var): + var = Scope({u'resolved':resolved, u'dangerous':dangerous, u'this':this, u'arguments':arguments}, var) + var.registers([u'resolved', u'dangerous']) + return (var.get(u"this").callprop(u'_resolve', var.get(u'dangerous'), var.get(u'resolved')) or var.get(u"this")) + PyJsHoisted_resolve_.func_name = u'resolve' + var.put(u'resolve', PyJsHoisted_resolve_) + @Js + def PyJsHoisted_matchesPattern_(pattern, allowPartial, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'arguments':arguments, u'allowPartial':allowPartial}, var) + var.registers([u'node', u'search', u'i', u'pattern', u'allowPartial', u'matches', u'parts']) + @Js + def PyJsHoisted_matches_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'part', u'name']) + var.put(u'part', var.get(u'parts').get(var.get(u'i'))) + return (PyJsStrictEq(var.get(u'part'),Js(u'*')) or PyJsStrictEq(var.get(u'name'),var.get(u'part'))) + PyJsHoisted_matches_.func_name = u'matches' + var.put(u'matches', PyJsHoisted_matches_) + if var.get(u"this").callprop(u'isMemberExpression').neg(): + return Js(False) + var.put(u'parts', var.get(u'pattern').callprop(u'split', Js(u'.'))) + var.put(u'search', Js([var.get(u"this").get(u'node')])) + var.put(u'i', Js(0.0)) + pass + while var.get(u'search').get(u'length'): + var.put(u'node', var.get(u'search').callprop(u'shift')) + if (var.get(u'allowPartial') and PyJsStrictEq(var.get(u'i'),var.get(u'parts').get(u'length'))): + return var.get(u'true') + if var.get(u't').callprop(u'isIdentifier', var.get(u'node')): + if var.get(u'matches')(var.get(u'node').get(u'name')).neg(): + return Js(False) + else: + if var.get(u't').callprop(u'isLiteral', var.get(u'node')): + if var.get(u'matches')(var.get(u'node').get(u'value')).neg(): + return Js(False) + else: + if var.get(u't').callprop(u'isMemberExpression', var.get(u'node')): + if (var.get(u'node').get(u'computed') and var.get(u't').callprop(u'isLiteral', var.get(u'node').get(u'property')).neg()): + return Js(False) + else: + var.get(u'search').callprop(u'unshift', var.get(u'node').get(u'property')) + var.get(u'search').callprop(u'unshift', var.get(u'node').get(u'object')) + continue + else: + if var.get(u't').callprop(u'isThisExpression', var.get(u'node')): + if var.get(u'matches')(Js(u'this')).neg(): + return Js(False) + else: + return Js(False) + if (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))>var.get(u'parts').get(u'length')): + return Js(False) + return PyJsStrictEq(var.get(u'i'),var.get(u'parts').get(u'length')) + PyJsHoisted_matchesPattern_.func_name = u'matchesPattern' + var.put(u'matchesPattern', PyJsHoisted_matchesPattern_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2008_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2008_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_getSource_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.put(u'node', var.get(u"this").get(u'node')) + if var.get(u'node').get(u'end'): + return var.get(u"this").get(u'hub').get(u'file').get(u'code').callprop(u'slice', var.get(u'node').get(u'start'), var.get(u'node').get(u'end')) + else: + return Js(u'') + PyJsHoisted_getSource_.func_name = u'getSource' + var.put(u'getSource', PyJsHoisted_getSource_) + @Js + def PyJsHoisted_has_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key', u'val']) + var.put(u'val', (var.get(u"this").get(u'node') and var.get(u"this").get(u'node').get(var.get(u'key')))) + if (var.get(u'val') and var.get(u'Array').callprop(u'isArray', var.get(u'val'))): + return var.get(u'val').get(u'length').neg().neg() + else: + return var.get(u'val').neg().neg() + PyJsHoisted_has_.func_name = u'has' + var.put(u'has', PyJsHoisted_has_) + @Js + def PyJsHoisted_referencesImport_(moduleSource, importName, this, arguments, var=var): + var = Scope({u'importName':importName, u'this':this, u'moduleSource':moduleSource, u'arguments':arguments}, var) + var.registers([u'importName', u'path', u'moduleSource', u'binding', u'parent']) + if var.get(u"this").callprop(u'isReferencedIdentifier').neg(): + return Js(False) + var.put(u'binding', var.get(u"this").get(u'scope').callprop(u'getBinding', var.get(u"this").get(u'node').get(u'name'))) + if (var.get(u'binding').neg() or PyJsStrictNeq(var.get(u'binding').get(u'kind'),Js(u'module'))): + return Js(False) + var.put(u'path', var.get(u'binding').get(u'path')) + var.put(u'parent', var.get(u'path').get(u'parentPath')) + if var.get(u'parent').callprop(u'isImportDeclaration').neg(): + return Js(False) + if PyJsStrictEq(var.get(u'parent').get(u'node').get(u'source').get(u'value'),var.get(u'moduleSource')): + if var.get(u'importName').neg(): + return var.get(u'true') + else: + return Js(False) + if (var.get(u'path').callprop(u'isImportDefaultSpecifier') and PyJsStrictEq(var.get(u'importName'),Js(u'default'))): + return var.get(u'true') + if (var.get(u'path').callprop(u'isImportNamespaceSpecifier') and PyJsStrictEq(var.get(u'importName'),Js(u'*'))): + return var.get(u'true') + if (var.get(u'path').callprop(u'isImportSpecifier') and PyJsStrictEq(var.get(u'path').get(u'node').get(u'imported').get(u'name'),var.get(u'importName'))): + return var.get(u'true') + return Js(False) + PyJsHoisted_referencesImport_.func_name = u'referencesImport' + var.put(u'referencesImport', PyJsHoisted_referencesImport_) + @Js + def PyJsHoisted__guessExecutionStatusRelativeToDifferentFunctions_(targetFuncParent, this, arguments, var=var): + var = Scope({u'this':this, u'targetFuncParent':targetFuncParent, u'arguments':arguments}, var) + var.registers([u'status', u'targetFuncPath', u'referencePaths', u'_iterator', u'_isArray2', u'binding', u'_isArray', u'_i2', u'childOfFunction', u'targetFuncParent', u'_i', u'_path', u'path', u'_ref', u'_ref2', u'allStatus', u'_iterator2']) + var.put(u'targetFuncPath', var.get(u'targetFuncParent').get(u'path')) + if var.get(u'targetFuncPath').callprop(u'isFunctionDeclaration').neg(): + return var.get('undefined') + var.put(u'binding', var.get(u'targetFuncPath').get(u'scope').callprop(u'getBinding', var.get(u'targetFuncPath').get(u'node').get(u'id').get(u'name'))) + if var.get(u'binding').get(u'references').neg(): + return Js(u'before') + var.put(u'referencePaths', var.get(u'binding').get(u'referencePaths')) + #for JS loop + var.put(u'_iterator', var.get(u'referencePaths')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'path', var.get(u'_ref')) + if (PyJsStrictNeq(var.get(u'path').get(u'key'),Js(u'callee')) or var.get(u'path').get(u'parentPath').callprop(u'isCallExpression').neg()): + return var.get('undefined') + + var.put(u'allStatus', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'_iterator2', var.get(u'referencePaths')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'_path', var.get(u'_ref2')) + @Js + def PyJs_anonymous_2009_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return PyJsStrictEq(var.get(u'path').get(u'node'),var.get(u'targetFuncPath').get(u'node')) + PyJs_anonymous_2009_._set_name(u'anonymous') + var.put(u'childOfFunction', var.get(u'_path').callprop(u'find', PyJs_anonymous_2009_).neg().neg()) + if var.get(u'childOfFunction'): + continue + var.put(u'status', var.get(u"this").callprop(u'_guessExecutionStatusRelativeTo', var.get(u'_path'))) + if var.get(u'allStatus'): + if PyJsStrictNeq(var.get(u'allStatus'),var.get(u'status')): + return var.get('undefined') + else: + var.put(u'allStatus', var.get(u'status')) + + return var.get(u'allStatus') + PyJsHoisted__guessExecutionStatusRelativeToDifferentFunctions_.func_name = u'_guessExecutionStatusRelativeToDifferentFunctions' + var.put(u'_guessExecutionStatusRelativeToDifferentFunctions', PyJsHoisted__guessExecutionStatusRelativeToDifferentFunctions_) + @Js + def PyJsHoisted_canSwapBetweenExpressionAndStatement_(replacement, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'replacement':replacement}, var) + var.registers([u'replacement']) + if (PyJsStrictNeq(var.get(u"this").get(u'key'),Js(u'body')) or var.get(u"this").get(u'parentPath').callprop(u'isArrowFunctionExpression').neg()): + return Js(False) + if var.get(u"this").callprop(u'isExpression'): + return var.get(u't').callprop(u'isBlockStatement', var.get(u'replacement')) + else: + if var.get(u"this").callprop(u'isBlockStatement'): + return var.get(u't').callprop(u'isExpression', var.get(u'replacement')) + return Js(False) + PyJsHoisted_canSwapBetweenExpressionAndStatement_.func_name = u'canSwapBetweenExpressionAndStatement' + var.put(u'canSwapBetweenExpressionAndStatement', PyJsHoisted_canSwapBetweenExpressionAndStatement_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.get(u'exports').put(u'is', var.get(u'undefined')) + var.put(u'_typeof2', var.get(u'require')(Js(u'babel-runtime/helpers/typeof'))) + var.put(u'_typeof3', var.get(u'_interopRequireDefault')(var.get(u'_typeof2'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'matchesPattern', var.get(u'matchesPattern')) + var.get(u'exports').put(u'has', var.get(u'has')) + var.get(u'exports').put(u'isStatic', var.get(u'isStatic')) + var.get(u'exports').put(u'isnt', var.get(u'isnt')) + var.get(u'exports').put(u'equals', var.get(u'equals')) + var.get(u'exports').put(u'isNodeType', var.get(u'isNodeType')) + var.get(u'exports').put(u'canHaveVariableDeclarationOrExpression', var.get(u'canHaveVariableDeclarationOrExpression')) + var.get(u'exports').put(u'canSwapBetweenExpressionAndStatement', var.get(u'canSwapBetweenExpressionAndStatement')) + var.get(u'exports').put(u'isCompletionRecord', var.get(u'isCompletionRecord')) + var.get(u'exports').put(u'isStatementOrBlock', var.get(u'isStatementOrBlock')) + var.get(u'exports').put(u'referencesImport', var.get(u'referencesImport')) + var.get(u'exports').put(u'getSource', var.get(u'getSource')) + var.get(u'exports').put(u'willIMaybeExecuteBefore', var.get(u'willIMaybeExecuteBefore')) + var.get(u'exports').put(u'_guessExecutionStatusRelativeTo', var.get(u'_guessExecutionStatusRelativeTo')) + var.get(u'exports').put(u'_guessExecutionStatusRelativeToDifferentFunctions', var.get(u'_guessExecutionStatusRelativeToDifferentFunctions')) + var.get(u'exports').put(u'resolve', var.get(u'resolve')) + var.get(u'exports').put(u'_resolve', var.get(u'_resolve')) + var.put(u'_includes', var.get(u'require')(Js(u'lodash/includes'))) + var.put(u'_includes2', var.get(u'_interopRequireDefault')(var.get(u'_includes'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + pass + var.put(u'is', var.get(u'exports').put(u'is', var.get(u'has'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_2006_._set_name(u'anonymous') +PyJs_Object_2016_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/helpers/typeof':Js(114.0),u'babel-types':Js(258.0),u'lodash/includes':Js(456.0)}) +@Js +def PyJs_anonymous_2017_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_classCallCheck2', u'PathHoister', u'_interopRequireWildcard', u'require', u'_babelTypes', u'module', u'referenceVisitor', u't', u'_interopRequireDefault', u'_classCallCheck3', u'_getIterator3', u'_getIterator2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2019_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2019_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2018_ = Js({}) + var.put(u'newObj', PyJs_Object_2018_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + @Js + def PyJs_ReferencedIdentifier_2021_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_2021_, u'arguments':arguments}, var) + var.registers([u'_isArray', u'_iterator', u'binding', u'violationPath', u'state', u'_i', u'path', u'_ref']) + if (var.get(u'path').callprop(u'isJSXIdentifier') and var.get(u'_babelTypes').get(u'react').callprop(u'isCompatTag', var.get(u'path').get(u'node').get(u'name'))): + return var.get('undefined') + var.put(u'binding', var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'path').get(u'node').get(u'name'))) + if var.get(u'binding').neg(): + return var.get('undefined') + if PyJsStrictNeq(var.get(u'binding'),var.get(u'state').get(u'scope').callprop(u'getBinding', var.get(u'path').get(u'node').get(u'name'))): + return var.get('undefined') + if var.get(u'binding').get(u'constant'): + var.get(u'state').get(u'bindings').put(var.get(u'path').get(u'node').get(u'name'), var.get(u'binding')) + else: + #for JS loop + var.put(u'_iterator', var.get(u'binding').get(u'constantViolations')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'violationPath', var.get(u'_ref')) + var.get(u'state').put(u'breakOnScopePaths', var.get(u'state').get(u'breakOnScopePaths').callprop(u'concat', var.get(u'violationPath').callprop(u'getAncestry'))) + + PyJs_ReferencedIdentifier_2021_._set_name(u'ReferencedIdentifier') + PyJs_Object_2020_ = Js({u'ReferencedIdentifier':PyJs_ReferencedIdentifier_2021_}) + var.put(u'referenceVisitor', PyJs_Object_2020_) + @Js + def PyJs_anonymous_2022_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'PathHoister']) + @Js + def PyJsHoisted_PathHoister_(path, scope, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'scope':scope}, var) + var.registers([u'path', u'scope']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'PathHoister')) + var.get(u"this").put(u'breakOnScopePaths', Js([])) + PyJs_Object_2023_ = Js({}) + var.get(u"this").put(u'bindings', PyJs_Object_2023_) + var.get(u"this").put(u'scopes', Js([])) + var.get(u"this").put(u'scope', var.get(u'scope')) + var.get(u"this").put(u'path', var.get(u'path')) + PyJsHoisted_PathHoister_.func_name = u'PathHoister' + var.put(u'PathHoister', PyJsHoisted_PathHoister_) + pass + @Js + def PyJs_isCompatibleScope_2024_(scope, this, arguments, var=var): + var = Scope({u'this':this, u'scope':scope, u'arguments':arguments, u'isCompatibleScope':PyJs_isCompatibleScope_2024_}, var) + var.registers([u'scope', u'binding', u'key']) + for PyJsTemp in var.get(u"this").get(u'bindings'): + var.put(u'key', PyJsTemp) + var.put(u'binding', var.get(u"this").get(u'bindings').get(var.get(u'key'))) + if var.get(u'scope').callprop(u'bindingIdentifierEquals', var.get(u'key'), var.get(u'binding').get(u'identifier')).neg(): + return Js(False) + return var.get(u'true') + PyJs_isCompatibleScope_2024_._set_name(u'isCompatibleScope') + var.get(u'PathHoister').get(u'prototype').put(u'isCompatibleScope', PyJs_isCompatibleScope_2024_) + @Js + def PyJs_getCompatibleScopes_2025_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getCompatibleScopes':PyJs_getCompatibleScopes_2025_}, var) + var.registers([u'scope']) + var.put(u'scope', var.get(u"this").get(u'path').get(u'scope')) + while 1: + if var.get(u"this").callprop(u'isCompatibleScope', var.get(u'scope')): + var.get(u"this").get(u'scopes').callprop(u'push', var.get(u'scope')) + else: + break + if (var.get(u"this").get(u'breakOnScopePaths').callprop(u'indexOf', var.get(u'scope').get(u'path'))>=Js(0.0)): + break + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + PyJs_getCompatibleScopes_2025_._set_name(u'getCompatibleScopes') + var.get(u'PathHoister').get(u'prototype').put(u'getCompatibleScopes', PyJs_getCompatibleScopes_2025_) + @Js + def PyJs_getAttachmentPath_2026_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getAttachmentPath':PyJs_getAttachmentPath_2026_}, var) + var.registers([u'path', u'binding', u'name', u'targetScope']) + var.put(u'path', var.get(u"this").callprop(u'_getAttachmentPath')) + if var.get(u'path').neg(): + return var.get('undefined') + var.put(u'targetScope', var.get(u'path').get(u'scope')) + if PyJsStrictEq(var.get(u'targetScope').get(u'path'),var.get(u'path')): + var.put(u'targetScope', var.get(u'path').get(u'scope').get(u'parent')) + if (var.get(u'targetScope').get(u'path').callprop(u'isProgram') or var.get(u'targetScope').get(u'path').callprop(u'isFunction')): + for PyJsTemp in var.get(u"this").get(u'bindings'): + var.put(u'name', PyJsTemp) + if var.get(u'targetScope').callprop(u'hasOwnBinding', var.get(u'name')).neg(): + continue + var.put(u'binding', var.get(u"this").get(u'bindings').get(var.get(u'name'))) + if PyJsStrictEq(var.get(u'binding').get(u'kind'),Js(u'param')): + continue + if (var.get(u'binding').get(u'path').callprop(u'getStatementParent').get(u'key')>var.get(u'path').get(u'key')): + return var.get('undefined') + return var.get(u'path') + PyJs_getAttachmentPath_2026_._set_name(u'getAttachmentPath') + var.get(u'PathHoister').get(u'prototype').put(u'getAttachmentPath', PyJs_getAttachmentPath_2026_) + @Js + def PyJs__getAttachmentPath_2027_(this, arguments, var=var): + var = Scope({u'this':this, u'_getAttachmentPath':PyJs__getAttachmentPath_2027_, u'arguments':arguments}, var) + var.registers([u'scopes', u'scope']) + var.put(u'scopes', var.get(u"this").get(u'scopes')) + var.put(u'scope', var.get(u'scopes').callprop(u'pop')) + if var.get(u'scope').neg(): + return var.get('undefined') + if var.get(u'scope').get(u'path').callprop(u'isFunction'): + if var.get(u"this").callprop(u'hasOwnParamBindings', var.get(u'scope')): + if PyJsStrictEq(var.get(u"this").get(u'scope'),var.get(u'scope')): + return var.get('undefined') + return var.get(u'scope').get(u'path').callprop(u'get', Js(u'body')).callprop(u'get', Js(u'body')).get(u'0') + else: + return var.get(u"this").callprop(u'getNextScopeStatementParent') + else: + if var.get(u'scope').get(u'path').callprop(u'isProgram'): + return var.get(u"this").callprop(u'getNextScopeStatementParent') + PyJs__getAttachmentPath_2027_._set_name(u'_getAttachmentPath') + var.get(u'PathHoister').get(u'prototype').put(u'_getAttachmentPath', PyJs__getAttachmentPath_2027_) + @Js + def PyJs_getNextScopeStatementParent_2028_(this, arguments, var=var): + var = Scope({u'this':this, u'getNextScopeStatementParent':PyJs_getNextScopeStatementParent_2028_, u'arguments':arguments}, var) + var.registers([u'scope']) + var.put(u'scope', var.get(u"this").get(u'scopes').callprop(u'pop')) + if var.get(u'scope'): + return var.get(u'scope').get(u'path').callprop(u'getStatementParent') + PyJs_getNextScopeStatementParent_2028_._set_name(u'getNextScopeStatementParent') + var.get(u'PathHoister').get(u'prototype').put(u'getNextScopeStatementParent', PyJs_getNextScopeStatementParent_2028_) + @Js + def PyJs_hasOwnParamBindings_2029_(scope, this, arguments, var=var): + var = Scope({u'this':this, u'scope':scope, u'arguments':arguments, u'hasOwnParamBindings':PyJs_hasOwnParamBindings_2029_}, var) + var.registers([u'scope', u'binding', u'name']) + for PyJsTemp in var.get(u"this").get(u'bindings'): + var.put(u'name', PyJsTemp) + if var.get(u'scope').callprop(u'hasOwnBinding', var.get(u'name')).neg(): + continue + var.put(u'binding', var.get(u"this").get(u'bindings').get(var.get(u'name'))) + if PyJsStrictEq(var.get(u'binding').get(u'kind'),Js(u'param')): + return var.get(u'true') + return Js(False) + PyJs_hasOwnParamBindings_2029_._set_name(u'hasOwnParamBindings') + var.get(u'PathHoister').get(u'prototype').put(u'hasOwnParamBindings', PyJs_hasOwnParamBindings_2029_) + @Js + def PyJs_run_2030_(this, arguments, var=var): + var = Scope({u'this':this, u'run':PyJs_run_2030_, u'arguments':arguments}, var) + var.registers([u'node', u'attachTo', u'uid', u'parent']) + var.put(u'node', var.get(u"this").get(u'path').get(u'node')) + if var.get(u'node').get(u'_hoisted'): + return var.get('undefined') + var.get(u'node').put(u'_hoisted', var.get(u'true')) + var.get(u"this").get(u'path').callprop(u'traverse', var.get(u'referenceVisitor'), var.get(u"this")) + var.get(u"this").callprop(u'getCompatibleScopes') + var.put(u'attachTo', var.get(u"this").callprop(u'getAttachmentPath')) + if var.get(u'attachTo').neg(): + return var.get('undefined') + if PyJsStrictEq(var.get(u'attachTo').callprop(u'getFunctionParent'),var.get(u"this").get(u'path').callprop(u'getFunctionParent')): + return var.get('undefined') + var.put(u'uid', var.get(u'attachTo').get(u'scope').callprop(u'generateUidIdentifier', Js(u'ref'))) + var.get(u'attachTo').callprop(u'insertBefore', Js([var.get(u't').callprop(u'variableDeclaration', Js(u'var'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u'uid'), var.get(u"this").get(u'path').get(u'node'))]))])) + var.put(u'parent', var.get(u"this").get(u'path').get(u'parentPath')) + if (var.get(u'parent').callprop(u'isJSXElement') and PyJsStrictEq(var.get(u"this").get(u'path').get(u'container'),var.get(u'parent').get(u'node').get(u'children'))): + var.put(u'uid', var.get(u't').callprop(u'JSXExpressionContainer', var.get(u'uid'))) + var.get(u"this").get(u'path').callprop(u'replaceWith', var.get(u'uid')) + PyJs_run_2030_._set_name(u'run') + var.get(u'PathHoister').get(u'prototype').put(u'run', PyJs_run_2030_) + return var.get(u'PathHoister') + PyJs_anonymous_2022_._set_name(u'anonymous') + var.put(u'PathHoister', PyJs_anonymous_2022_()) + var.get(u'exports').put(u'default', var.get(u'PathHoister')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_2017_._set_name(u'anonymous') +PyJs_Object_2031_ = Js({u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_2032_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'hooks', u'require', u'exports', u'module']) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + @Js + def PyJs_anonymous_2033_(self, parent, this, arguments, var=var): + var = Scope({u'this':this, u'self':self, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'self', u'parent']) + if (PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'body')) and var.get(u'parent').callprop(u'isArrowFunctionExpression')): + var.get(u'self').callprop(u'replaceWith', var.get(u'self').get(u'scope').callprop(u'buildUndefinedNode')) + return var.get(u'true') + PyJs_anonymous_2033_._set_name(u'anonymous') + @Js + def PyJs_anonymous_2034_(self, parent, this, arguments, var=var): + var = Scope({u'this':this, u'self':self, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'self', u'removeParent', u'parent']) + var.put(u'removeParent', Js(False)) + var.put(u'removeParent', (var.get(u'removeParent') or (PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'test')) and (var.get(u'parent').callprop(u'isWhile') or var.get(u'parent').callprop(u'isSwitchCase'))))) + var.put(u'removeParent', (var.get(u'removeParent') or (PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'declaration')) and var.get(u'parent').callprop(u'isExportDeclaration')))) + var.put(u'removeParent', (var.get(u'removeParent') or (PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'body')) and var.get(u'parent').callprop(u'isLabeledStatement')))) + var.put(u'removeParent', (var.get(u'removeParent') or ((PyJsStrictEq(var.get(u'self').get(u'listKey'),Js(u'declarations')) and var.get(u'parent').callprop(u'isVariableDeclaration')) and PyJsStrictEq(var.get(u'parent').get(u'node').get(u'declarations').get(u'length'),Js(1.0))))) + var.put(u'removeParent', (var.get(u'removeParent') or (PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'expression')) and var.get(u'parent').callprop(u'isExpressionStatement')))) + if var.get(u'removeParent'): + var.get(u'parent').callprop(u'remove') + return var.get(u'true') + PyJs_anonymous_2034_._set_name(u'anonymous') + @Js + def PyJs_anonymous_2035_(self, parent, this, arguments, var=var): + var = Scope({u'this':this, u'self':self, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'self', u'parent']) + if (var.get(u'parent').callprop(u'isSequenceExpression') and PyJsStrictEq(var.get(u'parent').get(u'node').get(u'expressions').get(u'length'),Js(1.0))): + var.get(u'parent').callprop(u'replaceWith', var.get(u'parent').get(u'node').get(u'expressions').get(u'0')) + return var.get(u'true') + PyJs_anonymous_2035_._set_name(u'anonymous') + @Js + def PyJs_anonymous_2036_(self, parent, this, arguments, var=var): + var = Scope({u'this':this, u'self':self, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'self', u'parent']) + if var.get(u'parent').callprop(u'isBinary'): + if PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'left')): + var.get(u'parent').callprop(u'replaceWith', var.get(u'parent').get(u'node').get(u'right')) + else: + var.get(u'parent').callprop(u'replaceWith', var.get(u'parent').get(u'node').get(u'left')) + return var.get(u'true') + PyJs_anonymous_2036_._set_name(u'anonymous') + @Js + def PyJs_anonymous_2037_(self, parent, this, arguments, var=var): + var = Scope({u'this':this, u'self':self, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'self', u'parent']) + if ((var.get(u'parent').callprop(u'isIfStatement') and (PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'consequent')) or PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'alternate')))) or (var.get(u'parent').callprop(u'isLoop') and PyJsStrictEq(var.get(u'self').get(u'key'),Js(u'body')))): + PyJs_Object_2038_ = Js({u'type':Js(u'BlockStatement'),u'body':Js([])}) + var.get(u'self').callprop(u'replaceWith', PyJs_Object_2038_) + return var.get(u'true') + PyJs_anonymous_2037_._set_name(u'anonymous') + var.put(u'hooks', var.get(u'exports').put(u'hooks', Js([PyJs_anonymous_2033_, PyJs_anonymous_2034_, PyJs_anonymous_2035_, PyJs_anonymous_2036_, PyJs_anonymous_2037_]))) +PyJs_anonymous_2032_._set_name(u'anonymous') +PyJs_Object_2039_ = Js({}) +@Js +def PyJs_anonymous_2040_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'Referenced', u'ReferencedIdentifier', u'Pure', u'_interopRequireWildcard', u'require', u'_babelTypes', u'Flow', u'module', u'ReferencedMemberExpression', u'BlockScoped', u'Generated', u'User', u't', u'Statement', u'Var', u'Scope', u'Expression', u'BindingIdentifier']) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2042_ = Js({}) + var.put(u'newObj', PyJs_Object_2042_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + def PyJs_LONG_2041_(var=var): + return var.get(u'exports').put(u'Var', var.get(u'exports').put(u'BlockScoped', var.get(u'exports').put(u'Referenced', var.get(u'exports').put(u'Scope', var.get(u'exports').put(u'Expression', var.get(u'exports').put(u'Statement', var.get(u'exports').put(u'BindingIdentifier', var.get(u'exports').put(u'ReferencedMemberExpression', var.get(u'exports').put(u'ReferencedIdentifier', var.get(u'undefined')))))))))) + var.get(u'exports').put(u'Flow', var.get(u'exports').put(u'Pure', var.get(u'exports').put(u'Generated', var.get(u'exports').put(u'User', PyJs_LONG_2041_())))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + @Js + def PyJs_checkPath_2044_(_ref, opts, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'checkPath':PyJs_checkPath_2044_, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'node', u'_ref', u'opts', u'parent']) + var.put(u'node', var.get(u'_ref').get(u'node')) + var.put(u'parent', var.get(u'_ref').get(u'parent')) + if (var.get(u't').callprop(u'isIdentifier', var.get(u'node'), var.get(u'opts')).neg() and var.get(u't').callprop(u'isJSXMemberExpression', var.get(u'parent'), var.get(u'opts')).neg()): + if var.get(u't').callprop(u'isJSXIdentifier', var.get(u'node'), var.get(u'opts')): + if var.get(u'_babelTypes').get(u'react').callprop(u'isCompatTag', var.get(u'node').get(u'name')): + return Js(False) + else: + return Js(False) + return var.get(u't').callprop(u'isReferenced', var.get(u'node'), var.get(u'parent')) + PyJs_checkPath_2044_._set_name(u'checkPath') + PyJs_Object_2043_ = Js({u'types':Js([Js(u'Identifier'), Js(u'JSXIdentifier')]),u'checkPath':PyJs_checkPath_2044_}) + var.put(u'ReferencedIdentifier', var.get(u'exports').put(u'ReferencedIdentifier', PyJs_Object_2043_)) + @Js + def PyJs_checkPath_2046_(_ref2, this, arguments, var=var): + var = Scope({u'this':this, u'checkPath':PyJs_checkPath_2046_, u'_ref2':_ref2, u'arguments':arguments}, var) + var.registers([u'node', u'_ref2', u'parent']) + var.put(u'node', var.get(u'_ref2').get(u'node')) + var.put(u'parent', var.get(u'_ref2').get(u'parent')) + return (var.get(u't').callprop(u'isMemberExpression', var.get(u'node')) and var.get(u't').callprop(u'isReferenced', var.get(u'node'), var.get(u'parent'))) + PyJs_checkPath_2046_._set_name(u'checkPath') + PyJs_Object_2045_ = Js({u'types':Js([Js(u'MemberExpression')]),u'checkPath':PyJs_checkPath_2046_}) + var.put(u'ReferencedMemberExpression', var.get(u'exports').put(u'ReferencedMemberExpression', PyJs_Object_2045_)) + @Js + def PyJs_checkPath_2048_(_ref3, this, arguments, var=var): + var = Scope({u'this':this, u'checkPath':PyJs_checkPath_2048_, u'_ref3':_ref3, u'arguments':arguments}, var) + var.registers([u'node', u'_ref3', u'parent']) + var.put(u'node', var.get(u'_ref3').get(u'node')) + var.put(u'parent', var.get(u'_ref3').get(u'parent')) + return (var.get(u't').callprop(u'isIdentifier', var.get(u'node')) and var.get(u't').callprop(u'isBinding', var.get(u'node'), var.get(u'parent'))) + PyJs_checkPath_2048_._set_name(u'checkPath') + PyJs_Object_2047_ = Js({u'types':Js([Js(u'Identifier')]),u'checkPath':PyJs_checkPath_2048_}) + var.put(u'BindingIdentifier', var.get(u'exports').put(u'BindingIdentifier', PyJs_Object_2047_)) + @Js + def PyJs_checkPath_2050_(_ref4, this, arguments, var=var): + var = Scope({u'this':this, u'_ref4':_ref4, u'checkPath':PyJs_checkPath_2050_, u'arguments':arguments}, var) + var.registers([u'node', u'_ref4', u'parent']) + var.put(u'node', var.get(u'_ref4').get(u'node')) + var.put(u'parent', var.get(u'_ref4').get(u'parent')) + if var.get(u't').callprop(u'isStatement', var.get(u'node')): + if var.get(u't').callprop(u'isVariableDeclaration', var.get(u'node')): + PyJs_Object_2051_ = Js({u'left':var.get(u'node')}) + if var.get(u't').callprop(u'isForXStatement', var.get(u'parent'), PyJs_Object_2051_): + return Js(False) + PyJs_Object_2052_ = Js({u'init':var.get(u'node')}) + if var.get(u't').callprop(u'isForStatement', var.get(u'parent'), PyJs_Object_2052_): + return Js(False) + return var.get(u'true') + else: + return Js(False) + PyJs_checkPath_2050_._set_name(u'checkPath') + PyJs_Object_2049_ = Js({u'types':Js([Js(u'Statement')]),u'checkPath':PyJs_checkPath_2050_}) + var.put(u'Statement', var.get(u'exports').put(u'Statement', PyJs_Object_2049_)) + @Js + def PyJs_checkPath_2054_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'checkPath':PyJs_checkPath_2054_, u'arguments':arguments}, var) + var.registers([u'path']) + if var.get(u'path').callprop(u'isIdentifier'): + return var.get(u'path').callprop(u'isReferencedIdentifier') + else: + return var.get(u't').callprop(u'isExpression', var.get(u'path').get(u'node')) + PyJs_checkPath_2054_._set_name(u'checkPath') + PyJs_Object_2053_ = Js({u'types':Js([Js(u'Expression')]),u'checkPath':PyJs_checkPath_2054_}) + var.put(u'Expression', var.get(u'exports').put(u'Expression', PyJs_Object_2053_)) + @Js + def PyJs_checkPath_2056_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'checkPath':PyJs_checkPath_2056_, u'arguments':arguments}, var) + var.registers([u'path']) + return var.get(u't').callprop(u'isScope', var.get(u'path').get(u'node'), var.get(u'path').get(u'parent')) + PyJs_checkPath_2056_._set_name(u'checkPath') + PyJs_Object_2055_ = Js({u'types':Js([Js(u'Scopable')]),u'checkPath':PyJs_checkPath_2056_}) + var.put(u'Scope', var.get(u'exports').put(u'Scope', PyJs_Object_2055_)) + @Js + def PyJs_checkPath_2058_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'checkPath':PyJs_checkPath_2058_, u'arguments':arguments}, var) + var.registers([u'path']) + return var.get(u't').callprop(u'isReferenced', var.get(u'path').get(u'node'), var.get(u'path').get(u'parent')) + PyJs_checkPath_2058_._set_name(u'checkPath') + PyJs_Object_2057_ = Js({u'checkPath':PyJs_checkPath_2058_}) + var.put(u'Referenced', var.get(u'exports').put(u'Referenced', PyJs_Object_2057_)) + @Js + def PyJs_checkPath_2060_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'checkPath':PyJs_checkPath_2060_, u'arguments':arguments}, var) + var.registers([u'path']) + return var.get(u't').callprop(u'isBlockScoped', var.get(u'path').get(u'node')) + PyJs_checkPath_2060_._set_name(u'checkPath') + PyJs_Object_2059_ = Js({u'checkPath':PyJs_checkPath_2060_}) + var.put(u'BlockScoped', var.get(u'exports').put(u'BlockScoped', PyJs_Object_2059_)) + @Js + def PyJs_checkPath_2062_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'checkPath':PyJs_checkPath_2062_, u'arguments':arguments}, var) + var.registers([u'path']) + return var.get(u't').callprop(u'isVar', var.get(u'path').get(u'node')) + PyJs_checkPath_2062_._set_name(u'checkPath') + PyJs_Object_2061_ = Js({u'types':Js([Js(u'VariableDeclaration')]),u'checkPath':PyJs_checkPath_2062_}) + var.put(u'Var', var.get(u'exports').put(u'Var', PyJs_Object_2061_)) + @Js + def PyJs_checkPath_2064_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'checkPath':PyJs_checkPath_2064_, u'arguments':arguments}, var) + var.registers([u'path']) + return (var.get(u'path').get(u'node') and var.get(u'path').get(u'node').get(u'loc').neg().neg()) + PyJs_checkPath_2064_._set_name(u'checkPath') + PyJs_Object_2063_ = Js({u'checkPath':PyJs_checkPath_2064_}) + var.put(u'User', var.get(u'exports').put(u'User', PyJs_Object_2063_)) + @Js + def PyJs_checkPath_2066_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'checkPath':PyJs_checkPath_2066_, u'arguments':arguments}, var) + var.registers([u'path']) + return var.get(u'path').callprop(u'isUser').neg() + PyJs_checkPath_2066_._set_name(u'checkPath') + PyJs_Object_2065_ = Js({u'checkPath':PyJs_checkPath_2066_}) + var.put(u'Generated', var.get(u'exports').put(u'Generated', PyJs_Object_2065_)) + @Js + def PyJs_checkPath_2068_(path, opts, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'checkPath':PyJs_checkPath_2068_, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'path', u'opts']) + return var.get(u'path').get(u'scope').callprop(u'isPure', var.get(u'path').get(u'node'), var.get(u'opts')) + PyJs_checkPath_2068_._set_name(u'checkPath') + PyJs_Object_2067_ = Js({u'checkPath':PyJs_checkPath_2068_}) + var.put(u'Pure', var.get(u'exports').put(u'Pure', PyJs_Object_2067_)) + @Js + def PyJs_checkPath_2070_(_ref5, this, arguments, var=var): + var = Scope({u'this':this, u'_ref5':_ref5, u'checkPath':PyJs_checkPath_2070_, u'arguments':arguments}, var) + var.registers([u'node', u'_ref5']) + var.put(u'node', var.get(u'_ref5').get(u'node')) + if var.get(u't').callprop(u'isFlow', var.get(u'node')): + return var.get(u'true') + else: + if var.get(u't').callprop(u'isImportDeclaration', var.get(u'node')): + return (PyJsStrictEq(var.get(u'node').get(u'importKind'),Js(u'type')) or PyJsStrictEq(var.get(u'node').get(u'importKind'),Js(u'typeof'))) + else: + if var.get(u't').callprop(u'isExportDeclaration', var.get(u'node')): + return PyJsStrictEq(var.get(u'node').get(u'exportKind'),Js(u'type')) + else: + return Js(False) + PyJs_checkPath_2070_._set_name(u'checkPath') + PyJs_Object_2069_ = Js({u'types':Js([Js(u'Flow'), Js(u'ImportDeclaration'), Js(u'ExportDeclaration')]),u'checkPath':PyJs_checkPath_2070_}) + var.put(u'Flow', var.get(u'exports').put(u'Flow', PyJs_Object_2069_)) +PyJs_anonymous_2040_._set_name(u'anonymous') +PyJs_Object_2071_ = Js({u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_2072_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_hoister', u'updateSiblingKeys', u'_verifyNodeList', u'_interopRequireDefault', u'_cache', u'_getIterator2', u'_getIterator3', u'_maybePopFromStatements', u'_typeof2', u'_typeof3', u'_interopRequireWildcard', u'unshiftContainer', u'insertAfter', u'exports', u'pushContainer', u'insertBefore', u'_babelTypes', u'hoist', u'module', u'_index2', u'_index', u'require', u'_containerInsert', u'_containerInsertBefore', u't', u'_containerInsertAfter', u'_hoister2']) + @Js + def PyJsHoisted_pushContainer_(listKey, nodes, this, arguments, var=var): + var = Scope({u'this':this, u'listKey':listKey, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'path', u'listKey', u'container', u'nodes']) + var.get(u"this").callprop(u'_assertUnremoved') + var.put(u'nodes', var.get(u"this").callprop(u'_verifyNodeList', var.get(u'nodes'))) + var.put(u'container', var.get(u"this").get(u'node').get(var.get(u'listKey'))) + PyJs_Object_2078_ = Js({u'parentPath':var.get(u"this"),u'parent':var.get(u"this").get(u'node'),u'container':var.get(u'container'),u'listKey':var.get(u'listKey'),u'key':var.get(u'container').get(u'length')}) + var.put(u'path', var.get(u'_index2').get(u'default').callprop(u'get', PyJs_Object_2078_)) + return var.get(u'path').callprop(u'replaceWithMultiple', var.get(u'nodes')) + PyJsHoisted_pushContainer_.func_name = u'pushContainer' + var.put(u'pushContainer', PyJsHoisted_pushContainer_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2073_ = Js({}) + var.put(u'newObj', PyJs_Object_2073_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_insertBefore_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'nodes']) + var.get(u"this").callprop(u'_assertUnremoved') + var.put(u'nodes', var.get(u"this").callprop(u'_verifyNodeList', var.get(u'nodes'))) + if (var.get(u"this").get(u'parentPath').callprop(u'isExpressionStatement') or var.get(u"this").get(u'parentPath').callprop(u'isLabeledStatement')): + return var.get(u"this").get(u'parentPath').callprop(u'insertBefore', var.get(u'nodes')) + else: + if (var.get(u"this").callprop(u'isNodeType', Js(u'Expression')) or (var.get(u"this").get(u'parentPath').callprop(u'isForStatement') and PyJsStrictEq(var.get(u"this").get(u'key'),Js(u'init')))): + if var.get(u"this").get(u'node'): + var.get(u'nodes').callprop(u'push', var.get(u"this").get(u'node')) + var.get(u"this").callprop(u'replaceExpressionWithStatements', var.get(u'nodes')) + else: + var.get(u"this").callprop(u'_maybePopFromStatements', var.get(u'nodes')) + if var.get(u'Array').callprop(u'isArray', var.get(u"this").get(u'container')): + return var.get(u"this").callprop(u'_containerInsertBefore', var.get(u'nodes')) + else: + if var.get(u"this").callprop(u'isStatementOrBlock'): + if var.get(u"this").get(u'node'): + var.get(u'nodes').callprop(u'push', var.get(u"this").get(u'node')) + var.get(u"this").callprop(u'_replaceWith', var.get(u't').callprop(u'blockStatement', var.get(u'nodes'))) + else: + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"We don't know what to do with this node type. We were previously a Statement but we can't fit in here?"))) + raise PyJsTempException + return Js([var.get(u"this")]) + PyJsHoisted_insertBefore_.func_name = u'insertBefore' + var.put(u'insertBefore', PyJsHoisted_insertBefore_) + @Js + def PyJsHoisted__containerInsert_(PyJsArg_66726f6d_, nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'from':PyJsArg_66726f6d_, u'arguments':arguments}, var) + var.registers([u'node', u'paths', u'_isArray', u'context', u'_iterator', u'_isArray2', u'to', u'i', u'_i2', u'_ref2', u'contexts', u'from', u'_i', u'path', u'_ref', u'_iterator2', u'nodes', u'_path']) + var.get(u"this").callprop(u'updateSiblingKeys', var.get(u'from'), var.get(u'nodes').get(u'length')) + var.put(u'paths', Js([])) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'_path', var.get(u'_ref')) + var.get(u'_path').callprop(u'setScope') + @Js + def PyJs_anonymous_2076_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return Js(u'Inserted.') + PyJs_anonymous_2076_._set_name(u'anonymous') + var.get(u'_path').callprop(u'debug', PyJs_anonymous_2076_) + #for JS loop + var.put(u'_iterator2', var.get(u'contexts')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'context', var.get(u'_ref2')) + var.get(u'context').callprop(u'maybeQueue', var.get(u'_path'), var.get(u'true')) + + + return var.get(u'paths') + PyJsHoisted__containerInsert_.func_name = u'_containerInsert' + var.put(u'_containerInsert', PyJsHoisted__containerInsert_) + @Js + def PyJsHoisted_unshiftContainer_(listKey, nodes, this, arguments, var=var): + var = Scope({u'this':this, u'listKey':listKey, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'path', u'listKey', u'nodes']) + var.get(u"this").callprop(u'_assertUnremoved') + var.put(u'nodes', var.get(u"this").callprop(u'_verifyNodeList', var.get(u'nodes'))) + PyJs_Object_2077_ = Js({u'parentPath':var.get(u"this"),u'parent':var.get(u"this").get(u'node'),u'container':var.get(u"this").get(u'node').get(var.get(u'listKey')),u'listKey':var.get(u'listKey'),u'key':Js(0.0)}) + var.put(u'path', var.get(u'_index2').get(u'default').callprop(u'get', PyJs_Object_2077_)) + return var.get(u'path').callprop(u'insertBefore', var.get(u'nodes')) + PyJsHoisted_unshiftContainer_.func_name = u'unshiftContainer' + var.put(u'unshiftContainer', PyJsHoisted_unshiftContainer_) + @Js + def PyJsHoisted__containerInsertBefore_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'nodes']) + return var.get(u"this").callprop(u'_containerInsert', var.get(u"this").get(u'key'), var.get(u'nodes')) + PyJsHoisted__containerInsertBefore_.func_name = u'_containerInsertBefore' + var.put(u'_containerInsertBefore', PyJsHoisted__containerInsertBefore_) + @Js + def PyJsHoisted_updateSiblingKeys_(fromIndex, incrementBy, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'fromIndex':fromIndex, u'incrementBy':incrementBy}, var) + var.registers([u'i', u'paths', u'incrementBy', u'fromIndex', u'path']) + if var.get(u"this").get(u'parent').neg(): + return var.get('undefined') + var.put(u'paths', var.get(u'_cache').get(u'path').callprop(u'get', var.get(u"this").get(u'parent'))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'fromIndex')): + var.get(u'path').put(u'key', var.get(u'incrementBy'), u'+') + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + PyJsHoisted_updateSiblingKeys_.func_name = u'updateSiblingKeys' + var.put(u'updateSiblingKeys', PyJsHoisted_updateSiblingKeys_) + @Js + def PyJsHoisted__verifyNodeList_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'i', u'node', u'nodes', u'type', u'msg']) + if var.get(u'nodes').neg(): + return Js([]) + if PyJsStrictNeq(var.get(u'nodes').get(u'constructor'),var.get(u'Array')): + var.put(u'nodes', Js([var.get(u'nodes')])) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else var.get(u"this").get(u'scope'))) + var.put(u'hoister', var.get(u'_hoister2').get(u'default').create(var.get(u"this"), var.get(u'scope'))) + return var.get(u'hoister').callprop(u'run') + PyJsHoisted_hoist_.func_name = u'hoist' + var.put(u'hoist', PyJsHoisted_hoist_) + @Js + def PyJsHoisted__containerInsertAfter_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'nodes']) + return var.get(u"this").callprop(u'_containerInsert', (var.get(u"this").get(u'key')+Js(1.0)), var.get(u'nodes')) + PyJsHoisted__containerInsertAfter_.func_name = u'_containerInsertAfter' + var.put(u'_containerInsertAfter', PyJsHoisted__containerInsertAfter_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2074_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2074_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__maybePopFromStatements_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'nodes', u'last', u'isIdentifier']) + var.put(u'last', var.get(u'nodes').get((var.get(u'nodes').get(u'length')-Js(1.0)))) + var.put(u'isIdentifier', (var.get(u't').callprop(u'isIdentifier', var.get(u'last')) or (var.get(u't').callprop(u'isExpressionStatement', var.get(u'last')) and var.get(u't').callprop(u'isIdentifier', var.get(u'last').get(u'expression'))))) + if (var.get(u'isIdentifier') and var.get(u"this").callprop(u'isCompletionRecord').neg()): + var.get(u'nodes').callprop(u'pop') + PyJsHoisted__maybePopFromStatements_.func_name = u'_maybePopFromStatements' + var.put(u'_maybePopFromStatements', PyJsHoisted__maybePopFromStatements_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_typeof2', var.get(u'require')(Js(u'babel-runtime/helpers/typeof'))) + var.put(u'_typeof3', var.get(u'_interopRequireDefault')(var.get(u'_typeof2'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'insertBefore', var.get(u'insertBefore')) + var.get(u'exports').put(u'_containerInsert', var.get(u'_containerInsert')) + var.get(u'exports').put(u'_containerInsertBefore', var.get(u'_containerInsertBefore')) + var.get(u'exports').put(u'_containerInsertAfter', var.get(u'_containerInsertAfter')) + var.get(u'exports').put(u'_maybePopFromStatements', var.get(u'_maybePopFromStatements')) + var.get(u'exports').put(u'insertAfter', var.get(u'insertAfter')) + var.get(u'exports').put(u'updateSiblingKeys', var.get(u'updateSiblingKeys')) + var.get(u'exports').put(u'_verifyNodeList', var.get(u'_verifyNodeList')) + var.get(u'exports').put(u'unshiftContainer', var.get(u'unshiftContainer')) + var.get(u'exports').put(u'pushContainer', var.get(u'pushContainer')) + var.get(u'exports').put(u'hoist', var.get(u'hoist')) + var.put(u'_cache', var.get(u'require')(Js(u'../cache'))) + var.put(u'_hoister', var.get(u'require')(Js(u'./lib/hoister'))) + var.put(u'_hoister2', var.get(u'_interopRequireDefault')(var.get(u'_hoister'))) + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_2072_._set_name(u'anonymous') +PyJs_Object_2079_ = Js({u'../cache':Js(222.0),u'./index':Js(232.0),u'./lib/hoister':Js(237.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/helpers/typeof':Js(114.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_2080_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_assertUnremoved', u'exports', u'require', u'remove', u'_remove', u'_markRemoved', u'module', u'_removalHooks', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'_callRemovalHooks']) + @Js + def PyJsHoisted__assertUnremoved_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").get(u'removed'): + PyJsTempException = JsToPyException(var.get(u"this").callprop(u'buildCodeFrameError', Js(u'NodePath has been removed so is read-only.'))) + raise PyJsTempException + PyJsHoisted__assertUnremoved_.func_name = u'_assertUnremoved' + var.put(u'_assertUnremoved', PyJsHoisted__assertUnremoved_) + @Js + def PyJsHoisted_remove_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'_assertUnremoved') + var.get(u"this").callprop(u'resync') + if var.get(u"this").callprop(u'_callRemovalHooks'): + var.get(u"this").callprop(u'_markRemoved') + return var.get('undefined') + var.get(u"this").callprop(u'shareCommentsWithSiblings') + var.get(u"this").callprop(u'_remove') + var.get(u"this").callprop(u'_markRemoved') + PyJsHoisted_remove_.func_name = u'remove' + var.put(u'remove', PyJsHoisted_remove_) + @Js + def PyJsHoisted__remove_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if var.get(u'Array').callprop(u'isArray', var.get(u"this").get(u'container')): + var.get(u"this").get(u'container').callprop(u'splice', var.get(u"this").get(u'key'), Js(1.0)) + var.get(u"this").callprop(u'updateSiblingKeys', var.get(u"this").get(u'key'), (-Js(1.0))) + else: + var.get(u"this").callprop(u'_replaceWith', var.get(u"null")) + PyJsHoisted__remove_.func_name = u'_remove' + var.put(u'_remove', PyJsHoisted__remove_) + @Js + def PyJsHoisted__markRemoved_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'shouldSkip', var.get(u'true')) + var.get(u"this").put(u'removed', var.get(u'true')) + var.get(u"this").put(u'node', var.get(u"null")) + PyJsHoisted__markRemoved_.func_name = u'_markRemoved' + var.put(u'_markRemoved', PyJsHoisted__markRemoved_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2081_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2081_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__callRemovalHooks_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'fn', u'_isArray', u'_iterator', u'_ref', u'_i']) + #for JS loop + var.put(u'_iterator', var.get(u'_removalHooks').get(u'hooks')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'fn', var.get(u'_ref')) + if var.get(u'fn')(var.get(u"this"), var.get(u"this").get(u'parentPath')): + return var.get(u'true') + + PyJsHoisted__callRemovalHooks_.func_name = u'_callRemovalHooks' + var.put(u'_callRemovalHooks', PyJsHoisted__callRemovalHooks_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'remove', var.get(u'remove')) + var.get(u'exports').put(u'_callRemovalHooks', var.get(u'_callRemovalHooks')) + var.get(u'exports').put(u'_remove', var.get(u'_remove')) + var.get(u'exports').put(u'_markRemoved', var.get(u'_markRemoved')) + var.get(u'exports').put(u'_assertUnremoved', var.get(u'_assertUnremoved')) + var.put(u'_removalHooks', var.get(u'require')(Js(u'./lib/removal-hooks'))) + pass + pass + pass + pass + pass + pass +PyJs_anonymous_2080_._set_name(u'anonymous') +PyJs_Object_2082_ = Js({u'./lib/removal-hooks':Js(238.0),u'babel-runtime/core-js/get-iterator':Js(96.0)}) +@Js +def PyJs_anonymous_2083_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'replaceExpressionWithStatements', u'module', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'replaceInline', u'replaceWithSourceString', u'_babelCodeFrame2', u'_replaceWith', u'_babylon', u'hoistVariablesVisitor', u'exports', u'_babelTypes', u'_interopRequireWildcard', u'replaceWith', u'_babelCodeFrame', u'_index4', u'_index2', u'_index3', u'_index', u'require', u't', u'replaceWithMultiple']) + @Js + def PyJsHoisted_replaceExpressionWithStatements_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'container', u'_isArray2', u'toSequenceExpression', u'completionRecords', u'_i2', u'_ref2', u'exprs', u'uid', u'path', u'nodes', u'callee', u'loop', u'_iterator2']) + var.get(u"this").callprop(u'resync') + var.put(u'toSequenceExpression', var.get(u't').callprop(u'toSequenceExpression', var.get(u'nodes'), var.get(u"this").get(u'scope'))) + if var.get(u't').callprop(u'isSequenceExpression', var.get(u'toSequenceExpression')): + var.put(u'exprs', var.get(u'toSequenceExpression').get(u'expressions')) + if ((var.get(u'exprs').get(u'length')>=Js(2.0)) and var.get(u"this").get(u'parentPath').callprop(u'isExpressionStatement')): + var.get(u"this").callprop(u'_maybePopFromStatements', var.get(u'exprs')) + if PyJsStrictEq(var.get(u'exprs').get(u'length'),Js(1.0)): + var.get(u"this").callprop(u'replaceWith', var.get(u'exprs').get(u'0')) + else: + var.get(u"this").callprop(u'replaceWith', var.get(u'toSequenceExpression')) + else: + if var.get(u'toSequenceExpression'): + var.get(u"this").callprop(u'replaceWith', var.get(u'toSequenceExpression')) + else: + var.put(u'container', var.get(u't').callprop(u'functionExpression', var.get(u"null"), Js([]), var.get(u't').callprop(u'blockStatement', var.get(u'nodes')))) + var.get(u'container').put(u'shadow', var.get(u'true')) + var.get(u"this").callprop(u'replaceWith', var.get(u't').callprop(u'callExpression', var.get(u'container'), Js([]))) + var.get(u"this").callprop(u'traverse', var.get(u'hoistVariablesVisitor')) + var.put(u'completionRecords', var.get(u"this").callprop(u'get', Js(u'callee')).callprop(u'getCompletionRecords')) + #for JS loop + var.put(u'_iterator2', var.get(u'completionRecords')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'path', var.get(u'_ref2')) + if var.get(u'path').callprop(u'isExpressionStatement').neg(): + continue + @Js + def PyJs_anonymous_2091_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return var.get(u'path').callprop(u'isLoop') + PyJs_anonymous_2091_._set_name(u'anonymous') + var.put(u'loop', var.get(u'path').callprop(u'findParent', PyJs_anonymous_2091_)) + if var.get(u'loop'): + var.put(u'callee', var.get(u"this").callprop(u'get', Js(u'callee'))) + var.put(u'uid', var.get(u'callee').get(u'scope').callprop(u'generateDeclaredUidIdentifier', Js(u'ret'))) + var.get(u'callee').callprop(u'get', Js(u'body')).callprop(u'pushContainer', Js(u'body'), var.get(u't').callprop(u'returnStatement', var.get(u'uid'))) + var.get(u'path').callprop(u'get', Js(u'expression')).callprop(u'replaceWith', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'uid'), var.get(u'path').get(u'node').get(u'expression'))) + else: + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'returnStatement', var.get(u'path').get(u'node').get(u'expression'))) + + return var.get(u"this").get(u'node') + PyJsHoisted_replaceExpressionWithStatements_.func_name = u'replaceExpressionWithStatements' + var.put(u'replaceExpressionWithStatements', PyJsHoisted_replaceExpressionWithStatements_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2084_ = Js({}) + var.put(u'newObj', PyJs_Object_2084_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_replaceWith_(replacement, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'replacement':replacement}, var) + var.registers([u'oldNode', u'replacement']) + var.get(u"this").callprop(u'resync') + if var.get(u"this").get(u'removed'): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"You can't replace this node, we've already removed it"))) + raise PyJsTempException + if var.get(u'replacement').instanceof(var.get(u'_index4').get(u'default')): + var.put(u'replacement', var.get(u'replacement').get(u'node')) + if var.get(u'replacement').neg(): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'You passed `path.replaceWith()` a falsy node, use `path.remove()` instead'))) + raise PyJsTempException + if PyJsStrictEq(var.get(u"this").get(u'node'),var.get(u'replacement')): + return var.get('undefined') + if (var.get(u"this").callprop(u'isProgram') and var.get(u't').callprop(u'isProgram', var.get(u'replacement')).neg()): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'You can only replace a Program root node with another Program node'))) + raise PyJsTempException + if var.get(u'Array').callprop(u'isArray', var.get(u'replacement')): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`"))) + raise PyJsTempException + if PyJsStrictEq(var.get(u'replacement',throw=False).typeof(),Js(u'string')): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`"))) + raise PyJsTempException + if (var.get(u"this").callprop(u'isNodeType', Js(u'Statement')) and var.get(u't').callprop(u'isExpression', var.get(u'replacement'))): + if (var.get(u"this").callprop(u'canHaveVariableDeclarationOrExpression').neg() and var.get(u"this").callprop(u'canSwapBetweenExpressionAndStatement', var.get(u'replacement')).neg()): + var.put(u'replacement', var.get(u't').callprop(u'expressionStatement', var.get(u'replacement'))) + if (var.get(u"this").callprop(u'isNodeType', Js(u'Expression')) and var.get(u't').callprop(u'isStatement', var.get(u'replacement'))): + if (var.get(u"this").callprop(u'canHaveVariableDeclarationOrExpression').neg() and var.get(u"this").callprop(u'canSwapBetweenExpressionAndStatement', var.get(u'replacement')).neg()): + return var.get(u"this").callprop(u'replaceExpressionWithStatements', Js([var.get(u'replacement')])) + var.put(u'oldNode', var.get(u"this").get(u'node')) + if var.get(u'oldNode'): + var.get(u't').callprop(u'inheritsComments', var.get(u'replacement'), var.get(u'oldNode')) + var.get(u't').callprop(u'removeComments', var.get(u'oldNode')) + var.get(u"this").callprop(u'_replaceWith', var.get(u'replacement')) + var.get(u"this").put(u'type', var.get(u'replacement').get(u'type')) + var.get(u"this").callprop(u'setScope') + var.get(u"this").callprop(u'requeue') + PyJsHoisted_replaceWith_.func_name = u'replaceWith' + var.put(u'replaceWith', PyJsHoisted_replaceWith_) + @Js + def PyJsHoisted__replaceWith_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").get(u'container').neg(): + PyJsTempException = JsToPyException(var.get(u'ReferenceError').create(Js(u'Container is falsy'))) + raise PyJsTempException + if var.get(u"this").get(u'inList'): + var.get(u't').callprop(u'validate', var.get(u"this").get(u'parent'), var.get(u"this").get(u'key'), Js([var.get(u'node')])) + else: + var.get(u't').callprop(u'validate', var.get(u"this").get(u'parent'), var.get(u"this").get(u'key'), var.get(u'node')) + @Js + def PyJs_anonymous_2090_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return (Js(u'Replace with ')+(var.get(u'node') and var.get(u'node').get(u'type'))) + PyJs_anonymous_2090_._set_name(u'anonymous') + var.get(u"this").callprop(u'debug', PyJs_anonymous_2090_) + var.get(u"this").put(u'node', var.get(u"this").get(u'container').put(var.get(u"this").get(u'key'), var.get(u'node'))) + PyJsHoisted__replaceWith_.func_name = u'_replaceWith' + var.put(u'_replaceWith', PyJsHoisted__replaceWith_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2085_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2085_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_replaceInline_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'nodes']) + var.get(u"this").callprop(u'resync') + if var.get(u'Array').callprop(u'isArray', var.get(u'nodes')): + if var.get(u'Array').callprop(u'isArray', var.get(u"this").get(u'container')): + var.put(u'nodes', var.get(u"this").callprop(u'_verifyNodeList', var.get(u'nodes'))) + var.get(u"this").callprop(u'_containerInsertAfter', var.get(u'nodes')) + return var.get(u"this").callprop(u'remove') + else: + return var.get(u"this").callprop(u'replaceWithMultiple', var.get(u'nodes')) + else: + return var.get(u"this").callprop(u'replaceWith', var.get(u'nodes')) + PyJsHoisted_replaceInline_.func_name = u'replaceInline' + var.put(u'replaceInline', PyJsHoisted_replaceInline_) + @Js + def PyJsHoisted_replaceWithMultiple_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'nodes']) + var.get(u"this").callprop(u'resync') + var.put(u'nodes', var.get(u"this").callprop(u'_verifyNodeList', var.get(u'nodes'))) + var.get(u't').callprop(u'inheritLeadingComments', var.get(u'nodes').get(u'0'), var.get(u"this").get(u'node')) + var.get(u't').callprop(u'inheritTrailingComments', var.get(u'nodes').get((var.get(u'nodes').get(u'length')-Js(1.0))), var.get(u"this").get(u'node')) + var.get(u"this").put(u'node', var.get(u"this").get(u'container').put(var.get(u"this").get(u'key'), var.get(u"null"))) + var.get(u"this").callprop(u'insertAfter', var.get(u'nodes')) + if var.get(u"this").get(u'node'): + var.get(u"this").callprop(u'requeue') + else: + var.get(u"this").callprop(u'remove') + PyJsHoisted_replaceWithMultiple_.func_name = u'replaceWithMultiple' + var.put(u'replaceWithMultiple', PyJsHoisted_replaceWithMultiple_) + @Js + def PyJsHoisted_replaceWithSourceString_(replacement, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'replacement':replacement}, var) + var.registers([u'loc', u'replacement']) + var.get(u"this").callprop(u'resync') + try: + var.put(u'replacement', ((Js(u'(')+var.get(u'replacement'))+Js(u')'))) + var.put(u'replacement', PyJsComma(Js(0.0),var.get(u'_babylon').get(u'parse'))(var.get(u'replacement'))) + except PyJsException as PyJsTempException: + PyJsHolder_657272_62521723 = var.own.get(u'err') + var.force_own_put(u'err', PyExceptionToJs(PyJsTempException)) + try: + var.put(u'loc', var.get(u'err').get(u'loc')) + if var.get(u'loc'): + var.get(u'err').put(u'message', Js(u' - make sure this is an expression.'), u'+') + var.get(u'err').put(u'message', (Js(u'\n')+PyJsComma(Js(0.0),var.get(u'_babelCodeFrame2').get(u'default'))(var.get(u'replacement'), var.get(u'loc').get(u'line'), (var.get(u'loc').get(u'column')+Js(1.0)))), u'+') + PyJsTempException = JsToPyException(var.get(u'err')) + raise PyJsTempException + finally: + if PyJsHolder_657272_62521723 is not None: + var.own[u'err'] = PyJsHolder_657272_62521723 + else: + del var.own[u'err'] + del PyJsHolder_657272_62521723 + var.put(u'replacement', var.get(u'replacement').get(u'program').get(u'body').get(u'0').get(u'expression')) + var.get(u'_index2').get(u'default').callprop(u'removeProperties', var.get(u'replacement')) + return var.get(u"this").callprop(u'replaceWith', var.get(u'replacement')) + PyJsHoisted_replaceWithSourceString_.func_name = u'replaceWithSourceString' + var.put(u'replaceWithSourceString', PyJsHoisted_replaceWithSourceString_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'replaceWithMultiple', var.get(u'replaceWithMultiple')) + var.get(u'exports').put(u'replaceWithSourceString', var.get(u'replaceWithSourceString')) + var.get(u'exports').put(u'replaceWith', var.get(u'replaceWith')) + var.get(u'exports').put(u'_replaceWith', var.get(u'_replaceWith')) + var.get(u'exports').put(u'replaceExpressionWithStatements', var.get(u'replaceExpressionWithStatements')) + var.get(u'exports').put(u'replaceInline', var.get(u'replaceInline')) + var.put(u'_babelCodeFrame', var.get(u'require')(Js(u'babel-code-frame'))) + var.put(u'_babelCodeFrame2', var.get(u'_interopRequireDefault')(var.get(u'_babelCodeFrame'))) + var.put(u'_index', var.get(u'require')(Js(u'../index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + var.put(u'_index3', var.get(u'require')(Js(u'./index'))) + var.put(u'_index4', var.get(u'_interopRequireDefault')(var.get(u'_index3'))) + var.put(u'_babylon', var.get(u'require')(Js(u'babylon'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + @Js + def PyJs_Function_2087_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'Function':PyJs_Function_2087_, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'path').callprop(u'skip') + PyJs_Function_2087_._set_name(u'Function') + @Js + def PyJs_VariableDeclaration_2088_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'VariableDeclaration':PyJs_VariableDeclaration_2088_}, var) + var.registers([u'_isArray', u'_iterator', u'key', u'exprs', u'declar', u'_i', u'path', u'bindings', u'_ref']) + if PyJsStrictNeq(var.get(u'path').get(u'node').get(u'kind'),Js(u'var')): + return var.get('undefined') + var.put(u'bindings', var.get(u'path').callprop(u'getBindingIdentifiers')) + for PyJsTemp in var.get(u'bindings'): + var.put(u'key', PyJsTemp) + PyJs_Object_2089_ = Js({u'id':var.get(u'bindings').get(var.get(u'key'))}) + var.get(u'path').get(u'scope').callprop(u'push', PyJs_Object_2089_) + var.put(u'exprs', Js([])) + #for JS loop + var.put(u'_iterator', var.get(u'path').get(u'node').get(u'declarations')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'declar', var.get(u'_ref')) + if var.get(u'declar').get(u'init'): + var.get(u'exprs').callprop(u'push', var.get(u't').callprop(u'expressionStatement', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'declar').get(u'id'), var.get(u'declar').get(u'init')))) + + var.get(u'path').callprop(u'replaceWithMultiple', var.get(u'exprs')) + PyJs_VariableDeclaration_2088_._set_name(u'VariableDeclaration') + PyJs_Object_2086_ = Js({u'Function':PyJs_Function_2087_,u'VariableDeclaration':PyJs_VariableDeclaration_2088_}) + var.put(u'hoistVariablesVisitor', PyJs_Object_2086_) + pass + pass + pass + pass + pass + pass +PyJs_anonymous_2083_._set_name(u'anonymous') +PyJs_Object_2092_ = Js({u'../index':Js(225.0),u'./index':Js(232.0),u'babel-code-frame':Js(4.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-types':Js(258.0),u'babylon':Js(262.0)}) +@Js +def PyJs_anonymous_2093_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'Binding', u'module', u'_interopRequireDefault', u'_classCallCheck3', u'_classCallCheck2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2094_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2094_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + pass + @Js + def PyJs_anonymous_2095_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'Binding']) + @Js + def PyJsHoisted_Binding_(_ref, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'arguments':arguments}, var) + var.registers([u'kind', u'existing', u'path', u'scope', u'_ref', u'identifier']) + var.put(u'existing', var.get(u'_ref').get(u'existing')) + var.put(u'identifier', var.get(u'_ref').get(u'identifier')) + var.put(u'scope', var.get(u'_ref').get(u'scope')) + var.put(u'path', var.get(u'_ref').get(u'path')) + var.put(u'kind', var.get(u'_ref').get(u'kind')) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Binding')) + var.get(u"this").put(u'identifier', var.get(u'identifier')) + var.get(u"this").put(u'scope', var.get(u'scope')) + var.get(u"this").put(u'path', var.get(u'path')) + var.get(u"this").put(u'kind', var.get(u'kind')) + var.get(u"this").put(u'constantViolations', Js([])) + var.get(u"this").put(u'constant', var.get(u'true')) + var.get(u"this").put(u'referencePaths', Js([])) + var.get(u"this").put(u'referenced', Js(False)) + var.get(u"this").put(u'references', Js(0.0)) + var.get(u"this").callprop(u'clearValue') + if var.get(u'existing'): + var.get(u"this").put(u'constantViolations', Js([]).callprop(u'concat', var.get(u'existing').get(u'path'), var.get(u'existing').get(u'constantViolations'), var.get(u"this").get(u'constantViolations'))) + PyJsHoisted_Binding_.func_name = u'Binding' + var.put(u'Binding', PyJsHoisted_Binding_) + pass + @Js + def PyJs_deoptValue_2096_(this, arguments, var=var): + var = Scope({u'this':this, u'deoptValue':PyJs_deoptValue_2096_, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").callprop(u'clearValue') + var.get(u"this").put(u'hasDeoptedValue', var.get(u'true')) + PyJs_deoptValue_2096_._set_name(u'deoptValue') + var.get(u'Binding').get(u'prototype').put(u'deoptValue', PyJs_deoptValue_2096_) + @Js + def PyJs_setValue_2097_(value, this, arguments, var=var): + var = Scope({u'this':this, u'setValue':PyJs_setValue_2097_, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + if var.get(u"this").get(u'hasDeoptedValue'): + return var.get('undefined') + var.get(u"this").put(u'hasValue', var.get(u'true')) + var.get(u"this").put(u'value', var.get(u'value')) + PyJs_setValue_2097_._set_name(u'setValue') + var.get(u'Binding').get(u'prototype').put(u'setValue', PyJs_setValue_2097_) + @Js + def PyJs_clearValue_2098_(this, arguments, var=var): + var = Scope({u'this':this, u'clearValue':PyJs_clearValue_2098_, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'hasDeoptedValue', Js(False)) + var.get(u"this").put(u'hasValue', Js(False)) + var.get(u"this").put(u'value', var.get(u"null")) + PyJs_clearValue_2098_._set_name(u'clearValue') + var.get(u'Binding').get(u'prototype').put(u'clearValue', PyJs_clearValue_2098_) + @Js + def PyJs_reassign_2099_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'reassign':PyJs_reassign_2099_}, var) + var.registers([u'path']) + var.get(u"this").put(u'constant', Js(False)) + if PyJsStrictNeq(var.get(u"this").get(u'constantViolations').callprop(u'indexOf', var.get(u'path')),(-Js(1.0))): + return var.get('undefined') + var.get(u"this").get(u'constantViolations').callprop(u'push', var.get(u'path')) + PyJs_reassign_2099_._set_name(u'reassign') + var.get(u'Binding').get(u'prototype').put(u'reassign', PyJs_reassign_2099_) + @Js + def PyJs_reference_2100_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'reference':PyJs_reference_2100_}, var) + var.registers([u'path']) + if PyJsStrictNeq(var.get(u"this").get(u'referencePaths').callprop(u'indexOf', var.get(u'path')),(-Js(1.0))): + return var.get('undefined') + var.get(u"this").put(u'referenced', var.get(u'true')) + (var.get(u"this").put(u'references',Js(var.get(u"this").get(u'references').to_number())+Js(1))-Js(1)) + var.get(u"this").get(u'referencePaths').callprop(u'push', var.get(u'path')) + PyJs_reference_2100_._set_name(u'reference') + var.get(u'Binding').get(u'prototype').put(u'reference', PyJs_reference_2100_) + @Js + def PyJs_dereference_2101_(this, arguments, var=var): + var = Scope({u'this':this, u'dereference':PyJs_dereference_2101_, u'arguments':arguments}, var) + var.registers([]) + (var.get(u"this").put(u'references',Js(var.get(u"this").get(u'references').to_number())-Js(1))+Js(1)) + var.get(u"this").put(u'referenced', var.get(u"this").get(u'references').neg().neg()) + PyJs_dereference_2101_._set_name(u'dereference') + var.get(u'Binding').get(u'prototype').put(u'dereference', PyJs_dereference_2101_) + return var.get(u'Binding') + PyJs_anonymous_2095_._set_name(u'anonymous') + var.put(u'Binding', PyJs_anonymous_2095_()) + var.get(u'exports').put(u'default', var.get(u'Binding')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_2093_._set_name(u'anonymous') +PyJs_Object_2102_ = Js({u'babel-runtime/helpers/classCallCheck':Js(110.0)}) +@Js +def PyJs_anonymous_2103_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_binding3', u'_binding2', u'uid', u'_defaults', u'module', u'Scope', u'_interopRequireDefault', u'_cache', u'_getIterator2', u'_getIterator3', u'_renamer2', u'_create2', u'_keys', u'_globals2', u't', u'_classCallCheck3', u'_classCallCheck2', u'_babelMessages', u'_create', u'_renamer', u'exports', u'_interopRequireWildcard', u'_babelTypes', u'_includes2', u'_globals', u'_keys2', u'collectorVisitor', u'_index2', u'_defaults2', u'_repeat2', u'getCache', u'_map2', u'_map', u'_crawlCallsCount', u'require', u'_index', u'messages', u'_repeat', u'_includes']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2105_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2105_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_getCache_(path, parentScope, self, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'self':self, u'arguments':arguments, u'parentScope':parentScope}, var) + var.registers([u'scopes', u'_isArray', u'_iterator', u'self', u'parentScope', u'_i', u'path', u'scope', u'_ref']) + var.put(u'scopes', (var.get(u'_cache').get(u'scope').callprop(u'get', var.get(u'path').get(u'node')) or Js([]))) + #for JS loop + var.put(u'_iterator', var.get(u'scopes')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'scope', var.get(u'_ref')) + if (PyJsStrictEq(var.get(u'scope').get(u'parent'),var.get(u'parentScope')) and PyJsStrictEq(var.get(u'scope').get(u'path'),var.get(u'path'))): + return var.get(u'scope') + + var.get(u'scopes').callprop(u'push', var.get(u'self')) + if var.get(u'_cache').get(u'scope').callprop(u'has', var.get(u'path').get(u'node')).neg(): + var.get(u'_cache').get(u'scope').callprop(u'set', var.get(u'path').get(u'node'), var.get(u'scopes')) + PyJsHoisted_getCache_.func_name = u'getCache' + var.put(u'getCache', PyJsHoisted_getCache_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2104_ = Js({}) + var.put(u'newObj', PyJs_Object_2104_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_keys', var.get(u'require')(Js(u'babel-runtime/core-js/object/keys'))) + var.put(u'_keys2', var.get(u'_interopRequireDefault')(var.get(u'_keys'))) + var.put(u'_create', var.get(u'require')(Js(u'babel-runtime/core-js/object/create'))) + var.put(u'_create2', var.get(u'_interopRequireDefault')(var.get(u'_create'))) + var.put(u'_map', var.get(u'require')(Js(u'babel-runtime/core-js/map'))) + var.put(u'_map2', var.get(u'_interopRequireDefault')(var.get(u'_map'))) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_includes', var.get(u'require')(Js(u'lodash/includes'))) + var.put(u'_includes2', var.get(u'_interopRequireDefault')(var.get(u'_includes'))) + var.put(u'_repeat', var.get(u'require')(Js(u'lodash/repeat'))) + var.put(u'_repeat2', var.get(u'_interopRequireDefault')(var.get(u'_repeat'))) + var.put(u'_renamer', var.get(u'require')(Js(u'./lib/renamer'))) + var.put(u'_renamer2', var.get(u'_interopRequireDefault')(var.get(u'_renamer'))) + var.put(u'_index', var.get(u'require')(Js(u'../index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + var.put(u'_defaults', var.get(u'require')(Js(u'lodash/defaults'))) + var.put(u'_defaults2', var.get(u'_interopRequireDefault')(var.get(u'_defaults'))) + var.put(u'_babelMessages', var.get(u'require')(Js(u'babel-messages'))) + var.put(u'messages', var.get(u'_interopRequireWildcard')(var.get(u'_babelMessages'))) + var.put(u'_binding2', var.get(u'require')(Js(u'./binding'))) + var.put(u'_binding3', var.get(u'_interopRequireDefault')(var.get(u'_binding2'))) + var.put(u'_globals', var.get(u'require')(Js(u'globals'))) + var.put(u'_globals2', var.get(u'_interopRequireDefault')(var.get(u'_globals'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + var.put(u'_cache', var.get(u'require')(Js(u'../cache'))) + pass + pass + var.put(u'_crawlCallsCount', Js(0.0)) + pass + @Js + def PyJs_For_2107_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'For':PyJs_For_2107_}, var) + var.registers([u'_isArray2', u'_i2', u'_ref2', u'declar', u'key', u'path', u'_iterator2']) + #for JS loop + var.put(u'_iterator2', var.get(u't').get(u'FOR_INIT_KEYS')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'key', var.get(u'_ref2')) + var.put(u'declar', var.get(u'path').callprop(u'get', var.get(u'key'))) + if var.get(u'declar').callprop(u'isVar'): + var.get(u'path').get(u'scope').callprop(u'getFunctionParent').callprop(u'registerBinding', Js(u'var'), var.get(u'declar')) + + PyJs_For_2107_._set_name(u'For') + @Js + def PyJs_Declaration_2108_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'Declaration':PyJs_Declaration_2108_}, var) + var.registers([u'path']) + if var.get(u'path').callprop(u'isBlockScoped'): + return var.get('undefined') + if (var.get(u'path').callprop(u'isExportDeclaration') and var.get(u'path').callprop(u'get', Js(u'declaration')).callprop(u'isDeclaration')): + return var.get('undefined') + var.get(u'path').get(u'scope').callprop(u'getFunctionParent').callprop(u'registerDeclaration', var.get(u'path')) + PyJs_Declaration_2108_._set_name(u'Declaration') + @Js + def PyJs_ReferencedIdentifier_2109_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_2109_, u'arguments':arguments}, var) + var.registers([u'path', u'state']) + var.get(u'state').get(u'references').callprop(u'push', var.get(u'path')) + PyJs_ReferencedIdentifier_2109_._set_name(u'ReferencedIdentifier') + @Js + def PyJs_ForXStatement_2110_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'ForXStatement':PyJs_ForXStatement_2110_}, var) + var.registers([u'path', u'state', u'left']) + var.put(u'left', var.get(u'path').callprop(u'get', Js(u'left'))) + if (var.get(u'left').callprop(u'isPattern') or var.get(u'left').callprop(u'isIdentifier')): + var.get(u'state').get(u'constantViolations').callprop(u'push', var.get(u'left')) + PyJs_ForXStatement_2110_._set_name(u'ForXStatement') + @Js + def PyJs_exit_2112_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'exit':PyJs_exit_2112_, u'arguments':arguments}, var) + var.registers([u'node', u'decl', u'_isArray3', u'name', u'_i3', u'binding', u'ids', u'declar', u'_binding', u'path', u'scope', u'_id', u'_ref3', u'_iterator3']) + var.put(u'node', var.get(u'path').get(u'node')) + var.put(u'scope', var.get(u'path').get(u'scope')) + var.put(u'declar', var.get(u'node').get(u'declaration')) + if (var.get(u't').callprop(u'isClassDeclaration', var.get(u'declar')) or var.get(u't').callprop(u'isFunctionDeclaration', var.get(u'declar'))): + var.put(u'_id', var.get(u'declar').get(u'id')) + if var.get(u'_id').neg(): + return var.get('undefined') + var.put(u'binding', var.get(u'scope').callprop(u'getBinding', var.get(u'_id').get(u'name'))) + if var.get(u'binding'): + var.get(u'binding').callprop(u'reference', var.get(u'path')) + else: + if var.get(u't').callprop(u'isVariableDeclaration', var.get(u'declar')): + #for JS loop + var.put(u'_iterator3', var.get(u'declar').get(u'declarations')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'decl', var.get(u'_ref3')) + var.put(u'ids', var.get(u't').callprop(u'getBindingIdentifiers', var.get(u'decl'))) + for PyJsTemp in var.get(u'ids'): + var.put(u'name', PyJsTemp) + var.put(u'_binding', var.get(u'scope').callprop(u'getBinding', var.get(u'name'))) + if var.get(u'_binding'): + var.get(u'_binding').callprop(u'reference', var.get(u'path')) + + PyJs_exit_2112_._set_name(u'exit') + PyJs_Object_2111_ = Js({u'exit':PyJs_exit_2112_}) + @Js + def PyJs_LabeledStatement_2113_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'LabeledStatement':PyJs_LabeledStatement_2113_, u'arguments':arguments}, var) + var.registers([u'path']) + var.get(u'path').get(u'scope').callprop(u'getProgramParent').callprop(u'addGlobal', var.get(u'path').get(u'node')) + var.get(u'path').get(u'scope').callprop(u'getBlockParent').callprop(u'registerDeclaration', var.get(u'path')) + PyJs_LabeledStatement_2113_._set_name(u'LabeledStatement') + @Js + def PyJs_AssignmentExpression_2114_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'AssignmentExpression':PyJs_AssignmentExpression_2114_}, var) + var.registers([u'path', u'state']) + var.get(u'state').get(u'assignments').callprop(u'push', var.get(u'path')) + PyJs_AssignmentExpression_2114_._set_name(u'AssignmentExpression') + @Js + def PyJs_UpdateExpression_2115_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'UpdateExpression':PyJs_UpdateExpression_2115_}, var) + var.registers([u'path', u'state']) + var.get(u'state').get(u'constantViolations').callprop(u'push', var.get(u'path').callprop(u'get', Js(u'argument'))) + PyJs_UpdateExpression_2115_._set_name(u'UpdateExpression') + @Js + def PyJs_UnaryExpression_2116_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'UnaryExpression':PyJs_UnaryExpression_2116_, u'arguments':arguments}, var) + var.registers([u'path', u'state']) + if PyJsStrictEq(var.get(u'path').get(u'node').get(u'operator'),Js(u'delete')): + var.get(u'state').get(u'constantViolations').callprop(u'push', var.get(u'path').callprop(u'get', Js(u'argument'))) + PyJs_UnaryExpression_2116_._set_name(u'UnaryExpression') + @Js + def PyJs_BlockScoped_2117_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'BlockScoped':PyJs_BlockScoped_2117_}, var) + var.registers([u'scope', u'path']) + var.put(u'scope', var.get(u'path').get(u'scope')) + if PyJsStrictEq(var.get(u'scope').get(u'path'),var.get(u'path')): + var.put(u'scope', var.get(u'scope').get(u'parent')) + var.get(u'scope').callprop(u'getBlockParent').callprop(u'registerDeclaration', var.get(u'path')) + PyJs_BlockScoped_2117_._set_name(u'BlockScoped') + @Js + def PyJs_ClassDeclaration_2118_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'ClassDeclaration':PyJs_ClassDeclaration_2118_, u'arguments':arguments}, var) + var.registers([u'path', u'id', u'name']) + var.put(u'id', var.get(u'path').get(u'node').get(u'id')) + if var.get(u'id').neg(): + return var.get('undefined') + var.put(u'name', var.get(u'id').get(u'name')) + var.get(u'path').get(u'scope').get(u'bindings').put(var.get(u'name'), var.get(u'path').get(u'scope').callprop(u'getBinding', var.get(u'name'))) + PyJs_ClassDeclaration_2118_._set_name(u'ClassDeclaration') + @Js + def PyJs_Block_2119_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'Block':PyJs_Block_2119_}, var) + var.registers([u'paths', u'_isArray4', u'bodyPath', u'_ref4', u'_i4', u'path', u'_iterator4']) + var.put(u'paths', var.get(u'path').callprop(u'get', Js(u'body'))) + #for JS loop + var.put(u'_iterator4', var.get(u'paths')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i4').get(u'value')) + var.put(u'bodyPath', var.get(u'_ref4')) + if var.get(u'bodyPath').callprop(u'isFunctionDeclaration'): + var.get(u'path').get(u'scope').callprop(u'getBlockParent').callprop(u'registerDeclaration', var.get(u'bodyPath')) + + PyJs_Block_2119_._set_name(u'Block') + PyJs_Object_2106_ = Js({u'For':PyJs_For_2107_,u'Declaration':PyJs_Declaration_2108_,u'ReferencedIdentifier':PyJs_ReferencedIdentifier_2109_,u'ForXStatement':PyJs_ForXStatement_2110_,u'ExportDeclaration':PyJs_Object_2111_,u'LabeledStatement':PyJs_LabeledStatement_2113_,u'AssignmentExpression':PyJs_AssignmentExpression_2114_,u'UpdateExpression':PyJs_UpdateExpression_2115_,u'UnaryExpression':PyJs_UnaryExpression_2116_,u'BlockScoped':PyJs_BlockScoped_2117_,u'ClassDeclaration':PyJs_ClassDeclaration_2118_,u'Block':PyJs_Block_2119_}) + var.put(u'collectorVisitor', PyJs_Object_2106_) + var.put(u'uid', Js(0.0)) + @Js + def PyJs_anonymous_2120_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'Scope']) + @Js + def PyJsHoisted_Scope_(path, parentScope, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'parentScope':parentScope}, var) + var.registers([u'cached', u'path', u'parentScope']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Scope')) + if (var.get(u'parentScope') and PyJsStrictEq(var.get(u'parentScope').get(u'block'),var.get(u'path').get(u'node'))): + return var.get(u'parentScope') + var.put(u'cached', var.get(u'getCache')(var.get(u'path'), var.get(u'parentScope'), var.get(u"this"))) + if var.get(u'cached'): + return var.get(u'cached') + var.get(u"this").put(u'uid', (var.put(u'uid',Js(var.get(u'uid').to_number())+Js(1))-Js(1))) + var.get(u"this").put(u'parent', var.get(u'parentScope')) + var.get(u"this").put(u'hub', var.get(u'path').get(u'hub')) + var.get(u"this").put(u'parentBlock', var.get(u'path').get(u'parent')) + var.get(u"this").put(u'block', var.get(u'path').get(u'node')) + var.get(u"this").put(u'path', var.get(u'path')) + var.get(u"this").put(u'labels', var.get(u'_map2').get(u'default').create()) + PyJsHoisted_Scope_.func_name = u'Scope' + var.put(u'Scope', PyJsHoisted_Scope_) + pass + @Js + def PyJs_traverse_2121_(node, opts, state, this, arguments, var=var): + var = Scope({u'node':node, u'traverse':PyJs_traverse_2121_, u'this':this, u'state':state, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'node', u'state', u'opts']) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(var.get(u'node'), var.get(u'opts'), var.get(u"this"), var.get(u'state'), var.get(u"this").get(u'path')) + PyJs_traverse_2121_._set_name(u'traverse') + var.get(u'Scope').get(u'prototype').put(u'traverse', PyJs_traverse_2121_) + @Js + def PyJs_generateDeclaredUidIdentifier_2122_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'generateDeclaredUidIdentifier':PyJs_generateDeclaredUidIdentifier_2122_}, var) + var.registers([u'name', u'id']) + var.put(u'name', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else Js(u'temp'))) + var.put(u'id', var.get(u"this").callprop(u'generateUidIdentifier', var.get(u'name'))) + PyJs_Object_2123_ = Js({u'id':var.get(u'id')}) + var.get(u"this").callprop(u'push', PyJs_Object_2123_) + return var.get(u'id') + PyJs_generateDeclaredUidIdentifier_2122_._set_name(u'generateDeclaredUidIdentifier') + var.get(u'Scope').get(u'prototype').put(u'generateDeclaredUidIdentifier', PyJs_generateDeclaredUidIdentifier_2122_) + @Js + def PyJs_generateUidIdentifier_2124_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'generateUidIdentifier':PyJs_generateUidIdentifier_2124_}, var) + var.registers([u'name']) + var.put(u'name', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else Js(u'temp'))) + return var.get(u't').callprop(u'identifier', var.get(u"this").callprop(u'generateUid', var.get(u'name'))) + PyJs_generateUidIdentifier_2124_._set_name(u'generateUidIdentifier') + var.get(u'Scope').get(u'prototype').put(u'generateUidIdentifier', PyJs_generateUidIdentifier_2124_) + @Js + def PyJs_generateUid_2125_(this, arguments, var=var): + var = Scope({u'this':this, u'generateUid':PyJs_generateUid_2125_, u'arguments':arguments}, var) + var.registers([u'i', u'program', u'name', u'uid']) + var.put(u'name', (var.get(u'arguments').get(u'0') if ((var.get(u'arguments').get(u'length')>Js(0.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'0'),var.get(u'undefined'))) else Js(u'temp'))) + var.put(u'name', var.get(u't').callprop(u'toIdentifier', var.get(u'name')).callprop(u'replace', JsRegExp(u'/^_+/'), Js(u'')).callprop(u'replace', JsRegExp(u'/[0-9]+$/g'), Js(u''))) + var.put(u'uid', PyJsComma(Js(0.0), Js(None))) + var.put(u'i', Js(0.0)) + while 1: + var.put(u'uid', var.get(u"this").callprop(u'_generateUid', var.get(u'name'), var.get(u'i'))) + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + if not (((var.get(u"this").callprop(u'hasLabel', var.get(u'uid')) or var.get(u"this").callprop(u'hasBinding', var.get(u'uid'))) or var.get(u"this").callprop(u'hasGlobal', var.get(u'uid'))) or var.get(u"this").callprop(u'hasReference', var.get(u'uid'))): + break + var.put(u'program', var.get(u"this").callprop(u'getProgramParent')) + var.get(u'program').get(u'references').put(var.get(u'uid'), var.get(u'true')) + var.get(u'program').get(u'uids').put(var.get(u'uid'), var.get(u'true')) + return var.get(u'uid') + PyJs_generateUid_2125_._set_name(u'generateUid') + var.get(u'Scope').get(u'prototype').put(u'generateUid', PyJs_generateUid_2125_) + @Js + def PyJs__generateUid_2126_(name, i, this, arguments, var=var): + var = Scope({u'i':i, u'this':this, u'_generateUid':PyJs__generateUid_2126_, u'name':name, u'arguments':arguments}, var) + var.registers([u'i', u'id', u'name']) + var.put(u'id', var.get(u'name')) + if (var.get(u'i')>Js(1.0)): + var.put(u'id', var.get(u'i'), u'+') + return (Js(u'_')+var.get(u'id')) + PyJs__generateUid_2126_._set_name(u'_generateUid') + var.get(u'Scope').get(u'prototype').put(u'_generateUid', PyJs__generateUid_2126_) + @Js + def PyJs_generateUidIdentifierBasedOnNode_2127_(parent, defaultName, this, arguments, var=var): + var = Scope({u'this':this, u'defaultName':defaultName, u'generateUidIdentifierBasedOnNode':PyJs_generateUidIdentifierBasedOnNode_2127_, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent', u'defaultName', u'add', u'parts', u'id']) + var.put(u'node', var.get(u'parent')) + if var.get(u't').callprop(u'isAssignmentExpression', var.get(u'parent')): + var.put(u'node', var.get(u'parent').get(u'left')) + else: + if var.get(u't').callprop(u'isVariableDeclarator', var.get(u'parent')): + var.put(u'node', var.get(u'parent').get(u'id')) + else: + if (var.get(u't').callprop(u'isObjectProperty', var.get(u'node')) or var.get(u't').callprop(u'isObjectMethod', var.get(u'node'))): + var.put(u'node', var.get(u'node').get(u'key')) + var.put(u'parts', Js([])) + @Js + def PyJs_add_2128_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'add':PyJs_add_2128_, u'arguments':arguments}, var) + var.registers([u'node', u'specifier', u'_isArray5', u'_isArray6', u'_i6', u'_ref5', u'prop', u'_ref6', u'_iterator5', u'_iterator6', u'_i5']) + if var.get(u't').callprop(u'isModuleDeclaration', var.get(u'node')): + if var.get(u'node').get(u'source'): + var.get(u'add')(var.get(u'node').get(u'source')) + else: + if (var.get(u'node').get(u'specifiers') and var.get(u'node').get(u'specifiers').get(u'length')): + #for JS loop + var.put(u'_iterator5', var.get(u'node').get(u'specifiers')) + var.put(u'_isArray5', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator5'))) + var.put(u'_i5', Js(0.0)) + var.put(u'_iterator5', (var.get(u'_iterator5') if var.get(u'_isArray5') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator5')))) + while 1: + pass + if var.get(u'_isArray5'): + if (var.get(u'_i5')>=var.get(u'_iterator5').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator5').get((var.put(u'_i5',Js(var.get(u'_i5').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i5', var.get(u'_iterator5').callprop(u'next')) + if var.get(u'_i5').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i5').get(u'value')) + var.put(u'specifier', var.get(u'_ref5')) + var.get(u'add')(var.get(u'specifier')) + + else: + if var.get(u'node').get(u'declaration'): + var.get(u'add')(var.get(u'node').get(u'declaration')) + else: + if var.get(u't').callprop(u'isModuleSpecifier', var.get(u'node')): + var.get(u'add')(var.get(u'node').get(u'local')) + else: + if var.get(u't').callprop(u'isMemberExpression', var.get(u'node')): + var.get(u'add')(var.get(u'node').get(u'object')) + var.get(u'add')(var.get(u'node').get(u'property')) + else: + if var.get(u't').callprop(u'isIdentifier', var.get(u'node')): + var.get(u'parts').callprop(u'push', var.get(u'node').get(u'name')) + else: + if var.get(u't').callprop(u'isLiteral', var.get(u'node')): + var.get(u'parts').callprop(u'push', var.get(u'node').get(u'value')) + else: + if var.get(u't').callprop(u'isCallExpression', var.get(u'node')): + var.get(u'add')(var.get(u'node').get(u'callee')) + else: + if (var.get(u't').callprop(u'isObjectExpression', var.get(u'node')) or var.get(u't').callprop(u'isObjectPattern', var.get(u'node'))): + #for JS loop + var.put(u'_iterator6', var.get(u'node').get(u'properties')) + var.put(u'_isArray6', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator6'))) + var.put(u'_i6', Js(0.0)) + var.put(u'_iterator6', (var.get(u'_iterator6') if var.get(u'_isArray6') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator6')))) + while 1: + pass + if var.get(u'_isArray6'): + if (var.get(u'_i6')>=var.get(u'_iterator6').get(u'length')): + break + var.put(u'_ref6', var.get(u'_iterator6').get((var.put(u'_i6',Js(var.get(u'_i6').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i6', var.get(u'_iterator6').callprop(u'next')) + if var.get(u'_i6').get(u'done'): + break + var.put(u'_ref6', var.get(u'_i6').get(u'value')) + var.put(u'prop', var.get(u'_ref6')) + var.get(u'add')((var.get(u'prop').get(u'key') or var.get(u'prop').get(u'argument'))) + + PyJs_add_2128_._set_name(u'add') + var.put(u'add', PyJs_add_2128_) + var.get(u'add')(var.get(u'node')) + var.put(u'id', var.get(u'parts').callprop(u'join', Js(u'$'))) + var.put(u'id', ((var.get(u'id').callprop(u'replace', JsRegExp(u'/^_/'), Js(u'')) or var.get(u'defaultName')) or Js(u'ref'))) + return var.get(u"this").callprop(u'generateUidIdentifier', var.get(u'id').callprop(u'slice', Js(0.0), Js(20.0))) + PyJs_generateUidIdentifierBasedOnNode_2127_._set_name(u'generateUidIdentifierBasedOnNode') + var.get(u'Scope').get(u'prototype').put(u'generateUidIdentifierBasedOnNode', PyJs_generateUidIdentifierBasedOnNode_2127_) + @Js + def PyJs_isStatic_2129_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'isStatic':PyJs_isStatic_2129_, u'arguments':arguments}, var) + var.registers([u'node', u'binding']) + if (var.get(u't').callprop(u'isThisExpression', var.get(u'node')) or var.get(u't').callprop(u'isSuper', var.get(u'node'))): + return var.get(u'true') + if var.get(u't').callprop(u'isIdentifier', var.get(u'node')): + var.put(u'binding', var.get(u"this").callprop(u'getBinding', var.get(u'node').get(u'name'))) + if var.get(u'binding'): + return var.get(u'binding').get(u'constant') + else: + return var.get(u"this").callprop(u'hasBinding', var.get(u'node').get(u'name')) + return Js(False) + PyJs_isStatic_2129_._set_name(u'isStatic') + var.get(u'Scope').get(u'prototype').put(u'isStatic', PyJs_isStatic_2129_) + @Js + def PyJs_maybeGenerateMemoised_2130_(node, dontPush, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'maybeGenerateMemoised':PyJs_maybeGenerateMemoised_2130_, u'dontPush':dontPush, u'arguments':arguments}, var) + var.registers([u'node', u'dontPush', u'_id2']) + if var.get(u"this").callprop(u'isStatic', var.get(u'node')): + return var.get(u"null") + else: + var.put(u'_id2', var.get(u"this").callprop(u'generateUidIdentifierBasedOnNode', var.get(u'node'))) + if var.get(u'dontPush').neg(): + PyJs_Object_2131_ = Js({u'id':var.get(u'_id2')}) + var.get(u"this").callprop(u'push', PyJs_Object_2131_) + return var.get(u'_id2') + PyJs_maybeGenerateMemoised_2130_._set_name(u'maybeGenerateMemoised') + var.get(u'Scope').get(u'prototype').put(u'maybeGenerateMemoised', PyJs_maybeGenerateMemoised_2130_) + @Js + def PyJs_checkBlockScopedCollisions_2132_(local, kind, name, id, this, arguments, var=var): + var = Scope({u'kind':kind, u'name':name, u'this':this, u'checkBlockScopedCollisions':PyJs_checkBlockScopedCollisions_2132_, u'local':local, u'id':id, u'arguments':arguments}, var) + var.registers([u'id', u'duplicate', u'local', u'kind', u'name']) + if PyJsStrictEq(var.get(u'kind'),Js(u'param')): + return var.get('undefined') + if (PyJsStrictEq(var.get(u'kind'),Js(u'hoisted')) and PyJsStrictEq(var.get(u'local').get(u'kind'),Js(u'let'))): + return var.get('undefined') + var.put(u'duplicate', Js(False)) + if var.get(u'duplicate').neg(): + var.put(u'duplicate', (((PyJsStrictEq(var.get(u'kind'),Js(u'let')) or PyJsStrictEq(var.get(u'local').get(u'kind'),Js(u'let'))) or PyJsStrictEq(var.get(u'local').get(u'kind'),Js(u'const'))) or PyJsStrictEq(var.get(u'local').get(u'kind'),Js(u'module')))) + if var.get(u'duplicate').neg(): + var.put(u'duplicate', (PyJsStrictEq(var.get(u'local').get(u'kind'),Js(u'param')) and (PyJsStrictEq(var.get(u'kind'),Js(u'let')) or PyJsStrictEq(var.get(u'kind'),Js(u'const'))))) + if var.get(u'duplicate'): + PyJsTempException = JsToPyException(var.get(u"this").get(u'hub').get(u'file').callprop(u'buildCodeFrameError', var.get(u'id'), var.get(u'messages').callprop(u'get', Js(u'scopeDuplicateDeclaration'), var.get(u'name')), var.get(u'TypeError'))) + raise PyJsTempException + PyJs_checkBlockScopedCollisions_2132_._set_name(u'checkBlockScopedCollisions') + var.get(u'Scope').get(u'prototype').put(u'checkBlockScopedCollisions', PyJs_checkBlockScopedCollisions_2132_) + @Js + def PyJs_rename_2133_(oldName, newName, block, this, arguments, var=var): + var = Scope({u'rename':PyJs_rename_2133_, u'newName':newName, u'this':this, u'oldName':oldName, u'block':block, u'arguments':arguments}, var) + var.registers([u'newName', u'binding', u'oldName', u'block']) + var.put(u'binding', var.get(u"this").callprop(u'getBinding', var.get(u'oldName'))) + if var.get(u'binding'): + var.put(u'newName', (var.get(u'newName') or var.get(u"this").callprop(u'generateUidIdentifier', var.get(u'oldName')).get(u'name'))) + return var.get(u'_renamer2').get(u'default').create(var.get(u'binding'), var.get(u'oldName'), var.get(u'newName')).callprop(u'rename', var.get(u'block')) + PyJs_rename_2133_._set_name(u'rename') + var.get(u'Scope').get(u'prototype').put(u'rename', PyJs_rename_2133_) + @Js + def PyJs__renameFromMap_2134_(map, oldName, newName, value, this, arguments, var=var): + var = Scope({u'map':map, u'_renameFromMap':PyJs__renameFromMap_2134_, u'oldName':oldName, u'newName':newName, u'this':this, u'value':value, u'arguments':arguments}, var) + var.registers([u'newName', u'map', u'oldName', u'value']) + if var.get(u'map').get(var.get(u'oldName')): + var.get(u'map').put(var.get(u'newName'), var.get(u'value')) + var.get(u'map').put(var.get(u'oldName'), var.get(u"null")) + PyJs__renameFromMap_2134_._set_name(u'_renameFromMap') + var.get(u'Scope').get(u'prototype').put(u'_renameFromMap', PyJs__renameFromMap_2134_) + @Js + def PyJs_dump_2135_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'dump':PyJs_dump_2135_}, var) + var.registers([u'scope', u'binding', u'name', u'sep']) + var.put(u'sep', PyJsComma(Js(0.0),var.get(u'_repeat2').get(u'default'))(Js(u'-'), Js(60.0))) + var.get(u'console').callprop(u'log', var.get(u'sep')) + var.put(u'scope', var.get(u"this")) + while 1: + var.get(u'console').callprop(u'log', Js(u'#'), var.get(u'scope').get(u'block').get(u'type')) + for PyJsTemp in var.get(u'scope').get(u'bindings'): + var.put(u'name', PyJsTemp) + var.put(u'binding', var.get(u'scope').get(u'bindings').get(var.get(u'name'))) + PyJs_Object_2136_ = Js({u'constant':var.get(u'binding').get(u'constant'),u'references':var.get(u'binding').get(u'references'),u'violations':var.get(u'binding').get(u'constantViolations').get(u'length'),u'kind':var.get(u'binding').get(u'kind')}) + var.get(u'console').callprop(u'log', Js(u' -'), var.get(u'name'), PyJs_Object_2136_) + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + var.get(u'console').callprop(u'log', var.get(u'sep')) + PyJs_dump_2135_._set_name(u'dump') + var.get(u'Scope').get(u'prototype').put(u'dump', PyJs_dump_2135_) + @Js + def PyJs_toArray_2137_(node, i, this, arguments, var=var): + var = Scope({u'node':node, u'i':i, u'this':this, u'arguments':arguments, u'toArray':PyJs_toArray_2137_}, var) + var.registers([u'node', u'helperName', u'i', u'args', u'binding', u'file']) + var.put(u'file', var.get(u"this").get(u'hub').get(u'file')) + if var.get(u't').callprop(u'isIdentifier', var.get(u'node')): + var.put(u'binding', var.get(u"this").callprop(u'getBinding', var.get(u'node').get(u'name'))) + if ((var.get(u'binding') and var.get(u'binding').get(u'constant')) and var.get(u'binding').get(u'path').callprop(u'isGenericType', Js(u'Array'))): + return var.get(u'node') + if var.get(u't').callprop(u'isArrayExpression', var.get(u'node')): + return var.get(u'node') + PyJs_Object_2138_ = Js({u'name':Js(u'arguments')}) + if var.get(u't').callprop(u'isIdentifier', var.get(u'node'), PyJs_Object_2138_): + def PyJs_LONG_2139_(var=var): + return var.get(u't').callprop(u'callExpression', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'memberExpression', var.get(u't').callprop(u'identifier', Js(u'Array')), var.get(u't').callprop(u'identifier', Js(u'prototype'))), var.get(u't').callprop(u'identifier', Js(u'slice'))), var.get(u't').callprop(u'identifier', Js(u'call'))), Js([var.get(u'node')])) + return PyJs_LONG_2139_() + var.put(u'helperName', Js(u'toArray')) + var.put(u'args', Js([var.get(u'node')])) + if PyJsStrictEq(var.get(u'i'),var.get(u'true')): + var.put(u'helperName', Js(u'toConsumableArray')) + else: + if var.get(u'i'): + var.get(u'args').callprop(u'push', var.get(u't').callprop(u'numericLiteral', var.get(u'i'))) + var.put(u'helperName', Js(u'slicedToArray')) + return var.get(u't').callprop(u'callExpression', var.get(u'file').callprop(u'addHelper', var.get(u'helperName')), var.get(u'args')) + PyJs_toArray_2137_._set_name(u'toArray') + var.get(u'Scope').get(u'prototype').put(u'toArray', PyJs_toArray_2137_) + @Js + def PyJs_hasLabel_2140_(name, this, arguments, var=var): + var = Scope({u'this':this, u'hasLabel':PyJs_hasLabel_2140_, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + return var.get(u"this").callprop(u'getLabel', var.get(u'name')).neg().neg() + PyJs_hasLabel_2140_._set_name(u'hasLabel') + var.get(u'Scope').get(u'prototype').put(u'hasLabel', PyJs_hasLabel_2140_) + @Js + def PyJs_getLabel_2141_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'getLabel':PyJs_getLabel_2141_, u'arguments':arguments}, var) + var.registers([u'name']) + return var.get(u"this").get(u'labels').callprop(u'get', var.get(u'name')) + PyJs_getLabel_2141_._set_name(u'getLabel') + var.get(u'Scope').get(u'prototype').put(u'getLabel', PyJs_getLabel_2141_) + @Js + def PyJs_registerLabel_2142_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'registerLabel':PyJs_registerLabel_2142_}, var) + var.registers([u'path']) + var.get(u"this").get(u'labels').callprop(u'set', var.get(u'path').get(u'node').get(u'label').get(u'name'), var.get(u'path')) + PyJs_registerLabel_2142_._set_name(u'registerLabel') + var.get(u'Scope').get(u'prototype').put(u'registerLabel', PyJs_registerLabel_2142_) + @Js + def PyJs_registerDeclaration_2143_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'registerDeclaration':PyJs_registerDeclaration_2143_}, var) + var.registers([u'_isArray7', u'specifiers', u'_ref8', u'_i8', u'_i7', u'declarations', u'_isArray8', u'_ref7', u'declar', u'_iterator8', u'path', u'specifier', u'_declar', u'_iterator7']) + if var.get(u'path').callprop(u'isLabeledStatement'): + var.get(u"this").callprop(u'registerLabel', var.get(u'path')) + else: + if var.get(u'path').callprop(u'isFunctionDeclaration'): + var.get(u"this").callprop(u'registerBinding', Js(u'hoisted'), var.get(u'path').callprop(u'get', Js(u'id')), var.get(u'path')) + else: + if var.get(u'path').callprop(u'isVariableDeclaration'): + var.put(u'declarations', var.get(u'path').callprop(u'get', Js(u'declarations'))) + #for JS loop + var.put(u'_iterator7', var.get(u'declarations')) + var.put(u'_isArray7', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator7'))) + var.put(u'_i7', Js(0.0)) + var.put(u'_iterator7', (var.get(u'_iterator7') if var.get(u'_isArray7') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator7')))) + while 1: + pass + if var.get(u'_isArray7'): + if (var.get(u'_i7')>=var.get(u'_iterator7').get(u'length')): + break + var.put(u'_ref7', var.get(u'_iterator7').get((var.put(u'_i7',Js(var.get(u'_i7').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i7', var.get(u'_iterator7').callprop(u'next')) + if var.get(u'_i7').get(u'done'): + break + var.put(u'_ref7', var.get(u'_i7').get(u'value')) + var.put(u'declar', var.get(u'_ref7')) + var.get(u"this").callprop(u'registerBinding', var.get(u'path').get(u'node').get(u'kind'), var.get(u'declar')) + + else: + if var.get(u'path').callprop(u'isClassDeclaration'): + var.get(u"this").callprop(u'registerBinding', Js(u'let'), var.get(u'path')) + else: + if var.get(u'path').callprop(u'isImportDeclaration'): + var.put(u'specifiers', var.get(u'path').callprop(u'get', Js(u'specifiers'))) + #for JS loop + var.put(u'_iterator8', var.get(u'specifiers')) + var.put(u'_isArray8', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator8'))) + var.put(u'_i8', Js(0.0)) + var.put(u'_iterator8', (var.get(u'_iterator8') if var.get(u'_isArray8') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator8')))) + while 1: + pass + if var.get(u'_isArray8'): + if (var.get(u'_i8')>=var.get(u'_iterator8').get(u'length')): + break + var.put(u'_ref8', var.get(u'_iterator8').get((var.put(u'_i8',Js(var.get(u'_i8').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i8', var.get(u'_iterator8').callprop(u'next')) + if var.get(u'_i8').get(u'done'): + break + var.put(u'_ref8', var.get(u'_i8').get(u'value')) + var.put(u'specifier', var.get(u'_ref8')) + var.get(u"this").callprop(u'registerBinding', Js(u'module'), var.get(u'specifier')) + + else: + if var.get(u'path').callprop(u'isExportDeclaration'): + var.put(u'_declar', var.get(u'path').callprop(u'get', Js(u'declaration'))) + if ((var.get(u'_declar').callprop(u'isClassDeclaration') or var.get(u'_declar').callprop(u'isFunctionDeclaration')) or var.get(u'_declar').callprop(u'isVariableDeclaration')): + var.get(u"this").callprop(u'registerDeclaration', var.get(u'_declar')) + else: + var.get(u"this").callprop(u'registerBinding', Js(u'unknown'), var.get(u'path')) + PyJs_registerDeclaration_2143_._set_name(u'registerDeclaration') + var.get(u'Scope').get(u'prototype').put(u'registerDeclaration', PyJs_registerDeclaration_2143_) + @Js + def PyJs_buildUndefinedNode_2144_(this, arguments, var=var): + var = Scope({u'this':this, u'buildUndefinedNode':PyJs_buildUndefinedNode_2144_, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").callprop(u'hasBinding', Js(u'undefined')): + return var.get(u't').callprop(u'unaryExpression', Js(u'void'), var.get(u't').callprop(u'numericLiteral', Js(0.0)), var.get(u'true')) + else: + return var.get(u't').callprop(u'identifier', Js(u'undefined')) + PyJs_buildUndefinedNode_2144_._set_name(u'buildUndefinedNode') + var.get(u'Scope').get(u'prototype').put(u'buildUndefinedNode', PyJs_buildUndefinedNode_2144_) + @Js + def PyJs_registerConstantViolation_2145_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'registerConstantViolation':PyJs_registerConstantViolation_2145_}, var) + var.registers([u'path', u'binding', u'ids', u'name']) + var.put(u'ids', var.get(u'path').callprop(u'getBindingIdentifiers')) + for PyJsTemp in var.get(u'ids'): + var.put(u'name', PyJsTemp) + var.put(u'binding', var.get(u"this").callprop(u'getBinding', var.get(u'name'))) + if var.get(u'binding'): + var.get(u'binding').callprop(u'reassign', var.get(u'path')) + PyJs_registerConstantViolation_2145_._set_name(u'registerConstantViolation') + var.get(u'Scope').get(u'prototype').put(u'registerConstantViolation', PyJs_registerConstantViolation_2145_) + @Js + def PyJs_registerBinding_2146_(kind, path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'kind':kind, u'arguments':arguments, u'registerBinding':PyJs_registerBinding_2146_}, var) + var.registers([u'parent', u'kind', u'_i10', u'_i9', u'_ref9', u'name', u'_ref10', u'ids', u'_isArray9', u'declarators', u'declar', u'_iterator9', u'_isArray10', u'_iterator10', u'path', u'_id3', u'local', u'bindingPath']) + var.put(u'bindingPath', (var.get(u'arguments').get(u'2') if ((var.get(u'arguments').get(u'length')>Js(2.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'2'),var.get(u'undefined'))) else var.get(u'path'))) + if var.get(u'kind').neg(): + PyJsTempException = JsToPyException(var.get(u'ReferenceError').create(Js(u'no `kind`'))) + raise PyJsTempException + if var.get(u'path').callprop(u'isVariableDeclaration'): + var.put(u'declarators', var.get(u'path').callprop(u'get', Js(u'declarations'))) + #for JS loop + var.put(u'_iterator9', var.get(u'declarators')) + var.put(u'_isArray9', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator9'))) + var.put(u'_i9', Js(0.0)) + var.put(u'_iterator9', (var.get(u'_iterator9') if var.get(u'_isArray9') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator9')))) + while 1: + pass + if var.get(u'_isArray9'): + if (var.get(u'_i9')>=var.get(u'_iterator9').get(u'length')): + break + var.put(u'_ref9', var.get(u'_iterator9').get((var.put(u'_i9',Js(var.get(u'_i9').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i9', var.get(u'_iterator9').callprop(u'next')) + if var.get(u'_i9').get(u'done'): + break + var.put(u'_ref9', var.get(u'_i9').get(u'value')) + var.put(u'declar', var.get(u'_ref9')) + var.get(u"this").callprop(u'registerBinding', var.get(u'kind'), var.get(u'declar')) + + return var.get('undefined') + var.put(u'parent', var.get(u"this").callprop(u'getProgramParent')) + var.put(u'ids', var.get(u'path').callprop(u'getBindingIdentifiers', var.get(u'true'))) + for PyJsTemp in var.get(u'ids'): + var.put(u'name', PyJsTemp) + #for JS loop + var.put(u'_iterator10', var.get(u'ids').get(var.get(u'name'))) + var.put(u'_isArray10', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator10'))) + var.put(u'_i10', Js(0.0)) + var.put(u'_iterator10', (var.get(u'_iterator10') if var.get(u'_isArray10') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator10')))) + while 1: + pass + if var.get(u'_isArray10'): + if (var.get(u'_i10')>=var.get(u'_iterator10').get(u'length')): + break + var.put(u'_ref10', var.get(u'_iterator10').get((var.put(u'_i10',Js(var.get(u'_i10').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i10', var.get(u'_iterator10').callprop(u'next')) + if var.get(u'_i10').get(u'done'): + break + var.put(u'_ref10', var.get(u'_i10').get(u'value')) + var.put(u'_id3', var.get(u'_ref10')) + var.put(u'local', var.get(u"this").callprop(u'getOwnBinding', var.get(u'name'))) + if var.get(u'local'): + if PyJsStrictEq(var.get(u'local').get(u'identifier'),var.get(u'_id3')): + continue + var.get(u"this").callprop(u'checkBlockScopedCollisions', var.get(u'local'), var.get(u'kind'), var.get(u'name'), var.get(u'_id3')) + if (var.get(u'local') and var.get(u'local').get(u'path').callprop(u'isFlow')): + var.put(u'local', var.get(u"null")) + var.get(u'parent').get(u'references').put(var.get(u'name'), var.get(u'true')) + PyJs_Object_2147_ = Js({u'identifier':var.get(u'_id3'),u'existing':var.get(u'local'),u'scope':var.get(u"this"),u'path':var.get(u'bindingPath'),u'kind':var.get(u'kind')}) + var.get(u"this").get(u'bindings').put(var.get(u'name'), var.get(u'_binding3').get(u'default').create(PyJs_Object_2147_)) + + PyJs_registerBinding_2146_._set_name(u'registerBinding') + var.get(u'Scope').get(u'prototype').put(u'registerBinding', PyJs_registerBinding_2146_) + @Js + def PyJs_addGlobal_2148_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'addGlobal':PyJs_addGlobal_2148_}, var) + var.registers([u'node']) + var.get(u"this").get(u'globals').put(var.get(u'node').get(u'name'), var.get(u'node')) + PyJs_addGlobal_2148_._set_name(u'addGlobal') + var.get(u'Scope').get(u'prototype').put(u'addGlobal', PyJs_addGlobal_2148_) + @Js + def PyJs_hasUid_2149_(name, this, arguments, var=var): + var = Scope({u'this':this, u'hasUid':PyJs_hasUid_2149_, u'name':name, u'arguments':arguments}, var) + var.registers([u'scope', u'name']) + var.put(u'scope', var.get(u"this")) + while 1: + if var.get(u'scope').get(u'uids').get(var.get(u'name')): + return var.get(u'true') + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + return Js(False) + PyJs_hasUid_2149_._set_name(u'hasUid') + var.get(u'Scope').get(u'prototype').put(u'hasUid', PyJs_hasUid_2149_) + @Js + def PyJs_hasGlobal_2150_(name, this, arguments, var=var): + var = Scope({u'this':this, u'hasGlobal':PyJs_hasGlobal_2150_, u'name':name, u'arguments':arguments}, var) + var.registers([u'scope', u'name']) + var.put(u'scope', var.get(u"this")) + while 1: + if var.get(u'scope').get(u'globals').get(var.get(u'name')): + return var.get(u'true') + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + return Js(False) + PyJs_hasGlobal_2150_._set_name(u'hasGlobal') + var.get(u'Scope').get(u'prototype').put(u'hasGlobal', PyJs_hasGlobal_2150_) + @Js + def PyJs_hasReference_2151_(name, this, arguments, var=var): + var = Scope({u'this':this, u'hasReference':PyJs_hasReference_2151_, u'name':name, u'arguments':arguments}, var) + var.registers([u'scope', u'name']) + var.put(u'scope', var.get(u"this")) + while 1: + if var.get(u'scope').get(u'references').get(var.get(u'name')): + return var.get(u'true') + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + return Js(False) + PyJs_hasReference_2151_._set_name(u'hasReference') + var.get(u'Scope').get(u'prototype').put(u'hasReference', PyJs_hasReference_2151_) + @Js + def PyJs_isPure_2152_(node, constantsOnly, this, arguments, var=var): + var = Scope({u'node':node, u'constantsOnly':constantsOnly, u'this':this, u'arguments':arguments, u'isPure':PyJs_isPure_2152_}, var) + var.registers([u'node', u'constantsOnly', u'_isArray11', u'binding', u'elem', u'prop', u'_i13', u'_i12', u'_i11', u'_isArray13', u'_isArray12', u'_ref11', u'_iterator11', u'_ref13', u'_iterator13', u'_iterator12', u'method', u'_ref12']) + if var.get(u't').callprop(u'isIdentifier', var.get(u'node')): + var.put(u'binding', var.get(u"this").callprop(u'getBinding', var.get(u'node').get(u'name'))) + if var.get(u'binding').neg(): + return Js(False) + if var.get(u'constantsOnly'): + return var.get(u'binding').get(u'constant') + return var.get(u'true') + else: + if var.get(u't').callprop(u'isClass', var.get(u'node')): + if (var.get(u'node').get(u'superClass') and var.get(u"this").callprop(u'isPure', var.get(u'node').get(u'superClass'), var.get(u'constantsOnly')).neg()): + return Js(False) + return var.get(u"this").callprop(u'isPure', var.get(u'node').get(u'body'), var.get(u'constantsOnly')) + else: + if var.get(u't').callprop(u'isClassBody', var.get(u'node')): + #for JS loop + var.put(u'_iterator11', var.get(u'node').get(u'body')) + var.put(u'_isArray11', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator11'))) + var.put(u'_i11', Js(0.0)) + var.put(u'_iterator11', (var.get(u'_iterator11') if var.get(u'_isArray11') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator11')))) + while 1: + pass + if var.get(u'_isArray11'): + if (var.get(u'_i11')>=var.get(u'_iterator11').get(u'length')): + break + var.put(u'_ref11', var.get(u'_iterator11').get((var.put(u'_i11',Js(var.get(u'_i11').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i11', var.get(u'_iterator11').callprop(u'next')) + if var.get(u'_i11').get(u'done'): + break + var.put(u'_ref11', var.get(u'_i11').get(u'value')) + var.put(u'method', var.get(u'_ref11')) + if var.get(u"this").callprop(u'isPure', var.get(u'method'), var.get(u'constantsOnly')).neg(): + return Js(False) + + return var.get(u'true') + else: + if var.get(u't').callprop(u'isBinary', var.get(u'node')): + return (var.get(u"this").callprop(u'isPure', var.get(u'node').get(u'left'), var.get(u'constantsOnly')) and var.get(u"this").callprop(u'isPure', var.get(u'node').get(u'right'), var.get(u'constantsOnly'))) + else: + if var.get(u't').callprop(u'isArrayExpression', var.get(u'node')): + #for JS loop + var.put(u'_iterator12', var.get(u'node').get(u'elements')) + var.put(u'_isArray12', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator12'))) + var.put(u'_i12', Js(0.0)) + var.put(u'_iterator12', (var.get(u'_iterator12') if var.get(u'_isArray12') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator12')))) + while 1: + pass + if var.get(u'_isArray12'): + if (var.get(u'_i12')>=var.get(u'_iterator12').get(u'length')): + break + var.put(u'_ref12', var.get(u'_iterator12').get((var.put(u'_i12',Js(var.get(u'_i12').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i12', var.get(u'_iterator12').callprop(u'next')) + if var.get(u'_i12').get(u'done'): + break + var.put(u'_ref12', var.get(u'_i12').get(u'value')) + var.put(u'elem', var.get(u'_ref12')) + if var.get(u"this").callprop(u'isPure', var.get(u'elem'), var.get(u'constantsOnly')).neg(): + return Js(False) + + return var.get(u'true') + else: + if var.get(u't').callprop(u'isObjectExpression', var.get(u'node')): + #for JS loop + var.put(u'_iterator13', var.get(u'node').get(u'properties')) + var.put(u'_isArray13', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator13'))) + var.put(u'_i13', Js(0.0)) + var.put(u'_iterator13', (var.get(u'_iterator13') if var.get(u'_isArray13') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator13')))) + while 1: + pass + if var.get(u'_isArray13'): + if (var.get(u'_i13')>=var.get(u'_iterator13').get(u'length')): + break + var.put(u'_ref13', var.get(u'_iterator13').get((var.put(u'_i13',Js(var.get(u'_i13').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i13', var.get(u'_iterator13').callprop(u'next')) + if var.get(u'_i13').get(u'done'): + break + var.put(u'_ref13', var.get(u'_i13').get(u'value')) + var.put(u'prop', var.get(u'_ref13')) + if var.get(u"this").callprop(u'isPure', var.get(u'prop'), var.get(u'constantsOnly')).neg(): + return Js(False) + + return var.get(u'true') + else: + if var.get(u't').callprop(u'isClassMethod', var.get(u'node')): + if (var.get(u'node').get(u'computed') and var.get(u"this").callprop(u'isPure', var.get(u'node').get(u'key'), var.get(u'constantsOnly')).neg()): + return Js(False) + if (PyJsStrictEq(var.get(u'node').get(u'kind'),Js(u'get')) or PyJsStrictEq(var.get(u'node').get(u'kind'),Js(u'set'))): + return Js(False) + return var.get(u'true') + else: + if (var.get(u't').callprop(u'isClassProperty', var.get(u'node')) or var.get(u't').callprop(u'isObjectProperty', var.get(u'node'))): + if (var.get(u'node').get(u'computed') and var.get(u"this").callprop(u'isPure', var.get(u'node').get(u'key'), var.get(u'constantsOnly')).neg()): + return Js(False) + return var.get(u"this").callprop(u'isPure', var.get(u'node').get(u'value'), var.get(u'constantsOnly')) + else: + if var.get(u't').callprop(u'isUnaryExpression', var.get(u'node')): + return var.get(u"this").callprop(u'isPure', var.get(u'node').get(u'argument'), var.get(u'constantsOnly')) + else: + return var.get(u't').callprop(u'isPureish', var.get(u'node')) + PyJs_isPure_2152_._set_name(u'isPure') + var.get(u'Scope').get(u'prototype').put(u'isPure', PyJs_isPure_2152_) + @Js + def PyJs_setData_2153_(key, val, this, arguments, var=var): + var = Scope({u'this':this, u'setData':PyJs_setData_2153_, u'val':val, u'key':key, u'arguments':arguments}, var) + var.registers([u'val', u'key']) + return var.get(u"this").get(u'data').put(var.get(u'key'), var.get(u'val')) + PyJs_setData_2153_._set_name(u'setData') + var.get(u'Scope').get(u'prototype').put(u'setData', PyJs_setData_2153_) + @Js + def PyJs_getData_2154_(key, this, arguments, var=var): + var = Scope({u'this':this, u'getData':PyJs_getData_2154_, u'arguments':arguments, u'key':key}, var) + var.registers([u'scope', u'data', u'key']) + var.put(u'scope', var.get(u"this")) + while 1: + var.put(u'data', var.get(u'scope').get(u'data').get(var.get(u'key'))) + if (var.get(u'data')!=var.get(u"null")): + return var.get(u'data') + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + PyJs_getData_2154_._set_name(u'getData') + var.get(u'Scope').get(u'prototype').put(u'getData', PyJs_getData_2154_) + @Js + def PyJs_removeData_2155_(key, this, arguments, var=var): + var = Scope({u'this':this, u'removeData':PyJs_removeData_2155_, u'arguments':arguments, u'key':key}, var) + var.registers([u'scope', u'data', u'key']) + var.put(u'scope', var.get(u"this")) + while 1: + var.put(u'data', var.get(u'scope').get(u'data').get(var.get(u'key'))) + if (var.get(u'data')!=var.get(u"null")): + var.get(u'scope').get(u'data').put(var.get(u'key'), var.get(u"null")) + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + PyJs_removeData_2155_._set_name(u'removeData') + var.get(u'Scope').get(u'prototype').put(u'removeData', PyJs_removeData_2155_) + @Js + def PyJs_init_2156_(this, arguments, var=var): + var = Scope({u'this':this, u'init':PyJs_init_2156_, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").get(u'references').neg(): + var.get(u"this").callprop(u'crawl') + PyJs_init_2156_._set_name(u'init') + var.get(u'Scope').get(u'prototype').put(u'init', PyJs_init_2156_) + @Js + def PyJs_crawl_2157_(this, arguments, var=var): + var = Scope({u'this':this, u'crawl':PyJs_crawl_2157_, u'arguments':arguments}, var) + var.registers([]) + (var.put(u'_crawlCallsCount',Js(var.get(u'_crawlCallsCount').to_number())+Js(1))-Js(1)) + var.get(u"this").callprop(u'_crawl') + (var.put(u'_crawlCallsCount',Js(var.get(u'_crawlCallsCount').to_number())-Js(1))+Js(1)) + PyJs_crawl_2157_._set_name(u'crawl') + var.get(u'Scope').get(u'prototype').put(u'crawl', PyJs_crawl_2157_) + @Js + def PyJs__crawl_2158_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'_crawl':PyJs__crawl_2158_}, var) + var.registers([u'binding', u'_ref15', u'param', u'_ref17', u'_ref16', u'state', u'_ref14', u'params', u'_isArray18', u'ref', u'_ref18', u'node', u'parent', u'_isArray17', u'_isArray16', u'_isArray15', u'_isArray14', u'key', u'path', u'_path2', u'_iterator15', u'_iterator14', u'_iterator17', u'_iterator16', u'name', u'_iterator18', u'ids', u'programParent', u'_i17', u'_i16', u'_i15', u'_i14', u'_i18', u'_path']) + var.put(u'path', var.get(u"this").get(u'path')) + var.get(u"this").put(u'references', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.get(u"this").put(u'bindings', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.get(u"this").put(u'globals', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.get(u"this").put(u'uids', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.get(u"this").put(u'data', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + if var.get(u'path').callprop(u'isLoop'): + #for JS loop + var.put(u'_iterator14', var.get(u't').get(u'FOR_INIT_KEYS')) + var.put(u'_isArray14', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator14'))) + var.put(u'_i14', Js(0.0)) + var.put(u'_iterator14', (var.get(u'_iterator14') if var.get(u'_isArray14') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator14')))) + while 1: + pass + if var.get(u'_isArray14'): + if (var.get(u'_i14')>=var.get(u'_iterator14').get(u'length')): + break + var.put(u'_ref14', var.get(u'_iterator14').get((var.put(u'_i14',Js(var.get(u'_i14').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i14', var.get(u'_iterator14').callprop(u'next')) + if var.get(u'_i14').get(u'done'): + break + var.put(u'_ref14', var.get(u'_i14').get(u'value')) + var.put(u'key', var.get(u'_ref14')) + var.put(u'node', var.get(u'path').callprop(u'get', var.get(u'key'))) + if var.get(u'node').callprop(u'isBlockScoped'): + var.get(u"this").callprop(u'registerBinding', var.get(u'node').get(u'node').get(u'kind'), var.get(u'node')) + + if (var.get(u'path').callprop(u'isFunctionExpression') and var.get(u'path').callprop(u'has', Js(u'id'))): + if var.get(u'path').callprop(u'get', Js(u'id')).get(u'node').get(var.get(u't').get(u'NOT_LOCAL_BINDING')).neg(): + var.get(u"this").callprop(u'registerBinding', Js(u'local'), var.get(u'path').callprop(u'get', Js(u'id')), var.get(u'path')) + if (var.get(u'path').callprop(u'isClassExpression') and var.get(u'path').callprop(u'has', Js(u'id'))): + if var.get(u'path').callprop(u'get', Js(u'id')).get(u'node').get(var.get(u't').get(u'NOT_LOCAL_BINDING')).neg(): + var.get(u"this").callprop(u'registerBinding', Js(u'local'), var.get(u'path')) + if var.get(u'path').callprop(u'isFunction'): + var.put(u'params', var.get(u'path').callprop(u'get', Js(u'params'))) + #for JS loop + var.put(u'_iterator15', var.get(u'params')) + var.put(u'_isArray15', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator15'))) + var.put(u'_i15', Js(0.0)) + var.put(u'_iterator15', (var.get(u'_iterator15') if var.get(u'_isArray15') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator15')))) + while 1: + pass + if var.get(u'_isArray15'): + if (var.get(u'_i15')>=var.get(u'_iterator15').get(u'length')): + break + var.put(u'_ref15', var.get(u'_iterator15').get((var.put(u'_i15',Js(var.get(u'_i15').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i15', var.get(u'_iterator15').callprop(u'next')) + if var.get(u'_i15').get(u'done'): + break + var.put(u'_ref15', var.get(u'_i15').get(u'value')) + var.put(u'param', var.get(u'_ref15')) + var.get(u"this").callprop(u'registerBinding', Js(u'param'), var.get(u'param')) + + if var.get(u'path').callprop(u'isCatchClause'): + var.get(u"this").callprop(u'registerBinding', Js(u'let'), var.get(u'path')) + var.put(u'parent', var.get(u"this").callprop(u'getProgramParent')) + if var.get(u'parent').get(u'crawling'): + return var.get('undefined') + PyJs_Object_2159_ = Js({u'references':Js([]),u'constantViolations':Js([]),u'assignments':Js([])}) + var.put(u'state', PyJs_Object_2159_) + var.get(u"this").put(u'crawling', var.get(u'true')) + var.get(u'path').callprop(u'traverse', var.get(u'collectorVisitor'), var.get(u'state')) + var.get(u"this").put(u'crawling', Js(False)) + #for JS loop + var.put(u'_iterator16', var.get(u'state').get(u'assignments')) + var.put(u'_isArray16', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator16'))) + var.put(u'_i16', Js(0.0)) + var.put(u'_iterator16', (var.get(u'_iterator16') if var.get(u'_isArray16') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator16')))) + while 1: + pass + if var.get(u'_isArray16'): + if (var.get(u'_i16')>=var.get(u'_iterator16').get(u'length')): + break + var.put(u'_ref16', var.get(u'_iterator16').get((var.put(u'_i16',Js(var.get(u'_i16').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i16', var.get(u'_iterator16').callprop(u'next')) + if var.get(u'_i16').get(u'done'): + break + var.put(u'_ref16', var.get(u'_i16').get(u'value')) + var.put(u'_path', var.get(u'_ref16')) + var.put(u'ids', var.get(u'_path').callprop(u'getBindingIdentifiers')) + var.put(u'programParent', PyJsComma(Js(0.0), Js(None))) + for PyJsTemp in var.get(u'ids'): + var.put(u'name', PyJsTemp) + if var.get(u'_path').get(u'scope').callprop(u'getBinding', var.get(u'name')): + continue + var.put(u'programParent', (var.get(u'programParent') or var.get(u'_path').get(u'scope').callprop(u'getProgramParent'))) + var.get(u'programParent').callprop(u'addGlobal', var.get(u'ids').get(var.get(u'name'))) + var.get(u'_path').get(u'scope').callprop(u'registerConstantViolation', var.get(u'_path')) + + #for JS loop + var.put(u'_iterator17', var.get(u'state').get(u'references')) + var.put(u'_isArray17', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator17'))) + var.put(u'_i17', Js(0.0)) + var.put(u'_iterator17', (var.get(u'_iterator17') if var.get(u'_isArray17') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator17')))) + while 1: + pass + if var.get(u'_isArray17'): + if (var.get(u'_i17')>=var.get(u'_iterator17').get(u'length')): + break + var.put(u'_ref17', var.get(u'_iterator17').get((var.put(u'_i17',Js(var.get(u'_i17').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i17', var.get(u'_iterator17').callprop(u'next')) + if var.get(u'_i17').get(u'done'): + break + var.put(u'_ref17', var.get(u'_i17').get(u'value')) + var.put(u'ref', var.get(u'_ref17')) + var.put(u'binding', var.get(u'ref').get(u'scope').callprop(u'getBinding', var.get(u'ref').get(u'node').get(u'name'))) + if var.get(u'binding'): + var.get(u'binding').callprop(u'reference', var.get(u'ref')) + else: + var.get(u'ref').get(u'scope').callprop(u'getProgramParent').callprop(u'addGlobal', var.get(u'ref').get(u'node')) + + #for JS loop + var.put(u'_iterator18', var.get(u'state').get(u'constantViolations')) + var.put(u'_isArray18', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator18'))) + var.put(u'_i18', Js(0.0)) + var.put(u'_iterator18', (var.get(u'_iterator18') if var.get(u'_isArray18') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator18')))) + while 1: + pass + if var.get(u'_isArray18'): + if (var.get(u'_i18')>=var.get(u'_iterator18').get(u'length')): + break + var.put(u'_ref18', var.get(u'_iterator18').get((var.put(u'_i18',Js(var.get(u'_i18').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i18', var.get(u'_iterator18').callprop(u'next')) + if var.get(u'_i18').get(u'done'): + break + var.put(u'_ref18', var.get(u'_i18').get(u'value')) + var.put(u'_path2', var.get(u'_ref18')) + var.get(u'_path2').get(u'scope').callprop(u'registerConstantViolation', var.get(u'_path2')) + + PyJs__crawl_2158_._set_name(u'_crawl') + var.get(u'Scope').get(u'prototype').put(u'_crawl', PyJs__crawl_2158_) + @Js + def PyJs_push_2160_(opts, this, arguments, var=var): + var = Scope({u'this':this, u'push':PyJs_push_2160_, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'kind', u'blockHoist', u'_path$unshiftContaine', u'declarPath', u'declar', u'declarator', u'path', u'dataKey', u'unique', u'opts']) + var.put(u'path', var.get(u"this").get(u'path')) + if (var.get(u'path').callprop(u'isBlockStatement').neg() and var.get(u'path').callprop(u'isProgram').neg()): + var.put(u'path', var.get(u"this").callprop(u'getBlockParent').get(u'path')) + if var.get(u'path').callprop(u'isSwitchStatement'): + var.put(u'path', var.get(u"this").callprop(u'getFunctionParent').get(u'path')) + if ((var.get(u'path').callprop(u'isLoop') or var.get(u'path').callprop(u'isCatchClause')) or var.get(u'path').callprop(u'isFunction')): + var.get(u't').callprop(u'ensureBlock', var.get(u'path').get(u'node')) + var.put(u'path', var.get(u'path').callprop(u'get', Js(u'body'))) + var.put(u'unique', var.get(u'opts').get(u'unique')) + var.put(u'kind', (var.get(u'opts').get(u'kind') or Js(u'var'))) + var.put(u'blockHoist', (Js(2.0) if (var.get(u'opts').get(u'_blockHoist')==var.get(u"null")) else var.get(u'opts').get(u'_blockHoist'))) + var.put(u'dataKey', (((Js(u'declaration:')+var.get(u'kind'))+Js(u':'))+var.get(u'blockHoist'))) + var.put(u'declarPath', (var.get(u'unique').neg() and var.get(u'path').callprop(u'getData', var.get(u'dataKey')))) + if var.get(u'declarPath').neg(): + var.put(u'declar', var.get(u't').callprop(u'variableDeclaration', var.get(u'kind'), Js([]))) + var.get(u'declar').put(u'_generated', var.get(u'true')) + var.get(u'declar').put(u'_blockHoist', var.get(u'blockHoist')) + var.put(u'_path$unshiftContaine', var.get(u'path').callprop(u'unshiftContainer', Js(u'body'), Js([var.get(u'declar')]))) + var.put(u'declarPath', var.get(u'_path$unshiftContaine').get(u'0')) + if var.get(u'unique').neg(): + var.get(u'path').callprop(u'setData', var.get(u'dataKey'), var.get(u'declarPath')) + var.put(u'declarator', var.get(u't').callprop(u'variableDeclarator', var.get(u'opts').get(u'id'), var.get(u'opts').get(u'init'))) + var.get(u'declarPath').get(u'node').get(u'declarations').callprop(u'push', var.get(u'declarator')) + var.get(u"this").callprop(u'registerBinding', var.get(u'kind'), var.get(u'declarPath').callprop(u'get', Js(u'declarations')).callprop(u'pop')) + PyJs_push_2160_._set_name(u'push') + var.get(u'Scope').get(u'prototype').put(u'push', PyJs_push_2160_) + @Js + def PyJs_getProgramParent_2161_(this, arguments, var=var): + var = Scope({u'this':this, u'getProgramParent':PyJs_getProgramParent_2161_, u'arguments':arguments}, var) + var.registers([u'scope']) + var.put(u'scope', var.get(u"this")) + while 1: + if var.get(u'scope').get(u'path').callprop(u'isProgram'): + return var.get(u'scope') + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"We couldn't find a Function or Program..."))) + raise PyJsTempException + PyJs_getProgramParent_2161_._set_name(u'getProgramParent') + var.get(u'Scope').get(u'prototype').put(u'getProgramParent', PyJs_getProgramParent_2161_) + @Js + def PyJs_getFunctionParent_2162_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getFunctionParent':PyJs_getFunctionParent_2162_}, var) + var.registers([u'scope']) + var.put(u'scope', var.get(u"this")) + while 1: + if var.get(u'scope').get(u'path').callprop(u'isFunctionParent'): + return var.get(u'scope') + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"We couldn't find a Function or Program..."))) + raise PyJsTempException + PyJs_getFunctionParent_2162_._set_name(u'getFunctionParent') + var.get(u'Scope').get(u'prototype').put(u'getFunctionParent', PyJs_getFunctionParent_2162_) + @Js + def PyJs_getBlockParent_2163_(this, arguments, var=var): + var = Scope({u'this':this, u'getBlockParent':PyJs_getBlockParent_2163_, u'arguments':arguments}, var) + var.registers([u'scope']) + var.put(u'scope', var.get(u"this")) + while 1: + if var.get(u'scope').get(u'path').callprop(u'isBlockParent'): + return var.get(u'scope') + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program..."))) + raise PyJsTempException + PyJs_getBlockParent_2163_._set_name(u'getBlockParent') + var.get(u'Scope').get(u'prototype').put(u'getBlockParent', PyJs_getBlockParent_2163_) + @Js + def PyJs_getAllBindings_2164_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getAllBindings':PyJs_getAllBindings_2164_}, var) + var.registers([u'scope', u'ids']) + var.put(u'ids', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + var.put(u'scope', var.get(u"this")) + while 1: + PyJsComma(Js(0.0),var.get(u'_defaults2').get(u'default'))(var.get(u'ids'), var.get(u'scope').get(u'bindings')) + var.put(u'scope', var.get(u'scope').get(u'parent')) + if not var.get(u'scope'): + break + return var.get(u'ids') + PyJs_getAllBindings_2164_._set_name(u'getAllBindings') + var.get(u'Scope').get(u'prototype').put(u'getAllBindings', PyJs_getAllBindings_2164_) + @Js + def PyJs_getAllBindingsOfKind_2165_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'getAllBindingsOfKind':PyJs_getAllBindingsOfKind_2165_}, var) + var.registers([u'kind', u'name', u'binding', u'ids', u'_iterator19', u'_ref19', u'scope', u'_i19', u'_isArray19']) + var.put(u'ids', PyJsComma(Js(0.0),var.get(u'_create2').get(u'default'))(var.get(u"null"))) + #for JS loop + var.put(u'_iterator19', var.get(u'arguments')) + var.put(u'_isArray19', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator19'))) + var.put(u'_i19', Js(0.0)) + var.put(u'_iterator19', (var.get(u'_iterator19') if var.get(u'_isArray19') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator19')))) + while 1: + pass + if var.get(u'_isArray19'): + if (var.get(u'_i19')>=var.get(u'_iterator19').get(u'length')): + break + var.put(u'_ref19', var.get(u'_iterator19').get((var.put(u'_i19',Js(var.get(u'_i19').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i19', var.get(u'_iterator19').callprop(u'next')) + if var.get(u'_i19').get(u'done'): + break + var.put(u'_ref19', var.get(u'_i19').get(u'value')) + var.put(u'kind', var.get(u'_ref19')) + var.put(u'scope', var.get(u"this")) + while 1: + for PyJsTemp in var.get(u'scope').get(u'bindings'): + var.put(u'name', PyJsTemp) + var.put(u'binding', var.get(u'scope').get(u'bindings').get(var.get(u'name'))) + if PyJsStrictEq(var.get(u'binding').get(u'kind'),var.get(u'kind')): + var.get(u'ids').put(var.get(u'name'), var.get(u'binding')) + var.put(u'scope', var.get(u'scope').get(u'parent')) + if not var.get(u'scope'): + break + + return var.get(u'ids') + PyJs_getAllBindingsOfKind_2165_._set_name(u'getAllBindingsOfKind') + var.get(u'Scope').get(u'prototype').put(u'getAllBindingsOfKind', PyJs_getAllBindingsOfKind_2165_) + @Js + def PyJs_bindingIdentifierEquals_2166_(name, node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'bindingIdentifierEquals':PyJs_bindingIdentifierEquals_2166_, u'name':name, u'arguments':arguments}, var) + var.registers([u'node', u'name']) + return PyJsStrictEq(var.get(u"this").callprop(u'getBindingIdentifier', var.get(u'name')),var.get(u'node')) + PyJs_bindingIdentifierEquals_2166_._set_name(u'bindingIdentifierEquals') + var.get(u'Scope').get(u'prototype').put(u'bindingIdentifierEquals', PyJs_bindingIdentifierEquals_2166_) + @Js + def PyJs_warnOnFlowBinding_2167_(binding, this, arguments, var=var): + var = Scope({u'this':this, u'binding':binding, u'arguments':arguments, u'warnOnFlowBinding':PyJs_warnOnFlowBinding_2167_}, var) + var.registers([u'binding']) + if ((PyJsStrictEq(var.get(u'_crawlCallsCount'),Js(0.0)) and var.get(u'binding')) and var.get(u'binding').get(u'path').callprop(u'isFlow')): + var.get(u'console').callprop(u'warn', Js(u'\n You or one of the Babel plugins you are using are using Flow declarations as bindings.\n Support for this will be removed in version 6.8. To find out the caller, grep for this\n message and change it to a `console.trace()`.\n ')) + return var.get(u'binding') + PyJs_warnOnFlowBinding_2167_._set_name(u'warnOnFlowBinding') + var.get(u'Scope').get(u'prototype').put(u'warnOnFlowBinding', PyJs_warnOnFlowBinding_2167_) + @Js + def PyJs_getBinding_2168_(name, this, arguments, var=var): + var = Scope({u'this':this, u'getBinding':PyJs_getBinding_2168_, u'name':name, u'arguments':arguments}, var) + var.registers([u'scope', u'binding', u'name']) + var.put(u'scope', var.get(u"this")) + while 1: + var.put(u'binding', var.get(u'scope').callprop(u'getOwnBinding', var.get(u'name'))) + if var.get(u'binding'): + return var.get(u"this").callprop(u'warnOnFlowBinding', var.get(u'binding')) + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + PyJs_getBinding_2168_._set_name(u'getBinding') + var.get(u'Scope').get(u'prototype').put(u'getBinding', PyJs_getBinding_2168_) + @Js + def PyJs_getOwnBinding_2169_(name, this, arguments, var=var): + var = Scope({u'this':this, u'getOwnBinding':PyJs_getOwnBinding_2169_, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + return var.get(u"this").callprop(u'warnOnFlowBinding', var.get(u"this").get(u'bindings').get(var.get(u'name'))) + PyJs_getOwnBinding_2169_._set_name(u'getOwnBinding') + var.get(u'Scope').get(u'prototype').put(u'getOwnBinding', PyJs_getOwnBinding_2169_) + @Js + def PyJs_getBindingIdentifier_2170_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'getBindingIdentifier':PyJs_getBindingIdentifier_2170_, u'arguments':arguments}, var) + var.registers([u'info', u'name']) + var.put(u'info', var.get(u"this").callprop(u'getBinding', var.get(u'name'))) + return (var.get(u'info') and var.get(u'info').get(u'identifier')) + PyJs_getBindingIdentifier_2170_._set_name(u'getBindingIdentifier') + var.get(u'Scope').get(u'prototype').put(u'getBindingIdentifier', PyJs_getBindingIdentifier_2170_) + @Js + def PyJs_getOwnBindingIdentifier_2171_(name, this, arguments, var=var): + var = Scope({u'this':this, u'getOwnBindingIdentifier':PyJs_getOwnBindingIdentifier_2171_, u'name':name, u'arguments':arguments}, var) + var.registers([u'binding', u'name']) + var.put(u'binding', var.get(u"this").get(u'bindings').get(var.get(u'name'))) + return (var.get(u'binding') and var.get(u'binding').get(u'identifier')) + PyJs_getOwnBindingIdentifier_2171_._set_name(u'getOwnBindingIdentifier') + var.get(u'Scope').get(u'prototype').put(u'getOwnBindingIdentifier', PyJs_getOwnBindingIdentifier_2171_) + @Js + def PyJs_hasOwnBinding_2172_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'hasOwnBinding':PyJs_hasOwnBinding_2172_, u'arguments':arguments}, var) + var.registers([u'name']) + return var.get(u"this").callprop(u'getOwnBinding', var.get(u'name')).neg().neg() + PyJs_hasOwnBinding_2172_._set_name(u'hasOwnBinding') + var.get(u'Scope').get(u'prototype').put(u'hasOwnBinding', PyJs_hasOwnBinding_2172_) + @Js + def PyJs_hasBinding_2173_(name, noGlobals, this, arguments, var=var): + var = Scope({u'this':this, u'hasBinding':PyJs_hasBinding_2173_, u'name':name, u'noGlobals':noGlobals, u'arguments':arguments}, var) + var.registers([u'name', u'noGlobals']) + if var.get(u'name').neg(): + return Js(False) + if var.get(u"this").callprop(u'hasOwnBinding', var.get(u'name')): + return var.get(u'true') + if var.get(u"this").callprop(u'parentHasBinding', var.get(u'name'), var.get(u'noGlobals')): + return var.get(u'true') + if var.get(u"this").callprop(u'hasUid', var.get(u'name')): + return var.get(u'true') + if (var.get(u'noGlobals').neg() and PyJsComma(Js(0.0),var.get(u'_includes2').get(u'default'))(var.get(u'Scope').get(u'globals'), var.get(u'name'))): + return var.get(u'true') + if (var.get(u'noGlobals').neg() and PyJsComma(Js(0.0),var.get(u'_includes2').get(u'default'))(var.get(u'Scope').get(u'contextVariables'), var.get(u'name'))): + return var.get(u'true') + return Js(False) + PyJs_hasBinding_2173_._set_name(u'hasBinding') + var.get(u'Scope').get(u'prototype').put(u'hasBinding', PyJs_hasBinding_2173_) + @Js + def PyJs_parentHasBinding_2174_(name, noGlobals, this, arguments, var=var): + var = Scope({u'this':this, u'parentHasBinding':PyJs_parentHasBinding_2174_, u'name':name, u'noGlobals':noGlobals, u'arguments':arguments}, var) + var.registers([u'name', u'noGlobals']) + return (var.get(u"this").get(u'parent') and var.get(u"this").get(u'parent').callprop(u'hasBinding', var.get(u'name'), var.get(u'noGlobals'))) + PyJs_parentHasBinding_2174_._set_name(u'parentHasBinding') + var.get(u'Scope').get(u'prototype').put(u'parentHasBinding', PyJs_parentHasBinding_2174_) + @Js + def PyJs_moveBindingTo_2175_(name, scope, this, arguments, var=var): + var = Scope({u'this':this, u'scope':scope, u'moveBindingTo':PyJs_moveBindingTo_2175_, u'name':name, u'arguments':arguments}, var) + var.registers([u'info', u'scope', u'name']) + var.put(u'info', var.get(u"this").callprop(u'getBinding', var.get(u'name'))) + if var.get(u'info'): + var.get(u'info').get(u'scope').callprop(u'removeOwnBinding', var.get(u'name')) + var.get(u'info').put(u'scope', var.get(u'scope')) + var.get(u'scope').get(u'bindings').put(var.get(u'name'), var.get(u'info')) + PyJs_moveBindingTo_2175_._set_name(u'moveBindingTo') + var.get(u'Scope').get(u'prototype').put(u'moveBindingTo', PyJs_moveBindingTo_2175_) + @Js + def PyJs_removeOwnBinding_2176_(name, this, arguments, var=var): + var = Scope({u'this':this, u'removeOwnBinding':PyJs_removeOwnBinding_2176_, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + var.get(u"this").get(u'bindings').delete(var.get(u'name')) + PyJs_removeOwnBinding_2176_._set_name(u'removeOwnBinding') + var.get(u'Scope').get(u'prototype').put(u'removeOwnBinding', PyJs_removeOwnBinding_2176_) + @Js + def PyJs_removeBinding_2177_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'removeBinding':PyJs_removeBinding_2177_, u'arguments':arguments}, var) + var.registers([u'info', u'scope', u'name']) + var.put(u'info', var.get(u"this").callprop(u'getBinding', var.get(u'name'))) + if var.get(u'info'): + var.get(u'info').get(u'scope').callprop(u'removeOwnBinding', var.get(u'name')) + var.put(u'scope', var.get(u"this")) + while 1: + if var.get(u'scope').get(u'uids').get(var.get(u'name')): + var.get(u'scope').get(u'uids').put(var.get(u'name'), Js(False)) + if not var.put(u'scope', var.get(u'scope').get(u'parent')): + break + PyJs_removeBinding_2177_._set_name(u'removeBinding') + var.get(u'Scope').get(u'prototype').put(u'removeBinding', PyJs_removeBinding_2177_) + return var.get(u'Scope') + PyJs_anonymous_2120_._set_name(u'anonymous') + var.put(u'Scope', PyJs_anonymous_2120_()) + var.get(u'Scope').put(u'globals', PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u'_globals2').get(u'default').get(u'builtin'))) + var.get(u'Scope').put(u'contextVariables', Js([Js(u'arguments'), Js(u'undefined'), Js(u'Infinity'), Js(u'NaN')])) + var.get(u'exports').put(u'default', var.get(u'Scope')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_2103_._set_name(u'anonymous') +PyJs_Object_2178_ = Js({u'../cache':Js(222.0),u'../index':Js(225.0),u'./binding':Js(243.0),u'./lib/renamer':Js(245.0),u'babel-messages':Js(57.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/map':Js(98.0),u'babel-runtime/core-js/object/create':Js(101.0),u'babel-runtime/core-js/object/keys':Js(103.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-types':Js(258.0),u'globals':Js(278.0),u'lodash/defaults':Js(442.0),u'lodash/includes':Js(456.0),u'lodash/repeat':Js(483.0)}) +@Js +def PyJs_anonymous_2179_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'_binding2', u'exports', u'_interopRequireWildcard', u'Renamer', u'require', u'_babelTypes', u'renameVisitor', u'module', u't', u'_binding', u'_interopRequireDefault', u'_classCallCheck3', u'_classCallCheck2']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2181_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2181_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2180_ = Js({}) + var.put(u'newObj', PyJs_Object_2180_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_classCallCheck2', var.get(u'require')(Js(u'babel-runtime/helpers/classCallCheck'))) + var.put(u'_classCallCheck3', var.get(u'_interopRequireDefault')(var.get(u'_classCallCheck2'))) + var.put(u'_binding', var.get(u'require')(Js(u'../binding'))) + var.put(u'_binding2', var.get(u'_interopRequireDefault')(var.get(u'_binding'))) + var.put(u'_babelTypes', var.get(u'require')(Js(u'babel-types'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_babelTypes'))) + pass + pass + @Js + def PyJs_ReferencedIdentifier_2183_(_ref, state, this, arguments, var=var): + var = Scope({u'this':this, u'_ref':_ref, u'ReferencedIdentifier':PyJs_ReferencedIdentifier_2183_, u'state':state, u'arguments':arguments}, var) + var.registers([u'node', u'_ref', u'state']) + var.put(u'node', var.get(u'_ref').get(u'node')) + if PyJsStrictEq(var.get(u'node').get(u'name'),var.get(u'state').get(u'oldName')): + var.get(u'node').put(u'name', var.get(u'state').get(u'newName')) + PyJs_ReferencedIdentifier_2183_._set_name(u'ReferencedIdentifier') + @Js + def PyJs_Scope_2184_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'arguments':arguments, u'Scope':PyJs_Scope_2184_}, var) + var.registers([u'path', u'state']) + if var.get(u'path').get(u'scope').callprop(u'bindingIdentifierEquals', var.get(u'state').get(u'oldName'), var.get(u'state').get(u'binding').get(u'identifier')).neg(): + var.get(u'path').callprop(u'skip') + PyJs_Scope_2184_._set_name(u'Scope') + @Js + def PyJs_AssignmentExpressionDeclaration_2185_(path, state, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'state':state, u'AssignmentExpressionDeclaration':PyJs_AssignmentExpressionDeclaration_2185_, u'arguments':arguments}, var) + var.registers([u'path', u'state', u'ids', u'name']) + var.put(u'ids', var.get(u'path').callprop(u'getOuterBindingIdentifiers')) + for PyJsTemp in var.get(u'ids'): + var.put(u'name', PyJsTemp) + if PyJsStrictEq(var.get(u'name'),var.get(u'state').get(u'oldName')): + var.get(u'ids').get(var.get(u'name')).put(u'name', var.get(u'state').get(u'newName')) + PyJs_AssignmentExpressionDeclaration_2185_._set_name(u'AssignmentExpressionDeclaration') + PyJs_Object_2182_ = Js({u'ReferencedIdentifier':PyJs_ReferencedIdentifier_2183_,u'Scope':PyJs_Scope_2184_,u'AssignmentExpression|Declaration':PyJs_AssignmentExpressionDeclaration_2185_}) + var.put(u'renameVisitor', PyJs_Object_2182_) + @Js + def PyJs_anonymous_2186_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'Renamer']) + @Js + def PyJsHoisted_Renamer_(binding, oldName, newName, this, arguments, var=var): + var = Scope({u'newName':newName, u'this':this, u'binding':binding, u'oldName':oldName, u'arguments':arguments}, var) + var.registers([u'newName', u'binding', u'oldName']) + PyJsComma(Js(0.0),var.get(u'_classCallCheck3').get(u'default'))(var.get(u"this"), var.get(u'Renamer')) + var.get(u"this").put(u'newName', var.get(u'newName')) + var.get(u"this").put(u'oldName', var.get(u'oldName')) + var.get(u"this").put(u'binding', var.get(u'binding')) + PyJsHoisted_Renamer_.func_name = u'Renamer' + var.put(u'Renamer', PyJsHoisted_Renamer_) + pass + @Js + def PyJs_maybeConvertFromExportDeclaration_2187_(parentDeclar, this, arguments, var=var): + var = Scope({u'this':this, u'parentDeclar':parentDeclar, u'maybeConvertFromExportDeclaration':PyJs_maybeConvertFromExportDeclaration_2187_, u'arguments':arguments}, var) + var.registers([u'specifiers', u'exportDeclar', u'name', u'bindingIdentifiers', u'exportedName', u'parentDeclar', u'localName', u'aliasDeclar', u'isDefault']) + var.put(u'exportDeclar', (var.get(u'parentDeclar').get(u'parentPath').callprop(u'isExportDeclaration') and var.get(u'parentDeclar').get(u'parentPath'))) + if var.get(u'exportDeclar').neg(): + return var.get('undefined') + var.put(u'isDefault', var.get(u'exportDeclar').callprop(u'isExportDefaultDeclaration')) + if ((var.get(u'isDefault') and (var.get(u'parentDeclar').callprop(u'isFunctionDeclaration') or var.get(u'parentDeclar').callprop(u'isClassDeclaration'))) and var.get(u'parentDeclar').get(u'node').get(u'id').neg()): + var.get(u'parentDeclar').get(u'node').put(u'id', var.get(u'parentDeclar').get(u'scope').callprop(u'generateUidIdentifier', Js(u'default'))) + var.put(u'bindingIdentifiers', var.get(u'parentDeclar').callprop(u'getOuterBindingIdentifiers')) + var.put(u'specifiers', Js([])) + for PyJsTemp in var.get(u'bindingIdentifiers'): + var.put(u'name', PyJsTemp) + var.put(u'localName', (var.get(u"this").get(u'newName') if PyJsStrictEq(var.get(u'name'),var.get(u"this").get(u'oldName')) else var.get(u'name'))) + var.put(u'exportedName', (Js(u'default') if var.get(u'isDefault') else var.get(u'name'))) + var.get(u'specifiers').callprop(u'push', var.get(u't').callprop(u'exportSpecifier', var.get(u't').callprop(u'identifier', var.get(u'localName')), var.get(u't').callprop(u'identifier', var.get(u'exportedName')))) + if var.get(u'specifiers').get(u'length'): + var.put(u'aliasDeclar', var.get(u't').callprop(u'exportNamedDeclaration', var.get(u"null"), var.get(u'specifiers'))) + if var.get(u'parentDeclar').callprop(u'isFunctionDeclaration'): + var.get(u'aliasDeclar').put(u'_blockHoist', Js(3.0)) + var.get(u'exportDeclar').callprop(u'insertAfter', var.get(u'aliasDeclar')) + var.get(u'exportDeclar').callprop(u'replaceWith', var.get(u'parentDeclar').get(u'node')) + PyJs_maybeConvertFromExportDeclaration_2187_._set_name(u'maybeConvertFromExportDeclaration') + var.get(u'Renamer').get(u'prototype').put(u'maybeConvertFromExportDeclaration', PyJs_maybeConvertFromExportDeclaration_2187_) + @Js + def PyJs_maybeConvertFromClassFunctionDeclaration_2188_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'maybeConvertFromClassFunctionDeclaration':PyJs_maybeConvertFromClassFunctionDeclaration_2188_}, var) + var.registers([u'path']) + return var.get('undefined') + if (var.get(u'path').callprop(u'isFunctionDeclaration').neg() and var.get(u'path').callprop(u'isClassDeclaration').neg()): + return var.get('undefined') + if PyJsStrictNeq(var.get(u"this").get(u'binding').get(u'kind'),Js(u'hoisted')): + return var.get('undefined') + var.get(u'path').get(u'node').put(u'id', var.get(u't').callprop(u'identifier', var.get(u"this").get(u'oldName'))) + var.get(u'path').get(u'node').put(u'_blockHoist', Js(3.0)) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'variableDeclaration', Js(u'let'), Js([var.get(u't').callprop(u'variableDeclarator', var.get(u't').callprop(u'identifier', var.get(u"this").get(u'newName')), var.get(u't').callprop(u'toExpression', var.get(u'path').get(u'node')))]))) + PyJs_maybeConvertFromClassFunctionDeclaration_2188_._set_name(u'maybeConvertFromClassFunctionDeclaration') + var.get(u'Renamer').get(u'prototype').put(u'maybeConvertFromClassFunctionDeclaration', PyJs_maybeConvertFromClassFunctionDeclaration_2188_) + @Js + def PyJs_maybeConvertFromClassFunctionExpression_2189_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'maybeConvertFromClassFunctionExpression':PyJs_maybeConvertFromClassFunctionExpression_2189_}, var) + var.registers([u'path']) + return var.get('undefined') + if (var.get(u'path').callprop(u'isFunctionExpression').neg() and var.get(u'path').callprop(u'isClassExpression').neg()): + return var.get('undefined') + if PyJsStrictNeq(var.get(u"this").get(u'binding').get(u'kind'),Js(u'local')): + return var.get('undefined') + var.get(u'path').get(u'node').put(u'id', var.get(u't').callprop(u'identifier', var.get(u"this").get(u'oldName'))) + PyJs_Object_2190_ = Js({u'id':var.get(u't').callprop(u'identifier', var.get(u"this").get(u'newName'))}) + var.get(u"this").get(u'binding').get(u'scope').get(u'parent').callprop(u'push', PyJs_Object_2190_) + var.get(u'path').callprop(u'replaceWith', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u't').callprop(u'identifier', var.get(u"this").get(u'newName')), var.get(u'path').get(u'node'))) + PyJs_maybeConvertFromClassFunctionExpression_2189_._set_name(u'maybeConvertFromClassFunctionExpression') + var.get(u'Renamer').get(u'prototype').put(u'maybeConvertFromClassFunctionExpression', PyJs_maybeConvertFromClassFunctionExpression_2189_) + @Js + def PyJs_rename_2191_(block, this, arguments, var=var): + var = Scope({u'this':this, u'rename':PyJs_rename_2191_, u'arguments':arguments, u'block':block}, var) + var.registers([u'newName', u'binding', u'oldName', u'parentDeclar', u'scope', u'path', u'block']) + var.put(u'binding', var.get(u"this").get(u'binding')) + var.put(u'oldName', var.get(u"this").get(u'oldName')) + var.put(u'newName', var.get(u"this").get(u'newName')) + var.put(u'scope', var.get(u'binding').get(u'scope')) + var.put(u'path', var.get(u'binding').get(u'path')) + @Js + def PyJs_anonymous_2192_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return (var.get(u'path').callprop(u'isDeclaration') or var.get(u'path').callprop(u'isFunctionExpression')) + PyJs_anonymous_2192_._set_name(u'anonymous') + var.put(u'parentDeclar', var.get(u'path').callprop(u'find', PyJs_anonymous_2192_)) + if var.get(u'parentDeclar'): + var.get(u"this").callprop(u'maybeConvertFromExportDeclaration', var.get(u'parentDeclar')) + var.get(u'scope').callprop(u'traverse', (var.get(u'block') or var.get(u'scope').get(u'block')), var.get(u'renameVisitor'), var.get(u"this")) + if var.get(u'block').neg(): + var.get(u'scope').callprop(u'removeOwnBinding', var.get(u'oldName')) + var.get(u'scope').get(u'bindings').put(var.get(u'newName'), var.get(u'binding')) + var.get(u"this").get(u'binding').get(u'identifier').put(u'name', var.get(u'newName')) + if PyJsStrictEq(var.get(u'binding').get(u'type'),Js(u'hoisted')): + pass + if var.get(u'parentDeclar'): + var.get(u"this").callprop(u'maybeConvertFromClassFunctionDeclaration', var.get(u'parentDeclar')) + var.get(u"this").callprop(u'maybeConvertFromClassFunctionExpression', var.get(u'parentDeclar')) + PyJs_rename_2191_._set_name(u'rename') + var.get(u'Renamer').get(u'prototype').put(u'rename', PyJs_rename_2191_) + return var.get(u'Renamer') + PyJs_anonymous_2186_._set_name(u'anonymous') + var.put(u'Renamer', PyJs_anonymous_2186_()) + var.get(u'exports').put(u'default', var.get(u'Renamer')) + var.get(u'module').put(u'exports', var.get(u'exports').get(u'default')) +PyJs_anonymous_2179_._set_name(u'anonymous') +PyJs_Object_2193_ = Js({u'../binding':Js(243.0),u'babel-runtime/helpers/classCallCheck':Js(110.0),u'babel-types':Js(258.0)}) +@Js +def PyJs_anonymous_2194_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'module', u'_clone', u'_virtualTypes', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'virtualTypes', u'_typeof2', u'_typeof3', u'shouldIgnoreKey', u'validateVisitorMethods', u'verify', u'_keys', u'wrapWithStateOrWrapper', u'_babelMessages', u'exports', u'_interopRequireWildcard', u'mergePair', u'_babelTypes', u'_keys2', u'ensureCallbackArrays', u'ensureEntranceObjects', u'require', u'messages', u'wrapCheck', u'_clone2', u'explode', u'merge', u't']) + @Js + def PyJsHoisted_mergePair_(dest, src, this, arguments, var=var): + var = Scope({u'dest':dest, u'src':src, u'this':this, u'arguments':arguments}, var) + var.registers([u'dest', u'src', u'key']) + for PyJsTemp in var.get(u'src'): + var.put(u'key', PyJsTemp) + var.get(u'dest').put(var.get(u'key'), Js([]).callprop(u'concat', (var.get(u'dest').get(var.get(u'key')) or Js([])), var.get(u'src').get(var.get(u'key')))) + PyJsHoisted_mergePair_.func_name = u'mergePair' + var.put(u'mergePair', PyJsHoisted_mergePair_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2195_ = Js({}) + var.put(u'newObj', PyJs_Object_2195_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_shouldIgnoreKey_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + if PyJsStrictEq(var.get(u'key').get(u'0'),Js(u'_')): + return var.get(u'true') + if ((PyJsStrictEq(var.get(u'key'),Js(u'enter')) or PyJsStrictEq(var.get(u'key'),Js(u'exit'))) or PyJsStrictEq(var.get(u'key'),Js(u'shouldSkip'))): + return var.get(u'true') + if ((PyJsStrictEq(var.get(u'key'),Js(u'blacklist')) or PyJsStrictEq(var.get(u'key'),Js(u'noScope'))) or PyJsStrictEq(var.get(u'key'),Js(u'skipKeys'))): + return var.get(u'true') + return Js(False) + PyJsHoisted_shouldIgnoreKey_.func_name = u'shouldIgnoreKey' + var.put(u'shouldIgnoreKey', PyJsHoisted_shouldIgnoreKey_) + @Js + def PyJsHoisted_validateVisitorMethods_(path, val, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments, u'val':val}, var) + var.registers([u'_isArray5', u'fns', u'val', u'_ref5', u'_iterator5', u'path', u'_i5', u'fn']) + var.put(u'fns', Js([]).callprop(u'concat', var.get(u'val'))) + #for JS loop + var.put(u'_iterator5', var.get(u'fns')) + var.put(u'_isArray5', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator5'))) + var.put(u'_i5', Js(0.0)) + var.put(u'_iterator5', (var.get(u'_iterator5') if var.get(u'_isArray5') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator5')))) + while 1: + pass + if var.get(u'_isArray5'): + if (var.get(u'_i5')>=var.get(u'_iterator5').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator5').get((var.put(u'_i5',Js(var.get(u'_i5').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i5', var.get(u'_iterator5').callprop(u'next')) + if var.get(u'_i5').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i5').get(u'value')) + var.put(u'fn', var.get(u'_ref5')) + if PyJsStrictNeq(var.get(u'fn',throw=False).typeof(),Js(u'function')): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((((Js(u'Non-function found defined in ')+var.get(u'path'))+Js(u' with type '))+(Js(u'undefined') if PyJsStrictEq(var.get(u'fn',throw=False).typeof(),Js(u'undefined')) else PyJsComma(Js(0.0),var.get(u'_typeof3').get(u'default'))(var.get(u'fn')))))) + raise PyJsTempException + + PyJsHoisted_validateVisitorMethods_.func_name = u'validateVisitorMethods' + var.put(u'validateVisitorMethods', PyJsHoisted_validateVisitorMethods_) + @Js + def PyJsHoisted_verify_(visitor, this, arguments, var=var): + var = Scope({u'this':this, u'visitor':visitor, u'arguments':arguments}, var) + var.registers([u'visitors', u'nodeType', u'visitor', u'visitorKey']) + if var.get(u'visitor').get(u'_verified'): + return var.get('undefined') + if PyJsStrictEq(var.get(u'visitor',throw=False).typeof(),Js(u'function')): + PyJsTempException = JsToPyException(var.get(u'Error').create(var.get(u'messages').callprop(u'get', Js(u'traverseVerifyRootFunction')))) + raise PyJsTempException + for PyJsTemp in var.get(u'visitor'): + var.put(u'nodeType', PyJsTemp) + if (PyJsStrictEq(var.get(u'nodeType'),Js(u'enter')) or PyJsStrictEq(var.get(u'nodeType'),Js(u'exit'))): + var.get(u'validateVisitorMethods')(var.get(u'nodeType'), var.get(u'visitor').get(var.get(u'nodeType'))) + if var.get(u'shouldIgnoreKey')(var.get(u'nodeType')): + continue + if (var.get(u't').get(u'TYPES').callprop(u'indexOf', var.get(u'nodeType'))=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'part', var.get(u'_ref')) + var.get(u'visitor').put(var.get(u'part'), var.get(u'fns')) + + var.get(u'verify')(var.get(u'visitor')) + var.get(u'visitor').delete(u'__esModule') + var.get(u'ensureEntranceObjects')(var.get(u'visitor')) + var.get(u'ensureCallbackArrays')(var.get(u'visitor')) + #for JS loop + var.put(u'_iterator2', PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u'visitor'))) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'_nodeType3', var.get(u'_ref2')) + if var.get(u'shouldIgnoreKey')(var.get(u'_nodeType3')): + continue + var.put(u'wrapper', var.get(u'virtualTypes').get(var.get(u'_nodeType3'))) + if var.get(u'wrapper').neg(): + continue + var.put(u'_fns2', var.get(u'visitor').get(var.get(u'_nodeType3'))) + for PyJsTemp in var.get(u'_fns2'): + var.put(u'type', PyJsTemp) + var.get(u'_fns2').put(var.get(u'type'), var.get(u'wrapCheck')(var.get(u'wrapper'), var.get(u'_fns2').get(var.get(u'type')))) + var.get(u'visitor').delete(var.get(u'_nodeType3')) + if var.get(u'wrapper').get(u'types'): + #for JS loop + var.put(u'_iterator4', var.get(u'wrapper').get(u'types')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i4').get(u'value')) + var.put(u'_type', var.get(u'_ref4')) + if var.get(u'visitor').get(var.get(u'_type')): + var.get(u'mergePair')(var.get(u'visitor').get(var.get(u'_type')), var.get(u'_fns2')) + else: + var.get(u'visitor').put(var.get(u'_type'), var.get(u'_fns2')) + + else: + var.get(u'mergePair')(var.get(u'visitor'), var.get(u'_fns2')) + + for PyJsTemp in var.get(u'visitor'): + var.put(u'_nodeType', PyJsTemp) + if var.get(u'shouldIgnoreKey')(var.get(u'_nodeType')): + continue + var.put(u'_fns', var.get(u'visitor').get(var.get(u'_nodeType'))) + var.put(u'aliases', var.get(u't').get(u'FLIPPED_ALIAS_KEYS').get(var.get(u'_nodeType'))) + var.put(u'deprecratedKey', var.get(u't').get(u'DEPRECATED_KEYS').get(var.get(u'_nodeType'))) + if var.get(u'deprecratedKey'): + var.get(u'console').callprop(u'trace', (((Js(u'Visitor defined for ')+var.get(u'_nodeType'))+Js(u' but it has been renamed to '))+var.get(u'deprecratedKey'))) + var.put(u'aliases', Js([var.get(u'deprecratedKey')])) + if var.get(u'aliases').neg(): + continue + var.get(u'visitor').delete(var.get(u'_nodeType')) + #for JS loop + var.put(u'_iterator3', var.get(u'aliases')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'alias', var.get(u'_ref3')) + var.put(u'existing', var.get(u'visitor').get(var.get(u'alias'))) + if var.get(u'existing'): + var.get(u'mergePair')(var.get(u'existing'), var.get(u'_fns')) + else: + var.get(u'visitor').put(var.get(u'alias'), PyJsComma(Js(0.0),var.get(u'_clone2').get(u'default'))(var.get(u'_fns'))) + + for PyJsTemp in var.get(u'visitor'): + var.put(u'_nodeType2', PyJsTemp) + if var.get(u'shouldIgnoreKey')(var.get(u'_nodeType2')): + continue + var.get(u'ensureCallbackArrays')(var.get(u'visitor').get(var.get(u'_nodeType2'))) + return var.get(u'visitor') + PyJsHoisted_explode_.func_name = u'explode' + var.put(u'explode', PyJsHoisted_explode_) + @Js + def PyJsHoisted_merge_(visitors, this, arguments, var=var): + var = Scope({u'this':this, u'visitors':visitors, u'arguments':arguments}, var) + var.registers([u'visitorType', u'i', u'visitor', u'rootVisitor', u'wrapper', u'states', u'visitors', u'state', u'nodeVisitor', u'type']) + var.put(u'states', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else Js([]))) + var.put(u'wrapper', var.get(u'arguments').get(u'2')) + PyJs_Object_2197_ = Js({}) + var.put(u'rootVisitor', PyJs_Object_2197_) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')'), Js(u'<'), Js(u'>='), Js(u'<=')]))) + var.put(u'EQUALITY_BINARY_OPERATORS', var.get(u'exports').put(u'EQUALITY_BINARY_OPERATORS', Js([Js(u'=='), Js(u'==='), Js(u'!='), Js(u'!==')]))) + var.put(u'COMPARISON_BINARY_OPERATORS', var.get(u'exports').put(u'COMPARISON_BINARY_OPERATORS', Js([]).callprop(u'concat', var.get(u'EQUALITY_BINARY_OPERATORS'), Js([Js(u'in'), Js(u'instanceof')])))) + var.put(u'BOOLEAN_BINARY_OPERATORS', var.get(u'exports').put(u'BOOLEAN_BINARY_OPERATORS', Js([]).callprop(u'concat', var.get(u'COMPARISON_BINARY_OPERATORS'), var.get(u'BOOLEAN_NUMBER_BINARY_OPERATORS')))) + var.put(u'NUMBER_BINARY_OPERATORS', var.get(u'exports').put(u'NUMBER_BINARY_OPERATORS', Js([Js(u'-'), Js(u'/'), Js(u'%'), Js(u'*'), Js(u'**'), Js(u'&'), Js(u'|'), Js(u'>>'), Js(u'>>>'), Js(u'<<'), Js(u'^')]))) + var.put(u'BINARY_OPERATORS', var.get(u'exports').put(u'BINARY_OPERATORS', Js([Js(u'+')]).callprop(u'concat', var.get(u'NUMBER_BINARY_OPERATORS'), var.get(u'BOOLEAN_BINARY_OPERATORS')))) + var.put(u'BOOLEAN_UNARY_OPERATORS', var.get(u'exports').put(u'BOOLEAN_UNARY_OPERATORS', Js([Js(u'delete'), Js(u'!')]))) + var.put(u'NUMBER_UNARY_OPERATORS', var.get(u'exports').put(u'NUMBER_UNARY_OPERATORS', Js([Js(u'+'), Js(u'-'), Js(u'++'), Js(u'--'), Js(u'~')]))) + var.put(u'STRING_UNARY_OPERATORS', var.get(u'exports').put(u'STRING_UNARY_OPERATORS', Js([Js(u'typeof')]))) + var.put(u'UNARY_OPERATORS', var.get(u'exports').put(u'UNARY_OPERATORS', Js([Js(u'void')]).callprop(u'concat', var.get(u'BOOLEAN_UNARY_OPERATORS'), var.get(u'NUMBER_UNARY_OPERATORS'), var.get(u'STRING_UNARY_OPERATORS')))) + PyJs_Object_2211_ = Js({u'optional':Js([Js(u'typeAnnotation'), Js(u'typeParameters'), Js(u'returnType')]),u'force':Js([Js(u'start'), Js(u'loc'), Js(u'end')])}) + var.put(u'INHERIT_KEYS', var.get(u'exports').put(u'INHERIT_KEYS', PyJs_Object_2211_)) + var.put(u'BLOCK_SCOPED_SYMBOL', var.get(u'exports').put(u'BLOCK_SCOPED_SYMBOL', PyJsComma(Js(0.0),var.get(u'_for2').get(u'default'))(Js(u'var used to be block scoped')))) + var.put(u'NOT_LOCAL_BINDING', var.get(u'exports').put(u'NOT_LOCAL_BINDING', PyJsComma(Js(0.0),var.get(u'_for2').get(u'default'))(Js(u'should not be considered a local binding')))) +PyJs_anonymous_2207_._set_name(u'anonymous') +PyJs_Object_2212_ = Js({u'babel-runtime/core-js/symbol/for':Js(106.0)}) +@Js +def PyJs_anonymous_2213_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'toComputedKey', u'toBindingIdentifierName', u'module', u'_isString2', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'toKeyAlias', u'_isNumber', u'toSequenceExpression', u'_isRegExp2', u'_isRegExp', u'toIdentifier', u't', u'_isNumber2', u'exports', u'_stringify2', u'_interopRequireWildcard', u'toExpression', u'_maxSafeInteger2', u'_isPlainObject2', u'_index', u'_isString', u'require', u'toBlock', u'toStatement', u'_stringify', u'_maxSafeInteger', u'_isPlainObject', u'valueToNode']) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2214_ = Js({}) + var.put(u'newObj', PyJs_Object_2214_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_toSequenceExpression_(nodes, scope, this, arguments, var=var): + var = Scope({u'this':this, u'scope':scope, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'convert', u'bailed', u'i', u'declars', u'result', u'scope', u'nodes']) + @Js + def PyJsHoisted_convert_(nodes, this, arguments, var=var): + var = Scope({u'this':this, u'nodes':nodes, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'_isArray2', u'ensureLastUndefined', u'alternate', u'nodes', u'_i2', u'_ref2', u'key', u'exprs', u'declar', u'_i', u'_ref', u'consequent', u'bindings', u'_iterator2']) + var.put(u'ensureLastUndefined', Js(False)) + var.put(u'exprs', Js([])) + #for JS loop + var.put(u'_iterator', var.get(u'nodes')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'node', var.get(u'_ref')) + if var.get(u't').callprop(u'isExpression', var.get(u'node')): + var.get(u'exprs').callprop(u'push', var.get(u'node')) + else: + if var.get(u't').callprop(u'isExpressionStatement', var.get(u'node')): + var.get(u'exprs').callprop(u'push', var.get(u'node').get(u'expression')) + else: + if var.get(u't').callprop(u'isVariableDeclaration', var.get(u'node')): + if PyJsStrictNeq(var.get(u'node').get(u'kind'),Js(u'var')): + return var.put(u'bailed', var.get(u'true')) + #for JS loop + var.put(u'_iterator2', var.get(u'node').get(u'declarations')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'declar', var.get(u'_ref2')) + var.put(u'bindings', var.get(u't').callprop(u'getBindingIdentifiers', var.get(u'declar'))) + for PyJsTemp in var.get(u'bindings'): + var.put(u'key', PyJsTemp) + PyJs_Object_2216_ = Js({u'kind':var.get(u'node').get(u'kind'),u'id':var.get(u'bindings').get(var.get(u'key'))}) + var.get(u'declars').callprop(u'push', PyJs_Object_2216_) + if var.get(u'declar').get(u'init'): + var.get(u'exprs').callprop(u'push', var.get(u't').callprop(u'assignmentExpression', Js(u'='), var.get(u'declar').get(u'id'), var.get(u'declar').get(u'init'))) + + var.put(u'ensureLastUndefined', var.get(u'true')) + continue + else: + if var.get(u't').callprop(u'isIfStatement', var.get(u'node')): + var.put(u'consequent', (var.get(u'convert')(Js([var.get(u'node').get(u'consequent')])) if var.get(u'node').get(u'consequent') else var.get(u'scope').callprop(u'buildUndefinedNode'))) + var.put(u'alternate', (var.get(u'convert')(Js([var.get(u'node').get(u'alternate')])) if var.get(u'node').get(u'alternate') else var.get(u'scope').callprop(u'buildUndefinedNode'))) + if (var.get(u'consequent').neg() or var.get(u'alternate').neg()): + return var.put(u'bailed', var.get(u'true')) + var.get(u'exprs').callprop(u'push', var.get(u't').callprop(u'conditionalExpression', var.get(u'node').get(u'test'), var.get(u'consequent'), var.get(u'alternate'))) + else: + if var.get(u't').callprop(u'isBlockStatement', var.get(u'node')): + var.get(u'exprs').callprop(u'push', var.get(u'convert')(var.get(u'node').get(u'body'))) + else: + if var.get(u't').callprop(u'isEmptyStatement', var.get(u'node')): + var.put(u'ensureLastUndefined', var.get(u'true')) + continue + else: + return var.put(u'bailed', var.get(u'true')) + var.put(u'ensureLastUndefined', Js(False)) + + if (var.get(u'ensureLastUndefined') or PyJsStrictEq(var.get(u'exprs').get(u'length'),Js(0.0))): + var.get(u'exprs').callprop(u'push', var.get(u'scope').callprop(u'buildUndefinedNode')) + if PyJsStrictEq(var.get(u'exprs').get(u'length'),Js(1.0)): + return var.get(u'exprs').get(u'0') + else: + return var.get(u't').callprop(u'sequenceExpression', var.get(u'exprs')) + PyJsHoisted_convert_.func_name = u'convert' + var.put(u'convert', PyJsHoisted_convert_) + if (var.get(u'nodes').neg() or var.get(u'nodes').get(u'length').neg()): + return var.get('undefined') + var.put(u'declars', Js([])) + var.put(u'bailed', Js(False)) + var.put(u'result', var.get(u'convert')(var.get(u'nodes'))) + if var.get(u'bailed'): + return var.get('undefined') + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else (var.get(u'node').get(u'key') or var.get(u'node').get(u'property')))) + if var.get(u'node').get(u'computed').neg(): + if var.get(u't').callprop(u'isIdentifier', var.get(u'key')): + var.put(u'key', var.get(u't').callprop(u'stringLiteral', var.get(u'key').get(u'name'))) + return var.get(u'key') + PyJsHoisted_toComputedKey_.func_name = u'toComputedKey' + var.put(u'toComputedKey', PyJsHoisted_toComputedKey_) + @Js + def PyJsHoisted_toBindingIdentifierName_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + var.put(u'name', var.get(u'toIdentifier')(var.get(u'name'))) + if (PyJsStrictEq(var.get(u'name'),Js(u'eval')) or PyJsStrictEq(var.get(u'name'),Js(u'arguments'))): + var.put(u'name', (Js(u'_')+var.get(u'name'))) + return var.get(u'name') + PyJsHoisted_toBindingIdentifierName_.func_name = u'toBindingIdentifierName' + var.put(u'toBindingIdentifierName', PyJsHoisted_toBindingIdentifierName_) + @Js + def PyJsHoisted_toBlock_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'parent']) + if var.get(u't').callprop(u'isBlockStatement', var.get(u'node')): + return var.get(u'node') + if var.get(u't').callprop(u'isEmptyStatement', var.get(u'node')): + var.put(u'node', Js([])) + if var.get(u'Array').callprop(u'isArray', var.get(u'node')).neg(): + if var.get(u't').callprop(u'isStatement', var.get(u'node')).neg(): + if var.get(u't').callprop(u'isFunction', var.get(u'parent')): + var.put(u'node', var.get(u't').callprop(u'returnStatement', var.get(u'node'))) + else: + var.put(u'node', var.get(u't').callprop(u'expressionStatement', var.get(u'node'))) + var.put(u'node', Js([var.get(u'node')])) + return var.get(u't').callprop(u'blockStatement', var.get(u'node')) + PyJsHoisted_toBlock_.func_name = u'toBlock' + var.put(u'toBlock', PyJsHoisted_toBlock_) + @Js + def PyJsHoisted_toStatement_(node, ignore, this, arguments, var=var): + var = Scope({u'node':node, u'ignore':ignore, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'ignore', u'mustHaveId', u'newType']) + if var.get(u't').callprop(u'isStatement', var.get(u'node')): + return var.get(u'node') + var.put(u'mustHaveId', Js(False)) + var.put(u'newType', PyJsComma(Js(0.0), Js(None))) + if var.get(u't').callprop(u'isClass', var.get(u'node')): + var.put(u'mustHaveId', var.get(u'true')) + var.put(u'newType', Js(u'ClassDeclaration')) + else: + if var.get(u't').callprop(u'isFunction', var.get(u'node')): + var.put(u'mustHaveId', var.get(u'true')) + var.put(u'newType', Js(u'FunctionDeclaration')) + else: + if var.get(u't').callprop(u'isAssignmentExpression', var.get(u'node')): + return var.get(u't').callprop(u'expressionStatement', var.get(u'node')) + if (var.get(u'mustHaveId') and var.get(u'node').get(u'id').neg()): + var.put(u'newType', Js(False)) + if var.get(u'newType').neg(): + if var.get(u'ignore'): + return Js(False) + else: + PyJsTempException = JsToPyException(var.get(u'Error').create(((Js(u'cannot turn ')+var.get(u'node').get(u'type'))+Js(u' to a statement')))) + raise PyJsTempException + var.get(u'node').put(u'type', var.get(u'newType')) + return var.get(u'node') + PyJsHoisted_toStatement_.func_name = u'toStatement' + var.put(u'toStatement', PyJsHoisted_toStatement_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2215_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2215_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_toIdentifier_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + var.put(u'name', (var.get(u'name')+Js(u''))) + var.put(u'name', var.get(u'name').callprop(u'replace', JsRegExp(u'/[^a-zA-Z0-9$_]/g'), Js(u'-'))) + var.put(u'name', var.get(u'name').callprop(u'replace', JsRegExp(u'/^[-0-9]+/'), Js(u''))) + @Js + def PyJs_anonymous_2218_(match, c, this, arguments, var=var): + var = Scope({u'this':this, u'c':c, u'arguments':arguments, u'match':match}, var) + var.registers([u'c', u'match']) + return (var.get(u'c').callprop(u'toUpperCase') if var.get(u'c') else Js(u'')) + PyJs_anonymous_2218_._set_name(u'anonymous') + var.put(u'name', var.get(u'name').callprop(u'replace', JsRegExp(u'/[-\\s]+(.)?/g'), PyJs_anonymous_2218_)) + if var.get(u't').callprop(u'isValidIdentifier', var.get(u'name')).neg(): + var.put(u'name', (Js(u'_')+var.get(u'name'))) + return (var.get(u'name') or Js(u'_')) + PyJsHoisted_toIdentifier_.func_name = u'toIdentifier' + var.put(u'toIdentifier', PyJsHoisted_toIdentifier_) + @Js + def PyJsHoisted_toKeyAlias_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'alias', u'key']) + var.put(u'key', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else var.get(u'node').get(u'key'))) + var.put(u'alias', PyJsComma(Js(0.0), Js(None))) + if PyJsStrictEq(var.get(u'node').get(u'kind'),Js(u'method')): + return (var.get(u'toKeyAlias').callprop(u'increment')+Js(u'')) + else: + if var.get(u't').callprop(u'isIdentifier', var.get(u'key')): + var.put(u'alias', var.get(u'key').get(u'name')) + else: + if var.get(u't').callprop(u'isStringLiteral', var.get(u'key')): + var.put(u'alias', PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'key').get(u'value'))) + else: + var.put(u'alias', PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u't').callprop(u'removePropertiesDeep', var.get(u't').callprop(u'cloneDeep', var.get(u'key'))))) + if var.get(u'node').get(u'computed'): + var.put(u'alias', ((Js(u'[')+var.get(u'alias'))+Js(u']'))) + if var.get(u'node').get(u'static'): + var.put(u'alias', (Js(u'static:')+var.get(u'alias'))) + return var.get(u'alias') + PyJsHoisted_toKeyAlias_.func_name = u'toKeyAlias' + var.put(u'toKeyAlias', PyJsHoisted_toKeyAlias_) + @Js + def PyJsHoisted_valueToNode_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'pattern', u'value', u'flags', u'nodeKey', u'key', u'props']) + if PyJsStrictEq(var.get(u'value'),var.get(u'undefined')): + return var.get(u't').callprop(u'identifier', Js(u'undefined')) + if (PyJsStrictEq(var.get(u'value'),var.get(u'true')) or PyJsStrictEq(var.get(u'value'),Js(False))): + return var.get(u't').callprop(u'booleanLiteral', var.get(u'value')) + if PyJsStrictEq(var.get(u'value'),var.get(u"null")): + return var.get(u't').callprop(u'nullLiteral') + if PyJsComma(Js(0.0),var.get(u'_isString2').get(u'default'))(var.get(u'value')): + return var.get(u't').callprop(u'stringLiteral', var.get(u'value')) + if PyJsComma(Js(0.0),var.get(u'_isNumber2').get(u'default'))(var.get(u'value')): + return var.get(u't').callprop(u'numericLiteral', var.get(u'value')) + if PyJsComma(Js(0.0),var.get(u'_isRegExp2').get(u'default'))(var.get(u'value')): + var.put(u'pattern', var.get(u'value').get(u'source')) + var.put(u'flags', var.get(u'value').callprop(u'toString').callprop(u'match', JsRegExp(u'/\\/([a-z]+|)$/')).get(u'1')) + return var.get(u't').callprop(u'regExpLiteral', var.get(u'pattern'), var.get(u'flags')) + if var.get(u'Array').callprop(u'isArray', var.get(u'value')): + return var.get(u't').callprop(u'arrayExpression', var.get(u'value').callprop(u'map', var.get(u't').get(u'valueToNode'))) + if PyJsComma(Js(0.0),var.get(u'_isPlainObject2').get(u'default'))(var.get(u'value')): + var.put(u'props', Js([])) + for PyJsTemp in var.get(u'value'): + var.put(u'key', PyJsTemp) + var.put(u'nodeKey', PyJsComma(Js(0.0), Js(None))) + if var.get(u't').callprop(u'isValidIdentifier', var.get(u'key')): + var.put(u'nodeKey', var.get(u't').callprop(u'identifier', var.get(u'key'))) + else: + var.put(u'nodeKey', var.get(u't').callprop(u'stringLiteral', var.get(u'key'))) + var.get(u'props').callprop(u'push', var.get(u't').callprop(u'objectProperty', var.get(u'nodeKey'), var.get(u't').callprop(u'valueToNode', var.get(u'value').get(var.get(u'key'))))) + return var.get(u't').callprop(u'objectExpression', var.get(u'props')) + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u"don't know how to turn this value into a node"))) + raise PyJsTempException + PyJsHoisted_valueToNode_.func_name = u'valueToNode' + var.put(u'valueToNode', PyJsHoisted_valueToNode_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_maxSafeInteger', var.get(u'require')(Js(u'babel-runtime/core-js/number/max-safe-integer'))) + var.put(u'_maxSafeInteger2', var.get(u'_interopRequireDefault')(var.get(u'_maxSafeInteger'))) + var.put(u'_stringify', var.get(u'require')(Js(u'babel-runtime/core-js/json/stringify'))) + var.put(u'_stringify2', var.get(u'_interopRequireDefault')(var.get(u'_stringify'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'toComputedKey', var.get(u'toComputedKey')) + var.get(u'exports').put(u'toSequenceExpression', var.get(u'toSequenceExpression')) + var.get(u'exports').put(u'toKeyAlias', var.get(u'toKeyAlias')) + var.get(u'exports').put(u'toIdentifier', var.get(u'toIdentifier')) + var.get(u'exports').put(u'toBindingIdentifierName', var.get(u'toBindingIdentifierName')) + var.get(u'exports').put(u'toStatement', var.get(u'toStatement')) + var.get(u'exports').put(u'toExpression', var.get(u'toExpression')) + var.get(u'exports').put(u'toBlock', var.get(u'toBlock')) + var.get(u'exports').put(u'valueToNode', var.get(u'valueToNode')) + var.put(u'_isPlainObject', var.get(u'require')(Js(u'lodash/isPlainObject'))) + var.put(u'_isPlainObject2', var.get(u'_interopRequireDefault')(var.get(u'_isPlainObject'))) + var.put(u'_isNumber', var.get(u'require')(Js(u'lodash/isNumber'))) + var.put(u'_isNumber2', var.get(u'_interopRequireDefault')(var.get(u'_isNumber'))) + var.put(u'_isRegExp', var.get(u'require')(Js(u'lodash/isRegExp'))) + var.put(u'_isRegExp2', var.get(u'_interopRequireDefault')(var.get(u'_isRegExp'))) + var.put(u'_isString', var.get(u'require')(Js(u'lodash/isString'))) + var.put(u'_isString2', var.get(u'_interopRequireDefault')(var.get(u'_isString'))) + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_index'))) + pass + pass + pass + pass + pass + var.get(u'toKeyAlias').put(u'uid', Js(0.0)) + @Js + def PyJs_anonymous_2217_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if (var.get(u'toKeyAlias').get(u'uid')>=var.get(u'_maxSafeInteger2').get(u'default')): + return var.get(u'toKeyAlias').put(u'uid', Js(0.0)) + else: + return (var.get(u'toKeyAlias').put(u'uid',Js(var.get(u'toKeyAlias').get(u'uid').to_number())+Js(1))-Js(1)) + PyJs_anonymous_2217_._set_name(u'anonymous') + var.get(u'toKeyAlias').put(u'increment', PyJs_anonymous_2217_) + pass + pass + pass + pass + pass + pass +PyJs_anonymous_2213_._set_name(u'anonymous') +PyJs_Object_2219_ = Js({u'./index':Js(258.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/json/stringify':Js(97.0),u'babel-runtime/core-js/number/max-safe-integer':Js(99.0),u'lodash/isNumber':Js(466.0),u'lodash/isPlainObject':Js(469.0),u'lodash/isRegExp':Js(470.0),u'lodash/isString':Js(471.0)}) +@Js +def PyJs_anonymous_2220_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_constants', u'_interopRequireWildcard', u'_index', u'require', u'module', u't', u'_index2', u'_index3', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2221_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2221_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2222_ = Js({}) + var.put(u'newObj', PyJs_Object_2222_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + Js(u'use strict') + var.put(u'_index', var.get(u'require')(Js(u'../index'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_index'))) + var.put(u'_constants', var.get(u'require')(Js(u'../constants'))) + var.put(u'_index2', var.get(u'require')(Js(u'./index'))) + var.put(u'_index3', var.get(u'_interopRequireDefault')(var.get(u'_index2'))) + pass + pass + PyJs_Object_2225_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeOrValueType'))(Js(u'null'), Js(u'Expression'), Js(u'SpreadElement')))),u'default':Js([])}) + PyJs_Object_2224_ = Js({u'elements':PyJs_Object_2225_}) + PyJs_Object_2223_ = Js({u'fields':PyJs_Object_2224_,u'visitor':Js([Js(u'elements')]),u'aliases':Js([Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ArrayExpression'), PyJs_Object_2223_) + PyJs_Object_2228_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'string'))}) + PyJs_Object_2229_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'LVal'))}) + PyJs_Object_2230_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2227_ = Js({u'operator':PyJs_Object_2228_,u'left':PyJs_Object_2229_,u'right':PyJs_Object_2230_}) + PyJs_Object_2226_ = Js({u'fields':PyJs_Object_2227_,u'builder':Js([Js(u'operator'), Js(u'left'), Js(u'right')]),u'visitor':Js([Js(u'left'), Js(u'right')]),u'aliases':Js([Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'AssignmentExpression'), PyJs_Object_2226_) + PyJs_Object_2233_ = Js({u'validate':var.get(u'_index2').get(u'assertOneOf').callprop(u'apply', var.get(u'undefined'), var.get(u'_constants').get(u'BINARY_OPERATORS'))}) + PyJs_Object_2234_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2235_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2232_ = Js({u'operator':PyJs_Object_2233_,u'left':PyJs_Object_2234_,u'right':PyJs_Object_2235_}) + PyJs_Object_2231_ = Js({u'builder':Js([Js(u'operator'), Js(u'left'), Js(u'right')]),u'fields':PyJs_Object_2232_,u'visitor':Js([Js(u'left'), Js(u'right')]),u'aliases':Js([Js(u'Binary'), Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'BinaryExpression'), PyJs_Object_2231_) + PyJs_Object_2238_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'DirectiveLiteral'))}) + PyJs_Object_2237_ = Js({u'value':PyJs_Object_2238_}) + PyJs_Object_2236_ = Js({u'visitor':Js([Js(u'value')]),u'fields':PyJs_Object_2237_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'Directive'), PyJs_Object_2236_) + PyJs_Object_2241_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'string'))}) + PyJs_Object_2240_ = Js({u'value':PyJs_Object_2241_}) + PyJs_Object_2239_ = Js({u'builder':Js([Js(u'value')]),u'fields':PyJs_Object_2240_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'DirectiveLiteral'), PyJs_Object_2239_) + PyJs_Object_2244_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Directive')))),u'default':Js([])}) + PyJs_Object_2245_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))))}) + PyJs_Object_2243_ = Js({u'directives':PyJs_Object_2244_,u'body':PyJs_Object_2245_}) + PyJs_Object_2242_ = Js({u'builder':Js([Js(u'body'), Js(u'directives')]),u'visitor':Js([Js(u'directives'), Js(u'body')]),u'fields':PyJs_Object_2243_,u'aliases':Js([Js(u'Scopable'), Js(u'BlockParent'), Js(u'Block'), Js(u'Statement')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'BlockStatement'), PyJs_Object_2242_) + PyJs_Object_2248_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Identifier')),u'optional':var.get(u'true')}) + PyJs_Object_2247_ = Js({u'label':PyJs_Object_2248_}) + PyJs_Object_2246_ = Js({u'visitor':Js([Js(u'label')]),u'fields':PyJs_Object_2247_,u'aliases':Js([Js(u'Statement'), Js(u'Terminatorless'), Js(u'CompletionStatement')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'BreakStatement'), PyJs_Object_2246_) + PyJs_Object_2251_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2252_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'), Js(u'SpreadElement'))))}) + PyJs_Object_2250_ = Js({u'callee':PyJs_Object_2251_,u'arguments':PyJs_Object_2252_}) + PyJs_Object_2249_ = Js({u'visitor':Js([Js(u'callee'), Js(u'arguments')]),u'fields':PyJs_Object_2250_,u'aliases':Js([Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'CallExpression'), PyJs_Object_2249_) + PyJs_Object_2255_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2256_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2254_ = Js({u'param':PyJs_Object_2255_,u'body':PyJs_Object_2256_}) + PyJs_Object_2253_ = Js({u'visitor':Js([Js(u'param'), Js(u'body')]),u'fields':PyJs_Object_2254_,u'aliases':Js([Js(u'Scopable')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'CatchClause'), PyJs_Object_2253_) + PyJs_Object_2259_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2260_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2261_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2258_ = Js({u'test':PyJs_Object_2259_,u'consequent':PyJs_Object_2260_,u'alternate':PyJs_Object_2261_}) + PyJs_Object_2257_ = Js({u'visitor':Js([Js(u'test'), Js(u'consequent'), Js(u'alternate')]),u'fields':PyJs_Object_2258_,u'aliases':Js([Js(u'Expression'), Js(u'Conditional')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ConditionalExpression'), PyJs_Object_2257_) + PyJs_Object_2264_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Identifier')),u'optional':var.get(u'true')}) + PyJs_Object_2263_ = Js({u'label':PyJs_Object_2264_}) + PyJs_Object_2262_ = Js({u'visitor':Js([Js(u'label')]),u'fields':PyJs_Object_2263_,u'aliases':Js([Js(u'Statement'), Js(u'Terminatorless'), Js(u'CompletionStatement')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ContinueStatement'), PyJs_Object_2262_) + PyJs_Object_2265_ = Js({u'aliases':Js([Js(u'Statement')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'DebuggerStatement'), PyJs_Object_2265_) + PyJs_Object_2268_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2269_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))}) + PyJs_Object_2267_ = Js({u'test':PyJs_Object_2268_,u'body':PyJs_Object_2269_}) + PyJs_Object_2266_ = Js({u'visitor':Js([Js(u'test'), Js(u'body')]),u'fields':PyJs_Object_2267_,u'aliases':Js([Js(u'Statement'), Js(u'BlockParent'), Js(u'Loop'), Js(u'While'), Js(u'Scopable')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'DoWhileStatement'), PyJs_Object_2266_) + PyJs_Object_2270_ = Js({u'aliases':Js([Js(u'Statement')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'EmptyStatement'), PyJs_Object_2270_) + PyJs_Object_2273_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2272_ = Js({u'expression':PyJs_Object_2273_}) + PyJs_Object_2271_ = Js({u'visitor':Js([Js(u'expression')]),u'fields':PyJs_Object_2272_,u'aliases':Js([Js(u'Statement'), Js(u'ExpressionWrapper')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ExpressionStatement'), PyJs_Object_2271_) + PyJs_Object_2276_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Program'))}) + PyJs_Object_2275_ = Js({u'program':PyJs_Object_2276_}) + PyJs_Object_2274_ = Js({u'builder':Js([Js(u'program'), Js(u'comments'), Js(u'tokens')]),u'visitor':Js([Js(u'program')]),u'fields':PyJs_Object_2275_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'File'), PyJs_Object_2274_) + PyJs_Object_2279_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'VariableDeclaration'), Js(u'LVal'))}) + PyJs_Object_2280_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2281_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))}) + PyJs_Object_2278_ = Js({u'left':PyJs_Object_2279_,u'right':PyJs_Object_2280_,u'body':PyJs_Object_2281_}) + PyJs_Object_2277_ = Js({u'visitor':Js([Js(u'left'), Js(u'right'), Js(u'body')]),u'aliases':Js([Js(u'Scopable'), Js(u'Statement'), Js(u'For'), Js(u'BlockParent'), Js(u'Loop'), Js(u'ForXStatement')]),u'fields':PyJs_Object_2278_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ForInStatement'), PyJs_Object_2277_) + PyJs_Object_2284_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'VariableDeclaration'), Js(u'Expression')),u'optional':var.get(u'true')}) + PyJs_Object_2285_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression')),u'optional':var.get(u'true')}) + PyJs_Object_2286_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression')),u'optional':var.get(u'true')}) + PyJs_Object_2287_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))}) + PyJs_Object_2283_ = Js({u'init':PyJs_Object_2284_,u'test':PyJs_Object_2285_,u'update':PyJs_Object_2286_,u'body':PyJs_Object_2287_}) + PyJs_Object_2282_ = Js({u'visitor':Js([Js(u'init'), Js(u'test'), Js(u'update'), Js(u'body')]),u'aliases':Js([Js(u'Scopable'), Js(u'Statement'), Js(u'For'), Js(u'BlockParent'), Js(u'Loop')]),u'fields':PyJs_Object_2283_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ForStatement'), PyJs_Object_2282_) + PyJs_Object_2290_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2291_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'LVal'))))}) + PyJs_Object_2292_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2293_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2294_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2289_ = Js({u'id':PyJs_Object_2290_,u'params':PyJs_Object_2291_,u'body':PyJs_Object_2292_,u'generator':PyJs_Object_2293_,u'async':PyJs_Object_2294_}) + PyJs_Object_2288_ = Js({u'builder':Js([Js(u'id'), Js(u'params'), Js(u'body'), Js(u'generator'), Js(u'async')]),u'visitor':Js([Js(u'id'), Js(u'params'), Js(u'body'), Js(u'returnType'), Js(u'typeParameters')]),u'fields':PyJs_Object_2289_,u'aliases':Js([Js(u'Scopable'), Js(u'Function'), Js(u'BlockParent'), Js(u'FunctionParent'), Js(u'Statement'), Js(u'Pureish'), Js(u'Declaration')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'FunctionDeclaration'), PyJs_Object_2288_) + PyJs_Object_2297_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Identifier')),u'optional':var.get(u'true')}) + PyJs_Object_2298_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'LVal'))))}) + PyJs_Object_2299_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2300_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2301_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2296_ = Js({u'id':PyJs_Object_2297_,u'params':PyJs_Object_2298_,u'body':PyJs_Object_2299_,u'generator':PyJs_Object_2300_,u'async':PyJs_Object_2301_}) + PyJs_Object_2295_ = Js({u'inherits':Js(u'FunctionDeclaration'),u'aliases':Js([Js(u'Scopable'), Js(u'Function'), Js(u'BlockParent'), Js(u'FunctionParent'), Js(u'Expression'), Js(u'Pureish')]),u'fields':PyJs_Object_2296_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'FunctionExpression'), PyJs_Object_2295_) + @Js + def PyJs_validate_2305_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'val':val, u'this':this, u'arguments':arguments, u'key':key, u'validate':PyJs_validate_2305_}, var) + var.registers([u'node', u'val', u'key']) + if var.get(u't').callprop(u'isValidIdentifier', var.get(u'val')).neg(): + pass + PyJs_validate_2305_._set_name(u'validate') + PyJs_Object_2304_ = Js({u'validate':PyJs_validate_2305_}) + PyJs_Object_2306_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Decorator'))))}) + PyJs_Object_2303_ = Js({u'name':PyJs_Object_2304_,u'decorators':PyJs_Object_2306_}) + PyJs_Object_2302_ = Js({u'builder':Js([Js(u'name')]),u'visitor':Js([Js(u'typeAnnotation')]),u'aliases':Js([Js(u'Expression'), Js(u'LVal')]),u'fields':PyJs_Object_2303_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'Identifier'), PyJs_Object_2302_) + PyJs_Object_2309_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2310_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))}) + PyJs_Object_2311_ = Js({u'optional':var.get(u'true'),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))}) + PyJs_Object_2308_ = Js({u'test':PyJs_Object_2309_,u'consequent':PyJs_Object_2310_,u'alternate':PyJs_Object_2311_}) + PyJs_Object_2307_ = Js({u'visitor':Js([Js(u'test'), Js(u'consequent'), Js(u'alternate')]),u'aliases':Js([Js(u'Statement'), Js(u'Conditional')]),u'fields':PyJs_Object_2308_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'IfStatement'), PyJs_Object_2307_) + PyJs_Object_2314_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2315_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))}) + PyJs_Object_2313_ = Js({u'label':PyJs_Object_2314_,u'body':PyJs_Object_2315_}) + PyJs_Object_2312_ = Js({u'visitor':Js([Js(u'label'), Js(u'body')]),u'aliases':Js([Js(u'Statement')]),u'fields':PyJs_Object_2313_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'LabeledStatement'), PyJs_Object_2312_) + PyJs_Object_2318_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'string'))}) + PyJs_Object_2317_ = Js({u'value':PyJs_Object_2318_}) + PyJs_Object_2316_ = Js({u'builder':Js([Js(u'value')]),u'fields':PyJs_Object_2317_,u'aliases':Js([Js(u'Expression'), Js(u'Pureish'), Js(u'Literal'), Js(u'Immutable')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'StringLiteral'), PyJs_Object_2316_) + PyJs_Object_2321_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'number'))}) + PyJs_Object_2320_ = Js({u'value':PyJs_Object_2321_}) + PyJs_Object_2319_ = Js({u'builder':Js([Js(u'value')]),u'deprecatedAlias':Js(u'NumberLiteral'),u'fields':PyJs_Object_2320_,u'aliases':Js([Js(u'Expression'), Js(u'Pureish'), Js(u'Literal'), Js(u'Immutable')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'NumericLiteral'), PyJs_Object_2319_) + PyJs_Object_2322_ = Js({u'aliases':Js([Js(u'Expression'), Js(u'Pureish'), Js(u'Literal'), Js(u'Immutable')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'NullLiteral'), PyJs_Object_2322_) + PyJs_Object_2325_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2324_ = Js({u'value':PyJs_Object_2325_}) + PyJs_Object_2323_ = Js({u'builder':Js([Js(u'value')]),u'fields':PyJs_Object_2324_,u'aliases':Js([Js(u'Expression'), Js(u'Pureish'), Js(u'Literal'), Js(u'Immutable')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'BooleanLiteral'), PyJs_Object_2323_) + PyJs_Object_2328_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'string'))}) + PyJs_Object_2329_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'string')),u'default':Js(u'')}) + PyJs_Object_2327_ = Js({u'pattern':PyJs_Object_2328_,u'flags':PyJs_Object_2329_}) + PyJs_Object_2326_ = Js({u'builder':Js([Js(u'pattern'), Js(u'flags')]),u'deprecatedAlias':Js(u'RegexLiteral'),u'aliases':Js([Js(u'Expression'), Js(u'Literal')]),u'fields':PyJs_Object_2327_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'RegExpLiteral'), PyJs_Object_2326_) + PyJs_Object_2332_ = Js({u'validate':var.get(u'_index2').get(u'assertOneOf').callprop(u'apply', var.get(u'undefined'), var.get(u'_constants').get(u'LOGICAL_OPERATORS'))}) + PyJs_Object_2333_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2334_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2331_ = Js({u'operator':PyJs_Object_2332_,u'left':PyJs_Object_2333_,u'right':PyJs_Object_2334_}) + PyJs_Object_2330_ = Js({u'builder':Js([Js(u'operator'), Js(u'left'), Js(u'right')]),u'visitor':Js([Js(u'left'), Js(u'right')]),u'aliases':Js([Js(u'Binary'), Js(u'Expression')]),u'fields':PyJs_Object_2331_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'LogicalExpression'), PyJs_Object_2330_) + PyJs_Object_2337_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + @Js + def PyJs_validate_2339_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'val':val, u'this':this, u'arguments':arguments, u'key':key, u'validate':PyJs_validate_2339_}, var) + var.registers([u'node', u'expectedType', u'val', u'key']) + var.put(u'expectedType', (Js(u'Expression') if var.get(u'node').get(u'computed') else Js(u'Identifier'))) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(var.get(u'expectedType'))(var.get(u'node'), var.get(u'key'), var.get(u'val')) + PyJs_validate_2339_._set_name(u'validate') + PyJs_Object_2338_ = Js({u'validate':PyJs_validate_2339_}) + PyJs_Object_2340_ = Js({u'default':Js(False)}) + PyJs_Object_2336_ = Js({u'object':PyJs_Object_2337_,u'property':PyJs_Object_2338_,u'computed':PyJs_Object_2340_}) + PyJs_Object_2335_ = Js({u'builder':Js([Js(u'object'), Js(u'property'), Js(u'computed')]),u'visitor':Js([Js(u'object'), Js(u'property')]),u'aliases':Js([Js(u'Expression'), Js(u'LVal')]),u'fields':PyJs_Object_2336_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'MemberExpression'), PyJs_Object_2335_) + PyJs_Object_2343_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2344_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'), Js(u'SpreadElement'))))}) + PyJs_Object_2342_ = Js({u'callee':PyJs_Object_2343_,u'arguments':PyJs_Object_2344_}) + PyJs_Object_2341_ = Js({u'visitor':Js([Js(u'callee'), Js(u'arguments')]),u'aliases':Js([Js(u'Expression')]),u'fields':PyJs_Object_2342_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'NewExpression'), PyJs_Object_2341_) + PyJs_Object_2347_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Directive')))),u'default':Js([])}) + PyJs_Object_2348_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))))}) + PyJs_Object_2346_ = Js({u'directives':PyJs_Object_2347_,u'body':PyJs_Object_2348_}) + PyJs_Object_2345_ = Js({u'visitor':Js([Js(u'directives'), Js(u'body')]),u'builder':Js([Js(u'body'), Js(u'directives')]),u'fields':PyJs_Object_2346_,u'aliases':Js([Js(u'Scopable'), Js(u'BlockParent'), Js(u'Block'), Js(u'FunctionParent')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'Program'), PyJs_Object_2345_) + PyJs_Object_2351_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'ObjectMethod'), Js(u'ObjectProperty'), Js(u'SpreadProperty'))))}) + PyJs_Object_2350_ = Js({u'properties':PyJs_Object_2351_}) + PyJs_Object_2349_ = Js({u'visitor':Js([Js(u'properties')]),u'aliases':Js([Js(u'Expression')]),u'fields':PyJs_Object_2350_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ObjectExpression'), PyJs_Object_2349_) + PyJs_Object_2354_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'string')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertOneOf'))(Js(u'method'), Js(u'get'), Js(u'set'))),u'default':Js(u'method')}) + PyJs_Object_2355_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean')),u'default':Js(False)}) + @Js + def PyJs_validate_2357_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'val':val, u'this':this, u'arguments':arguments, u'key':key, u'validate':PyJs_validate_2357_}, var) + var.registers([u'node', u'val', u'key', u'expectedTypes']) + var.put(u'expectedTypes', (Js([Js(u'Expression')]) if var.get(u'node').get(u'computed') else Js([Js(u'Identifier'), Js(u'StringLiteral'), Js(u'NumericLiteral')]))) + var.get(u'_index2').get(u'assertNodeType').callprop(u'apply', var.get(u'undefined'), var.get(u'expectedTypes'))(var.get(u'node'), var.get(u'key'), var.get(u'val')) + PyJs_validate_2357_._set_name(u'validate') + PyJs_Object_2356_ = Js({u'validate':PyJs_validate_2357_}) + PyJs_Object_2358_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Decorator'))))}) + PyJs_Object_2359_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2360_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2361_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2353_ = Js({u'kind':PyJs_Object_2354_,u'computed':PyJs_Object_2355_,u'key':PyJs_Object_2356_,u'decorators':PyJs_Object_2358_,u'body':PyJs_Object_2359_,u'generator':PyJs_Object_2360_,u'async':PyJs_Object_2361_}) + PyJs_Object_2352_ = Js({u'builder':Js([Js(u'kind'), Js(u'key'), Js(u'params'), Js(u'body'), Js(u'computed')]),u'fields':PyJs_Object_2353_,u'visitor':Js([Js(u'key'), Js(u'params'), Js(u'body'), Js(u'decorators'), Js(u'returnType'), Js(u'typeParameters')]),u'aliases':Js([Js(u'UserWhitespacable'), Js(u'Function'), Js(u'Scopable'), Js(u'BlockParent'), Js(u'FunctionParent'), Js(u'Method'), Js(u'ObjectMember')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ObjectMethod'), PyJs_Object_2352_) + PyJs_Object_2364_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean')),u'default':Js(False)}) + @Js + def PyJs_validate_2366_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'val':val, u'this':this, u'arguments':arguments, u'key':key, u'validate':PyJs_validate_2366_}, var) + var.registers([u'node', u'val', u'key', u'expectedTypes']) + var.put(u'expectedTypes', (Js([Js(u'Expression')]) if var.get(u'node').get(u'computed') else Js([Js(u'Identifier'), Js(u'StringLiteral'), Js(u'NumericLiteral')]))) + var.get(u'_index2').get(u'assertNodeType').callprop(u'apply', var.get(u'undefined'), var.get(u'expectedTypes'))(var.get(u'node'), var.get(u'key'), var.get(u'val')) + PyJs_validate_2366_._set_name(u'validate') + PyJs_Object_2365_ = Js({u'validate':PyJs_validate_2366_}) + PyJs_Object_2367_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2368_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'boolean')),u'default':Js(False)}) + PyJs_Object_2369_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Decorator')))),u'optional':var.get(u'true')}) + PyJs_Object_2363_ = Js({u'computed':PyJs_Object_2364_,u'key':PyJs_Object_2365_,u'value':PyJs_Object_2367_,u'shorthand':PyJs_Object_2368_,u'decorators':PyJs_Object_2369_}) + PyJs_Object_2362_ = Js({u'builder':Js([Js(u'key'), Js(u'value'), Js(u'computed'), Js(u'shorthand'), Js(u'decorators')]),u'fields':PyJs_Object_2363_,u'visitor':Js([Js(u'key'), Js(u'value'), Js(u'decorators')]),u'aliases':Js([Js(u'UserWhitespacable'), Js(u'Property'), Js(u'ObjectMember')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ObjectProperty'), PyJs_Object_2362_) + PyJs_Object_2372_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'LVal'))}) + PyJs_Object_2373_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Decorator'))))}) + PyJs_Object_2371_ = Js({u'argument':PyJs_Object_2372_,u'decorators':PyJs_Object_2373_}) + PyJs_Object_2370_ = Js({u'visitor':Js([Js(u'argument'), Js(u'typeAnnotation')]),u'aliases':Js([Js(u'LVal')]),u'fields':PyJs_Object_2371_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'RestElement'), PyJs_Object_2370_) + PyJs_Object_2376_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression')),u'optional':var.get(u'true')}) + PyJs_Object_2375_ = Js({u'argument':PyJs_Object_2376_}) + PyJs_Object_2374_ = Js({u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'Statement'), Js(u'Terminatorless'), Js(u'CompletionStatement')]),u'fields':PyJs_Object_2375_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ReturnStatement'), PyJs_Object_2374_) + PyJs_Object_2379_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))))}) + PyJs_Object_2378_ = Js({u'expressions':PyJs_Object_2379_}) + PyJs_Object_2377_ = Js({u'visitor':Js([Js(u'expressions')]),u'fields':PyJs_Object_2378_,u'aliases':Js([Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'SequenceExpression'), PyJs_Object_2377_) + PyJs_Object_2382_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression')),u'optional':var.get(u'true')}) + PyJs_Object_2383_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Statement'))))}) + PyJs_Object_2381_ = Js({u'test':PyJs_Object_2382_,u'consequent':PyJs_Object_2383_}) + PyJs_Object_2380_ = Js({u'visitor':Js([Js(u'test'), Js(u'consequent')]),u'fields':PyJs_Object_2381_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'SwitchCase'), PyJs_Object_2380_) + PyJs_Object_2386_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2387_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'SwitchCase'))))}) + PyJs_Object_2385_ = Js({u'discriminant':PyJs_Object_2386_,u'cases':PyJs_Object_2387_}) + PyJs_Object_2384_ = Js({u'visitor':Js([Js(u'discriminant'), Js(u'cases')]),u'aliases':Js([Js(u'Statement'), Js(u'BlockParent'), Js(u'Scopable')]),u'fields':PyJs_Object_2385_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'SwitchStatement'), PyJs_Object_2384_) + PyJs_Object_2388_ = Js({u'aliases':Js([Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ThisExpression'), PyJs_Object_2388_) + PyJs_Object_2391_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2390_ = Js({u'argument':PyJs_Object_2391_}) + PyJs_Object_2389_ = Js({u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'Statement'), Js(u'Terminatorless'), Js(u'CompletionStatement')]),u'fields':PyJs_Object_2390_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'ThrowStatement'), PyJs_Object_2389_) + PyJs_Object_2394_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2395_ = Js({u'optional':var.get(u'true'),u'handler':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2396_ = Js({u'optional':var.get(u'true'),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2393_ = Js({u'body':PyJs_Object_2394_,u'handler':PyJs_Object_2395_,u'finalizer':PyJs_Object_2396_}) + PyJs_Object_2392_ = Js({u'visitor':Js([Js(u'block'), Js(u'handler'), Js(u'finalizer')]),u'aliases':Js([Js(u'Statement')]),u'fields':PyJs_Object_2393_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'TryStatement'), PyJs_Object_2392_) + PyJs_Object_2399_ = Js({u'default':var.get(u'true')}) + PyJs_Object_2400_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2401_ = Js({u'validate':var.get(u'_index2').get(u'assertOneOf').callprop(u'apply', var.get(u'undefined'), var.get(u'_constants').get(u'UNARY_OPERATORS'))}) + PyJs_Object_2398_ = Js({u'prefix':PyJs_Object_2399_,u'argument':PyJs_Object_2400_,u'operator':PyJs_Object_2401_}) + PyJs_Object_2397_ = Js({u'builder':Js([Js(u'operator'), Js(u'argument'), Js(u'prefix')]),u'fields':PyJs_Object_2398_,u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'UnaryLike'), Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'UnaryExpression'), PyJs_Object_2397_) + PyJs_Object_2404_ = Js({u'default':Js(False)}) + PyJs_Object_2405_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2406_ = Js({u'validate':var.get(u'_index2').get(u'assertOneOf').callprop(u'apply', var.get(u'undefined'), var.get(u'_constants').get(u'UPDATE_OPERATORS'))}) + PyJs_Object_2403_ = Js({u'prefix':PyJs_Object_2404_,u'argument':PyJs_Object_2405_,u'operator':PyJs_Object_2406_}) + PyJs_Object_2402_ = Js({u'builder':Js([Js(u'operator'), Js(u'argument'), Js(u'prefix')]),u'fields':PyJs_Object_2403_,u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'UpdateExpression'), PyJs_Object_2402_) + PyJs_Object_2409_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'string')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertOneOf'))(Js(u'var'), Js(u'let'), Js(u'const')))}) + PyJs_Object_2410_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'VariableDeclarator'))))}) + PyJs_Object_2408_ = Js({u'kind':PyJs_Object_2409_,u'declarations':PyJs_Object_2410_}) + PyJs_Object_2407_ = Js({u'builder':Js([Js(u'kind'), Js(u'declarations')]),u'visitor':Js([Js(u'declarations')]),u'aliases':Js([Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2408_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'VariableDeclaration'), PyJs_Object_2407_) + PyJs_Object_2413_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'LVal'))}) + PyJs_Object_2414_ = Js({u'optional':var.get(u'true'),u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2412_ = Js({u'id':PyJs_Object_2413_,u'init':PyJs_Object_2414_}) + PyJs_Object_2411_ = Js({u'visitor':Js([Js(u'id'), Js(u'init')]),u'fields':PyJs_Object_2412_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'VariableDeclarator'), PyJs_Object_2411_) + PyJs_Object_2417_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2418_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'), Js(u'Statement'))}) + PyJs_Object_2416_ = Js({u'test':PyJs_Object_2417_,u'body':PyJs_Object_2418_}) + PyJs_Object_2415_ = Js({u'visitor':Js([Js(u'test'), Js(u'body')]),u'aliases':Js([Js(u'Statement'), Js(u'BlockParent'), Js(u'Loop'), Js(u'While'), Js(u'Scopable')]),u'fields':PyJs_Object_2416_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'WhileStatement'), PyJs_Object_2415_) + PyJs_Object_2421_ = Js({u'object':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2422_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index2').get(u'assertNodeType'))(Js(u'BlockStatement'), Js(u'Statement'))}) + PyJs_Object_2420_ = Js({u'object':PyJs_Object_2421_,u'body':PyJs_Object_2422_}) + PyJs_Object_2419_ = Js({u'visitor':Js([Js(u'object'), Js(u'body')]),u'aliases':Js([Js(u'Statement')]),u'fields':PyJs_Object_2420_}) + PyJsComma(Js(0.0),var.get(u'_index3').get(u'default'))(Js(u'WithStatement'), PyJs_Object_2419_) +PyJs_anonymous_2220_._set_name(u'anonymous') +PyJs_Object_2423_ = Js({u'../constants':Js(247.0),u'../index':Js(258.0),u'./index':Js(253.0)}) +@Js +def PyJs_anonymous_2424_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_index', u'require', u'module', u'_index2', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2425_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2425_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + pass + PyJs_Object_2428_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2429_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2430_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Decorator'))))}) + PyJs_Object_2427_ = Js({u'left':PyJs_Object_2428_,u'right':PyJs_Object_2429_,u'decorators':PyJs_Object_2430_}) + PyJs_Object_2426_ = Js({u'visitor':Js([Js(u'left'), Js(u'right')]),u'aliases':Js([Js(u'Pattern'), Js(u'LVal')]),u'fields':PyJs_Object_2427_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'AssignmentPattern'), PyJs_Object_2426_) + PyJs_Object_2433_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))))}) + PyJs_Object_2434_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Decorator'))))}) + PyJs_Object_2432_ = Js({u'elements':PyJs_Object_2433_,u'decorators':PyJs_Object_2434_}) + PyJs_Object_2431_ = Js({u'visitor':Js([Js(u'elements'), Js(u'typeAnnotation')]),u'aliases':Js([Js(u'Pattern'), Js(u'LVal')]),u'fields':PyJs_Object_2432_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ArrayPattern'), PyJs_Object_2431_) + PyJs_Object_2437_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'LVal'))))}) + PyJs_Object_2438_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'BlockStatement'), Js(u'Expression'))}) + PyJs_Object_2439_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'boolean')),u'default':Js(False)}) + PyJs_Object_2436_ = Js({u'params':PyJs_Object_2437_,u'body':PyJs_Object_2438_,u'async':PyJs_Object_2439_}) + PyJs_Object_2435_ = Js({u'builder':Js([Js(u'params'), Js(u'body'), Js(u'async')]),u'visitor':Js([Js(u'params'), Js(u'body'), Js(u'returnType'), Js(u'typeParameters')]),u'aliases':Js([Js(u'Scopable'), Js(u'Function'), Js(u'BlockParent'), Js(u'FunctionParent'), Js(u'Expression'), Js(u'Pureish')]),u'fields':PyJs_Object_2436_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ArrowFunctionExpression'), PyJs_Object_2435_) + PyJs_Object_2442_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'ClassMethod'), Js(u'ClassProperty'))))}) + PyJs_Object_2441_ = Js({u'body':PyJs_Object_2442_}) + PyJs_Object_2440_ = Js({u'visitor':Js([Js(u'body')]),u'fields':PyJs_Object_2441_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ClassBody'), PyJs_Object_2440_) + PyJs_Object_2445_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2446_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'ClassBody'))}) + PyJs_Object_2447_ = Js({u'optional':var.get(u'true'),u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2448_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Decorator'))))}) + PyJs_Object_2444_ = Js({u'id':PyJs_Object_2445_,u'body':PyJs_Object_2446_,u'superClass':PyJs_Object_2447_,u'decorators':PyJs_Object_2448_}) + PyJs_Object_2443_ = Js({u'builder':Js([Js(u'id'), Js(u'superClass'), Js(u'body'), Js(u'decorators')]),u'visitor':Js([Js(u'id'), Js(u'body'), Js(u'superClass'), Js(u'mixins'), Js(u'typeParameters'), Js(u'superTypeParameters'), Js(u'implements'), Js(u'decorators')]),u'aliases':Js([Js(u'Scopable'), Js(u'Class'), Js(u'Statement'), Js(u'Declaration'), Js(u'Pureish')]),u'fields':PyJs_Object_2444_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ClassDeclaration'), PyJs_Object_2443_) + PyJs_Object_2451_ = Js({u'optional':var.get(u'true'),u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2452_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'ClassBody'))}) + PyJs_Object_2453_ = Js({u'optional':var.get(u'true'),u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2454_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Decorator'))))}) + PyJs_Object_2450_ = Js({u'id':PyJs_Object_2451_,u'body':PyJs_Object_2452_,u'superClass':PyJs_Object_2453_,u'decorators':PyJs_Object_2454_}) + PyJs_Object_2449_ = Js({u'inherits':Js(u'ClassDeclaration'),u'aliases':Js([Js(u'Scopable'), Js(u'Class'), Js(u'Expression'), Js(u'Pureish')]),u'fields':PyJs_Object_2450_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ClassExpression'), PyJs_Object_2449_) + PyJs_Object_2457_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'StringLiteral'))}) + PyJs_Object_2456_ = Js({u'source':PyJs_Object_2457_}) + PyJs_Object_2455_ = Js({u'visitor':Js([Js(u'source')]),u'aliases':Js([Js(u'Statement'), Js(u'Declaration'), Js(u'ModuleDeclaration'), Js(u'ExportDeclaration')]),u'fields':PyJs_Object_2456_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ExportAllDeclaration'), PyJs_Object_2455_) + PyJs_Object_2460_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'FunctionDeclaration'), Js(u'ClassDeclaration'), Js(u'Expression'))}) + PyJs_Object_2459_ = Js({u'declaration':PyJs_Object_2460_}) + PyJs_Object_2458_ = Js({u'visitor':Js([Js(u'declaration')]),u'aliases':Js([Js(u'Statement'), Js(u'Declaration'), Js(u'ModuleDeclaration'), Js(u'ExportDeclaration')]),u'fields':PyJs_Object_2459_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ExportDefaultDeclaration'), PyJs_Object_2458_) + PyJs_Object_2463_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Declaration')),u'optional':var.get(u'true')}) + PyJs_Object_2464_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'ExportSpecifier'))))}) + PyJs_Object_2465_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'StringLiteral')),u'optional':var.get(u'true')}) + PyJs_Object_2462_ = Js({u'declaration':PyJs_Object_2463_,u'specifiers':PyJs_Object_2464_,u'source':PyJs_Object_2465_}) + PyJs_Object_2461_ = Js({u'visitor':Js([Js(u'declaration'), Js(u'specifiers'), Js(u'source')]),u'aliases':Js([Js(u'Statement'), Js(u'Declaration'), Js(u'ModuleDeclaration'), Js(u'ExportDeclaration')]),u'fields':PyJs_Object_2462_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ExportNamedDeclaration'), PyJs_Object_2461_) + PyJs_Object_2468_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2469_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2467_ = Js({u'local':PyJs_Object_2468_,u'exported':PyJs_Object_2469_}) + PyJs_Object_2466_ = Js({u'visitor':Js([Js(u'local'), Js(u'exported')]),u'aliases':Js([Js(u'ModuleSpecifier')]),u'fields':PyJs_Object_2467_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ExportSpecifier'), PyJs_Object_2466_) + PyJs_Object_2472_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'VariableDeclaration'), Js(u'LVal'))}) + PyJs_Object_2473_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2474_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Statement'))}) + PyJs_Object_2471_ = Js({u'left':PyJs_Object_2472_,u'right':PyJs_Object_2473_,u'body':PyJs_Object_2474_}) + PyJs_Object_2470_ = Js({u'visitor':Js([Js(u'left'), Js(u'right'), Js(u'body')]),u'aliases':Js([Js(u'Scopable'), Js(u'Statement'), Js(u'For'), Js(u'BlockParent'), Js(u'Loop'), Js(u'ForXStatement')]),u'fields':PyJs_Object_2471_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ForOfStatement'), PyJs_Object_2470_) + PyJs_Object_2477_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'ImportSpecifier'), Js(u'ImportDefaultSpecifier'), Js(u'ImportNamespaceSpecifier'))))}) + PyJs_Object_2478_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'StringLiteral'))}) + PyJs_Object_2476_ = Js({u'specifiers':PyJs_Object_2477_,u'source':PyJs_Object_2478_}) + PyJs_Object_2475_ = Js({u'visitor':Js([Js(u'specifiers'), Js(u'source')]),u'aliases':Js([Js(u'Statement'), Js(u'Declaration'), Js(u'ModuleDeclaration')]),u'fields':PyJs_Object_2476_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ImportDeclaration'), PyJs_Object_2475_) + PyJs_Object_2481_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2480_ = Js({u'local':PyJs_Object_2481_}) + PyJs_Object_2479_ = Js({u'visitor':Js([Js(u'local')]),u'aliases':Js([Js(u'ModuleSpecifier')]),u'fields':PyJs_Object_2480_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ImportDefaultSpecifier'), PyJs_Object_2479_) + PyJs_Object_2484_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2483_ = Js({u'local':PyJs_Object_2484_}) + PyJs_Object_2482_ = Js({u'visitor':Js([Js(u'local')]),u'aliases':Js([Js(u'ModuleSpecifier')]),u'fields':PyJs_Object_2483_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ImportNamespaceSpecifier'), PyJs_Object_2482_) + PyJs_Object_2487_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2488_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2486_ = Js({u'local':PyJs_Object_2487_,u'imported':PyJs_Object_2488_}) + PyJs_Object_2485_ = Js({u'visitor':Js([Js(u'local'), Js(u'imported')]),u'aliases':Js([Js(u'ModuleSpecifier')]),u'fields':PyJs_Object_2486_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ImportSpecifier'), PyJs_Object_2485_) + PyJs_Object_2491_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'string'))}) + PyJs_Object_2492_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'string'))}) + PyJs_Object_2490_ = Js({u'meta':PyJs_Object_2491_,u'property':PyJs_Object_2492_}) + PyJs_Object_2489_ = Js({u'visitor':Js([Js(u'meta'), Js(u'property')]),u'aliases':Js([Js(u'Expression')]),u'fields':PyJs_Object_2490_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'MetaProperty'), PyJs_Object_2489_) + PyJs_Object_2495_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'string')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertOneOf'))(Js(u'get'), Js(u'set'), Js(u'method'), Js(u'constructor'))),u'default':Js(u'method')}) + PyJs_Object_2496_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2497_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'boolean'))}) + @Js + def PyJs_validate_2499_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'val':val, u'this':this, u'arguments':arguments, u'key':key, u'validate':PyJs_validate_2499_}, var) + var.registers([u'node', u'val', u'key', u'expectedTypes']) + var.put(u'expectedTypes', (Js([Js(u'Expression')]) if var.get(u'node').get(u'computed') else Js([Js(u'Identifier'), Js(u'StringLiteral'), Js(u'NumericLiteral')]))) + var.get(u'_index').get(u'assertNodeType').callprop(u'apply', var.get(u'undefined'), var.get(u'expectedTypes'))(var.get(u'node'), var.get(u'key'), var.get(u'val')) + PyJs_validate_2499_._set_name(u'validate') + PyJs_Object_2498_ = Js({u'validate':PyJs_validate_2499_}) + PyJs_Object_2500_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'LVal'))))}) + PyJs_Object_2501_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2502_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2503_ = Js({u'default':Js(False),u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'boolean'))}) + PyJs_Object_2494_ = Js({u'kind':PyJs_Object_2495_,u'computed':PyJs_Object_2496_,u'static':PyJs_Object_2497_,u'key':PyJs_Object_2498_,u'params':PyJs_Object_2500_,u'body':PyJs_Object_2501_,u'generator':PyJs_Object_2502_,u'async':PyJs_Object_2503_}) + PyJs_Object_2493_ = Js({u'aliases':Js([Js(u'Function'), Js(u'Scopable'), Js(u'BlockParent'), Js(u'FunctionParent'), Js(u'Method')]),u'builder':Js([Js(u'kind'), Js(u'key'), Js(u'params'), Js(u'body'), Js(u'computed'), Js(u'static')]),u'visitor':Js([Js(u'key'), Js(u'params'), Js(u'body'), Js(u'decorators'), Js(u'returnType'), Js(u'typeParameters')]),u'fields':PyJs_Object_2494_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ClassMethod'), PyJs_Object_2493_) + PyJs_Object_2506_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'RestProperty'), Js(u'Property'))))}) + PyJs_Object_2507_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Decorator'))))}) + PyJs_Object_2505_ = Js({u'properties':PyJs_Object_2506_,u'decorators':PyJs_Object_2507_}) + PyJs_Object_2504_ = Js({u'visitor':Js([Js(u'properties'), Js(u'typeAnnotation')]),u'aliases':Js([Js(u'Pattern'), Js(u'LVal')]),u'fields':PyJs_Object_2505_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ObjectPattern'), PyJs_Object_2504_) + PyJs_Object_2510_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2509_ = Js({u'argument':PyJs_Object_2510_}) + PyJs_Object_2508_ = Js({u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'UnaryLike')]),u'fields':PyJs_Object_2509_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'SpreadElement'), PyJs_Object_2508_) + PyJs_Object_2511_ = Js({u'aliases':Js([Js(u'Expression')])}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'Super'), PyJs_Object_2511_) + PyJs_Object_2514_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2515_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'TemplateLiteral'))}) + PyJs_Object_2513_ = Js({u'tag':PyJs_Object_2514_,u'quasi':PyJs_Object_2515_}) + PyJs_Object_2512_ = Js({u'visitor':Js([Js(u'tag'), Js(u'quasi')]),u'aliases':Js([Js(u'Expression')]),u'fields':PyJs_Object_2513_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TaggedTemplateExpression'), PyJs_Object_2512_) + PyJs_Object_2518_ = Js({}) + PyJs_Object_2519_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'boolean')),u'default':Js(False)}) + PyJs_Object_2517_ = Js({u'value':PyJs_Object_2518_,u'tail':PyJs_Object_2519_}) + PyJs_Object_2516_ = Js({u'builder':Js([Js(u'value'), Js(u'tail')]),u'fields':PyJs_Object_2517_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TemplateElement'), PyJs_Object_2516_) + PyJs_Object_2522_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'TemplateElement'))))}) + PyJs_Object_2523_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'chain'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'array')), PyJsComma(Js(0.0),var.get(u'_index').get(u'assertEach'))(PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))))}) + PyJs_Object_2521_ = Js({u'quasis':PyJs_Object_2522_,u'expressions':PyJs_Object_2523_}) + PyJs_Object_2520_ = Js({u'visitor':Js([Js(u'quasis'), Js(u'expressions')]),u'aliases':Js([Js(u'Expression'), Js(u'Literal')]),u'fields':PyJs_Object_2521_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TemplateLiteral'), PyJs_Object_2520_) + PyJs_Object_2526_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'boolean')),u'default':Js(False)}) + PyJs_Object_2527_ = Js({u'optional':var.get(u'true'),u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2525_ = Js({u'delegate':PyJs_Object_2526_,u'argument':PyJs_Object_2527_}) + PyJs_Object_2524_ = Js({u'builder':Js([Js(u'argument'), Js(u'delegate')]),u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'Expression'), Js(u'Terminatorless')]),u'fields':PyJs_Object_2525_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'YieldExpression'), PyJs_Object_2524_) +PyJs_anonymous_2424_._set_name(u'anonymous') +PyJs_Object_2528_ = Js({u'./index':Js(253.0)}) +@Js +def PyJs_anonymous_2529_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_index', u'require', u'module', u'_index2', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2530_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2530_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + pass + PyJs_Object_2533_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2532_ = Js({u'argument':PyJs_Object_2533_}) + PyJs_Object_2531_ = Js({u'builder':Js([Js(u'argument')]),u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'Expression'), Js(u'Terminatorless')]),u'fields':PyJs_Object_2532_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'AwaitExpression'), PyJs_Object_2531_) + PyJs_Object_2536_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'VariableDeclaration'), Js(u'LVal'))}) + PyJs_Object_2537_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2538_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Statement'))}) + PyJs_Object_2535_ = Js({u'left':PyJs_Object_2536_,u'right':PyJs_Object_2537_,u'body':PyJs_Object_2538_}) + PyJs_Object_2534_ = Js({u'visitor':Js([Js(u'left'), Js(u'right'), Js(u'body')]),u'aliases':Js([Js(u'Scopable'), Js(u'Statement'), Js(u'For'), Js(u'BlockParent'), Js(u'Loop'), Js(u'ForXStatement')]),u'fields':PyJs_Object_2535_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ForAwaitStatement'), PyJs_Object_2534_) + PyJs_Object_2540_ = Js({}) + PyJs_Object_2539_ = Js({u'visitor':Js([Js(u'object'), Js(u'callee')]),u'aliases':Js([Js(u'Expression')]),u'fields':PyJs_Object_2540_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'BindExpression'), PyJs_Object_2539_) + PyJs_Object_2543_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2542_ = Js({u'expression':PyJs_Object_2543_}) + PyJs_Object_2541_ = Js({u'visitor':Js([Js(u'expression')]),u'fields':PyJs_Object_2542_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'Decorator'), PyJs_Object_2541_) + PyJs_Object_2546_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'BlockStatement'))}) + PyJs_Object_2545_ = Js({u'body':PyJs_Object_2546_}) + PyJs_Object_2544_ = Js({u'visitor':Js([Js(u'body')]),u'aliases':Js([Js(u'Expression')]),u'fields':PyJs_Object_2545_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'DoExpression'), PyJs_Object_2544_) + PyJs_Object_2549_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2548_ = Js({u'exported':PyJs_Object_2549_}) + PyJs_Object_2547_ = Js({u'visitor':Js([Js(u'exported')]),u'aliases':Js([Js(u'ModuleSpecifier')]),u'fields':PyJs_Object_2548_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ExportDefaultSpecifier'), PyJs_Object_2547_) + PyJs_Object_2552_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Identifier'))}) + PyJs_Object_2551_ = Js({u'exported':PyJs_Object_2552_}) + PyJs_Object_2550_ = Js({u'visitor':Js([Js(u'exported')]),u'aliases':Js([Js(u'ModuleSpecifier')]),u'fields':PyJs_Object_2551_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ExportNamespaceSpecifier'), PyJs_Object_2550_) + PyJs_Object_2555_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'LVal'))}) + PyJs_Object_2554_ = Js({u'argument':PyJs_Object_2555_}) + PyJs_Object_2553_ = Js({u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'UnaryLike')]),u'fields':PyJs_Object_2554_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'RestProperty'), PyJs_Object_2553_) + PyJs_Object_2558_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertNodeType'))(Js(u'Expression'))}) + PyJs_Object_2557_ = Js({u'argument':PyJs_Object_2558_}) + PyJs_Object_2556_ = Js({u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'UnaryLike')]),u'fields':PyJs_Object_2557_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'SpreadProperty'), PyJs_Object_2556_) +PyJs_anonymous_2529_._set_name(u'anonymous') +PyJs_Object_2559_ = Js({u'./index':Js(253.0)}) +@Js +def PyJs_anonymous_2560_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_index', u'require', u'module', u'_index2', u'_interopRequireDefault']) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2561_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2561_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + Js(u'use strict') + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u'_index2', var.get(u'_interopRequireDefault')(var.get(u'_index'))) + pass + PyJs_Object_2563_ = Js({}) + PyJs_Object_2562_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')]),u'fields':PyJs_Object_2563_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'AnyTypeAnnotation'), PyJs_Object_2562_) + PyJs_Object_2565_ = Js({}) + PyJs_Object_2564_ = Js({u'visitor':Js([Js(u'elementType')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2565_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ArrayTypeAnnotation'), PyJs_Object_2564_) + PyJs_Object_2567_ = Js({}) + PyJs_Object_2566_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')]),u'fields':PyJs_Object_2567_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'BooleanTypeAnnotation'), PyJs_Object_2566_) + PyJs_Object_2569_ = Js({}) + PyJs_Object_2568_ = Js({u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2569_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'BooleanLiteralTypeAnnotation'), PyJs_Object_2568_) + PyJs_Object_2571_ = Js({}) + PyJs_Object_2570_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')]),u'fields':PyJs_Object_2571_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'NullLiteralTypeAnnotation'), PyJs_Object_2570_) + PyJs_Object_2573_ = Js({}) + PyJs_Object_2572_ = Js({u'visitor':Js([Js(u'id'), Js(u'typeParameters')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2573_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ClassImplements'), PyJs_Object_2572_) + PyJs_Object_2576_ = Js({u'validate':PyJsComma(Js(0.0),var.get(u'_index').get(u'assertValueType'))(Js(u'boolean')),u'default':Js(False)}) + PyJs_Object_2575_ = Js({u'computed':PyJs_Object_2576_}) + PyJs_Object_2574_ = Js({u'visitor':Js([Js(u'key'), Js(u'value'), Js(u'typeAnnotation'), Js(u'decorators')]),u'builder':Js([Js(u'key'), Js(u'value'), Js(u'typeAnnotation'), Js(u'decorators'), Js(u'computed')]),u'aliases':Js([Js(u'Property')]),u'fields':PyJs_Object_2575_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ClassProperty'), PyJs_Object_2574_) + PyJs_Object_2578_ = Js({}) + PyJs_Object_2577_ = Js({u'visitor':Js([Js(u'id'), Js(u'typeParameters'), Js(u'extends'), Js(u'body')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2578_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'DeclareClass'), PyJs_Object_2577_) + PyJs_Object_2580_ = Js({}) + PyJs_Object_2579_ = Js({u'visitor':Js([Js(u'id')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2580_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'DeclareFunction'), PyJs_Object_2579_) + PyJs_Object_2582_ = Js({}) + PyJs_Object_2581_ = Js({u'visitor':Js([Js(u'id'), Js(u'typeParameters'), Js(u'extends'), Js(u'body')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2582_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'DeclareInterface'), PyJs_Object_2581_) + PyJs_Object_2584_ = Js({}) + PyJs_Object_2583_ = Js({u'visitor':Js([Js(u'id'), Js(u'body')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2584_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'DeclareModule'), PyJs_Object_2583_) + PyJs_Object_2586_ = Js({}) + PyJs_Object_2585_ = Js({u'visitor':Js([Js(u'typeAnnotation')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2586_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'DeclareModuleExports'), PyJs_Object_2585_) + PyJs_Object_2588_ = Js({}) + PyJs_Object_2587_ = Js({u'visitor':Js([Js(u'id'), Js(u'typeParameters'), Js(u'right')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2588_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'DeclareTypeAlias'), PyJs_Object_2587_) + PyJs_Object_2590_ = Js({}) + PyJs_Object_2589_ = Js({u'visitor':Js([Js(u'id')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2590_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'DeclareVariable'), PyJs_Object_2589_) + PyJs_Object_2591_ = Js({u'aliases':Js([Js(u'Flow')])}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ExistentialTypeParam'), PyJs_Object_2591_) + PyJs_Object_2593_ = Js({}) + PyJs_Object_2592_ = Js({u'visitor':Js([Js(u'typeParameters'), Js(u'params'), Js(u'rest'), Js(u'returnType')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2593_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'FunctionTypeAnnotation'), PyJs_Object_2592_) + PyJs_Object_2595_ = Js({}) + PyJs_Object_2594_ = Js({u'visitor':Js([Js(u'name'), Js(u'typeAnnotation')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2595_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'FunctionTypeParam'), PyJs_Object_2594_) + PyJs_Object_2597_ = Js({}) + PyJs_Object_2596_ = Js({u'visitor':Js([Js(u'id'), Js(u'typeParameters')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2597_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'GenericTypeAnnotation'), PyJs_Object_2596_) + PyJs_Object_2599_ = Js({}) + PyJs_Object_2598_ = Js({u'visitor':Js([Js(u'id'), Js(u'typeParameters')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2599_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'InterfaceExtends'), PyJs_Object_2598_) + PyJs_Object_2601_ = Js({}) + PyJs_Object_2600_ = Js({u'visitor':Js([Js(u'id'), Js(u'typeParameters'), Js(u'extends'), Js(u'body')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2601_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'InterfaceDeclaration'), PyJs_Object_2600_) + PyJs_Object_2603_ = Js({}) + PyJs_Object_2602_ = Js({u'visitor':Js([Js(u'types')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2603_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'IntersectionTypeAnnotation'), PyJs_Object_2602_) + PyJs_Object_2604_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')])}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'MixedTypeAnnotation'), PyJs_Object_2604_) + PyJs_Object_2605_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')])}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'EmptyTypeAnnotation'), PyJs_Object_2605_) + PyJs_Object_2607_ = Js({}) + PyJs_Object_2606_ = Js({u'visitor':Js([Js(u'typeAnnotation')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2607_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'NullableTypeAnnotation'), PyJs_Object_2606_) + PyJs_Object_2609_ = Js({}) + PyJs_Object_2608_ = Js({u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2609_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'NumericLiteralTypeAnnotation'), PyJs_Object_2608_) + PyJs_Object_2611_ = Js({}) + PyJs_Object_2610_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')]),u'fields':PyJs_Object_2611_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'NumberTypeAnnotation'), PyJs_Object_2610_) + PyJs_Object_2613_ = Js({}) + PyJs_Object_2612_ = Js({u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2613_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'StringLiteralTypeAnnotation'), PyJs_Object_2612_) + PyJs_Object_2615_ = Js({}) + PyJs_Object_2614_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')]),u'fields':PyJs_Object_2615_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'StringTypeAnnotation'), PyJs_Object_2614_) + PyJs_Object_2617_ = Js({}) + PyJs_Object_2616_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')]),u'fields':PyJs_Object_2617_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ThisTypeAnnotation'), PyJs_Object_2616_) + PyJs_Object_2619_ = Js({}) + PyJs_Object_2618_ = Js({u'visitor':Js([Js(u'types')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2619_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TupleTypeAnnotation'), PyJs_Object_2618_) + PyJs_Object_2621_ = Js({}) + PyJs_Object_2620_ = Js({u'visitor':Js([Js(u'argument')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2621_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TypeofTypeAnnotation'), PyJs_Object_2620_) + PyJs_Object_2623_ = Js({}) + PyJs_Object_2622_ = Js({u'visitor':Js([Js(u'id'), Js(u'typeParameters'), Js(u'right')]),u'aliases':Js([Js(u'Flow'), Js(u'FlowDeclaration'), Js(u'Statement'), Js(u'Declaration')]),u'fields':PyJs_Object_2623_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TypeAlias'), PyJs_Object_2622_) + PyJs_Object_2625_ = Js({}) + PyJs_Object_2624_ = Js({u'visitor':Js([Js(u'typeAnnotation')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2625_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TypeAnnotation'), PyJs_Object_2624_) + PyJs_Object_2627_ = Js({}) + PyJs_Object_2626_ = Js({u'visitor':Js([Js(u'expression'), Js(u'typeAnnotation')]),u'aliases':Js([Js(u'Flow'), Js(u'ExpressionWrapper'), Js(u'Expression')]),u'fields':PyJs_Object_2627_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TypeCastExpression'), PyJs_Object_2626_) + PyJs_Object_2629_ = Js({}) + PyJs_Object_2628_ = Js({u'visitor':Js([Js(u'bound')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2629_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TypeParameter'), PyJs_Object_2628_) + PyJs_Object_2631_ = Js({}) + PyJs_Object_2630_ = Js({u'visitor':Js([Js(u'params')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2631_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TypeParameterDeclaration'), PyJs_Object_2630_) + PyJs_Object_2633_ = Js({}) + PyJs_Object_2632_ = Js({u'visitor':Js([Js(u'params')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2633_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'TypeParameterInstantiation'), PyJs_Object_2632_) + PyJs_Object_2635_ = Js({}) + PyJs_Object_2634_ = Js({u'visitor':Js([Js(u'properties'), Js(u'indexers'), Js(u'callProperties')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2635_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ObjectTypeAnnotation'), PyJs_Object_2634_) + PyJs_Object_2637_ = Js({}) + PyJs_Object_2636_ = Js({u'visitor':Js([Js(u'value')]),u'aliases':Js([Js(u'Flow'), Js(u'UserWhitespacable')]),u'fields':PyJs_Object_2637_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ObjectTypeCallProperty'), PyJs_Object_2636_) + PyJs_Object_2639_ = Js({}) + PyJs_Object_2638_ = Js({u'visitor':Js([Js(u'id'), Js(u'key'), Js(u'value')]),u'aliases':Js([Js(u'Flow'), Js(u'UserWhitespacable')]),u'fields':PyJs_Object_2639_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ObjectTypeIndexer'), PyJs_Object_2638_) + PyJs_Object_2641_ = Js({}) + PyJs_Object_2640_ = Js({u'visitor':Js([Js(u'key'), Js(u'value')]),u'aliases':Js([Js(u'Flow'), Js(u'UserWhitespacable')]),u'fields':PyJs_Object_2641_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'ObjectTypeProperty'), PyJs_Object_2640_) + PyJs_Object_2643_ = Js({}) + PyJs_Object_2642_ = Js({u'visitor':Js([Js(u'id'), Js(u'qualification')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2643_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'QualifiedTypeIdentifier'), PyJs_Object_2642_) + PyJs_Object_2645_ = Js({}) + PyJs_Object_2644_ = Js({u'visitor':Js([Js(u'types')]),u'aliases':Js([Js(u'Flow')]),u'fields':PyJs_Object_2645_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'UnionTypeAnnotation'), PyJs_Object_2644_) + PyJs_Object_2647_ = Js({}) + PyJs_Object_2646_ = Js({u'aliases':Js([Js(u'Flow'), Js(u'FlowBaseAnnotation')]),u'fields':PyJs_Object_2647_}) + PyJsComma(Js(0.0),var.get(u'_index2').get(u'default'))(Js(u'VoidTypeAnnotation'), PyJs_Object_2646_) +PyJs_anonymous_2560_._set_name(u'anonymous') +PyJs_Object_2648_ = Js({u'./index':Js(253.0)}) +@Js +def PyJs_anonymous_2649_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'chain', u'BUILDER_KEYS', u'defineType', u'assertNodeOrValueType', u'module', u'_interopRequireDefault', u'_getIterator2', u'_getIterator3', u'assertEach', u'_typeof2', u'_typeof3', u'VISITOR_KEYS', u'NODE_FIELDS', u'assertOneOf', u'store', u'DEPRECATED_KEYS', u'exports', u'_stringify2', u'assertNodeType', u'_interopRequireWildcard', u'ALIAS_KEYS', u'getType', u'_index', u'require', u'assertValueType', u'_stringify', u't']) + @Js + def PyJsHoisted_assertNodeType_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'validate', u'_len2', u'types', u'_key2']) + @Js + def PyJsHoisted_validate_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'val':val, u'key':key, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'key', u'val', u'valid', u'_i', u'_ref', u'type']) + var.put(u'valid', Js(False)) + #for JS loop + var.put(u'_iterator', var.get(u'types')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'type', var.get(u'_ref')) + if var.get(u't').callprop(u'is', var.get(u'type'), var.get(u'val')): + var.put(u'valid', var.get(u'true')) + break + + if var.get(u'valid').neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((((((((Js(u'Property ')+var.get(u'key'))+Js(u' of '))+var.get(u'node').get(u'type'))+Js(u' expected node to be of a type '))+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'types')))+Js(u' '))+(Js(u'but instead got ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))((var.get(u'val') and var.get(u'val').get(u'type'))))))) + raise PyJsTempException + PyJsHoisted_validate_.func_name = u'validate' + var.put(u'validate', PyJsHoisted_validate_) + #for JS loop + var.put(u'_len2', var.get(u'arguments').get(u'length')) + var.put(u'types', var.get(u'Array')(var.get(u'_len2'))) + var.put(u'_key2', Js(0.0)) + while (var.get(u'_key2')=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'fn', var.get(u'_ref3')) + var.get(u'fn').callprop(u'apply', var.get(u'undefined'), var.get(u'arguments')) + + PyJsHoisted_validate_.func_name = u'validate' + var.put(u'validate', PyJsHoisted_validate_) + #for JS loop + var.put(u'_len4', var.get(u'arguments').get(u'length')) + var.put(u'fns', var.get(u'Array')(var.get(u'_len4'))) + var.put(u'_key4', Js(0.0)) + while (var.get(u'_key4')=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'type', var.get(u'_ref2')) + if (PyJsStrictEq(var.get(u'getType')(var.get(u'val')),var.get(u'type')) or var.get(u't').callprop(u'is', var.get(u'type'), var.get(u'val'))): + var.put(u'valid', var.get(u'true')) + break + + if var.get(u'valid').neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((((((((Js(u'Property ')+var.get(u'key'))+Js(u' of '))+var.get(u'node').get(u'type'))+Js(u' expected node to be of a type '))+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'types')))+Js(u' '))+(Js(u'but instead got ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))((var.get(u'val') and var.get(u'val').get(u'type'))))))) + raise PyJsTempException + PyJsHoisted_validate_.func_name = u'validate' + var.put(u'validate', PyJsHoisted_validate_) + #for JS loop + var.put(u'_len3', var.get(u'arguments').get(u'length')) + var.put(u'types', var.get(u'Array')(var.get(u'_len3'))) + var.put(u'_key3', Js(0.0)) + while (var.get(u'_key3')Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_2657_)) + PyJs_Object_2658_ = Js({}) + var.put(u'inherits', ((var.get(u'opts').get(u'inherits') and var.get(u'store').get(var.get(u'opts').get(u'inherits'))) or PyJs_Object_2658_)) + PyJs_Object_2659_ = Js({}) + var.get(u'opts').put(u'fields', ((var.get(u'opts').get(u'fields') or var.get(u'inherits').get(u'fields')) or PyJs_Object_2659_)) + var.get(u'opts').put(u'visitor', ((var.get(u'opts').get(u'visitor') or var.get(u'inherits').get(u'visitor')) or Js([]))) + var.get(u'opts').put(u'aliases', ((var.get(u'opts').get(u'aliases') or var.get(u'inherits').get(u'aliases')) or Js([]))) + var.get(u'opts').put(u'builder', (((var.get(u'opts').get(u'builder') or var.get(u'inherits').get(u'builder')) or var.get(u'opts').get(u'visitor')) or Js([]))) + if var.get(u'opts').get(u'deprecatedAlias'): + var.get(u'DEPRECATED_KEYS').put(var.get(u'opts').get(u'deprecatedAlias'), var.get(u'type')) + #for JS loop + var.put(u'_iterator4', var.get(u'opts').get(u'visitor').callprop(u'concat', var.get(u'opts').get(u'builder'))) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i4').get(u'value')) + var.put(u'_key5', var.get(u'_ref4')) + PyJs_Object_2660_ = Js({}) + var.get(u'opts').get(u'fields').put(var.get(u'_key5'), (var.get(u'opts').get(u'fields').get(var.get(u'_key5')) or PyJs_Object_2660_)) + + for PyJsTemp in var.get(u'opts').get(u'fields'): + var.put(u'key', PyJsTemp) + var.put(u'field', var.get(u'opts').get(u'fields').get(var.get(u'key'))) + if PyJsStrictEq(var.get(u'opts').get(u'builder').callprop(u'indexOf', var.get(u'key')),(-Js(1.0))): + var.get(u'field').put(u'optional', var.get(u'true')) + if PyJsStrictEq(var.get(u'field').get(u'default'),var.get(u'undefined')): + var.get(u'field').put(u'default', var.get(u"null")) + else: + if var.get(u'field').get(u'validate').neg(): + var.get(u'field').put(u'validate', var.get(u'assertValueType')(var.get(u'getType')(var.get(u'field').get(u'default')))) + var.get(u'VISITOR_KEYS').put(var.get(u'type'), var.get(u'opts').get(u'visitor')) + var.get(u'BUILDER_KEYS').put(var.get(u'type'), var.get(u'opts').get(u'builder')) + var.get(u'NODE_FIELDS').put(var.get(u'type'), var.get(u'opts').get(u'fields')) + var.get(u'ALIAS_KEYS').put(var.get(u'type'), var.get(u'opts').get(u'aliases')) + var.get(u'store').put(var.get(u'type'), var.get(u'opts')) + PyJsHoisted_defineType_.func_name = u'defineType' + var.put(u'defineType', PyJsHoisted_defineType_) + @Js + def PyJsHoisted_assertEach_(callback, this, arguments, var=var): + var = Scope({u'this':this, u'callback':callback, u'arguments':arguments}, var) + var.registers([u'callback', u'validator']) + @Js + def PyJsHoisted_validator_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'val':val, u'key':key, u'arguments':arguments}, var) + var.registers([u'i', u'node', u'val', u'key']) + if var.get(u'Array').callprop(u'isArray', var.get(u'val')).neg(): + return var.get('undefined') + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(0.0)): + continue + if var.get(u't').callprop(u'isAnyTypeAnnotation', var.get(u'node')): + return Js([var.get(u'node')]) + if var.get(u't').callprop(u'isFlowBaseAnnotation', var.get(u'node')): + var.get(u'bases').put(var.get(u'node').get(u'type'), var.get(u'node')) + continue + if var.get(u't').callprop(u'isUnionTypeAnnotation', var.get(u'node')): + if (var.get(u'typeGroups').callprop(u'indexOf', var.get(u'node').get(u'types'))=var.get(u'_iterator5').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator5').get((var.put(u'_i5',Js(var.get(u'_i5').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i5', var.get(u'_iterator5').callprop(u'next')) + if var.get(u'_i5').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i5').get(u'value')) + var.put(u'_key2', var.get(u'_ref5')) + if (var.get(u'child').get(var.get(u'_key2'))==var.get(u"null")): + var.get(u'child').put(var.get(u'_key2'), var.get(u'parent').get(var.get(u'_key2'))) + + for PyJsTemp in var.get(u'parent'): + var.put(u'key', PyJsTemp) + if PyJsStrictEq(var.get(u'key').get(u'0'),Js(u'_')): + var.get(u'child').put(var.get(u'key'), var.get(u'parent').get(var.get(u'key'))) + #for JS loop + var.put(u'_iterator6', var.get(u't').get(u'INHERIT_KEYS').get(u'force')) + var.put(u'_isArray6', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator6'))) + var.put(u'_i6', Js(0.0)) + var.put(u'_iterator6', (var.get(u'_iterator6') if var.get(u'_isArray6') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator6')))) + while 1: + pass + if var.get(u'_isArray6'): + if (var.get(u'_i6')>=var.get(u'_iterator6').get(u'length')): + break + var.put(u'_ref6', var.get(u'_iterator6').get((var.put(u'_i6',Js(var.get(u'_i6').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i6', var.get(u'_iterator6').callprop(u'next')) + if var.get(u'_i6').get(u'done'): + break + var.put(u'_ref6', var.get(u'_i6').get(u'value')) + var.put(u'_key3', var.get(u'_ref6')) + var.get(u'child').put(var.get(u'_key3'), var.get(u'parent').get(var.get(u'_key3'))) + + var.get(u't').callprop(u'inheritsComments', var.get(u'child'), var.get(u'parent')) + return var.get(u'child') + PyJsHoisted_inherits_.func_name = u'inherits' + var.put(u'inherits', PyJsHoisted_inherits_) + @Js + def PyJsHoisted_buildMatchMemberExpression_(match, allowPartial, this, arguments, var=var): + var = Scope({u'this':this, u'allowPartial':allowPartial, u'match':match, u'arguments':arguments}, var) + var.registers([u'parts', u'allowPartial', u'match']) + var.put(u'parts', var.get(u'match').callprop(u'split', Js(u'.'))) + @Js + def PyJs_anonymous_2823_(member, this, arguments, var=var): + var = Scope({u'member':member, u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'node', u'search', u'member']) + if var.get(u't').callprop(u'isMemberExpression', var.get(u'member')).neg(): + return Js(False) + var.put(u'search', Js([var.get(u'member')])) + var.put(u'i', Js(0.0)) + while var.get(u'search').get(u'length'): + var.put(u'node', var.get(u'search').callprop(u'shift')) + if (var.get(u'allowPartial') and PyJsStrictEq(var.get(u'i'),var.get(u'parts').get(u'length'))): + return var.get(u'true') + if var.get(u't').callprop(u'isIdentifier', var.get(u'node')): + if PyJsStrictNeq(var.get(u'parts').get(var.get(u'i')),var.get(u'node').get(u'name')): + return Js(False) + else: + if var.get(u't').callprop(u'isStringLiteral', var.get(u'node')): + if PyJsStrictNeq(var.get(u'parts').get(var.get(u'i')),var.get(u'node').get(u'value')): + return Js(False) + else: + if var.get(u't').callprop(u'isMemberExpression', var.get(u'node')): + if (var.get(u'node').get(u'computed') and var.get(u't').callprop(u'isStringLiteral', var.get(u'node').get(u'property')).neg()): + return Js(False) + else: + var.get(u'search').callprop(u'push', var.get(u'node').get(u'object')) + var.get(u'search').callprop(u'push', var.get(u'node').get(u'property')) + continue + else: + return Js(False) + if (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))>var.get(u'parts').get(u'length')): + return Js(False) + return var.get(u'true') + PyJs_anonymous_2823_._set_name(u'anonymous') + return PyJs_anonymous_2823_ + PyJsHoisted_buildMatchMemberExpression_.func_name = u'buildMatchMemberExpression' + var.put(u'buildMatchMemberExpression', PyJsHoisted_buildMatchMemberExpression_) + @Js + def PyJsHoisted_cloneDeep_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'newNode', u'val', u'key']) + PyJs_Object_2822_ = Js({}) + var.put(u'newNode', PyJs_Object_2822_) + for PyJsTemp in var.get(u'node'): + var.put(u'key', PyJsTemp) + if PyJsStrictEq(var.get(u'key').get(u'0'),Js(u'_')): + continue + var.put(u'val', var.get(u'node').get(var.get(u'key'))) + if var.get(u'val'): + if var.get(u'val').get(u'type'): + var.put(u'val', var.get(u't').callprop(u'cloneDeep', var.get(u'val'))) + else: + if var.get(u'Array').callprop(u'isArray', var.get(u'val')): + var.put(u'val', var.get(u'val').callprop(u'map', var.get(u't').get(u'cloneDeep'))) + var.get(u'newNode').put(var.get(u'key'), var.get(u'val')) + return var.get(u'newNode') + PyJsHoisted_cloneDeep_.func_name = u'cloneDeep' + var.put(u'cloneDeep', PyJsHoisted_cloneDeep_) + @Js + def PyJsHoisted_is_(type, node, opts, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'type':type, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'matches', u'node', u'type', u'opts']) + if var.get(u'node').neg(): + return Js(False) + var.put(u'matches', var.get(u'isType')(var.get(u'node').get(u'type'), var.get(u'type'))) + if var.get(u'matches').neg(): + return Js(False) + if PyJsStrictEq(var.get(u'opts',throw=False).typeof(),Js(u'undefined')): + return var.get(u'true') + else: + return var.get(u't').callprop(u'shallowEqual', var.get(u'node'), var.get(u'opts')) + PyJsHoisted_is_.func_name = u'is' + var.put(u'is', PyJsHoisted_is_) + @Js + def PyJsHoisted_inheritTrailingComments_(child, parent, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'parent':parent, u'child':child}, var) + var.registers([u'parent', u'child']) + var.get(u'_inheritComments')(Js(u'trailingComments'), var.get(u'child'), var.get(u'parent')) + PyJsHoisted_inheritTrailingComments_.func_name = u'inheritTrailingComments' + var.put(u'inheritTrailingComments', PyJsHoisted_inheritTrailingComments_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2809_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2809_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_isType_(nodeType, targetType, this, arguments, var=var): + var = Scope({u'this':this, u'targetType':targetType, u'nodeType':nodeType, u'arguments':arguments}, var) + var.registers([u'targetType', u'_isArray', u'_iterator', u'alias', u'_i', u'nodeType', u'_ref', u'aliases']) + if PyJsStrictEq(var.get(u'nodeType'),var.get(u'targetType')): + return var.get(u'true') + if var.get(u't').get(u'ALIAS_KEYS').get(var.get(u'targetType')): + return Js(False) + var.put(u'aliases', var.get(u't').get(u'FLIPPED_ALIAS_KEYS').get(var.get(u'targetType'))) + if var.get(u'aliases'): + if PyJsStrictEq(var.get(u'aliases').get(u'0'),var.get(u'nodeType')): + return var.get(u'true') + #for JS loop + var.put(u'_iterator', var.get(u'aliases')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'alias', var.get(u'_ref')) + if PyJsStrictEq(var.get(u'nodeType'),var.get(u'alias')): + return var.get(u'true') + + return Js(False) + PyJsHoisted_isType_.func_name = u'isType' + var.put(u'isType', PyJsHoisted_isType_) + @Js + def PyJsHoisted_shallowEqual_(actual, expected, this, arguments, var=var): + var = Scope({u'expected':expected, u'this':this, u'actual':actual, u'arguments':arguments}, var) + var.registers([u'_isArray3', u'keys', u'_ref3', u'_i3', u'key', u'expected', u'actual', u'_iterator3']) + var.put(u'keys', PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u'expected'))) + #for JS loop + var.put(u'_iterator3', var.get(u'keys')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator3')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'key', var.get(u'_ref3')) + if PyJsStrictNeq(var.get(u'actual').get(var.get(u'key')),var.get(u'expected').get(var.get(u'key'))): + return Js(False) + + return var.get(u'true') + PyJsHoisted_shallowEqual_.func_name = u'shallowEqual' + var.put(u'shallowEqual', PyJsHoisted_shallowEqual_) + @Js + def PyJsHoisted_inheritInnerComments_(child, parent, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'parent':parent, u'child':child}, var) + var.registers([u'parent', u'child']) + var.get(u'_inheritComments')(Js(u'innerComments'), var.get(u'child'), var.get(u'parent')) + PyJsHoisted_inheritInnerComments_.func_name = u'inheritInnerComments' + var.put(u'inheritInnerComments', PyJsHoisted_inheritInnerComments_) + @Js + def PyJsHoisted_ensureBlock_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'key']) + var.put(u'key', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else Js(u'body'))) + return var.get(u'node').put(var.get(u'key'), var.get(u't').callprop(u'toBlock', var.get(u'node').get(var.get(u'key')), var.get(u'node'))) + PyJsHoisted_ensureBlock_.func_name = u'ensureBlock' + var.put(u'ensureBlock', PyJsHoisted_ensureBlock_) + @Js + def PyJsHoisted_assertNode_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u'isNode')(var.get(u'node')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Not a valid node ')+(var.get(u'node') and var.get(u'node').get(u'type'))))) + raise PyJsTempException + PyJsHoisted_assertNode_.func_name = u'assertNode' + var.put(u'assertNode', PyJsHoisted_assertNode_) + @Js + def PyJsHoisted_inheritLeadingComments_(child, parent, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'parent':parent, u'child':child}, var) + var.registers([u'parent', u'child']) + var.get(u'_inheritComments')(Js(u'leadingComments'), var.get(u'child'), var.get(u'parent')) + PyJsHoisted_inheritLeadingComments_.func_name = u'inheritLeadingComments' + var.put(u'inheritLeadingComments', PyJsHoisted_inheritLeadingComments_) + @Js + def PyJsHoisted__inheritComments_(key, child, parent, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'parent':parent, u'key':key, u'child':child}, var) + var.registers([u'parent', u'key', u'child']) + if (var.get(u'child') and var.get(u'parent')): + var.get(u'child').put(var.get(u'key'), PyJsComma(Js(0.0),var.get(u'_uniq2').get(u'default'))(PyJsComma(Js(0.0),var.get(u'_compact2').get(u'default'))(Js([]).callprop(u'concat', var.get(u'child').get(var.get(u'key')), var.get(u'parent').get(var.get(u'key')))))) + PyJsHoisted__inheritComments_.func_name = u'_inheritComments' + var.put(u'_inheritComments', PyJsHoisted__inheritComments_) + @Js + def PyJsHoisted_removeProperties_(node, opts, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'node', u'map', u'_ref9', u'_i9', u'_ref10', u'_isArray9', u'syms', u'_i10', u'_iterator9', u'_key4', u'key', u'_isArray10', u'sym', u'_iterator10', u'opts']) + PyJs_Object_2825_ = Js({}) + var.put(u'opts', (var.get(u'opts') or PyJs_Object_2825_)) + var.put(u'map', (var.get(u'CLEAR_KEYS') if var.get(u'opts').get(u'preserveComments') else var.get(u'CLEAR_KEYS_PLUS_COMMENTS'))) + #for JS loop + var.put(u'_iterator9', var.get(u'map')) + var.put(u'_isArray9', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator9'))) + var.put(u'_i9', Js(0.0)) + var.put(u'_iterator9', (var.get(u'_iterator9') if var.get(u'_isArray9') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator9')))) + while 1: + pass + if var.get(u'_isArray9'): + if (var.get(u'_i9')>=var.get(u'_iterator9').get(u'length')): + break + var.put(u'_ref9', var.get(u'_iterator9').get((var.put(u'_i9',Js(var.get(u'_i9').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i9', var.get(u'_iterator9').callprop(u'next')) + if var.get(u'_i9').get(u'done'): + break + var.put(u'_ref9', var.get(u'_i9').get(u'value')) + var.put(u'_key4', var.get(u'_ref9')) + if (var.get(u'node').get(var.get(u'_key4'))!=var.get(u"null")): + var.get(u'node').put(var.get(u'_key4'), var.get(u'undefined')) + + for PyJsTemp in var.get(u'node'): + var.put(u'key', PyJsTemp) + if (PyJsStrictEq(var.get(u'key').get(u'0'),Js(u'_')) and (var.get(u'node').get(var.get(u'key'))!=var.get(u"null"))): + var.get(u'node').put(var.get(u'key'), var.get(u'undefined')) + var.put(u'syms', PyJsComma(Js(0.0),var.get(u'_getOwnPropertySymbols2').get(u'default'))(var.get(u'node'))) + #for JS loop + var.put(u'_iterator10', var.get(u'syms')) + var.put(u'_isArray10', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator10'))) + var.put(u'_i10', Js(0.0)) + var.put(u'_iterator10', (var.get(u'_iterator10') if var.get(u'_isArray10') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator10')))) + while 1: + pass + if var.get(u'_isArray10'): + if (var.get(u'_i10')>=var.get(u'_iterator10').get(u'length')): + break + var.put(u'_ref10', var.get(u'_iterator10').get((var.put(u'_i10',Js(var.get(u'_i10').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i10', var.get(u'_iterator10').callprop(u'next')) + if var.get(u'_i10').get(u'done'): + break + var.put(u'_ref10', var.get(u'_i10').get(u'value')) + var.put(u'sym', var.get(u'_ref10')) + var.get(u'node').put(var.get(u'sym'), var.get(u"null")) + + PyJsHoisted_removeProperties_.func_name = u'removeProperties' + var.put(u'removeProperties', PyJsHoisted_removeProperties_) + @Js + def PyJsHoisted_isNode_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return (var.get(u'node') and var.get(u'_definitions').get(u'VISITOR_KEYS').get(var.get(u'node').get(u'type'))).neg().neg() + PyJsHoisted_isNode_.func_name = u'isNode' + var.put(u'isNode', PyJsHoisted_isNode_) + @Js + def PyJsHoisted_inheritsComments_(child, parent, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'parent':parent, u'child':child}, var) + var.registers([u'parent', u'child']) + var.get(u'inheritTrailingComments')(var.get(u'child'), var.get(u'parent')) + var.get(u'inheritLeadingComments')(var.get(u'child'), var.get(u'parent')) + var.get(u'inheritInnerComments')(var.get(u'child'), var.get(u'parent')) + return var.get(u'child') + PyJsHoisted_inheritsComments_.func_name = u'inheritsComments' + var.put(u'inheritsComments', PyJsHoisted_inheritsComments_) + @Js + def PyJsHoisted_removeComments_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray4', u'_i4', u'key', u'_iterator4', u'_ref4']) + #for JS loop + var.put(u'_iterator4', var.get(u't').get(u'COMMENT_KEYS')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator4')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i4').get(u'value')) + var.put(u'key', var.get(u'_ref4')) + var.get(u'node').delete(var.get(u'key')) + + return var.get(u'node') + PyJsHoisted_removeComments_.func_name = u'removeComments' + var.put(u'removeComments', PyJsHoisted_removeComments_) + @Js + def PyJsHoisted__interopRequireWildcard_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj', u'key', u'newObj']) + if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')): + return var.get(u'obj') + else: + PyJs_Object_2808_ = Js({}) + var.put(u'newObj', PyJs_Object_2808_) + if (var.get(u'obj')!=var.get(u"null")): + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'newObj').put(var.get(u'key'), var.get(u'obj').get(var.get(u'key'))) + var.get(u'newObj').put(u'default', var.get(u'obj')) + return var.get(u'newObj') + PyJsHoisted__interopRequireWildcard_.func_name = u'_interopRequireWildcard' + var.put(u'_interopRequireWildcard', PyJsHoisted__interopRequireWildcard_) + @Js + def PyJsHoisted_removePropertiesDeep_(tree, opts, this, arguments, var=var): + var = Scope({u'this':this, u'tree':tree, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'tree', u'opts']) + var.get(u'traverseFast')(var.get(u'tree'), var.get(u'removeProperties'), var.get(u'opts')) + return var.get(u'tree') + PyJsHoisted_removePropertiesDeep_.func_name = u'removePropertiesDeep' + var.put(u'removePropertiesDeep', PyJsHoisted_removePropertiesDeep_) + @Js + def PyJsHoisted_clone_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'newNode', u'key']) + PyJs_Object_2821_ = Js({}) + var.put(u'newNode', PyJs_Object_2821_) + for PyJsTemp in var.get(u'node'): + var.put(u'key', PyJsTemp) + if PyJsStrictEq(var.get(u'key').get(u'0'),Js(u'_')): + continue + var.get(u'newNode').put(var.get(u'key'), var.get(u'node').get(var.get(u'key'))) + return var.get(u'newNode') + PyJsHoisted_clone_.func_name = u'clone' + var.put(u'clone', PyJsHoisted_clone_) + @Js + def PyJsHoisted_appendToMemberExpression_(member, append, computed, this, arguments, var=var): + var = Scope({u'member':member, u'this':this, u'computed':computed, u'append':append, u'arguments':arguments}, var) + var.registers([u'member', u'computed', u'append']) + var.get(u'member').put(u'object', var.get(u't').callprop(u'memberExpression', var.get(u'member').get(u'object'), var.get(u'member').get(u'property'), var.get(u'member').get(u'computed'))) + var.get(u'member').put(u'property', var.get(u'append')) + var.get(u'member').put(u'computed', var.get(u'computed').neg().neg()) + return var.get(u'member') + PyJsHoisted_appendToMemberExpression_.func_name = u'appendToMemberExpression' + var.put(u'appendToMemberExpression', PyJsHoisted_appendToMemberExpression_) + @Js + def PyJsHoisted_validate_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'val':val, u'key':key, u'arguments':arguments}, var) + var.registers([u'node', u'fields', u'val', u'key', u'field']) + if var.get(u'node').neg(): + return var.get('undefined') + var.put(u'fields', var.get(u't').get(u'NODE_FIELDS').get(var.get(u'node').get(u'type'))) + if var.get(u'fields').neg(): + return var.get('undefined') + var.put(u'field', var.get(u'fields').get(var.get(u'key'))) + if (var.get(u'field').neg() or var.get(u'field').get(u'validate').neg()): + return var.get('undefined') + if (var.get(u'field').get(u'optional') and (var.get(u'val')==var.get(u"null"))): + return var.get('undefined') + var.get(u'field').callprop(u'validate', var.get(u'node'), var.get(u'key'), var.get(u'val')) + PyJsHoisted_validate_.func_name = u'validate' + var.put(u'validate', PyJsHoisted_validate_) + @Js + def PyJsHoisted_traverseFast_(node, enter, opts, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'opts':opts, u'enter':enter}, var) + var.registers([u'_isArray7', u'node', u'_ref7', u'_i8', u'keys', u'_ref8', u'_isArray8', u'_i7', u'_node', u'_iterator8', u'key', u'enter', u'_iterator7', u'subNode', u'opts']) + if var.get(u'node').neg(): + return var.get('undefined') + var.put(u'keys', var.get(u't').get(u'VISITOR_KEYS').get(var.get(u'node').get(u'type'))) + if var.get(u'keys').neg(): + return var.get('undefined') + PyJs_Object_2824_ = Js({}) + var.put(u'opts', (var.get(u'opts') or PyJs_Object_2824_)) + var.get(u'enter')(var.get(u'node'), var.get(u'opts')) + #for JS loop + var.put(u'_iterator7', var.get(u'keys')) + var.put(u'_isArray7', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator7'))) + var.put(u'_i7', Js(0.0)) + var.put(u'_iterator7', (var.get(u'_iterator7') if var.get(u'_isArray7') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator7')))) + while 1: + pass + if var.get(u'_isArray7'): + if (var.get(u'_i7')>=var.get(u'_iterator7').get(u'length')): + break + var.put(u'_ref7', var.get(u'_iterator7').get((var.put(u'_i7',Js(var.get(u'_i7').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i7', var.get(u'_iterator7').callprop(u'next')) + if var.get(u'_i7').get(u'done'): + break + var.put(u'_ref7', var.get(u'_i7').get(u'value')) + var.put(u'key', var.get(u'_ref7')) + var.put(u'subNode', var.get(u'node').get(var.get(u'key'))) + if var.get(u'Array').callprop(u'isArray', var.get(u'subNode')): + #for JS loop + var.put(u'_iterator8', var.get(u'subNode')) + var.put(u'_isArray8', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator8'))) + var.put(u'_i8', Js(0.0)) + var.put(u'_iterator8', (var.get(u'_iterator8') if var.get(u'_isArray8') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator8')))) + while 1: + pass + if var.get(u'_isArray8'): + if (var.get(u'_i8')>=var.get(u'_iterator8').get(u'length')): + break + var.put(u'_ref8', var.get(u'_iterator8').get((var.put(u'_i8',Js(var.get(u'_i8').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i8', var.get(u'_iterator8').callprop(u'next')) + if var.get(u'_i8').get(u'done'): + break + var.put(u'_ref8', var.get(u'_i8').get(u'value')) + var.put(u'_node', var.get(u'_ref8')) + var.get(u'traverseFast')(var.get(u'_node'), var.get(u'enter'), var.get(u'opts')) + + else: + var.get(u'traverseFast')(var.get(u'subNode'), var.get(u'enter'), var.get(u'opts')) + + PyJsHoisted_traverseFast_.func_name = u'traverseFast' + var.put(u'traverseFast', PyJsHoisted_traverseFast_) + @Js + def PyJsHoisted_prependToMemberExpression_(member, prepend, this, arguments, var=var): + var = Scope({u'member':member, u'this':this, u'arguments':arguments, u'prepend':prepend}, var) + var.registers([u'member', u'prepend']) + var.get(u'member').put(u'object', var.get(u't').callprop(u'memberExpression', var.get(u'prepend'), var.get(u'member').get(u'object'))) + return var.get(u'member') + PyJsHoisted_prependToMemberExpression_.func_name = u'prependToMemberExpression' + var.put(u'prependToMemberExpression', PyJsHoisted_prependToMemberExpression_) + @Js + def PyJsHoisted_registerType_(type, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments}, var) + var.registers([u'is', u'type']) + var.put(u'is', var.get(u't').get((Js(u'is')+var.get(u'type')))) + if var.get(u'is').neg(): + @Js + def PyJs_anonymous_2810_(node, opts, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'node', u'opts']) + return var.get(u't').callprop(u'is', var.get(u'type'), var.get(u'node'), var.get(u'opts')) + PyJs_anonymous_2810_._set_name(u'anonymous') + var.put(u'is', var.get(u't').put((Js(u'is')+var.get(u'type')), PyJs_anonymous_2810_)) + @Js + def PyJs_anonymous_2811_(node, opts, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'node', u'opts']) + PyJs_Object_2812_ = Js({}) + var.put(u'opts', (var.get(u'opts') or PyJs_Object_2812_)) + if var.get(u'is')(var.get(u'node'), var.get(u'opts')).neg(): + PyJsTempException = JsToPyException(var.get(u'Error').create((((Js(u'Expected type ')+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'type')))+Js(u' with option '))+PyJsComma(Js(0.0),var.get(u'_stringify2').get(u'default'))(var.get(u'opts'))))) + raise PyJsTempException + PyJs_anonymous_2811_._set_name(u'anonymous') + var.get(u't').put((Js(u'assert')+var.get(u'type')), PyJs_anonymous_2811_) + PyJsHoisted_registerType_.func_name = u'registerType' + var.put(u'registerType', PyJsHoisted_registerType_) + @Js + def PyJsHoisted_cloneWithoutLoc_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'newNode']) + var.put(u'newNode', var.get(u'clone')(var.get(u'node'))) + var.get(u'newNode').delete(u'loc') + return var.get(u'newNode') + PyJsHoisted_cloneWithoutLoc_.func_name = u'cloneWithoutLoc' + var.put(u'cloneWithoutLoc', PyJsHoisted_cloneWithoutLoc_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + def PyJs_LONG_2723_(var=var): + def PyJs_LONG_2722_(var=var): + def PyJs_LONG_2721_(var=var): + def PyJs_LONG_2720_(var=var): + def PyJs_LONG_2719_(var=var): + return var.get(u'exports').put(u'EQUALITY_BINARY_OPERATORS', var.get(u'exports').put(u'BOOLEAN_NUMBER_BINARY_OPERATORS', var.get(u'exports').put(u'UPDATE_OPERATORS', var.get(u'exports').put(u'LOGICAL_OPERATORS', var.get(u'exports').put(u'COMMENT_KEYS', var.get(u'exports').put(u'FOR_INIT_KEYS', var.get(u'exports').put(u'FLATTENABLE_KEYS', var.get(u'exports').put(u'STATEMENT_OR_BLOCK_KEYS', var.get(u'undefined'))))))))) + return var.get(u'exports').put(u'UNARY_OPERATORS', var.get(u'exports').put(u'STRING_UNARY_OPERATORS', var.get(u'exports').put(u'NUMBER_UNARY_OPERATORS', var.get(u'exports').put(u'BOOLEAN_UNARY_OPERATORS', var.get(u'exports').put(u'BINARY_OPERATORS', var.get(u'exports').put(u'NUMBER_BINARY_OPERATORS', var.get(u'exports').put(u'BOOLEAN_BINARY_OPERATORS', var.get(u'exports').put(u'COMPARISON_BINARY_OPERATORS', PyJs_LONG_2719_())))))))) + return var.get(u'exports').put(u'TYPES', var.get(u'exports').put(u'react', var.get(u'exports').put(u'DEPRECATED_KEYS', var.get(u'exports').put(u'BUILDER_KEYS', var.get(u'exports').put(u'NODE_FIELDS', var.get(u'exports').put(u'ALIAS_KEYS', var.get(u'exports').put(u'VISITOR_KEYS', var.get(u'exports').put(u'NOT_LOCAL_BINDING', var.get(u'exports').put(u'BLOCK_SCOPED_SYMBOL', var.get(u'exports').put(u'INHERIT_KEYS', PyJs_LONG_2720_())))))))))) + return var.get(u'exports').put(u'isSpecifierDefault', var.get(u'exports').put(u'isVar', var.get(u'exports').put(u'isBlockScoped', var.get(u'exports').put(u'isLet', var.get(u'exports').put(u'isValidIdentifier', var.get(u'exports').put(u'isReferenced', var.get(u'exports').put(u'isBinding', var.get(u'exports').put(u'getOuterBindingIdentifiers', var.get(u'exports').put(u'getBindingIdentifiers', PyJs_LONG_2721_()))))))))) + return var.get(u'exports').put(u'toExpression', var.get(u'exports').put(u'toStatement', var.get(u'exports').put(u'toBindingIdentifierName', var.get(u'exports').put(u'toIdentifier', var.get(u'exports').put(u'toKeyAlias', var.get(u'exports').put(u'toSequenceExpression', var.get(u'exports').put(u'toComputedKey', var.get(u'exports').put(u'isImmutable', var.get(u'exports').put(u'isScope', PyJs_LONG_2722_()))))))))) + var.get(u'exports').put(u'createTypeAnnotationBasedOnTypeof', var.get(u'exports').put(u'removeTypeDuplicates', var.get(u'exports').put(u'createUnionTypeAnnotation', var.get(u'exports').put(u'valueToNode', var.get(u'exports').put(u'toBlock', PyJs_LONG_2723_()))))) + var.put(u'_getOwnPropertySymbols', var.get(u'require')(Js(u'babel-runtime/core-js/object/get-own-property-symbols'))) + var.put(u'_getOwnPropertySymbols2', var.get(u'_interopRequireDefault')(var.get(u'_getOwnPropertySymbols'))) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.put(u'_keys', var.get(u'require')(Js(u'babel-runtime/core-js/object/keys'))) + var.put(u'_keys2', var.get(u'_interopRequireDefault')(var.get(u'_keys'))) + var.put(u'_stringify', var.get(u'require')(Js(u'babel-runtime/core-js/json/stringify'))) + var.put(u'_stringify2', var.get(u'_interopRequireDefault')(var.get(u'_stringify'))) + var.put(u'_constants', var.get(u'require')(Js(u'./constants'))) + @Js + def PyJs_get_2725_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2725_}, var) + var.registers([]) + return var.get(u'_constants').get(u'STATEMENT_OR_BLOCK_KEYS') + PyJs_get_2725_._set_name(u'get') + PyJs_Object_2724_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2725_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'STATEMENT_OR_BLOCK_KEYS'), PyJs_Object_2724_) + @Js + def PyJs_get_2727_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2727_}, var) + var.registers([]) + return var.get(u'_constants').get(u'FLATTENABLE_KEYS') + PyJs_get_2727_._set_name(u'get') + PyJs_Object_2726_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2727_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'FLATTENABLE_KEYS'), PyJs_Object_2726_) + @Js + def PyJs_get_2729_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2729_}, var) + var.registers([]) + return var.get(u'_constants').get(u'FOR_INIT_KEYS') + PyJs_get_2729_._set_name(u'get') + PyJs_Object_2728_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2729_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'FOR_INIT_KEYS'), PyJs_Object_2728_) + @Js + def PyJs_get_2731_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2731_}, var) + var.registers([]) + return var.get(u'_constants').get(u'COMMENT_KEYS') + PyJs_get_2731_._set_name(u'get') + PyJs_Object_2730_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2731_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'COMMENT_KEYS'), PyJs_Object_2730_) + @Js + def PyJs_get_2733_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2733_}, var) + var.registers([]) + return var.get(u'_constants').get(u'LOGICAL_OPERATORS') + PyJs_get_2733_._set_name(u'get') + PyJs_Object_2732_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2733_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'LOGICAL_OPERATORS'), PyJs_Object_2732_) + @Js + def PyJs_get_2735_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2735_}, var) + var.registers([]) + return var.get(u'_constants').get(u'UPDATE_OPERATORS') + PyJs_get_2735_._set_name(u'get') + PyJs_Object_2734_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2735_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'UPDATE_OPERATORS'), PyJs_Object_2734_) + @Js + def PyJs_get_2737_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2737_}, var) + var.registers([]) + return var.get(u'_constants').get(u'BOOLEAN_NUMBER_BINARY_OPERATORS') + PyJs_get_2737_._set_name(u'get') + PyJs_Object_2736_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2737_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'BOOLEAN_NUMBER_BINARY_OPERATORS'), PyJs_Object_2736_) + @Js + def PyJs_get_2739_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2739_}, var) + var.registers([]) + return var.get(u'_constants').get(u'EQUALITY_BINARY_OPERATORS') + PyJs_get_2739_._set_name(u'get') + PyJs_Object_2738_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2739_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'EQUALITY_BINARY_OPERATORS'), PyJs_Object_2738_) + @Js + def PyJs_get_2741_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2741_}, var) + var.registers([]) + return var.get(u'_constants').get(u'COMPARISON_BINARY_OPERATORS') + PyJs_get_2741_._set_name(u'get') + PyJs_Object_2740_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2741_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'COMPARISON_BINARY_OPERATORS'), PyJs_Object_2740_) + @Js + def PyJs_get_2743_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2743_}, var) + var.registers([]) + return var.get(u'_constants').get(u'BOOLEAN_BINARY_OPERATORS') + PyJs_get_2743_._set_name(u'get') + PyJs_Object_2742_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2743_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'BOOLEAN_BINARY_OPERATORS'), PyJs_Object_2742_) + @Js + def PyJs_get_2745_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2745_}, var) + var.registers([]) + return var.get(u'_constants').get(u'NUMBER_BINARY_OPERATORS') + PyJs_get_2745_._set_name(u'get') + PyJs_Object_2744_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2745_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'NUMBER_BINARY_OPERATORS'), PyJs_Object_2744_) + @Js + def PyJs_get_2747_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2747_}, var) + var.registers([]) + return var.get(u'_constants').get(u'BINARY_OPERATORS') + PyJs_get_2747_._set_name(u'get') + PyJs_Object_2746_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2747_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'BINARY_OPERATORS'), PyJs_Object_2746_) + @Js + def PyJs_get_2749_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2749_}, var) + var.registers([]) + return var.get(u'_constants').get(u'BOOLEAN_UNARY_OPERATORS') + PyJs_get_2749_._set_name(u'get') + PyJs_Object_2748_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2749_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'BOOLEAN_UNARY_OPERATORS'), PyJs_Object_2748_) + @Js + def PyJs_get_2751_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2751_}, var) + var.registers([]) + return var.get(u'_constants').get(u'NUMBER_UNARY_OPERATORS') + PyJs_get_2751_._set_name(u'get') + PyJs_Object_2750_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2751_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'NUMBER_UNARY_OPERATORS'), PyJs_Object_2750_) + @Js + def PyJs_get_2753_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2753_}, var) + var.registers([]) + return var.get(u'_constants').get(u'STRING_UNARY_OPERATORS') + PyJs_get_2753_._set_name(u'get') + PyJs_Object_2752_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2753_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'STRING_UNARY_OPERATORS'), PyJs_Object_2752_) + @Js + def PyJs_get_2755_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2755_}, var) + var.registers([]) + return var.get(u'_constants').get(u'UNARY_OPERATORS') + PyJs_get_2755_._set_name(u'get') + PyJs_Object_2754_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2755_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'UNARY_OPERATORS'), PyJs_Object_2754_) + @Js + def PyJs_get_2757_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2757_}, var) + var.registers([]) + return var.get(u'_constants').get(u'INHERIT_KEYS') + PyJs_get_2757_._set_name(u'get') + PyJs_Object_2756_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2757_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'INHERIT_KEYS'), PyJs_Object_2756_) + @Js + def PyJs_get_2759_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2759_}, var) + var.registers([]) + return var.get(u'_constants').get(u'BLOCK_SCOPED_SYMBOL') + PyJs_get_2759_._set_name(u'get') + PyJs_Object_2758_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2759_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'BLOCK_SCOPED_SYMBOL'), PyJs_Object_2758_) + @Js + def PyJs_get_2761_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2761_}, var) + var.registers([]) + return var.get(u'_constants').get(u'NOT_LOCAL_BINDING') + PyJs_get_2761_._set_name(u'get') + PyJs_Object_2760_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2761_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'NOT_LOCAL_BINDING'), PyJs_Object_2760_) + var.get(u'exports').put(u'is', var.get(u'is')) + var.get(u'exports').put(u'isType', var.get(u'isType')) + var.get(u'exports').put(u'validate', var.get(u'validate')) + var.get(u'exports').put(u'shallowEqual', var.get(u'shallowEqual')) + var.get(u'exports').put(u'appendToMemberExpression', var.get(u'appendToMemberExpression')) + var.get(u'exports').put(u'prependToMemberExpression', var.get(u'prependToMemberExpression')) + var.get(u'exports').put(u'ensureBlock', var.get(u'ensureBlock')) + var.get(u'exports').put(u'clone', var.get(u'clone')) + var.get(u'exports').put(u'cloneWithoutLoc', var.get(u'cloneWithoutLoc')) + var.get(u'exports').put(u'cloneDeep', var.get(u'cloneDeep')) + var.get(u'exports').put(u'buildMatchMemberExpression', var.get(u'buildMatchMemberExpression')) + var.get(u'exports').put(u'removeComments', var.get(u'removeComments')) + var.get(u'exports').put(u'inheritsComments', var.get(u'inheritsComments')) + var.get(u'exports').put(u'inheritTrailingComments', var.get(u'inheritTrailingComments')) + var.get(u'exports').put(u'inheritLeadingComments', var.get(u'inheritLeadingComments')) + var.get(u'exports').put(u'inheritInnerComments', var.get(u'inheritInnerComments')) + var.get(u'exports').put(u'inherits', var.get(u'inherits')) + var.get(u'exports').put(u'assertNode', var.get(u'assertNode')) + var.get(u'exports').put(u'isNode', var.get(u'isNode')) + var.get(u'exports').put(u'traverseFast', var.get(u'traverseFast')) + var.get(u'exports').put(u'removeProperties', var.get(u'removeProperties')) + var.get(u'exports').put(u'removePropertiesDeep', var.get(u'removePropertiesDeep')) + var.put(u'_retrievers', var.get(u'require')(Js(u'./retrievers'))) + @Js + def PyJs_get_2763_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2763_}, var) + var.registers([]) + return var.get(u'_retrievers').get(u'getBindingIdentifiers') + PyJs_get_2763_._set_name(u'get') + PyJs_Object_2762_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2763_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'getBindingIdentifiers'), PyJs_Object_2762_) + @Js + def PyJs_get_2765_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2765_}, var) + var.registers([]) + return var.get(u'_retrievers').get(u'getOuterBindingIdentifiers') + PyJs_get_2765_._set_name(u'get') + PyJs_Object_2764_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2765_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'getOuterBindingIdentifiers'), PyJs_Object_2764_) + var.put(u'_validators', var.get(u'require')(Js(u'./validators'))) + @Js + def PyJs_get_2767_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2767_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isBinding') + PyJs_get_2767_._set_name(u'get') + PyJs_Object_2766_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2767_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isBinding'), PyJs_Object_2766_) + @Js + def PyJs_get_2769_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2769_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isReferenced') + PyJs_get_2769_._set_name(u'get') + PyJs_Object_2768_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2769_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isReferenced'), PyJs_Object_2768_) + @Js + def PyJs_get_2771_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2771_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isValidIdentifier') + PyJs_get_2771_._set_name(u'get') + PyJs_Object_2770_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2771_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isValidIdentifier'), PyJs_Object_2770_) + @Js + def PyJs_get_2773_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2773_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isLet') + PyJs_get_2773_._set_name(u'get') + PyJs_Object_2772_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2773_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isLet'), PyJs_Object_2772_) + @Js + def PyJs_get_2775_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2775_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isBlockScoped') + PyJs_get_2775_._set_name(u'get') + PyJs_Object_2774_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2775_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isBlockScoped'), PyJs_Object_2774_) + @Js + def PyJs_get_2777_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2777_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isVar') + PyJs_get_2777_._set_name(u'get') + PyJs_Object_2776_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2777_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isVar'), PyJs_Object_2776_) + @Js + def PyJs_get_2779_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2779_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isSpecifierDefault') + PyJs_get_2779_._set_name(u'get') + PyJs_Object_2778_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2779_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isSpecifierDefault'), PyJs_Object_2778_) + @Js + def PyJs_get_2781_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2781_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isScope') + PyJs_get_2781_._set_name(u'get') + PyJs_Object_2780_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2781_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isScope'), PyJs_Object_2780_) + @Js + def PyJs_get_2783_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2783_}, var) + var.registers([]) + return var.get(u'_validators').get(u'isImmutable') + PyJs_get_2783_._set_name(u'get') + PyJs_Object_2782_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2783_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'isImmutable'), PyJs_Object_2782_) + var.put(u'_converters', var.get(u'require')(Js(u'./converters'))) + @Js + def PyJs_get_2785_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2785_}, var) + var.registers([]) + return var.get(u'_converters').get(u'toComputedKey') + PyJs_get_2785_._set_name(u'get') + PyJs_Object_2784_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2785_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'toComputedKey'), PyJs_Object_2784_) + @Js + def PyJs_get_2787_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2787_}, var) + var.registers([]) + return var.get(u'_converters').get(u'toSequenceExpression') + PyJs_get_2787_._set_name(u'get') + PyJs_Object_2786_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2787_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'toSequenceExpression'), PyJs_Object_2786_) + @Js + def PyJs_get_2789_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2789_}, var) + var.registers([]) + return var.get(u'_converters').get(u'toKeyAlias') + PyJs_get_2789_._set_name(u'get') + PyJs_Object_2788_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2789_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'toKeyAlias'), PyJs_Object_2788_) + @Js + def PyJs_get_2791_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2791_}, var) + var.registers([]) + return var.get(u'_converters').get(u'toIdentifier') + PyJs_get_2791_._set_name(u'get') + PyJs_Object_2790_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2791_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'toIdentifier'), PyJs_Object_2790_) + @Js + def PyJs_get_2793_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2793_}, var) + var.registers([]) + return var.get(u'_converters').get(u'toBindingIdentifierName') + PyJs_get_2793_._set_name(u'get') + PyJs_Object_2792_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2793_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'toBindingIdentifierName'), PyJs_Object_2792_) + @Js + def PyJs_get_2795_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2795_}, var) + var.registers([]) + return var.get(u'_converters').get(u'toStatement') + PyJs_get_2795_._set_name(u'get') + PyJs_Object_2794_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2795_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'toStatement'), PyJs_Object_2794_) + @Js + def PyJs_get_2797_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2797_}, var) + var.registers([]) + return var.get(u'_converters').get(u'toExpression') + PyJs_get_2797_._set_name(u'get') + PyJs_Object_2796_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2797_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'toExpression'), PyJs_Object_2796_) + @Js + def PyJs_get_2799_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2799_}, var) + var.registers([]) + return var.get(u'_converters').get(u'toBlock') + PyJs_get_2799_._set_name(u'get') + PyJs_Object_2798_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2799_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'toBlock'), PyJs_Object_2798_) + @Js + def PyJs_get_2801_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2801_}, var) + var.registers([]) + return var.get(u'_converters').get(u'valueToNode') + PyJs_get_2801_._set_name(u'get') + PyJs_Object_2800_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2801_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'valueToNode'), PyJs_Object_2800_) + var.put(u'_flow', var.get(u'require')(Js(u'./flow'))) + @Js + def PyJs_get_2803_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2803_}, var) + var.registers([]) + return var.get(u'_flow').get(u'createUnionTypeAnnotation') + PyJs_get_2803_._set_name(u'get') + PyJs_Object_2802_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2803_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'createUnionTypeAnnotation'), PyJs_Object_2802_) + @Js + def PyJs_get_2805_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2805_}, var) + var.registers([]) + return var.get(u'_flow').get(u'removeTypeDuplicates') + PyJs_get_2805_._set_name(u'get') + PyJs_Object_2804_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2805_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'removeTypeDuplicates'), PyJs_Object_2804_) + @Js + def PyJs_get_2807_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'get':PyJs_get_2807_}, var) + var.registers([]) + return var.get(u'_flow').get(u'createTypeAnnotationBasedOnTypeof') + PyJs_get_2807_._set_name(u'get') + PyJs_Object_2806_ = Js({u'enumerable':var.get(u'true'),u'get':PyJs_get_2807_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'createTypeAnnotationBasedOnTypeof'), PyJs_Object_2806_) + var.put(u'_toFastProperties', var.get(u'require')(Js(u'to-fast-properties'))) + var.put(u'_toFastProperties2', var.get(u'_interopRequireDefault')(var.get(u'_toFastProperties'))) + var.put(u'_compact', var.get(u'require')(Js(u'lodash/compact'))) + var.put(u'_compact2', var.get(u'_interopRequireDefault')(var.get(u'_compact'))) + var.put(u'_clone', var.get(u'require')(Js(u'lodash/clone'))) + var.put(u'_clone2', var.get(u'_interopRequireDefault')(var.get(u'_clone'))) + var.put(u'_each', var.get(u'require')(Js(u'lodash/each'))) + var.put(u'_each2', var.get(u'_interopRequireDefault')(var.get(u'_each'))) + var.put(u'_uniq', var.get(u'require')(Js(u'lodash/uniq'))) + var.put(u'_uniq2', var.get(u'_interopRequireDefault')(var.get(u'_uniq'))) + var.get(u'require')(Js(u'./definitions/init')) + var.put(u'_definitions', var.get(u'require')(Js(u'./definitions'))) + var.put(u'_react2', var.get(u'require')(Js(u'./react'))) + var.put(u'_react', var.get(u'_interopRequireWildcard')(var.get(u'_react2'))) + pass + pass + var.put(u't', var.get(u'exports')) + pass + var.get(u'exports').put(u'VISITOR_KEYS', var.get(u'_definitions').get(u'VISITOR_KEYS')) + var.get(u'exports').put(u'ALIAS_KEYS', var.get(u'_definitions').get(u'ALIAS_KEYS')) + var.get(u'exports').put(u'NODE_FIELDS', var.get(u'_definitions').get(u'NODE_FIELDS')) + var.get(u'exports').put(u'BUILDER_KEYS', var.get(u'_definitions').get(u'BUILDER_KEYS')) + var.get(u'exports').put(u'DEPRECATED_KEYS', var.get(u'_definitions').get(u'DEPRECATED_KEYS')) + var.get(u'exports').put(u'react', var.get(u'_react')) + for PyJsTemp in var.get(u't').get(u'VISITOR_KEYS'): + var.put(u'type', PyJsTemp) + var.get(u'registerType')(var.get(u'type')) + PyJs_Object_2813_ = Js({}) + var.get(u't').put(u'FLIPPED_ALIAS_KEYS', PyJs_Object_2813_) + @Js + def PyJs_anonymous_2814_(aliases, type, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments, u'aliases':aliases}, var) + var.registers([u'type', u'aliases']) + @Js + def PyJs_anonymous_2815_(alias, this, arguments, var=var): + var = Scope({u'this':this, u'alias':alias, u'arguments':arguments}, var) + var.registers([u'alias', u'types']) + var.put(u'types', var.get(u't').get(u'FLIPPED_ALIAS_KEYS').put(var.get(u'alias'), (var.get(u't').get(u'FLIPPED_ALIAS_KEYS').get(var.get(u'alias')) or Js([])))) + var.get(u'types').callprop(u'push', var.get(u'type')) + PyJs_anonymous_2815_._set_name(u'anonymous') + PyJsComma(Js(0.0),var.get(u'_each2').get(u'default'))(var.get(u'aliases'), PyJs_anonymous_2815_) + PyJs_anonymous_2814_._set_name(u'anonymous') + PyJsComma(Js(0.0),var.get(u'_each2').get(u'default'))(var.get(u't').get(u'ALIAS_KEYS'), PyJs_anonymous_2814_) + @Js + def PyJs_anonymous_2816_(types, type, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments, u'types':types}, var) + var.registers([u'type', u'types']) + var.get(u't').put((var.get(u'type').callprop(u'toUpperCase')+Js(u'_TYPES')), var.get(u'types')) + var.get(u'registerType')(var.get(u'type')) + PyJs_anonymous_2816_._set_name(u'anonymous') + PyJsComma(Js(0.0),var.get(u'_each2').get(u'default'))(var.get(u't').get(u'FLIPPED_ALIAS_KEYS'), PyJs_anonymous_2816_) + var.put(u'TYPES', var.get(u'exports').put(u'TYPES', PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u't').get(u'VISITOR_KEYS')).callprop(u'concat', PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u't').get(u'FLIPPED_ALIAS_KEYS'))).callprop(u'concat', PyJsComma(Js(0.0),var.get(u'_keys2').get(u'default'))(var.get(u't').get(u'DEPRECATED_KEYS'))))) + pass + pass + @Js + def PyJs_anonymous_2817_(keys, type, this, arguments, var=var): + var = Scope({u'keys':keys, u'this':this, u'type':type, u'arguments':arguments}, var) + var.registers([u'keys', u'builder', u'type']) + @Js + def PyJsHoisted_builder_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray2', u'field', u'i', u'_ref2', u'_i2', u'_key', u'key', u'arg', u'_iterator2']) + if (var.get(u'arguments').get(u'length')>var.get(u'keys').get(u'length')): + PyJsTempException = JsToPyException(var.get(u'Error').create((((((Js(u't.')+var.get(u'type'))+Js(u': Too many arguments passed. Received '))+var.get(u'arguments').get(u'length'))+Js(u' but can receive '))+(Js(u'no more than ')+var.get(u'keys').get(u'length'))))) + raise PyJsTempException + PyJs_Object_2818_ = Js({}) + var.put(u'node', PyJs_Object_2818_) + var.get(u'node').put(u'type', var.get(u'type')) + var.put(u'i', Js(0.0)) + #for JS loop + var.put(u'_iterator2', var.get(u'keys')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator2')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'_key', var.get(u'_ref2')) + var.put(u'field', var.get(u't').get(u'NODE_FIELDS').get(var.get(u'type')).get(var.get(u'_key'))) + var.put(u'arg', var.get(u'arguments').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))) + if PyJsStrictEq(var.get(u'arg'),var.get(u'undefined')): + var.put(u'arg', PyJsComma(Js(0.0),var.get(u'_clone2').get(u'default'))(var.get(u'field').get(u'default'))) + var.get(u'node').put(var.get(u'_key'), var.get(u'arg')) + + for PyJsTemp in var.get(u'node'): + var.put(u'key', PyJsTemp) + var.get(u'validate')(var.get(u'node'), var.get(u'key'), var.get(u'node').get(var.get(u'key'))) + return var.get(u'node') + PyJsHoisted_builder_.func_name = u'builder' + var.put(u'builder', PyJsHoisted_builder_) + pass + var.get(u't').put(var.get(u'type'), var.get(u'builder')) + var.get(u't').put((var.get(u'type').get(u'0').callprop(u'toLowerCase')+var.get(u'type').callprop(u'slice', Js(1.0))), var.get(u'builder')) + PyJs_anonymous_2817_._set_name(u'anonymous') + PyJsComma(Js(0.0),var.get(u'_each2').get(u'default'))(var.get(u't').get(u'BUILDER_KEYS'), PyJs_anonymous_2817_) + @Js + def PyJs__loop_2819_(_type, this, arguments, var=var): + var = Scope({u'this':this, u'_type':_type, u'_loop':PyJs__loop_2819_, u'arguments':arguments}, var) + var.registers([u'_type', u'newType', u'proxy']) + @Js + def PyJsHoisted_proxy_(fn, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'fn':fn}, var) + var.registers([u'fn']) + @Js + def PyJs_anonymous_2820_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'console').callprop(u'trace', (((Js(u'The node type ')+var.get(u'_type'))+Js(u' has been renamed to '))+var.get(u'newType'))) + return var.get(u'fn').callprop(u'apply', var.get(u"this"), var.get(u'arguments')) + PyJs_anonymous_2820_._set_name(u'anonymous') + return PyJs_anonymous_2820_ + PyJsHoisted_proxy_.func_name = u'proxy' + var.put(u'proxy', PyJsHoisted_proxy_) + var.put(u'newType', var.get(u't').get(u'DEPRECATED_KEYS').get(var.get(u'_type'))) + pass + var.get(u't').put(var.get(u'_type'), var.get(u't').put((var.get(u'_type').get(u'0').callprop(u'toLowerCase')+var.get(u'_type').callprop(u'slice', Js(1.0))), var.get(u'proxy')(var.get(u't').get(var.get(u'newType'))))) + var.get(u't').put((Js(u'is')+var.get(u'_type')), var.get(u'proxy')(var.get(u't').get((Js(u'is')+var.get(u'newType'))))) + var.get(u't').put((Js(u'assert')+var.get(u'_type')), var.get(u'proxy')(var.get(u't').get((Js(u'assert')+var.get(u'newType'))))) + PyJs__loop_2819_._set_name(u'_loop') + var.put(u'_loop', PyJs__loop_2819_) + for PyJsTemp in var.get(u't').get(u'DEPRECATED_KEYS'): + var.put(u'_type', PyJsTemp) + var.get(u'_loop')(var.get(u'_type')) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + PyJsComma(Js(0.0),var.get(u'_toFastProperties2').get(u'default'))(var.get(u't')) + PyJsComma(Js(0.0),var.get(u'_toFastProperties2').get(u'default'))(var.get(u't').get(u'VISITOR_KEYS')) + pass + var.put(u'CLEAR_KEYS', Js([Js(u'tokens'), Js(u'start'), Js(u'end'), Js(u'loc'), Js(u'raw'), Js(u'rawValue')])) + var.put(u'CLEAR_KEYS_PLUS_COMMENTS', var.get(u't').get(u'COMMENT_KEYS').callprop(u'concat', Js([Js(u'comments')])).callprop(u'concat', var.get(u'CLEAR_KEYS'))) + pass + pass +PyJs_anonymous_2718_._set_name(u'anonymous') +PyJs_Object_2826_ = Js({u'./constants':Js(247.0),u'./converters':Js(248.0),u'./definitions':Js(253.0),u'./definitions/init':Js(254.0),u'./flow':Js(257.0),u'./react':Js(259.0),u'./retrievers':Js(260.0),u'./validators':Js(261.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'babel-runtime/core-js/json/stringify':Js(97.0),u'babel-runtime/core-js/object/get-own-property-symbols':Js(102.0),u'babel-runtime/core-js/object/keys':Js(103.0),u'lodash/clone':Js(438.0),u'lodash/compact':Js(441.0),u'lodash/each':Js(443.0),u'lodash/uniq':Js(495.0),u'to-fast-properties':Js(522.0)}) +@Js +def PyJs_anonymous_2827_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'_interopRequireWildcard', u'_index', u'cleanJSXElementLiteralChild', u'require', u'module', u'buildChildren', u't', u'isReactComponent', u'isCompatTag']) + @Js + def PyJsHoisted_cleanJSXElementLiteralChild_(child, args, this, arguments, var=var): + var = Scope({u'this':this, u'args':args, u'arguments':arguments, u'child':child}, var) + var.registers([u'isLastNonEmptyLine', u'str', u'i', u'isLastLine', u'args', u'lines', u'lastNonEmptyLine', u'isFirstLine', u'_i', u'child', u'line', u'trimmedLine']) + var.put(u'lines', var.get(u'child').get(u'value').callprop(u'split', JsRegExp(u'/\\r\\n|\\n|\\r/'))) + var.put(u'lastNonEmptyLine', Js(0.0)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(0.0)): + return var.get(u'true') + else: + if PyJsStrictEq(var.get(u'val'),var.get(u'node')): + return var.get(u'true') + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + return Js(False) + PyJsHoisted_isBinding_.func_name = u'isBinding' + var.put(u'isBinding', PyJsHoisted_isBinding_) + @Js + def PyJsHoisted_isReferenced_(node, parent, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'parent':parent}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'parent', u'param', u'_i', u'_ref']) + while 1: + SWITCHED = False + CONDITION = (var.get(u'parent').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'BindExpression')): + SWITCHED = True + return (PyJsStrictEq(var.get(u'parent').get(u'object'),var.get(u'node')) or PyJsStrictEq(var.get(u'parent').get(u'callee'),var.get(u'node'))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'MemberExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'JSXMemberExpression')): + SWITCHED = True + if (PyJsStrictEq(var.get(u'parent').get(u'property'),var.get(u'node')) and var.get(u'parent').get(u'computed')): + return var.get(u'true') + else: + if PyJsStrictEq(var.get(u'parent').get(u'object'),var.get(u'node')): + return var.get(u'true') + else: + return Js(False) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'MetaProperty')): + SWITCHED = True + return Js(False) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ObjectProperty')): + SWITCHED = True + if PyJsStrictEq(var.get(u'parent').get(u'key'),var.get(u'node')): + return var.get(u'parent').get(u'computed') + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'VariableDeclarator')): + SWITCHED = True + return PyJsStrictNeq(var.get(u'parent').get(u'id'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ArrowFunctionExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'FunctionDeclaration')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'FunctionExpression')): + SWITCHED = True + #for JS loop + var.put(u'_iterator', var.get(u'parent').get(u'params')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else PyJsComma(Js(0.0),var.get(u'_getIterator3').get(u'default'))(var.get(u'_iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'param', var.get(u'_ref')) + if PyJsStrictEq(var.get(u'param'),var.get(u'node')): + return Js(False) + + return PyJsStrictNeq(var.get(u'parent').get(u'id'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ExportSpecifier')): + SWITCHED = True + if var.get(u'parent').get(u'source'): + return Js(False) + else: + return PyJsStrictEq(var.get(u'parent').get(u'local'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ExportNamespaceSpecifier')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ExportDefaultSpecifier')): + SWITCHED = True + return Js(False) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'JSXAttribute')): + SWITCHED = True + return PyJsStrictNeq(var.get(u'parent').get(u'name'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ClassProperty')): + SWITCHED = True + if PyJsStrictEq(var.get(u'parent').get(u'key'),var.get(u'node')): + return var.get(u'parent').get(u'computed') + else: + return PyJsStrictEq(var.get(u'parent').get(u'value'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ImportDefaultSpecifier')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ImportNamespaceSpecifier')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ImportSpecifier')): + SWITCHED = True + return Js(False) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ClassDeclaration')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ClassExpression')): + SWITCHED = True + return PyJsStrictNeq(var.get(u'parent').get(u'id'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ClassMethod')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ObjectMethod')): + SWITCHED = True + return (PyJsStrictEq(var.get(u'parent').get(u'key'),var.get(u'node')) and var.get(u'parent').get(u'computed')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'LabeledStatement')): + SWITCHED = True + return Js(False) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'CatchClause')): + SWITCHED = True + return PyJsStrictNeq(var.get(u'parent').get(u'param'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'RestElement')): + SWITCHED = True + return Js(False) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'AssignmentExpression')): + SWITCHED = True + return PyJsStrictEq(var.get(u'parent').get(u'right'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'AssignmentPattern')): + SWITCHED = True + return PyJsStrictEq(var.get(u'parent').get(u'right'),var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ObjectPattern')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ArrayPattern')): + SWITCHED = True + return Js(False) + SWITCHED = True + break + return var.get(u'true') + PyJsHoisted_isReferenced_.func_name = u'isReferenced' + var.put(u'isReferenced', PyJsHoisted_isReferenced_) + @Js + def PyJsHoisted_isValidIdentifier_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + if (PyJsStrictNeq(var.get(u'name',throw=False).typeof(),Js(u'string')) or var.get(u'_esutils2').get(u'default').get(u'keyword').callprop(u'isReservedWordES6', var.get(u'name'), var.get(u'true'))): + return Js(False) + else: + return var.get(u'_esutils2').get(u'default').get(u'keyword').callprop(u'isIdentifierNameES6', var.get(u'name')) + PyJsHoisted_isValidIdentifier_.func_name = u'isValidIdentifier' + var.put(u'isValidIdentifier', PyJsHoisted_isValidIdentifier_) + @Js + def PyJsHoisted_isVar_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + PyJs_Object_2838_ = Js({u'kind':Js(u'var')}) + return (var.get(u't').callprop(u'isVariableDeclaration', var.get(u'node'), PyJs_Object_2838_) and var.get(u'node').get(var.get(u'_constants').get(u'BLOCK_SCOPED_SYMBOL')).neg()) + PyJsHoisted_isVar_.func_name = u'isVar' + var.put(u'isVar', PyJsHoisted_isVar_) + @Js + def PyJsHoisted__interopRequireDefault_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + PyJs_Object_2837_ = Js({u'default':var.get(u'obj')}) + return (var.get(u'obj') if (var.get(u'obj') and var.get(u'obj').get(u'__esModule')) else PyJs_Object_2837_) + PyJsHoisted__interopRequireDefault_.func_name = u'_interopRequireDefault' + var.put(u'_interopRequireDefault', PyJsHoisted__interopRequireDefault_) + @Js + def PyJsHoisted_isLet_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return (var.get(u't').callprop(u'isVariableDeclaration', var.get(u'node')) and (PyJsStrictNeq(var.get(u'node').get(u'kind'),Js(u'var')) or var.get(u'node').get(var.get(u'_constants').get(u'BLOCK_SCOPED_SYMBOL')))) + PyJsHoisted_isLet_.func_name = u'isLet' + var.put(u'isLet', PyJsHoisted_isLet_) + @Js + def PyJsHoisted_isSpecifierDefault_(specifier, this, arguments, var=var): + var = Scope({u'this':this, u'specifier':specifier, u'arguments':arguments}, var) + var.registers([u'specifier']) + PyJs_Object_2839_ = Js({u'name':Js(u'default')}) + return (var.get(u't').callprop(u'isImportDefaultSpecifier', var.get(u'specifier')) or var.get(u't').callprop(u'isIdentifier', (var.get(u'specifier').get(u'imported') or var.get(u'specifier').get(u'exported')), PyJs_Object_2839_)) + PyJsHoisted_isSpecifierDefault_.func_name = u'isSpecifierDefault' + var.put(u'isSpecifierDefault', PyJsHoisted_isSpecifierDefault_) + @Js + def PyJsHoisted_isBlockScoped_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return ((var.get(u't').callprop(u'isFunctionDeclaration', var.get(u'node')) or var.get(u't').callprop(u'isClassDeclaration', var.get(u'node'))) or var.get(u't').callprop(u'isLet', var.get(u'node'))) + PyJsHoisted_isBlockScoped_.func_name = u'isBlockScoped' + var.put(u'isBlockScoped', PyJsHoisted_isBlockScoped_) + Js(u'use strict') + var.get(u'exports').put(u'__esModule', var.get(u'true')) + var.put(u'_getIterator2', var.get(u'require')(Js(u'babel-runtime/core-js/get-iterator'))) + var.put(u'_getIterator3', var.get(u'_interopRequireDefault')(var.get(u'_getIterator2'))) + var.get(u'exports').put(u'isBinding', var.get(u'isBinding')) + var.get(u'exports').put(u'isReferenced', var.get(u'isReferenced')) + var.get(u'exports').put(u'isValidIdentifier', var.get(u'isValidIdentifier')) + var.get(u'exports').put(u'isLet', var.get(u'isLet')) + var.get(u'exports').put(u'isBlockScoped', var.get(u'isBlockScoped')) + var.get(u'exports').put(u'isVar', var.get(u'isVar')) + var.get(u'exports').put(u'isSpecifierDefault', var.get(u'isSpecifierDefault')) + var.get(u'exports').put(u'isScope', var.get(u'isScope')) + var.get(u'exports').put(u'isImmutable', var.get(u'isImmutable')) + var.put(u'_retrievers', var.get(u'require')(Js(u'./retrievers'))) + var.put(u'_esutils', var.get(u'require')(Js(u'esutils'))) + var.put(u'_esutils2', var.get(u'_interopRequireDefault')(var.get(u'_esutils'))) + var.put(u'_index', var.get(u'require')(Js(u'./index'))) + var.put(u't', var.get(u'_interopRequireWildcard')(var.get(u'_index'))) + var.put(u'_constants', var.get(u'require')(Js(u'./constants'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_2835_._set_name(u'anonymous') +PyJs_Object_2841_ = Js({u'./constants':Js(247.0),u'./index':Js(258.0),u'./retrievers':Js(260.0),u'babel-runtime/core-js/get-iterator':Js(96.0),u'esutils':Js(276.0)}) +@Js +def PyJs_anonymous_2842_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'TokContext', u'reservedWords', u'parse$1', u'pp$4', u'isKeyword$1', u'getLineInfo', u'astralIdentifierStartCodes', u'isNewLine', u'module', u'_typeof', u'isIdentifierChar', u'State', u'plugins', u'keywords', u'getOptions', u'Node', u'pp$8', u'isIdentifierStart', u'TokenType', u'types$1', u'beforeExpr', u'nonASCIIidentifierStartChars', u'DECIMAL_NUMBER', u'_inherits', u'flowPlugin', u'_possibleConstructorReturn', u'commentKeys', u'XHTMLEntities', u'isInAstralSet', u'empty', u'astralIdentifierCodes', u'exports', u'nonASCIIidentifierChars', u'binop', u'startsExpr', u'lineBreakG', u'pp', u'jsxPlugin', u'_classCallCheck$6', u'_classCallCheck$4', u'_classCallCheck$5', u'_classCallCheck$2', u'_classCallCheck$3', u'_classCallCheck$1', u'Position', u'getQualifiedJSXName', u'types', u'switchLabel', u'nonASCIIidentifier', u'lineBreak', u'HEX_NUMBER', u'last', u'loopLabel', u'Tokenizer', u'defaultOptions', u'_classCallCheck', u'require', u'Parser', u'Token', u'nonASCIIidentifierStart', u'makePredicate', u'nonASCIIwhitespace', u'kw', u'codePointToString', u'finishNodeAt', u'pp$1', u'pp$2', u'pp$3', u'SourceLocation', u'pp$5', u'pp$6', u'pp$7']) + @Js + def PyJsHoisted_codePointToString_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments}, var) + var.registers([u'code']) + if (var.get(u'code')<=Js(65535)): + return var.get(u'String').callprop(u'fromCharCode', var.get(u'code')) + else: + return var.get(u'String').callprop(u'fromCharCode', (((var.get(u'code')-Js(65536))>>Js(10.0))+Js(55296)), (((var.get(u'code')-Js(65536))&Js(1023.0))+Js(56320))) + PyJsHoisted_codePointToString_.func_name = u'codePointToString' + var.put(u'codePointToString', PyJsHoisted_codePointToString_) + @Js + def PyJsHoisted_isNewLine_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments}, var) + var.registers([u'code']) + return (((PyJsStrictEq(var.get(u'code'),Js(10.0)) or PyJsStrictEq(var.get(u'code'),Js(13.0))) or PyJsStrictEq(var.get(u'code'),Js(8232))) or PyJsStrictEq(var.get(u'code'),Js(8233))) + PyJsHoisted_isNewLine_.func_name = u'isNewLine' + var.put(u'isNewLine', PyJsHoisted_isNewLine_) + @Js + def PyJsHoisted_isIdentifierChar_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments}, var) + var.registers([u'code']) + if (var.get(u'code')=Js(170)) and var.get(u'nonASCIIidentifier').callprop(u'test', var.get(u'String').callprop(u'fromCharCode', var.get(u'code')))) + return (var.get(u'isInAstralSet')(var.get(u'code'), var.get(u'astralIdentifierStartCodes')) or var.get(u'isInAstralSet')(var.get(u'code'), var.get(u'astralIdentifierCodes'))) + PyJsHoisted_isIdentifierChar_.func_name = u'isIdentifierChar' + var.put(u'isIdentifierChar', PyJsHoisted_isIdentifierChar_) + @Js + def PyJsHoisted_getOptions_(opts, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'opts':opts}, var) + var.registers([u'opts', u'options', u'key']) + PyJs_Object_2847_ = Js({}) + var.put(u'options', PyJs_Object_2847_) + for PyJsTemp in var.get(u'defaultOptions'): + var.put(u'key', PyJsTemp) + var.get(u'options').put(var.get(u'key'), (var.get(u'opts').get(var.get(u'key')) if (var.get(u'opts') and var.get(u'opts').contains(var.get(u'key'))) else var.get(u'defaultOptions').get(var.get(u'key')))) + return var.get(u'options') + PyJsHoisted_getOptions_.func_name = u'getOptions' + var.put(u'getOptions', PyJsHoisted_getOptions_) + @Js + def PyJsHoisted_isIdentifierStart_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments}, var) + var.registers([u'code']) + if (var.get(u'code')=Js(170)) and var.get(u'nonASCIIidentifierStart').callprop(u'test', var.get(u'String').callprop(u'fromCharCode', var.get(u'code')))) + return var.get(u'isInAstralSet')(var.get(u'code'), var.get(u'astralIdentifierStartCodes')) + PyJsHoisted_isIdentifierStart_.func_name = u'isIdentifierStart' + var.put(u'isIdentifierStart', PyJsHoisted_isIdentifierStart_) + @Js + def PyJsHoisted__inherits_(subClass, superClass, this, arguments, var=var): + var = Scope({u'this':this, u'superClass':superClass, u'subClass':subClass, u'arguments':arguments}, var) + var.registers([u'superClass', u'subClass']) + if (PyJsStrictNeq(var.get(u'superClass',throw=False).typeof(),Js(u'function')) and PyJsStrictNeq(var.get(u'superClass'),var.get(u"null"))): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Super expression must either be null or a function, not ')+var.get(u'superClass',throw=False).typeof()))) + raise PyJsTempException + PyJs_Object_2937_ = Js({u'value':var.get(u'subClass'),u'enumerable':Js(False),u'writable':var.get(u'true'),u'configurable':var.get(u'true')}) + PyJs_Object_2936_ = Js({u'constructor':PyJs_Object_2937_}) + var.get(u'subClass').put(u'prototype', var.get(u'Object').callprop(u'create', (var.get(u'superClass') and var.get(u'superClass').get(u'prototype')), PyJs_Object_2936_)) + if var.get(u'superClass'): + (var.get(u'Object').callprop(u'setPrototypeOf', var.get(u'subClass'), var.get(u'superClass')) if var.get(u'Object').get(u'setPrototypeOf') else var.get(u'subClass').put(u'__proto__', var.get(u'superClass'))) + PyJsHoisted__inherits_.func_name = u'_inherits' + var.put(u'_inherits', PyJsHoisted__inherits_) + @Js + def PyJsHoisted__possibleConstructorReturn_(self, call, this, arguments, var=var): + var = Scope({u'this':this, u'self':self, u'call':call, u'arguments':arguments}, var) + var.registers([u'self', u'call']) + if var.get(u'self').neg(): + PyJsTempException = JsToPyException(var.get(u'ReferenceError').create(Js(u"this hasn't been initialised - super() hasn't been called"))) + raise PyJsTempException + return (var.get(u'call') if (var.get(u'call') and (PyJsStrictEq(var.get(u'call',throw=False).typeof(),Js(u'object')) or PyJsStrictEq(var.get(u'call',throw=False).typeof(),Js(u'function')))) else var.get(u'self')) + PyJsHoisted__possibleConstructorReturn_.func_name = u'_possibleConstructorReturn' + var.put(u'_possibleConstructorReturn', PyJsHoisted__possibleConstructorReturn_) + @Js + def PyJsHoisted_isInAstralSet_(code, set, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'set':set, u'arguments':arguments}, var) + var.registers([u'i', u'code', u'set', u'pos']) + var.put(u'pos', Js(65536)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')var.get(u'code')): + return Js(False) + var.put(u'pos', var.get(u'set').get((var.get(u'i')+Js(1.0))), u'+') + if (var.get(u'pos')>=var.get(u'code')): + return var.get(u'true') + finally: + var.put(u'i', Js(2.0), u'+') + PyJsHoisted_isInAstralSet_.func_name = u'isInAstralSet' + var.put(u'isInAstralSet', PyJsHoisted_isInAstralSet_) + @Js + def PyJsHoisted_binop_(name, prec, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'prec':prec, u'arguments':arguments}, var) + var.registers([u'name', u'prec']) + PyJs_Object_2850_ = Js({u'beforeExpr':var.get(u'true'),u'binop':var.get(u'prec')}) + return var.get(u'TokenType').create(var.get(u'name'), PyJs_Object_2850_) + PyJsHoisted_binop_.func_name = u'binop' + var.put(u'binop', PyJsHoisted_binop_) + @Js + def PyJsHoistedNonPyName(instance, Constructor, this, arguments, var=var): + var = Scope({u'this':this, u'instance':instance, u'arguments':arguments, u'Constructor':Constructor}, var) + var.registers([u'instance', u'Constructor']) + if var.get(u'instance').instanceof(var.get(u'Constructor')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Cannot call a class as a function'))) + raise PyJsTempException + PyJsHoistedNonPyName.func_name = u'_classCallCheck$6' + var.put(u'_classCallCheck$6', PyJsHoistedNonPyName) + @Js + def PyJsHoisted_finishNodeAt_(node, type, pos, loc, this, arguments, var=var): + var = Scope({u'node':node, u'loc':loc, u'arguments':arguments, u'this':this, u'type':type, u'pos':pos}, var) + var.registers([u'node', u'loc', u'type', u'pos']) + var.get(u'node').put(u'type', var.get(u'type')) + var.get(u'node').put(u'end', var.get(u'pos')) + var.get(u'node').get(u'loc').put(u'end', var.get(u'loc')) + var.get(u"this").callprop(u'processComment', var.get(u'node')) + return var.get(u'node') + PyJsHoisted_finishNodeAt_.func_name = u'finishNodeAt' + var.put(u'finishNodeAt', PyJsHoisted_finishNodeAt_) + @Js + def PyJsHoistedNonPyName(instance, Constructor, this, arguments, var=var): + var = Scope({u'this':this, u'instance':instance, u'arguments':arguments, u'Constructor':Constructor}, var) + var.registers([u'instance', u'Constructor']) + if var.get(u'instance').instanceof(var.get(u'Constructor')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Cannot call a class as a function'))) + raise PyJsTempException + PyJsHoistedNonPyName.func_name = u'_classCallCheck$5' + var.put(u'_classCallCheck$5', PyJsHoistedNonPyName) + @Js + def PyJsHoistedNonPyName(instance, Constructor, this, arguments, var=var): + var = Scope({u'this':this, u'instance':instance, u'arguments':arguments, u'Constructor':Constructor}, var) + var.registers([u'instance', u'Constructor']) + if var.get(u'instance').instanceof(var.get(u'Constructor')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Cannot call a class as a function'))) + raise PyJsTempException + PyJsHoistedNonPyName.func_name = u'_classCallCheck$2' + var.put(u'_classCallCheck$2', PyJsHoistedNonPyName) + @Js + def PyJsHoistedNonPyName(instance, Constructor, this, arguments, var=var): + var = Scope({u'this':this, u'instance':instance, u'arguments':arguments, u'Constructor':Constructor}, var) + var.registers([u'instance', u'Constructor']) + if var.get(u'instance').instanceof(var.get(u'Constructor')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Cannot call a class as a function'))) + raise PyJsTempException + PyJsHoistedNonPyName.func_name = u'_classCallCheck$3' + var.put(u'_classCallCheck$3', PyJsHoistedNonPyName) + @Js + def PyJsHoistedNonPyName(instance, Constructor, this, arguments, var=var): + var = Scope({u'this':this, u'instance':instance, u'arguments':arguments, u'Constructor':Constructor}, var) + var.registers([u'instance', u'Constructor']) + if var.get(u'instance').instanceof(var.get(u'Constructor')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Cannot call a class as a function'))) + raise PyJsTempException + PyJsHoistedNonPyName.func_name = u'_classCallCheck$1' + var.put(u'_classCallCheck$1', PyJsHoistedNonPyName) + @Js + def PyJsHoisted_getQualifiedJSXName_(object, this, arguments, var=var): + var = Scope({u'this':this, u'object':object, u'arguments':arguments}, var) + var.registers([u'object']) + if PyJsStrictEq(var.get(u'object').get(u'type'),Js(u'JSXIdentifier')): + return var.get(u'object').get(u'name') + if PyJsStrictEq(var.get(u'object').get(u'type'),Js(u'JSXNamespacedName')): + return ((var.get(u'object').get(u'namespace').get(u'name')+Js(u':'))+var.get(u'object').get(u'name').get(u'name')) + if PyJsStrictEq(var.get(u'object').get(u'type'),Js(u'JSXMemberExpression')): + return ((var.get(u'getQualifiedJSXName')(var.get(u'object').get(u'object'))+Js(u'.'))+var.get(u'getQualifiedJSXName')(var.get(u'object').get(u'property'))) + PyJsHoisted_getQualifiedJSXName_.func_name = u'getQualifiedJSXName' + var.put(u'getQualifiedJSXName', PyJsHoisted_getQualifiedJSXName_) + @Js + def PyJsHoisted_getLineInfo_(input, offset, this, arguments, var=var): + var = Scope({u'this':this, u'input':input, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'input', u'line', u'cur', u'match', u'offset']) + #for JS loop + var.put(u'line', Js(1.0)) + var.put(u'cur', Js(0.0)) + while 1: + var.get(u'lineBreakG').put(u'lastIndex', var.get(u'cur')) + var.put(u'match', var.get(u'lineBreakG').callprop(u'exec', var.get(u'input'))) + if (var.get(u'match') and (var.get(u'match').get(u'index')=Js(0.0)) + PyJs_anonymous_2844_._set_name(u'anonymous') + return PyJs_anonymous_2844_ + PyJsHoisted_makePredicate_.func_name = u'makePredicate' + var.put(u'makePredicate', PyJsHoisted_makePredicate_) + @Js + def PyJsHoisted_kw_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'options', u'name']) + PyJs_Object_2866_ = Js({}) + var.put(u'options', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_2866_)) + var.get(u'options').put(u'keyword', var.get(u'name')) + var.get(u'keywords').put(var.get(u'name'), var.get(u'types').put((Js(u'_')+var.get(u'name')), var.get(u'TokenType').create(var.get(u'name'), var.get(u'options')))) + PyJsHoisted_kw_.func_name = u'kw' + var.put(u'kw', PyJsHoisted_kw_) + @Js + def PyJsHoisted__classCallCheck_(instance, Constructor, this, arguments, var=var): + var = Scope({u'this':this, u'instance':instance, u'arguments':arguments, u'Constructor':Constructor}, var) + var.registers([u'instance', u'Constructor']) + if var.get(u'instance').instanceof(var.get(u'Constructor')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Cannot call a class as a function'))) + raise PyJsTempException + PyJsHoisted__classCallCheck_.func_name = u'_classCallCheck' + var.put(u'_classCallCheck', PyJsHoisted__classCallCheck_) + Js(u'use strict') + PyJs_Object_2843_ = Js({u'value':var.get(u'true')}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'__esModule'), PyJs_Object_2843_) + pass + PyJs_Object_2845_ = Js({u'6':var.get(u'makePredicate')(Js(u'enum await')),u'strict':var.get(u'makePredicate')(Js(u'implements interface let package private protected public static yield')),u'strictBind':var.get(u'makePredicate')(Js(u'eval arguments'))}) + var.put(u'reservedWords', PyJs_Object_2845_) + var.put(u'isKeyword$1', var.get(u'makePredicate')(Js(u'break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super'))) + var.put(u'nonASCIIidentifierStartChars', Js(u'\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fd5\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc')) + var.put(u'nonASCIIidentifierChars', Js(u'\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d4-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d01-\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f')) + var.put(u'nonASCIIidentifierStart', var.get(u'RegExp').create(((Js(u'[')+var.get(u'nonASCIIidentifierStartChars'))+Js(u']')))) + var.put(u'nonASCIIidentifier', var.get(u'RegExp').create((((Js(u'[')+var.get(u'nonASCIIidentifierStartChars'))+var.get(u'nonASCIIidentifierChars'))+Js(u']')))) + var.put(u'nonASCIIidentifierStartChars', var.put(u'nonASCIIidentifierChars', var.get(u"null"))) + var.put(u'astralIdentifierStartCodes', Js([Js(0.0), Js(11.0), Js(2.0), Js(25.0), Js(2.0), Js(18.0), Js(2.0), Js(1.0), Js(2.0), Js(14.0), Js(3.0), Js(13.0), Js(35.0), Js(122.0), Js(70.0), Js(52.0), Js(268.0), Js(28.0), Js(4.0), Js(48.0), Js(48.0), Js(31.0), Js(17.0), Js(26.0), Js(6.0), Js(37.0), Js(11.0), Js(29.0), Js(3.0), Js(35.0), Js(5.0), Js(7.0), Js(2.0), Js(4.0), Js(43.0), Js(157.0), Js(19.0), Js(35.0), Js(5.0), Js(35.0), Js(5.0), Js(39.0), Js(9.0), Js(51.0), Js(157.0), Js(310.0), Js(10.0), Js(21.0), Js(11.0), Js(7.0), Js(153.0), Js(5.0), Js(3.0), Js(0.0), Js(2.0), Js(43.0), Js(2.0), Js(1.0), Js(4.0), Js(0.0), Js(3.0), Js(22.0), Js(11.0), Js(22.0), Js(10.0), Js(30.0), Js(66.0), Js(18.0), Js(2.0), Js(1.0), Js(11.0), Js(21.0), Js(11.0), Js(25.0), Js(71.0), Js(55.0), Js(7.0), Js(1.0), Js(65.0), Js(0.0), Js(16.0), Js(3.0), Js(2.0), Js(2.0), Js(2.0), Js(26.0), Js(45.0), Js(28.0), Js(4.0), Js(28.0), Js(36.0), Js(7.0), Js(2.0), Js(27.0), Js(28.0), Js(53.0), Js(11.0), Js(21.0), Js(11.0), Js(18.0), Js(14.0), Js(17.0), Js(111.0), Js(72.0), Js(56.0), Js(50.0), Js(14.0), Js(50.0), Js(785.0), Js(52.0), Js(76.0), Js(44.0), Js(33.0), Js(24.0), Js(27.0), Js(35.0), Js(42.0), Js(34.0), Js(4.0), Js(0.0), Js(13.0), Js(47.0), Js(15.0), Js(3.0), Js(22.0), Js(0.0), Js(2.0), Js(0.0), Js(36.0), Js(17.0), Js(2.0), Js(24.0), Js(85.0), Js(6.0), Js(2.0), Js(0.0), Js(2.0), Js(3.0), Js(2.0), Js(14.0), Js(2.0), Js(9.0), Js(8.0), Js(46.0), Js(39.0), Js(7.0), Js(3.0), Js(1.0), Js(3.0), Js(21.0), Js(2.0), Js(6.0), Js(2.0), Js(1.0), Js(2.0), Js(4.0), Js(4.0), Js(0.0), Js(19.0), Js(0.0), Js(13.0), Js(4.0), Js(159.0), Js(52.0), Js(19.0), Js(3.0), Js(54.0), Js(47.0), Js(21.0), Js(1.0), Js(2.0), Js(0.0), Js(185.0), Js(46.0), Js(42.0), Js(3.0), Js(37.0), Js(47.0), Js(21.0), Js(0.0), Js(60.0), Js(42.0), Js(86.0), Js(25.0), Js(391.0), Js(63.0), Js(32.0), Js(0.0), Js(449.0), Js(56.0), Js(264.0), Js(8.0), Js(2.0), Js(36.0), Js(18.0), Js(0.0), Js(50.0), Js(29.0), Js(881.0), Js(921.0), Js(103.0), Js(110.0), Js(18.0), Js(195.0), Js(2749.0), Js(1070.0), Js(4050.0), Js(582.0), Js(8634.0), Js(568.0), Js(8.0), Js(30.0), Js(114.0), Js(29.0), Js(19.0), Js(47.0), Js(17.0), Js(3.0), Js(32.0), Js(20.0), Js(6.0), Js(18.0), Js(881.0), Js(68.0), Js(12.0), Js(0.0), Js(67.0), Js(12.0), Js(65.0), Js(0.0), Js(32.0), Js(6124.0), Js(20.0), Js(754.0), Js(9486.0), Js(1.0), Js(3071.0), Js(106.0), Js(6.0), Js(12.0), Js(4.0), Js(8.0), Js(8.0), Js(9.0), Js(5991.0), Js(84.0), Js(2.0), Js(70.0), Js(2.0), Js(1.0), Js(3.0), Js(0.0), Js(3.0), Js(1.0), Js(3.0), Js(3.0), Js(2.0), Js(11.0), Js(2.0), Js(0.0), Js(2.0), Js(6.0), Js(2.0), Js(64.0), Js(2.0), Js(3.0), Js(3.0), Js(7.0), Js(2.0), Js(6.0), Js(2.0), Js(27.0), Js(2.0), Js(3.0), Js(2.0), Js(4.0), Js(2.0), Js(0.0), Js(4.0), Js(6.0), Js(2.0), Js(339.0), Js(3.0), Js(24.0), Js(2.0), Js(24.0), Js(2.0), Js(30.0), Js(2.0), Js(24.0), Js(2.0), Js(30.0), Js(2.0), Js(24.0), Js(2.0), Js(30.0), Js(2.0), Js(24.0), Js(2.0), Js(30.0), Js(2.0), Js(24.0), Js(2.0), Js(7.0), Js(4149.0), Js(196.0), Js(60.0), Js(67.0), Js(1213.0), Js(3.0), Js(2.0), Js(26.0), Js(2.0), Js(1.0), Js(2.0), Js(0.0), Js(3.0), Js(0.0), Js(2.0), Js(9.0), Js(2.0), Js(3.0), Js(2.0), Js(0.0), Js(2.0), Js(0.0), Js(7.0), Js(0.0), Js(5.0), Js(0.0), Js(2.0), Js(0.0), Js(2.0), Js(0.0), Js(2.0), Js(2.0), Js(2.0), Js(1.0), Js(2.0), Js(0.0), Js(3.0), Js(0.0), Js(2.0), Js(0.0), Js(2.0), Js(0.0), Js(2.0), Js(0.0), Js(2.0), Js(0.0), Js(2.0), Js(1.0), Js(2.0), Js(0.0), Js(3.0), Js(3.0), Js(2.0), Js(6.0), Js(2.0), Js(3.0), Js(2.0), Js(3.0), Js(2.0), Js(0.0), Js(2.0), Js(9.0), Js(2.0), Js(16.0), Js(6.0), Js(2.0), Js(2.0), Js(4.0), Js(2.0), Js(16.0), Js(4421.0), Js(42710.0), Js(42.0), Js(4148.0), Js(12.0), Js(221.0), Js(3.0), Js(5761.0), Js(10591.0), Js(541.0)])) + var.put(u'astralIdentifierCodes', Js([Js(509.0), Js(0.0), Js(227.0), Js(0.0), Js(150.0), Js(4.0), Js(294.0), Js(9.0), Js(1368.0), Js(2.0), Js(2.0), Js(1.0), Js(6.0), Js(3.0), Js(41.0), Js(2.0), Js(5.0), Js(0.0), Js(166.0), Js(1.0), Js(1306.0), Js(2.0), Js(54.0), Js(14.0), Js(32.0), Js(9.0), Js(16.0), Js(3.0), Js(46.0), Js(10.0), Js(54.0), Js(9.0), Js(7.0), Js(2.0), Js(37.0), Js(13.0), Js(2.0), Js(9.0), Js(52.0), Js(0.0), Js(13.0), Js(2.0), Js(49.0), Js(13.0), Js(10.0), Js(2.0), Js(4.0), Js(9.0), Js(83.0), Js(11.0), Js(7.0), Js(0.0), Js(161.0), Js(11.0), Js(6.0), Js(9.0), Js(7.0), Js(3.0), Js(57.0), Js(0.0), Js(2.0), Js(6.0), Js(3.0), Js(1.0), Js(3.0), Js(2.0), Js(10.0), Js(0.0), Js(11.0), Js(1.0), Js(3.0), Js(6.0), Js(4.0), Js(4.0), Js(193.0), Js(17.0), Js(10.0), Js(9.0), Js(87.0), Js(19.0), Js(13.0), Js(9.0), Js(214.0), Js(6.0), Js(3.0), Js(8.0), Js(28.0), Js(1.0), Js(83.0), Js(16.0), Js(16.0), Js(9.0), Js(82.0), Js(12.0), Js(9.0), Js(9.0), Js(84.0), Js(14.0), Js(5.0), Js(9.0), Js(423.0), Js(9.0), Js(838.0), Js(7.0), Js(2.0), Js(7.0), Js(17.0), Js(9.0), Js(57.0), Js(21.0), Js(2.0), Js(13.0), Js(19882.0), Js(9.0), Js(135.0), Js(4.0), Js(60.0), Js(6.0), Js(26.0), Js(9.0), Js(1016.0), Js(45.0), Js(17.0), Js(3.0), Js(19723.0), Js(1.0), Js(5319.0), Js(4.0), Js(4.0), Js(5.0), Js(9.0), Js(7.0), Js(3.0), Js(6.0), Js(31.0), Js(3.0), Js(149.0), Js(2.0), Js(1418.0), Js(49.0), Js(513.0), Js(54.0), Js(5.0), Js(49.0), Js(9.0), Js(0.0), Js(15.0), Js(0.0), Js(23.0), Js(4.0), Js(2.0), Js(14.0), Js(1361.0), Js(6.0), Js(2.0), Js(16.0), Js(3.0), Js(6.0), Js(2.0), Js(1.0), Js(2.0), Js(4.0), Js(2214.0), Js(6.0), Js(110.0), Js(6.0), Js(6.0), Js(9.0), Js(792487.0), Js(239.0)])) + pass + pass + pass + PyJs_Object_2846_ = Js({u'sourceType':Js(u'script'),u'sourceFilename':var.get(u'undefined'),u'allowReturnOutsideFunction':Js(False),u'allowImportExportEverywhere':Js(False),u'allowSuperOutsideMethod':Js(False),u'plugins':Js([]),u'strictMode':var.get(u"null")}) + var.put(u'defaultOptions', PyJs_Object_2846_) + pass + pass + @Js + def PyJs_TokenType_2848_(label, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'TokenType':PyJs_TokenType_2848_, u'label':label}, var) + var.registers([u'conf', u'label']) + PyJs_Object_2849_ = Js({}) + var.put(u'conf', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else PyJs_Object_2849_)) + var.get(u'_classCallCheck$2')(var.get(u"this"), var.get(u'TokenType')) + var.get(u"this").put(u'label', var.get(u'label')) + var.get(u"this").put(u'keyword', var.get(u'conf').get(u'keyword')) + var.get(u"this").put(u'beforeExpr', var.get(u'conf').get(u'beforeExpr').neg().neg()) + var.get(u"this").put(u'startsExpr', var.get(u'conf').get(u'startsExpr').neg().neg()) + var.get(u"this").put(u'rightAssociative', var.get(u'conf').get(u'rightAssociative').neg().neg()) + var.get(u"this").put(u'isLoop', var.get(u'conf').get(u'isLoop').neg().neg()) + var.get(u"this").put(u'isAssign', var.get(u'conf').get(u'isAssign').neg().neg()) + var.get(u"this").put(u'prefix', var.get(u'conf').get(u'prefix').neg().neg()) + var.get(u"this").put(u'postfix', var.get(u'conf').get(u'postfix').neg().neg()) + var.get(u"this").put(u'binop', (var.get(u'conf').get(u'binop') or var.get(u"null"))) + var.get(u"this").put(u'updateContext', var.get(u"null")) + PyJs_TokenType_2848_._set_name(u'TokenType') + var.put(u'TokenType', PyJs_TokenType_2848_) + pass + PyJs_Object_2851_ = Js({u'beforeExpr':var.get(u'true')}) + var.put(u'beforeExpr', PyJs_Object_2851_) + PyJs_Object_2852_ = Js({u'startsExpr':var.get(u'true')}) + var.put(u'startsExpr', PyJs_Object_2852_) + PyJs_Object_2854_ = Js({u'beforeExpr':var.get(u'true'),u'startsExpr':var.get(u'true')}) + PyJs_Object_2855_ = Js({u'beforeExpr':var.get(u'true'),u'startsExpr':var.get(u'true')}) + PyJs_Object_2856_ = Js({u'beforeExpr':var.get(u'true'),u'startsExpr':var.get(u'true')}) + PyJs_Object_2857_ = Js({u'beforeExpr':var.get(u'true'),u'startsExpr':var.get(u'true')}) + PyJs_Object_2858_ = Js({u'beforeExpr':var.get(u'true'),u'startsExpr':var.get(u'true')}) + PyJs_Object_2859_ = Js({u'beforeExpr':var.get(u'true'),u'isAssign':var.get(u'true')}) + PyJs_Object_2860_ = Js({u'beforeExpr':var.get(u'true'),u'isAssign':var.get(u'true')}) + PyJs_Object_2861_ = Js({u'prefix':var.get(u'true'),u'postfix':var.get(u'true'),u'startsExpr':var.get(u'true')}) + PyJs_Object_2862_ = Js({u'beforeExpr':var.get(u'true'),u'prefix':var.get(u'true'),u'startsExpr':var.get(u'true')}) + PyJs_Object_2863_ = Js({u'beforeExpr':var.get(u'true'),u'binop':Js(9.0),u'prefix':var.get(u'true'),u'startsExpr':var.get(u'true')}) + PyJs_Object_2864_ = Js({u'beforeExpr':var.get(u'true'),u'binop':Js(11.0),u'rightAssociative':var.get(u'true')}) + PyJs_Object_2853_ = Js({u'num':var.get(u'TokenType').create(Js(u'num'), var.get(u'startsExpr')),u'regexp':var.get(u'TokenType').create(Js(u'regexp'), var.get(u'startsExpr')),u'string':var.get(u'TokenType').create(Js(u'string'), var.get(u'startsExpr')),u'name':var.get(u'TokenType').create(Js(u'name'), var.get(u'startsExpr')),u'eof':var.get(u'TokenType').create(Js(u'eof')),u'bracketL':var.get(u'TokenType').create(Js(u'['), PyJs_Object_2854_),u'bracketR':var.get(u'TokenType').create(Js(u']')),u'braceL':var.get(u'TokenType').create(Js(u'{'), PyJs_Object_2855_),u'braceBarL':var.get(u'TokenType').create(Js(u'{|'), PyJs_Object_2856_),u'braceR':var.get(u'TokenType').create(Js(u'}')),u'braceBarR':var.get(u'TokenType').create(Js(u'|}')),u'parenL':var.get(u'TokenType').create(Js(u'('), PyJs_Object_2857_),u'parenR':var.get(u'TokenType').create(Js(u')')),u'comma':var.get(u'TokenType').create(Js(u','), var.get(u'beforeExpr')),u'semi':var.get(u'TokenType').create(Js(u';'), var.get(u'beforeExpr')),u'colon':var.get(u'TokenType').create(Js(u':'), var.get(u'beforeExpr')),u'doubleColon':var.get(u'TokenType').create(Js(u'::'), var.get(u'beforeExpr')),u'dot':var.get(u'TokenType').create(Js(u'.')),u'question':var.get(u'TokenType').create(Js(u'?'), var.get(u'beforeExpr')),u'arrow':var.get(u'TokenType').create(Js(u'=>'), var.get(u'beforeExpr')),u'template':var.get(u'TokenType').create(Js(u'template')),u'ellipsis':var.get(u'TokenType').create(Js(u'...'), var.get(u'beforeExpr')),u'backQuote':var.get(u'TokenType').create(Js(u'`'), var.get(u'startsExpr')),u'dollarBraceL':var.get(u'TokenType').create(Js(u'${'), PyJs_Object_2858_),u'at':var.get(u'TokenType').create(Js(u'@')),u'eq':var.get(u'TokenType').create(Js(u'='), PyJs_Object_2859_),u'assign':var.get(u'TokenType').create(Js(u'_='), PyJs_Object_2860_),u'incDec':var.get(u'TokenType').create(Js(u'++/--'), PyJs_Object_2861_),u'prefix':var.get(u'TokenType').create(Js(u'prefix'), PyJs_Object_2862_),u'logicalOR':var.get(u'binop')(Js(u'||'), Js(1.0)),u'logicalAND':var.get(u'binop')(Js(u'&&'), Js(2.0)),u'bitwiseOR':var.get(u'binop')(Js(u'|'), Js(3.0)),u'bitwiseXOR':var.get(u'binop')(Js(u'^'), Js(4.0)),u'bitwiseAND':var.get(u'binop')(Js(u'&'), Js(5.0)),u'equality':var.get(u'binop')(Js(u'==/!='), Js(6.0)),u'relational':var.get(u'binop')(Js(u''), Js(7.0)),u'bitShift':var.get(u'binop')(Js(u'<>'), Js(8.0)),u'plusMin':var.get(u'TokenType').create(Js(u'+/-'), PyJs_Object_2863_),u'modulo':var.get(u'binop')(Js(u'%'), Js(10.0)),u'star':var.get(u'binop')(Js(u'*'), Js(10.0)),u'slash':var.get(u'binop')(Js(u'/'), Js(10.0)),u'exponent':var.get(u'TokenType').create(Js(u'**'), PyJs_Object_2864_)}) + var.put(u'types', PyJs_Object_2853_) + PyJs_Object_2865_ = Js({}) + var.put(u'keywords', PyJs_Object_2865_) + pass + var.get(u'kw')(Js(u'break')) + var.get(u'kw')(Js(u'case'), var.get(u'beforeExpr')) + var.get(u'kw')(Js(u'catch')) + var.get(u'kw')(Js(u'continue')) + var.get(u'kw')(Js(u'debugger')) + var.get(u'kw')(Js(u'default'), var.get(u'beforeExpr')) + PyJs_Object_2867_ = Js({u'isLoop':var.get(u'true'),u'beforeExpr':var.get(u'true')}) + var.get(u'kw')(Js(u'do'), PyJs_Object_2867_) + var.get(u'kw')(Js(u'else'), var.get(u'beforeExpr')) + var.get(u'kw')(Js(u'finally')) + PyJs_Object_2868_ = Js({u'isLoop':var.get(u'true')}) + var.get(u'kw')(Js(u'for'), PyJs_Object_2868_) + var.get(u'kw')(Js(u'function'), var.get(u'startsExpr')) + var.get(u'kw')(Js(u'if')) + var.get(u'kw')(Js(u'return'), var.get(u'beforeExpr')) + var.get(u'kw')(Js(u'switch')) + var.get(u'kw')(Js(u'throw'), var.get(u'beforeExpr')) + var.get(u'kw')(Js(u'try')) + var.get(u'kw')(Js(u'var')) + var.get(u'kw')(Js(u'let')) + var.get(u'kw')(Js(u'const')) + PyJs_Object_2869_ = Js({u'isLoop':var.get(u'true')}) + var.get(u'kw')(Js(u'while'), PyJs_Object_2869_) + var.get(u'kw')(Js(u'with')) + PyJs_Object_2870_ = Js({u'beforeExpr':var.get(u'true'),u'startsExpr':var.get(u'true')}) + var.get(u'kw')(Js(u'new'), PyJs_Object_2870_) + var.get(u'kw')(Js(u'this'), var.get(u'startsExpr')) + var.get(u'kw')(Js(u'super'), var.get(u'startsExpr')) + var.get(u'kw')(Js(u'class')) + var.get(u'kw')(Js(u'extends'), var.get(u'beforeExpr')) + var.get(u'kw')(Js(u'export')) + var.get(u'kw')(Js(u'import')) + PyJs_Object_2871_ = Js({u'beforeExpr':var.get(u'true'),u'startsExpr':var.get(u'true')}) + var.get(u'kw')(Js(u'yield'), PyJs_Object_2871_) + var.get(u'kw')(Js(u'null'), var.get(u'startsExpr')) + var.get(u'kw')(Js(u'true'), var.get(u'startsExpr')) + var.get(u'kw')(Js(u'false'), var.get(u'startsExpr')) + PyJs_Object_2872_ = Js({u'beforeExpr':var.get(u'true'),u'binop':Js(7.0)}) + var.get(u'kw')(Js(u'in'), PyJs_Object_2872_) + PyJs_Object_2873_ = Js({u'beforeExpr':var.get(u'true'),u'binop':Js(7.0)}) + var.get(u'kw')(Js(u'instanceof'), PyJs_Object_2873_) + PyJs_Object_2874_ = Js({u'beforeExpr':var.get(u'true'),u'prefix':var.get(u'true'),u'startsExpr':var.get(u'true')}) + var.get(u'kw')(Js(u'typeof'), PyJs_Object_2874_) + PyJs_Object_2875_ = Js({u'beforeExpr':var.get(u'true'),u'prefix':var.get(u'true'),u'startsExpr':var.get(u'true')}) + var.get(u'kw')(Js(u'void'), PyJs_Object_2875_) + PyJs_Object_2876_ = Js({u'beforeExpr':var.get(u'true'),u'prefix':var.get(u'true'),u'startsExpr':var.get(u'true')}) + var.get(u'kw')(Js(u'delete'), PyJs_Object_2876_) + var.put(u'lineBreak', JsRegExp(u'/\\r\\n?|\\n|\\u2028|\\u2029/')) + var.put(u'lineBreakG', var.get(u'RegExp').create(var.get(u'lineBreak').get(u'source'), Js(u'g'))) + pass + var.put(u'nonASCIIwhitespace', JsRegExp(u'/[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/')) + pass + @Js + def PyJs_TokContext_2877_(token, isExpr, preserveSpace, override, this, arguments, var=var): + var = Scope({u'TokContext':PyJs_TokContext_2877_, u'this':this, u'token':token, u'isExpr':isExpr, u'arguments':arguments, u'preserveSpace':preserveSpace, u'override':override}, var) + var.registers([u'override', u'token', u'isExpr', u'preserveSpace']) + var.get(u'_classCallCheck$3')(var.get(u"this"), var.get(u'TokContext')) + var.get(u"this").put(u'token', var.get(u'token')) + var.get(u"this").put(u'isExpr', var.get(u'isExpr').neg().neg()) + var.get(u"this").put(u'preserveSpace', var.get(u'preserveSpace').neg().neg()) + var.get(u"this").put(u'override', var.get(u'override')) + PyJs_TokContext_2877_._set_name(u'TokContext') + var.put(u'TokContext', PyJs_TokContext_2877_) + @Js + def PyJs_anonymous_2879_(p, this, arguments, var=var): + var = Scope({u'this':this, u'p':p, u'arguments':arguments}, var) + var.registers([u'p']) + return var.get(u'p').callprop(u'readTmplToken') + PyJs_anonymous_2879_._set_name(u'anonymous') + PyJs_Object_2878_ = Js({u'braceStatement':var.get(u'TokContext').create(Js(u'{'), Js(False)),u'braceExpression':var.get(u'TokContext').create(Js(u'{'), var.get(u'true')),u'templateQuasi':var.get(u'TokContext').create(Js(u'${'), var.get(u'true')),u'parenStatement':var.get(u'TokContext').create(Js(u'('), Js(False)),u'parenExpression':var.get(u'TokContext').create(Js(u'('), var.get(u'true')),u'template':var.get(u'TokContext').create(Js(u'`'), var.get(u'true'), var.get(u'true'), PyJs_anonymous_2879_),u'functionExpression':var.get(u'TokContext').create(Js(u'function'), var.get(u'true'))}) + var.put(u'types$1', PyJs_Object_2878_) + @Js + def PyJs_anonymous_2880_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'out']) + if PyJsStrictEq(var.get(u"this").get(u'state').get(u'context').get(u'length'),Js(1.0)): + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'true')) + return var.get('undefined') + var.put(u'out', var.get(u"this").get(u'state').get(u'context').callprop(u'pop')) + if (PyJsStrictEq(var.get(u'out'),var.get(u'types$1').get(u'braceStatement')) and PyJsStrictEq(var.get(u"this").callprop(u'curContext'),var.get(u'types$1').get(u'functionExpression'))): + var.get(u"this").get(u'state').get(u'context').callprop(u'pop') + var.get(u"this").get(u'state').put(u'exprAllowed', Js(False)) + else: + if PyJsStrictEq(var.get(u'out'),var.get(u'types$1').get(u'templateQuasi')): + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'true')) + else: + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'out').get(u'isExpr').neg()) + PyJs_anonymous_2880_._set_name(u'anonymous') + var.get(u'types').get(u'parenR').put(u'updateContext', var.get(u'types').get(u'braceR').put(u'updateContext', PyJs_anonymous_2880_)) + @Js + def PyJs_anonymous_2881_(prevType, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'prevType':prevType}, var) + var.registers([u'prevType']) + var.get(u"this").get(u'state').put(u'exprAllowed', Js(False)) + if ((PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'_let')) or PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'_const'))) or PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'_var'))): + if var.get(u'lineBreak').callprop(u'test', var.get(u"this").get(u'input').callprop(u'slice', var.get(u"this").get(u'state').get(u'end'))): + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'true')) + PyJs_anonymous_2881_._set_name(u'anonymous') + var.get(u'types').get(u'name').put(u'updateContext', PyJs_anonymous_2881_) + @Js + def PyJs_anonymous_2882_(prevType, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'prevType':prevType}, var) + var.registers([u'prevType']) + var.get(u"this").get(u'state').get(u'context').callprop(u'push', (var.get(u'types$1').get(u'braceStatement') if var.get(u"this").callprop(u'braceIsBlock', var.get(u'prevType')) else var.get(u'types$1').get(u'braceExpression'))) + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'true')) + PyJs_anonymous_2882_._set_name(u'anonymous') + var.get(u'types').get(u'braceL').put(u'updateContext', PyJs_anonymous_2882_) + @Js + def PyJs_anonymous_2883_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").get(u'state').get(u'context').callprop(u'push', var.get(u'types$1').get(u'templateQuasi')) + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'true')) + PyJs_anonymous_2883_._set_name(u'anonymous') + var.get(u'types').get(u'dollarBraceL').put(u'updateContext', PyJs_anonymous_2883_) + @Js + def PyJs_anonymous_2884_(prevType, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'prevType':prevType}, var) + var.registers([u'prevType', u'statementParens']) + var.put(u'statementParens', (((PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'_if')) or PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'_for'))) or PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'_with'))) or PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'_while')))) + var.get(u"this").get(u'state').get(u'context').callprop(u'push', (var.get(u'types$1').get(u'parenStatement') if var.get(u'statementParens') else var.get(u'types$1').get(u'parenExpression'))) + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'true')) + PyJs_anonymous_2884_._set_name(u'anonymous') + var.get(u'types').get(u'parenL').put(u'updateContext', PyJs_anonymous_2884_) + @Js + def PyJs_anonymous_2885_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + pass + PyJs_anonymous_2885_._set_name(u'anonymous') + var.get(u'types').get(u'incDec').put(u'updateContext', PyJs_anonymous_2885_) + @Js + def PyJs_anonymous_2886_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if PyJsStrictNeq(var.get(u"this").callprop(u'curContext'),var.get(u'types$1').get(u'braceStatement')): + var.get(u"this").get(u'state').get(u'context').callprop(u'push', var.get(u'types$1').get(u'functionExpression')) + var.get(u"this").get(u'state').put(u'exprAllowed', Js(False)) + PyJs_anonymous_2886_._set_name(u'anonymous') + var.get(u'types').get(u'_function').put(u'updateContext', PyJs_anonymous_2886_) + @Js + def PyJs_anonymous_2887_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if PyJsStrictEq(var.get(u"this").callprop(u'curContext'),var.get(u'types$1').get(u'template')): + var.get(u"this").get(u'state').get(u'context').callprop(u'pop') + else: + var.get(u"this").get(u'state').get(u'context').callprop(u'push', var.get(u'types$1').get(u'template')) + var.get(u"this").get(u'state').put(u'exprAllowed', Js(False)) + PyJs_anonymous_2887_._set_name(u'anonymous') + var.get(u'types').get(u'backQuote').put(u'updateContext', PyJs_anonymous_2887_) + pass + @Js + def PyJs_Position_2888_(line, col, this, arguments, var=var): + var = Scope({u'this':this, u'Position':PyJs_Position_2888_, u'line':line, u'col':col, u'arguments':arguments}, var) + var.registers([u'line', u'col']) + var.get(u'_classCallCheck$4')(var.get(u"this"), var.get(u'Position')) + var.get(u"this").put(u'line', var.get(u'line')) + var.get(u"this").put(u'column', var.get(u'col')) + PyJs_Position_2888_._set_name(u'Position') + var.put(u'Position', PyJs_Position_2888_) + @Js + def PyJs_SourceLocation_2889_(start, end, this, arguments, var=var): + var = Scope({u'this':this, u'start':start, u'end':end, u'arguments':arguments, u'SourceLocation':PyJs_SourceLocation_2889_}, var) + var.registers([u'start', u'end']) + var.get(u'_classCallCheck$4')(var.get(u"this"), var.get(u'SourceLocation')) + var.get(u"this").put(u'start', var.get(u'start')) + var.get(u"this").put(u'end', var.get(u'end')) + PyJs_SourceLocation_2889_._set_name(u'SourceLocation') + var.put(u'SourceLocation', PyJs_SourceLocation_2889_) + pass + pass + @Js + def PyJs_anonymous_2890_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'State']) + @Js + def PyJsHoisted_State_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'_classCallCheck$5')(var.get(u"this"), var.get(u'State')) + PyJsHoisted_State_.func_name = u'State' + var.put(u'State', PyJsHoisted_State_) + pass + @Js + def PyJs_init_2891_(options, input, this, arguments, var=var): + var = Scope({u'this':this, u'input':input, u'init':PyJs_init_2891_, u'options':options, u'arguments':arguments}, var) + var.registers([u'input', u'options']) + var.get(u"this").put(u'strict', (Js(False) if PyJsStrictEq(var.get(u'options').get(u'strictMode'),Js(False)) else PyJsStrictEq(var.get(u'options').get(u'sourceType'),Js(u'module')))) + var.get(u"this").put(u'input', var.get(u'input')) + var.get(u"this").put(u'potentialArrowAt', (-Js(1.0))) + var.get(u"this").put(u'inMethod', var.get(u"this").put(u'inFunction', var.get(u"this").put(u'inGenerator', var.get(u"this").put(u'inAsync', var.get(u"this").put(u'inType', Js(False)))))) + var.get(u"this").put(u'labels', Js([])) + var.get(u"this").put(u'decorators', Js([])) + var.get(u"this").put(u'tokens', Js([])) + var.get(u"this").put(u'comments', Js([])) + var.get(u"this").put(u'trailingComments', Js([])) + var.get(u"this").put(u'leadingComments', Js([])) + var.get(u"this").put(u'commentStack', Js([])) + var.get(u"this").put(u'pos', var.get(u"this").put(u'lineStart', Js(0.0))) + var.get(u"this").put(u'curLine', Js(1.0)) + var.get(u"this").put(u'type', var.get(u'types').get(u'eof')) + var.get(u"this").put(u'value', var.get(u"null")) + var.get(u"this").put(u'start', var.get(u"this").put(u'end', var.get(u"this").get(u'pos'))) + var.get(u"this").put(u'startLoc', var.get(u"this").put(u'endLoc', var.get(u"this").callprop(u'curPosition'))) + var.get(u"this").put(u'lastTokEndLoc', var.get(u"this").put(u'lastTokStartLoc', var.get(u"null"))) + var.get(u"this").put(u'lastTokStart', var.get(u"this").put(u'lastTokEnd', var.get(u"this").get(u'pos'))) + var.get(u"this").put(u'context', Js([var.get(u'types$1').get(u'braceStatement')])) + var.get(u"this").put(u'exprAllowed', var.get(u'true')) + var.get(u"this").put(u'containsEsc', var.get(u"this").put(u'containsOctal', Js(False))) + var.get(u"this").put(u'octalPosition', var.get(u"null")) + var.get(u"this").put(u'exportedIdentifiers', Js([])) + return var.get(u"this") + PyJs_init_2891_._set_name(u'init') + var.get(u'State').get(u'prototype').put(u'init', PyJs_init_2891_) + @Js + def PyJs_curPosition_2892_(this, arguments, var=var): + var = Scope({u'this':this, u'curPosition':PyJs_curPosition_2892_, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'Position').create(var.get(u"this").get(u'curLine'), (var.get(u"this").get(u'pos')-var.get(u"this").get(u'lineStart'))) + PyJs_curPosition_2892_._set_name(u'curPosition') + var.get(u'State').get(u'prototype').put(u'curPosition', PyJs_curPosition_2892_) + @Js + def PyJs_clone_2893_(skipArrays, this, arguments, var=var): + var = Scope({u'this':this, u'clone':PyJs_clone_2893_, u'skipArrays':skipArrays, u'arguments':arguments}, var) + var.registers([u'state', u'val', u'key', u'skipArrays']) + var.put(u'state', var.get(u'State').create()) + for PyJsTemp in var.get(u"this"): + var.put(u'key', PyJsTemp) + var.put(u'val', var.get(u"this").get(var.get(u'key'))) + if ((var.get(u'skipArrays').neg() or PyJsStrictEq(var.get(u'key'),Js(u'context'))) and var.get(u'Array').callprop(u'isArray', var.get(u'val'))): + var.put(u'val', var.get(u'val').callprop(u'slice')) + var.get(u'state').put(var.get(u'key'), var.get(u'val')) + return var.get(u'state') + PyJs_clone_2893_._set_name(u'clone') + var.get(u'State').get(u'prototype').put(u'clone', PyJs_clone_2893_) + return var.get(u'State') + PyJs_anonymous_2890_._set_name(u'anonymous') + var.put(u'State', PyJs_anonymous_2890_()) + pass + @Js + def PyJs_Token_2894_(state, this, arguments, var=var): + var = Scope({u'this':this, u'state':state, u'Token':PyJs_Token_2894_, u'arguments':arguments}, var) + var.registers([u'state']) + var.get(u'_classCallCheck$1')(var.get(u"this"), var.get(u'Token')) + var.get(u"this").put(u'type', var.get(u'state').get(u'type')) + var.get(u"this").put(u'value', var.get(u'state').get(u'value')) + var.get(u"this").put(u'start', var.get(u'state').get(u'start')) + var.get(u"this").put(u'end', var.get(u'state').get(u'end')) + var.get(u"this").put(u'loc', var.get(u'SourceLocation').create(var.get(u'state').get(u'startLoc'), var.get(u'state').get(u'endLoc'))) + PyJs_Token_2894_._set_name(u'Token') + var.put(u'Token', PyJs_Token_2894_) + pass + @Js + def PyJs_anonymous_2895_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'Tokenizer']) + @Js + def PyJsHoisted_Tokenizer_(options, input, this, arguments, var=var): + var = Scope({u'this':this, u'input':input, u'options':options, u'arguments':arguments}, var) + var.registers([u'input', u'options']) + var.get(u'_classCallCheck$1')(var.get(u"this"), var.get(u'Tokenizer')) + var.get(u"this").put(u'state', var.get(u'State').create()) + var.get(u"this").get(u'state').callprop(u'init', var.get(u'options'), var.get(u'input')) + PyJsHoisted_Tokenizer_.func_name = u'Tokenizer' + var.put(u'Tokenizer', PyJsHoisted_Tokenizer_) + pass + @Js + def PyJs_next_2896_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'next':PyJs_next_2896_}, var) + var.registers([]) + if var.get(u"this").get(u'isLookahead').neg(): + var.get(u"this").get(u'state').get(u'tokens').callprop(u'push', var.get(u'Token').create(var.get(u"this").get(u'state'))) + var.get(u"this").get(u'state').put(u'lastTokEnd', var.get(u"this").get(u'state').get(u'end')) + var.get(u"this").get(u'state').put(u'lastTokStart', var.get(u"this").get(u'state').get(u'start')) + var.get(u"this").get(u'state').put(u'lastTokEndLoc', var.get(u"this").get(u'state').get(u'endLoc')) + var.get(u"this").get(u'state').put(u'lastTokStartLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.get(u"this").callprop(u'nextToken') + PyJs_next_2896_._set_name(u'next') + var.get(u'Tokenizer').get(u'prototype').put(u'next', PyJs_next_2896_) + @Js + def PyJs_eat_2897_(type, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments, u'eat':PyJs_eat_2897_}, var) + var.registers([u'type']) + if var.get(u"this").callprop(u'match', var.get(u'type')): + var.get(u"this").callprop(u'next') + return var.get(u'true') + else: + return Js(False) + PyJs_eat_2897_._set_name(u'eat') + var.get(u'Tokenizer').get(u'prototype').put(u'eat', PyJs_eat_2897_) + @Js + def PyJs_match_2898_(type, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments, u'match':PyJs_match_2898_}, var) + var.registers([u'type']) + return PyJsStrictEq(var.get(u"this").get(u'state').get(u'type'),var.get(u'type')) + PyJs_match_2898_._set_name(u'match') + var.get(u'Tokenizer').get(u'prototype').put(u'match', PyJs_match_2898_) + @Js + def PyJs_isKeyword_2899_(word, this, arguments, var=var): + var = Scope({u'this':this, u'isKeyword':PyJs_isKeyword_2899_, u'word':word, u'arguments':arguments}, var) + var.registers([u'word']) + return var.get(u'isKeyword$1')(var.get(u'word')) + PyJs_isKeyword_2899_._set_name(u'isKeyword') + var.get(u'Tokenizer').get(u'prototype').put(u'isKeyword', PyJs_isKeyword_2899_) + @Js + def PyJs_lookahead_2900_(this, arguments, var=var): + var = Scope({u'this':this, u'lookahead':PyJs_lookahead_2900_, u'arguments':arguments}, var) + var.registers([u'curr', u'old']) + var.put(u'old', var.get(u"this").get(u'state')) + var.get(u"this").put(u'state', var.get(u'old').callprop(u'clone', var.get(u'true'))) + var.get(u"this").put(u'isLookahead', var.get(u'true')) + var.get(u"this").callprop(u'next') + var.get(u"this").put(u'isLookahead', Js(False)) + var.put(u'curr', var.get(u"this").get(u'state').callprop(u'clone', var.get(u'true'))) + var.get(u"this").put(u'state', var.get(u'old')) + return var.get(u'curr') + PyJs_lookahead_2900_._set_name(u'lookahead') + var.get(u'Tokenizer').get(u'prototype').put(u'lookahead', PyJs_lookahead_2900_) + @Js + def PyJs_setStrict_2901_(strict, this, arguments, var=var): + var = Scope({u'this':this, u'strict':strict, u'arguments':arguments, u'setStrict':PyJs_setStrict_2901_}, var) + var.registers([u'strict']) + var.get(u"this").get(u'state').put(u'strict', var.get(u'strict')) + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'num')).neg() and var.get(u"this").callprop(u'match', var.get(u'types').get(u'string')).neg()): + return var.get('undefined') + var.get(u"this").get(u'state').put(u'pos', var.get(u"this").get(u'state').get(u'start')) + while (var.get(u"this").get(u'state').get(u'pos')=var.get(u"this").get(u'input').get(u'length')): + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'eof')) + if var.get(u'curContext').get(u'override'): + return var.get(u'curContext').callprop(u'override', var.get(u"this")) + else: + return var.get(u"this").callprop(u'readToken', var.get(u"this").callprop(u'fullCharCodeAtPos')) + PyJs_nextToken_2903_._set_name(u'nextToken') + var.get(u'Tokenizer').get(u'prototype').put(u'nextToken', PyJs_nextToken_2903_) + @Js + def PyJs_readToken_2904_(code, this, arguments, var=var): + var = Scope({u'this':this, u'readToken':PyJs_readToken_2904_, u'code':code, u'arguments':arguments}, var) + var.registers([u'code']) + if (var.get(u'isIdentifierStart')(var.get(u'code')) or PyJsStrictEq(var.get(u'code'),Js(92.0))): + return var.get(u"this").callprop(u'readWord') + else: + return var.get(u"this").callprop(u'getTokenFromCode', var.get(u'code')) + PyJs_readToken_2904_._set_name(u'readToken') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken', PyJs_readToken_2904_) + @Js + def PyJs_fullCharCodeAtPos_2905_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'fullCharCodeAtPos':PyJs_fullCharCodeAtPos_2905_}, var) + var.registers([u'code', u'next']) + var.put(u'code', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + if ((var.get(u'code')<=Js(55295)) or (var.get(u'code')>=Js(57344))): + return var.get(u'code') + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + return (((var.get(u'code')<Js(8.0)) and (var.get(u'ch')=Js(5760.0)) and var.get(u'nonASCIIwhitespace').callprop(u'test', var.get(u'String').callprop(u'fromCharCode', var.get(u'ch'))))): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + else: + raise JS_BREAK_LABEL_6c6f6f70("Breaked") + SWITCHED = True + break + except JS_CONTINUE_LABEL_6c6f6f70: + pass + except JS_BREAK_LABEL_6c6f6f70: + pass + PyJs_skipSpace_2910_._set_name(u'skipSpace') + var.get(u'Tokenizer').get(u'prototype').put(u'skipSpace', PyJs_skipSpace_2910_) + @Js + def PyJs_finishToken_2911_(type, val, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments, u'val':val, u'finishToken':PyJs_finishToken_2911_}, var) + var.registers([u'type', u'val', u'prevType']) + var.get(u"this").get(u'state').put(u'end', var.get(u"this").get(u'state').get(u'pos')) + var.get(u"this").get(u'state').put(u'endLoc', var.get(u"this").get(u'state').callprop(u'curPosition')) + var.put(u'prevType', var.get(u"this").get(u'state').get(u'type')) + var.get(u"this").get(u'state').put(u'type', var.get(u'type')) + var.get(u"this").get(u'state').put(u'value', var.get(u'val')) + var.get(u"this").callprop(u'updateContext', var.get(u'prevType')) + PyJs_finishToken_2911_._set_name(u'finishToken') + var.get(u'Tokenizer').get(u'prototype').put(u'finishToken', PyJs_finishToken_2911_) + @Js + def PyJs_readToken_dot_2912_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'readToken_dot':PyJs_readToken_dot_2912_}, var) + var.registers([u'next2', u'next']) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + if ((var.get(u'next')>=Js(48.0)) and (var.get(u'next')<=Js(57.0))): + return var.get(u"this").callprop(u'readNumber', var.get(u'true')) + var.put(u'next2', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(2.0)))) + if (PyJsStrictEq(var.get(u'next'),Js(46.0)) and PyJsStrictEq(var.get(u'next2'),Js(46.0))): + var.get(u"this").get(u'state').put(u'pos', Js(3.0), u'+') + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'ellipsis')) + else: + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'dot')) + PyJs_readToken_dot_2912_._set_name(u'readToken_dot') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken_dot', PyJs_readToken_dot_2912_) + @Js + def PyJs_readToken_slash_2913_(this, arguments, var=var): + var = Scope({u'this':this, u'readToken_slash':PyJs_readToken_slash_2913_, u'arguments':arguments}, var) + var.registers([u'next']) + if var.get(u"this").get(u'state').get(u'exprAllowed'): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'readRegexp') + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + if PyJsStrictEq(var.get(u'next'),Js(61.0)): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'assign'), Js(2.0)) + else: + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'slash'), Js(1.0)) + PyJs_readToken_slash_2913_._set_name(u'readToken_slash') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken_slash', PyJs_readToken_slash_2913_) + @Js + def PyJs_readToken_mult_modulo_2914_(code, this, arguments, var=var): + var = Scope({u'this':this, u'readToken_mult_modulo':PyJs_readToken_mult_modulo_2914_, u'code':code, u'arguments':arguments}, var) + var.registers([u'width', u'code', u'type', u'next']) + var.put(u'type', (var.get(u'types').get(u'star') if PyJsStrictEq(var.get(u'code'),Js(42.0)) else var.get(u'types').get(u'modulo'))) + var.put(u'width', Js(1.0)) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + if PyJsStrictEq(var.get(u'next'),Js(42.0)): + (var.put(u'width',Js(var.get(u'width').to_number())+Js(1))-Js(1)) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(2.0)))) + var.put(u'type', var.get(u'types').get(u'exponent')) + if PyJsStrictEq(var.get(u'next'),Js(61.0)): + (var.put(u'width',Js(var.get(u'width').to_number())+Js(1))-Js(1)) + var.put(u'type', var.get(u'types').get(u'assign')) + return var.get(u"this").callprop(u'finishOp', var.get(u'type'), var.get(u'width')) + PyJs_readToken_mult_modulo_2914_._set_name(u'readToken_mult_modulo') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken_mult_modulo', PyJs_readToken_mult_modulo_2914_) + @Js + def PyJs_readToken_pipe_amp_2915_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'readToken_pipe_amp':PyJs_readToken_pipe_amp_2915_}, var) + var.registers([u'code', u'next']) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + if PyJsStrictEq(var.get(u'next'),var.get(u'code')): + return var.get(u"this").callprop(u'finishOp', (var.get(u'types').get(u'logicalOR') if PyJsStrictEq(var.get(u'code'),Js(124.0)) else var.get(u'types').get(u'logicalAND')), Js(2.0)) + if PyJsStrictEq(var.get(u'next'),Js(61.0)): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'assign'), Js(2.0)) + if ((PyJsStrictEq(var.get(u'code'),Js(124.0)) and PyJsStrictEq(var.get(u'next'),Js(125.0))) and var.get(u"this").callprop(u'hasPlugin', Js(u'flow'))): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'braceBarR'), Js(2.0)) + return var.get(u"this").callprop(u'finishOp', (var.get(u'types').get(u'bitwiseOR') if PyJsStrictEq(var.get(u'code'),Js(124.0)) else var.get(u'types').get(u'bitwiseAND')), Js(1.0)) + PyJs_readToken_pipe_amp_2915_._set_name(u'readToken_pipe_amp') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken_pipe_amp', PyJs_readToken_pipe_amp_2915_) + @Js + def PyJs_readToken_caret_2916_(this, arguments, var=var): + var = Scope({u'this':this, u'readToken_caret':PyJs_readToken_caret_2916_, u'arguments':arguments}, var) + var.registers([u'next']) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + if PyJsStrictEq(var.get(u'next'),Js(61.0)): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'assign'), Js(2.0)) + else: + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'bitwiseXOR'), Js(1.0)) + PyJs_readToken_caret_2916_._set_name(u'readToken_caret') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken_caret', PyJs_readToken_caret_2916_) + @Js + def PyJs_readToken_plus_min_2917_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'readToken_plus_min':PyJs_readToken_plus_min_2917_}, var) + var.registers([u'code', u'next']) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + if PyJsStrictEq(var.get(u'next'),var.get(u'code')): + if ((PyJsStrictEq(var.get(u'next'),Js(45.0)) and PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(2.0))),Js(62.0))) and var.get(u'lineBreak').callprop(u'test', var.get(u"this").get(u'input').callprop(u'slice', var.get(u"this").get(u'state').get(u'lastTokEnd'), var.get(u"this").get(u'state').get(u'pos')))): + var.get(u"this").callprop(u'skipLineComment', Js(3.0)) + var.get(u"this").callprop(u'skipSpace') + return var.get(u"this").callprop(u'nextToken') + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'incDec'), Js(2.0)) + if PyJsStrictEq(var.get(u'next'),Js(61.0)): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'assign'), Js(2.0)) + else: + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'plusMin'), Js(1.0)) + PyJs_readToken_plus_min_2917_._set_name(u'readToken_plus_min') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken_plus_min', PyJs_readToken_plus_min_2917_) + @Js + def PyJs_readToken_lt_gt_2918_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments, u'readToken_lt_gt':PyJs_readToken_lt_gt_2918_}, var) + var.registers([u'code', u'size', u'next']) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + var.put(u'size', Js(1.0)) + if PyJsStrictEq(var.get(u'next'),var.get(u'code')): + var.put(u'size', (Js(3.0) if (PyJsStrictEq(var.get(u'code'),Js(62.0)) and PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(2.0))),Js(62.0))) else Js(2.0))) + if PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+var.get(u'size'))),Js(61.0)): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'assign'), (var.get(u'size')+Js(1.0))) + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'bitShift'), var.get(u'size')) + if (((PyJsStrictEq(var.get(u'next'),Js(33.0)) and PyJsStrictEq(var.get(u'code'),Js(60.0))) and PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(2.0))),Js(45.0))) and PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(3.0))),Js(45.0))): + if var.get(u"this").get(u'inModule'): + var.get(u"this").callprop(u'unexpected') + var.get(u"this").callprop(u'skipLineComment', Js(4.0)) + var.get(u"this").callprop(u'skipSpace') + return var.get(u"this").callprop(u'nextToken') + if PyJsStrictEq(var.get(u'next'),Js(61.0)): + var.put(u'size', Js(2.0)) + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'relational'), var.get(u'size')) + PyJs_readToken_lt_gt_2918_._set_name(u'readToken_lt_gt') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken_lt_gt', PyJs_readToken_lt_gt_2918_) + @Js + def PyJs_readToken_eq_excl_2919_(code, this, arguments, var=var): + var = Scope({u'this':this, u'readToken_eq_excl':PyJs_readToken_eq_excl_2919_, u'code':code, u'arguments':arguments}, var) + var.registers([u'code', u'next']) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + if PyJsStrictEq(var.get(u'next'),Js(61.0)): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'equality'), (Js(3.0) if PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(2.0))),Js(61.0)) else Js(2.0))) + if (PyJsStrictEq(var.get(u'code'),Js(61.0)) and PyJsStrictEq(var.get(u'next'),Js(62.0))): + var.get(u"this").get(u'state').put(u'pos', Js(2.0), u'+') + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'arrow')) + return var.get(u"this").callprop(u'finishOp', (var.get(u'types').get(u'eq') if PyJsStrictEq(var.get(u'code'),Js(61.0)) else var.get(u'types').get(u'prefix')), Js(1.0)) + PyJs_readToken_eq_excl_2919_._set_name(u'readToken_eq_excl') + var.get(u'Tokenizer').get(u'prototype').put(u'readToken_eq_excl', PyJs_readToken_eq_excl_2919_) + @Js + def PyJs_getTokenFromCode_2920_(code, this, arguments, var=var): + var = Scope({u'this':this, u'getTokenFromCode':PyJs_getTokenFromCode_2920_, u'code':code, u'arguments':arguments}, var) + var.registers([u'code', u'next']) + while 1: + SWITCHED = False + CONDITION = (var.get(u'code')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(46.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readToken_dot') + if SWITCHED or PyJsStrictEq(CONDITION, Js(40.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'parenL')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(41.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'parenR')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(59.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'semi')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(44.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'comma')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(91.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'bracketL')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(93.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'bracketR')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(123.0)): + SWITCHED = True + if (var.get(u"this").callprop(u'hasPlugin', Js(u'flow')) and PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0))),Js(124.0))): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'braceBarL'), Js(2.0)) + else: + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'braceL')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(125.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'braceR')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(58.0)): + SWITCHED = True + if (var.get(u"this").callprop(u'hasPlugin', Js(u'functionBind')) and PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0))),Js(58.0))): + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'doubleColon'), Js(2.0)) + else: + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'colon')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(63.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'question')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(64.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'at')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(96.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'backQuote')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(48.0)): + SWITCHED = True + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0)))) + if (PyJsStrictEq(var.get(u'next'),Js(120.0)) or PyJsStrictEq(var.get(u'next'),Js(88.0))): + return var.get(u"this").callprop(u'readRadixNumber', Js(16.0)) + if (PyJsStrictEq(var.get(u'next'),Js(111.0)) or PyJsStrictEq(var.get(u'next'),Js(79.0))): + return var.get(u"this").callprop(u'readRadixNumber', Js(8.0)) + if (PyJsStrictEq(var.get(u'next'),Js(98.0)) or PyJsStrictEq(var.get(u'next'),Js(66.0))): + return var.get(u"this").callprop(u'readRadixNumber', Js(2.0)) + if SWITCHED or PyJsStrictEq(CONDITION, Js(49.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(50.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(51.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(52.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(53.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(54.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(55.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(56.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(57.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readNumber', Js(False)) + if SWITCHED or PyJsStrictEq(CONDITION, Js(34.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(39.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readString', var.get(u'code')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(47.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readToken_slash') + if SWITCHED or PyJsStrictEq(CONDITION, Js(37.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(42.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readToken_mult_modulo', var.get(u'code')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(124.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(38.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readToken_pipe_amp', var.get(u'code')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(94.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readToken_caret') + if SWITCHED or PyJsStrictEq(CONDITION, Js(43.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(45.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readToken_plus_min', var.get(u'code')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(60.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(62.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readToken_lt_gt', var.get(u'code')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(61.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(33.0)): + SWITCHED = True + return var.get(u"this").callprop(u'readToken_eq_excl', var.get(u'code')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(126.0)): + SWITCHED = True + return var.get(u"this").callprop(u'finishOp', var.get(u'types').get(u'prefix'), Js(1.0)) + SWITCHED = True + break + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'pos'), ((Js(u"Unexpected character '")+var.get(u'codePointToString')(var.get(u'code')))+Js(u"'"))) + PyJs_getTokenFromCode_2920_._set_name(u'getTokenFromCode') + var.get(u'Tokenizer').get(u'prototype').put(u'getTokenFromCode', PyJs_getTokenFromCode_2920_) + @Js + def PyJs_finishOp_2921_(type, size, this, arguments, var=var): + var = Scope({u'this':this, u'finishOp':PyJs_finishOp_2921_, u'type':type, u'arguments':arguments, u'size':size}, var) + var.registers([u'type', u'str', u'size']) + var.put(u'str', var.get(u"this").get(u'input').callprop(u'slice', var.get(u"this").get(u'state').get(u'pos'), (var.get(u"this").get(u'state').get(u'pos')+var.get(u'size')))) + var.get(u"this").get(u'state').put(u'pos', var.get(u'size'), u'+') + return var.get(u"this").callprop(u'finishToken', var.get(u'type'), var.get(u'str')) + PyJs_finishOp_2921_._set_name(u'finishOp') + var.get(u'Tokenizer').get(u'prototype').put(u'finishOp', PyJs_finishOp_2921_) + @Js + def PyJs_readRegexp_2922_(this, arguments, var=var): + var = Scope({u'this':this, u'readRegexp':PyJs_readRegexp_2922_, u'arguments':arguments}, var) + var.registers([u'content', u'ch', u'inClass', u'escaped', u'start', u'mods', u'validFlags']) + var.put(u'escaped', PyJsComma(Js(0.0), Js(None))) + var.put(u'inClass', PyJsComma(Js(0.0), Js(None))) + var.put(u'start', var.get(u"this").get(u'state').get(u'pos')) + #for JS loop + + while 1: + if (var.get(u"this").get(u'state').get(u'pos')>=var.get(u"this").get(u'input').get(u'length')): + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'Unterminated regular expression')) + var.put(u'ch', var.get(u"this").get(u'input').callprop(u'charAt', var.get(u"this").get(u'state').get(u'pos'))) + if var.get(u'lineBreak').callprop(u'test', var.get(u'ch')): + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'Unterminated regular expression')) + if var.get(u'escaped'): + var.put(u'escaped', Js(False)) + else: + if PyJsStrictEq(var.get(u'ch'),Js(u'[')): + var.put(u'inClass', var.get(u'true')) + else: + if (PyJsStrictEq(var.get(u'ch'),Js(u']')) and var.get(u'inClass')): + var.put(u'inClass', Js(False)) + else: + if (PyJsStrictEq(var.get(u'ch'),Js(u'/')) and var.get(u'inClass').neg()): + break + var.put(u'escaped', PyJsStrictEq(var.get(u'ch'),Js(u'\\'))) + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + + var.put(u'content', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'start'), var.get(u"this").get(u'state').get(u'pos'))) + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + var.put(u'mods', var.get(u"this").callprop(u'readWord1')) + if var.get(u'mods'): + var.put(u'validFlags', JsRegExp(u'/^[gmsiyu]*$/')) + if var.get(u'validFlags').callprop(u'test', var.get(u'mods')).neg(): + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'Invalid regular expression flag')) + PyJs_Object_2923_ = Js({u'pattern':var.get(u'content'),u'flags':var.get(u'mods')}) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'regexp'), PyJs_Object_2923_) + PyJs_readRegexp_2922_._set_name(u'readRegexp') + var.get(u'Tokenizer').get(u'prototype').put(u'readRegexp', PyJs_readRegexp_2922_) + @Js + def PyJs_readInt_2924_(radix, len, this, arguments, var=var): + var = Scope({u'this':this, u'readInt':PyJs_readInt_2924_, u'radix':radix, u'arguments':arguments, u'len':len}, var) + var.registers([u'code', u'e', u'val', u'i', u'len', u'start', u'radix', u'total']) + var.put(u'start', var.get(u"this").get(u'state').get(u'pos')) + var.put(u'total', Js(0.0)) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'e', (var.get(u'Infinity') if (var.get(u'len')==var.get(u"null")) else var.get(u'len'))) + while (var.get(u'i')=Js(97.0)): + var.put(u'val', ((var.get(u'code')-Js(97.0))+Js(10.0))) + else: + if (var.get(u'code')>=Js(65.0)): + var.put(u'val', ((var.get(u'code')-Js(65.0))+Js(10.0))) + else: + if ((var.get(u'code')>=Js(48.0)) and (var.get(u'code')<=Js(57.0))): + var.put(u'val', (var.get(u'code')-Js(48.0))) + else: + var.put(u'val', var.get(u'Infinity')) + if (var.get(u'val')>=var.get(u'radix')): + break + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + var.put(u'total', ((var.get(u'total')*var.get(u'radix'))+var.get(u'val'))) + finally: + var.put(u'i',Js(var.get(u'i').to_number())+Js(1)) + if (PyJsStrictEq(var.get(u"this").get(u'state').get(u'pos'),var.get(u'start')) or ((var.get(u'len')!=var.get(u"null")) and PyJsStrictNeq((var.get(u"this").get(u'state').get(u'pos')-var.get(u'start')),var.get(u'len')))): + return var.get(u"null") + return var.get(u'total') + PyJs_readInt_2924_._set_name(u'readInt') + var.get(u'Tokenizer').get(u'prototype').put(u'readInt', PyJs_readInt_2924_) + @Js + def PyJs_readRadixNumber_2925_(radix, this, arguments, var=var): + var = Scope({u'this':this, u'radix':radix, u'arguments':arguments, u'readRadixNumber':PyJs_readRadixNumber_2925_}, var) + var.registers([u'radix', u'val']) + var.get(u"this").get(u'state').put(u'pos', Js(2.0), u'+') + var.put(u'val', var.get(u"this").callprop(u'readInt', var.get(u'radix'))) + if (var.get(u'val')==var.get(u"null")): + var.get(u"this").callprop(u'raise', (var.get(u"this").get(u'state').get(u'start')+Js(2.0)), (Js(u'Expected number in radix ')+var.get(u'radix'))) + if var.get(u'isIdentifierStart')(var.get(u"this").callprop(u'fullCharCodeAtPos')): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'pos'), Js(u'Identifier directly after number')) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'num'), var.get(u'val')) + PyJs_readRadixNumber_2925_._set_name(u'readRadixNumber') + var.get(u'Tokenizer').get(u'prototype').put(u'readRadixNumber', PyJs_readRadixNumber_2925_) + @Js + def PyJs_readNumber_2926_(startsWithDot, this, arguments, var=var): + var = Scope({u'this':this, u'startsWithDot':startsWithDot, u'arguments':arguments, u'readNumber':PyJs_readNumber_2926_}, var) + var.registers([u'isFloat', u'val', u'next', u'start', u'str', u'octal', u'startsWithDot']) + var.put(u'start', var.get(u"this").get(u'state').get(u'pos')) + var.put(u'isFloat', Js(False)) + var.put(u'octal', PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos')),Js(48.0))) + if (var.get(u'startsWithDot').neg() and PyJsStrictEq(var.get(u"this").callprop(u'readInt', Js(10.0)),var.get(u"null"))): + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'Invalid number')) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + if PyJsStrictEq(var.get(u'next'),Js(46.0)): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + var.get(u"this").callprop(u'readInt', Js(10.0)) + var.put(u'isFloat', var.get(u'true')) + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + if (PyJsStrictEq(var.get(u'next'),Js(69.0)) or PyJsStrictEq(var.get(u'next'),Js(101.0))): + var.put(u'next', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)))) + if (PyJsStrictEq(var.get(u'next'),Js(43.0)) or PyJsStrictEq(var.get(u'next'),Js(45.0))): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + if PyJsStrictEq(var.get(u"this").callprop(u'readInt', Js(10.0)),var.get(u"null")): + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'Invalid number')) + var.put(u'isFloat', var.get(u'true')) + if var.get(u'isIdentifierStart')(var.get(u"this").callprop(u'fullCharCodeAtPos')): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'pos'), Js(u'Identifier directly after number')) + var.put(u'str', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'start'), var.get(u"this").get(u'state').get(u'pos'))) + var.put(u'val', PyJsComma(Js(0.0), Js(None))) + if var.get(u'isFloat'): + var.put(u'val', var.get(u'parseFloat')(var.get(u'str'))) + else: + if (var.get(u'octal').neg() or PyJsStrictEq(var.get(u'str').get(u'length'),Js(1.0))): + var.put(u'val', var.get(u'parseInt')(var.get(u'str'), Js(10.0))) + else: + if (JsRegExp(u'/[89]/').callprop(u'test', var.get(u'str')) or var.get(u"this").get(u'state').get(u'strict')): + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'Invalid number')) + else: + var.put(u'val', var.get(u'parseInt')(var.get(u'str'), Js(8.0))) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'num'), var.get(u'val')) + PyJs_readNumber_2926_._set_name(u'readNumber') + var.get(u'Tokenizer').get(u'prototype').put(u'readNumber', PyJs_readNumber_2926_) + @Js + def PyJs_readCodePoint_2927_(this, arguments, var=var): + var = Scope({u'this':this, u'readCodePoint':PyJs_readCodePoint_2927_, u'arguments':arguments}, var) + var.registers([u'code', u'ch', u'codePos']) + var.put(u'ch', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + var.put(u'code', PyJsComma(Js(0.0), Js(None))) + if PyJsStrictEq(var.get(u'ch'),Js(123.0)): + var.put(u'codePos', var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1))) + var.put(u'code', var.get(u"this").callprop(u'readHexChar', (var.get(u"this").get(u'input').callprop(u'indexOf', Js(u'}'), var.get(u"this").get(u'state').get(u'pos'))-var.get(u"this").get(u'state').get(u'pos')))) + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + if (var.get(u'code')>Js(1114111)): + var.get(u"this").callprop(u'raise', var.get(u'codePos'), Js(u'Code point out of bounds')) + else: + var.put(u'code', var.get(u"this").callprop(u'readHexChar', Js(4.0))) + return var.get(u'code') + PyJs_readCodePoint_2927_._set_name(u'readCodePoint') + var.get(u'Tokenizer').get(u'prototype').put(u'readCodePoint', PyJs_readCodePoint_2927_) + @Js + def PyJs_readString_2928_(quote, this, arguments, var=var): + var = Scope({u'this':this, u'quote':quote, u'arguments':arguments, u'readString':PyJs_readString_2928_}, var) + var.registers([u'ch', u'quote', u'chunkStart', u'out']) + var.put(u'out', Js(u'')) + var.put(u'chunkStart', var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1))) + #for JS loop + + while 1: + if (var.get(u"this").get(u'state').get(u'pos')>=var.get(u"this").get(u'input').get(u'length')): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'Unterminated string constant')) + var.put(u'ch', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + if PyJsStrictEq(var.get(u'ch'),var.get(u'quote')): + break + if PyJsStrictEq(var.get(u'ch'),Js(92.0)): + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + var.put(u'out', var.get(u"this").callprop(u'readEscapedChar', Js(False)), u'+') + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + else: + if var.get(u'isNewLine')(var.get(u'ch')): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'Unterminated string constant')) + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), (var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1))-Js(1))), u'+') + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'string'), var.get(u'out')) + PyJs_readString_2928_._set_name(u'readString') + var.get(u'Tokenizer').get(u'prototype').put(u'readString', PyJs_readString_2928_) + @Js + def PyJs_readTmplToken_2929_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'readTmplToken':PyJs_readTmplToken_2929_}, var) + var.registers([u'ch', u'chunkStart', u'out']) + var.put(u'out', Js(u'')) + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + #for JS loop + + while 1: + if (var.get(u"this").get(u'state').get(u'pos')>=var.get(u"this").get(u'input').get(u'length')): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'Unterminated template')) + var.put(u'ch', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + if (PyJsStrictEq(var.get(u'ch'),Js(96.0)) or (PyJsStrictEq(var.get(u'ch'),Js(36.0)) and PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', (var.get(u"this").get(u'state').get(u'pos')+Js(1.0))),Js(123.0)))): + if (PyJsStrictEq(var.get(u"this").get(u'state').get(u'pos'),var.get(u"this").get(u'state').get(u'start')) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'template'))): + if PyJsStrictEq(var.get(u'ch'),Js(36.0)): + var.get(u"this").get(u'state').put(u'pos', Js(2.0), u'+') + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'dollarBraceL')) + else: + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'backQuote')) + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'template'), var.get(u'out')) + if PyJsStrictEq(var.get(u'ch'),Js(92.0)): + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + var.put(u'out', var.get(u"this").callprop(u'readEscapedChar', var.get(u'true')), u'+') + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + else: + if var.get(u'isNewLine')(var.get(u'ch')): + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + while 1: + SWITCHED = False + CONDITION = (var.get(u'ch')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(13.0)): + SWITCHED = True + if PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos')),Js(10.0)): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + if SWITCHED or PyJsStrictEq(CONDITION, Js(10.0)): + SWITCHED = True + var.put(u'out', Js(u'\n'), u'+') + break + if True: + SWITCHED = True + var.put(u'out', var.get(u'String').callprop(u'fromCharCode', var.get(u'ch')), u'+') + break + SWITCHED = True + break + var.get(u"this").get(u'state').put(u'curLine',Js(var.get(u"this").get(u'state').get(u'curLine').to_number())+Js(1)) + var.get(u"this").get(u'state').put(u'lineStart', var.get(u"this").get(u'state').get(u'pos')) + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + else: + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + + PyJs_readTmplToken_2929_._set_name(u'readTmplToken') + var.get(u'Tokenizer').get(u'prototype').put(u'readTmplToken', PyJs_readTmplToken_2929_) + @Js + def PyJs_readEscapedChar_2930_(inTemplate, this, arguments, var=var): + var = Scope({u'this':this, u'readEscapedChar':PyJs_readEscapedChar_2930_, u'inTemplate':inTemplate, u'arguments':arguments}, var) + var.registers([u'octal', u'octalStr', u'ch', u'inTemplate']) + var.put(u'ch', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)))) + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + while 1: + SWITCHED = False + CONDITION = (var.get(u'ch')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(110.0)): + SWITCHED = True + return Js(u'\n') + if SWITCHED or PyJsStrictEq(CONDITION, Js(114.0)): + SWITCHED = True + return Js(u'\r') + if SWITCHED or PyJsStrictEq(CONDITION, Js(120.0)): + SWITCHED = True + return var.get(u'String').callprop(u'fromCharCode', var.get(u"this").callprop(u'readHexChar', Js(2.0))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(117.0)): + SWITCHED = True + return var.get(u'codePointToString')(var.get(u"this").callprop(u'readCodePoint')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(116.0)): + SWITCHED = True + return Js(u'\t') + if SWITCHED or PyJsStrictEq(CONDITION, Js(98.0)): + SWITCHED = True + return Js(u'\x08') + if SWITCHED or PyJsStrictEq(CONDITION, Js(118.0)): + SWITCHED = True + return Js(u'\x0b') + if SWITCHED or PyJsStrictEq(CONDITION, Js(102.0)): + SWITCHED = True + return Js(u'\x0c') + if SWITCHED or PyJsStrictEq(CONDITION, Js(13.0)): + SWITCHED = True + if PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos')),Js(10.0)): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + if SWITCHED or PyJsStrictEq(CONDITION, Js(10.0)): + SWITCHED = True + var.get(u"this").get(u'state').put(u'lineStart', var.get(u"this").get(u'state').get(u'pos')) + var.get(u"this").get(u'state').put(u'curLine',Js(var.get(u"this").get(u'state').get(u'curLine').to_number())+Js(1)) + return Js(u'') + if True: + SWITCHED = True + if ((var.get(u'ch')>=Js(48.0)) and (var.get(u'ch')<=Js(55.0))): + var.put(u'octalStr', var.get(u"this").get(u'input').callprop(u'substr', (var.get(u"this").get(u'state').get(u'pos')-Js(1.0)), Js(3.0)).callprop(u'match', JsRegExp(u'/^[0-7]+/')).get(u'0')) + var.put(u'octal', var.get(u'parseInt')(var.get(u'octalStr'), Js(8.0))) + if (var.get(u'octal')>Js(255.0)): + var.put(u'octalStr', var.get(u'octalStr').callprop(u'slice', Js(0.0), (-Js(1.0)))) + var.put(u'octal', var.get(u'parseInt')(var.get(u'octalStr'), Js(8.0))) + if (var.get(u'octal')>Js(0.0)): + if var.get(u"this").get(u'state').get(u'containsOctal').neg(): + var.get(u"this").get(u'state').put(u'containsOctal', var.get(u'true')) + var.get(u"this").get(u'state').put(u'octalPosition', (var.get(u"this").get(u'state').get(u'pos')-Js(2.0))) + if (var.get(u"this").get(u'state').get(u'strict') or var.get(u'inTemplate')): + var.get(u"this").callprop(u'raise', (var.get(u"this").get(u'state').get(u'pos')-Js(2.0)), Js(u'Octal literal in strict mode')) + var.get(u"this").get(u'state').put(u'pos', (var.get(u'octalStr').get(u'length')-Js(1.0)), u'+') + return var.get(u'String').callprop(u'fromCharCode', var.get(u'octal')) + return var.get(u'String').callprop(u'fromCharCode', var.get(u'ch')) + SWITCHED = True + break + PyJs_readEscapedChar_2930_._set_name(u'readEscapedChar') + var.get(u'Tokenizer').get(u'prototype').put(u'readEscapedChar', PyJs_readEscapedChar_2930_) + @Js + def PyJs_readHexChar_2931_(len, this, arguments, var=var): + var = Scope({u'this':this, u'readHexChar':PyJs_readHexChar_2931_, u'arguments':arguments, u'len':len}, var) + var.registers([u'codePos', u'len', u'n']) + var.put(u'codePos', var.get(u"this").get(u'state').get(u'pos')) + var.put(u'n', var.get(u"this").callprop(u'readInt', Js(16.0), var.get(u'len'))) + if PyJsStrictEq(var.get(u'n'),var.get(u"null")): + var.get(u"this").callprop(u'raise', var.get(u'codePos'), Js(u'Bad character escape sequence')) + return var.get(u'n') + PyJs_readHexChar_2931_._set_name(u'readHexChar') + var.get(u'Tokenizer').get(u'prototype').put(u'readHexChar', PyJs_readHexChar_2931_) + @Js + def PyJs_readWord1_2932_(this, arguments, var=var): + var = Scope({u'this':this, u'readWord1':PyJs_readWord1_2932_, u'arguments':arguments}, var) + var.registers([u'ch', u'word', u'chunkStart', u'escStart', u'esc', u'first']) + var.get(u"this").get(u'state').put(u'containsEsc', Js(False)) + var.put(u'word', Js(u'')) + var.put(u'first', var.get(u'true')) + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + while (var.get(u"this").get(u'state').get(u'pos')=Js(0.0)): + @Js + def PyJs_anonymous_2944_(plugin, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'plugin':plugin}, var) + var.registers([u'plugin']) + return PyJsStrictNeq(var.get(u'plugin'),Js(u'flow')) + PyJs_anonymous_2944_._set_name(u'anonymous') + var.put(u'pluginList', var.get(u'pluginList').callprop(u'filter', PyJs_anonymous_2944_)) + var.get(u'pluginList').callprop(u'push', Js(u'flow')) + #for JS loop + var.put(u'_iterator', var.get(u'pluginList')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else var.get(u'_iterator').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'name', var.get(u'_ref')) + if var.get(u'pluginMap').get(var.get(u'name')).neg(): + var.get(u'pluginMap').put(var.get(u'name'), var.get(u'true')) + var.put(u'plugin', var.get(u'plugins').get(var.get(u'name'))) + if var.get(u'plugin'): + var.get(u'plugin')(var.get(u"this")) + + return var.get(u'pluginMap') + PyJs_loadPlugins_2942_._set_name(u'loadPlugins') + var.get(u'Parser').get(u'prototype').put(u'loadPlugins', PyJs_loadPlugins_2942_) + @Js + def PyJs_parse_2945_(this, arguments, var=var): + var = Scope({u'this':this, u'parse':PyJs_parse_2945_, u'arguments':arguments}, var) + var.registers([u'program', u'file']) + var.put(u'file', var.get(u"this").callprop(u'startNode')) + var.put(u'program', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'nextToken') + return var.get(u"this").callprop(u'parseTopLevel', var.get(u'file'), var.get(u'program')) + PyJs_parse_2945_._set_name(u'parse') + var.get(u'Parser').get(u'prototype').put(u'parse', PyJs_parse_2945_) + return var.get(u'Parser') + PyJs_anonymous_2939_._set_name(u'anonymous') + var.put(u'Parser', PyJs_anonymous_2939_(var.get(u'Tokenizer'))) + @Js + def PyJs_anonymous_2946_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + return var.get(u'obj',throw=False).typeof() + PyJs_anonymous_2946_._set_name(u'anonymous') + @Js + def PyJs_anonymous_2947_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + return (Js(u'symbol') if (((var.get(u'obj') and PyJsStrictEq(var.get(u'Symbol',throw=False).typeof(),Js(u'function'))) and PyJsStrictEq(var.get(u'obj').get(u'constructor'),var.get(u'Symbol'))) and PyJsStrictNeq(var.get(u'obj'),var.get(u'Symbol').get(u'prototype'))) else var.get(u'obj',throw=False).typeof()) + PyJs_anonymous_2947_._set_name(u'anonymous') + var.put(u'_typeof', (PyJs_anonymous_2946_ if (PyJsStrictEq(var.get(u'Symbol',throw=False).typeof(),Js(u'function')) and PyJsStrictEq(var.get(u'Symbol').get(u'iterator').typeof(),Js(u'symbol'))) else PyJs_anonymous_2947_)) + var.put(u'pp', var.get(u'Parser').get(u'prototype')) + @Js + def PyJs_anonymous_2948_(node, key, val, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'val':val, u'key':key, u'arguments':arguments}, var) + var.registers([u'node', u'val', u'key', u'extra']) + if var.get(u'node').neg(): + return var.get('undefined') + PyJs_Object_2949_ = Js({}) + var.put(u'extra', var.get(u'node').put(u'extra', (var.get(u'node').get(u'extra') or PyJs_Object_2949_))) + var.get(u'extra').put(var.get(u'key'), var.get(u'val')) + PyJs_anonymous_2948_._set_name(u'anonymous') + var.get(u'pp').put(u'addExtra', PyJs_anonymous_2948_) + @Js + def PyJs_anonymous_2950_(op, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'op':op}, var) + var.registers([u'op']) + return (var.get(u"this").callprop(u'match', var.get(u'types').get(u'relational')) and PyJsStrictEq(var.get(u"this").get(u'state').get(u'value'),var.get(u'op'))) + PyJs_anonymous_2950_._set_name(u'anonymous') + var.get(u'pp').put(u'isRelational', PyJs_anonymous_2950_) + @Js + def PyJs_anonymous_2951_(op, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'op':op}, var) + var.registers([u'op']) + if var.get(u"this").callprop(u'isRelational', var.get(u'op')): + var.get(u"this").callprop(u'next') + else: + var.get(u"this").callprop(u'unexpected', var.get(u"null"), var.get(u'types').get(u'relational')) + PyJs_anonymous_2951_._set_name(u'anonymous') + var.get(u'pp').put(u'expectRelational', PyJs_anonymous_2951_) + @Js + def PyJs_anonymous_2952_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + return (var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')) and PyJsStrictEq(var.get(u"this").get(u'state').get(u'value'),var.get(u'name'))) + PyJs_anonymous_2952_._set_name(u'anonymous') + var.get(u'pp').put(u'isContextual', PyJs_anonymous_2952_) + @Js + def PyJs_anonymous_2953_(name, this, arguments, var=var): + var = Scope({u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'name']) + return (PyJsStrictEq(var.get(u"this").get(u'state').get(u'value'),var.get(u'name')) and var.get(u"this").callprop(u'eat', var.get(u'types').get(u'name'))) + PyJs_anonymous_2953_._set_name(u'anonymous') + var.get(u'pp').put(u'eatContextual', PyJs_anonymous_2953_) + @Js + def PyJs_anonymous_2954_(name, message, this, arguments, var=var): + var = Scope({u'this':this, u'message':message, u'name':name, u'arguments':arguments}, var) + var.registers([u'message', u'name']) + if var.get(u"this").callprop(u'eatContextual', var.get(u'name')).neg(): + var.get(u"this").callprop(u'unexpected', var.get(u"null"), var.get(u'message')) + PyJs_anonymous_2954_._set_name(u'anonymous') + var.get(u'pp').put(u'expectContextual', PyJs_anonymous_2954_) + @Js + def PyJs_anonymous_2955_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return ((var.get(u"this").callprop(u'match', var.get(u'types').get(u'eof')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceR'))) or var.get(u'lineBreak').callprop(u'test', var.get(u"this").get(u'input').callprop(u'slice', var.get(u"this").get(u'state').get(u'lastTokEnd'), var.get(u"this").get(u'state').get(u'start')))) + PyJs_anonymous_2955_._set_name(u'anonymous') + var.get(u'pp').put(u'canInsertSemicolon', PyJs_anonymous_2955_) + @Js + def PyJs_anonymous_2956_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return (var.get(u"this").callprop(u'eat', var.get(u'types').get(u'semi')) or var.get(u"this").callprop(u'canInsertSemicolon')) + PyJs_anonymous_2956_._set_name(u'anonymous') + var.get(u'pp').put(u'isLineTerminator', PyJs_anonymous_2956_) + @Js + def PyJs_anonymous_2957_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").callprop(u'isLineTerminator').neg(): + var.get(u"this").callprop(u'unexpected', var.get(u"null"), var.get(u'types').get(u'semi')) + PyJs_anonymous_2957_._set_name(u'anonymous') + var.get(u'pp').put(u'semicolon', PyJs_anonymous_2957_) + @Js + def PyJs_anonymous_2958_(type, pos, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'pos':pos, u'arguments':arguments}, var) + var.registers([u'type', u'pos']) + return (var.get(u"this").callprop(u'eat', var.get(u'type')) or var.get(u"this").callprop(u'unexpected', var.get(u'pos'), var.get(u'type'))) + PyJs_anonymous_2958_._set_name(u'anonymous') + var.get(u'pp').put(u'expect', PyJs_anonymous_2958_) + @Js + def PyJs_anonymous_2959_(pos, this, arguments, var=var): + var = Scope({u'this':this, u'pos':pos, u'arguments':arguments}, var) + var.registers([u'pos', u'messageOrType']) + var.put(u'messageOrType', (var.get(u'arguments').get(u'1') if ((var.get(u'arguments').get(u'length')>Js(1.0)) and PyJsStrictNeq(var.get(u'arguments').get(u'1'),var.get(u'undefined'))) else Js(u'Unexpected token'))) + if ((var.get(u'messageOrType') and PyJsStrictEq((Js(u'undefined') if PyJsStrictEq(var.get(u'messageOrType',throw=False).typeof(),Js(u'undefined')) else var.get(u'_typeof')(var.get(u'messageOrType'))),Js(u'object'))) and var.get(u'messageOrType').get(u'label')): + var.put(u'messageOrType', (Js(u'Unexpected token, expected ')+var.get(u'messageOrType').get(u'label'))) + var.get(u"this").callprop(u'raise', (var.get(u'pos') if (var.get(u'pos')!=var.get(u"null")) else var.get(u"this").get(u'state').get(u'start')), var.get(u'messageOrType')) + PyJs_anonymous_2959_._set_name(u'anonymous') + var.get(u'pp').put(u'unexpected', PyJs_anonymous_2959_) + var.put(u'pp$1', var.get(u'Parser').get(u'prototype')) + @Js + def PyJs_anonymous_2960_(file, program, this, arguments, var=var): + var = Scope({u'this':this, u'program':program, u'arguments':arguments, u'file':file}, var) + var.registers([u'program', u'file']) + var.get(u'program').put(u'sourceType', var.get(u"this").get(u'options').get(u'sourceType')) + var.get(u"this").callprop(u'parseBlockBody', var.get(u'program'), var.get(u'true'), var.get(u'true'), var.get(u'types').get(u'eof')) + var.get(u'file').put(u'program', var.get(u"this").callprop(u'finishNode', var.get(u'program'), Js(u'Program'))) + var.get(u'file').put(u'comments', var.get(u"this").get(u'state').get(u'comments')) + var.get(u'file').put(u'tokens', var.get(u"this").get(u'state').get(u'tokens')) + return var.get(u"this").callprop(u'finishNode', var.get(u'file'), Js(u'File')) + PyJs_anonymous_2960_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseTopLevel', PyJs_anonymous_2960_) + PyJs_Object_2961_ = Js({u'kind':Js(u'loop')}) + var.put(u'loopLabel', PyJs_Object_2961_) + PyJs_Object_2962_ = Js({u'kind':Js(u'switch')}) + var.put(u'switchLabel', PyJs_Object_2962_) + @Js + def PyJs_anonymous_2963_(stmt, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'stmt':stmt}, var) + var.registers([u'directiveLiteral', u'directive', u'val', u'expr', u'stmt', u'raw']) + var.put(u'expr', var.get(u'stmt').get(u'expression')) + var.put(u'directiveLiteral', var.get(u"this").callprop(u'startNodeAt', var.get(u'expr').get(u'start'), var.get(u'expr').get(u'loc').get(u'start'))) + var.put(u'directive', var.get(u"this").callprop(u'startNodeAt', var.get(u'stmt').get(u'start'), var.get(u'stmt').get(u'loc').get(u'start'))) + var.put(u'raw', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'expr').get(u'start'), var.get(u'expr').get(u'end'))) + var.put(u'val', var.get(u'directiveLiteral').put(u'value', var.get(u'raw').callprop(u'slice', Js(1.0), (-Js(1.0))))) + var.get(u"this").callprop(u'addExtra', var.get(u'directiveLiteral'), Js(u'raw'), var.get(u'raw')) + var.get(u"this").callprop(u'addExtra', var.get(u'directiveLiteral'), Js(u'rawValue'), var.get(u'val')) + var.get(u'directive').put(u'value', var.get(u"this").callprop(u'finishNodeAt', var.get(u'directiveLiteral'), Js(u'DirectiveLiteral'), var.get(u'expr').get(u'end'), var.get(u'expr').get(u'loc').get(u'end'))) + return var.get(u"this").callprop(u'finishNodeAt', var.get(u'directive'), Js(u'Directive'), var.get(u'stmt').get(u'end'), var.get(u'stmt').get(u'loc').get(u'end')) + PyJs_anonymous_2963_._set_name(u'anonymous') + var.get(u'pp$1').put(u'stmtToDirective', PyJs_anonymous_2963_) + @Js + def PyJs_anonymous_2964_(declaration, topLevel, this, arguments, var=var): + var = Scope({u'this':this, u'topLevel':topLevel, u'arguments':arguments, u'declaration':declaration}, var) + var.registers([u'node', u'expr', u'topLevel', u'state', u'starttype', u'declaration', u'maybeName']) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'at')): + var.get(u"this").callprop(u'parseDecorators', var.get(u'true')) + var.put(u'starttype', var.get(u"this").get(u'state').get(u'type')) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + while 1: + SWITCHED = False + CONDITION = (var.get(u'starttype')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_break')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_continue')): + SWITCHED = True + return var.get(u"this").callprop(u'parseBreakContinueStatement', var.get(u'node'), var.get(u'starttype').get(u'keyword')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_debugger')): + SWITCHED = True + return var.get(u"this").callprop(u'parseDebuggerStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_do')): + SWITCHED = True + return var.get(u"this").callprop(u'parseDoStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_for')): + SWITCHED = True + return var.get(u"this").callprop(u'parseForStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_function')): + SWITCHED = True + if var.get(u'declaration').neg(): + var.get(u"this").callprop(u'unexpected') + return var.get(u"this").callprop(u'parseFunctionStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_class')): + SWITCHED = True + if var.get(u'declaration').neg(): + var.get(u"this").callprop(u'unexpected') + var.get(u"this").callprop(u'takeDecorators', var.get(u'node')) + return var.get(u"this").callprop(u'parseClass', var.get(u'node'), var.get(u'true')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_if')): + SWITCHED = True + return var.get(u"this").callprop(u'parseIfStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_return')): + SWITCHED = True + return var.get(u"this").callprop(u'parseReturnStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_switch')): + SWITCHED = True + return var.get(u"this").callprop(u'parseSwitchStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_throw')): + SWITCHED = True + return var.get(u"this").callprop(u'parseThrowStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_try')): + SWITCHED = True + return var.get(u"this").callprop(u'parseTryStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_let')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_const')): + SWITCHED = True + if var.get(u'declaration').neg(): + var.get(u"this").callprop(u'unexpected') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_var')): + SWITCHED = True + return var.get(u"this").callprop(u'parseVarStatement', var.get(u'node'), var.get(u'starttype')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_while')): + SWITCHED = True + return var.get(u"this").callprop(u'parseWhileStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_with')): + SWITCHED = True + return var.get(u"this").callprop(u'parseWithStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'braceL')): + SWITCHED = True + return var.get(u"this").callprop(u'parseBlock') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'semi')): + SWITCHED = True + return var.get(u"this").callprop(u'parseEmptyStatement', var.get(u'node')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_export')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_import')): + SWITCHED = True + if (var.get(u"this").callprop(u'hasPlugin', Js(u'dynamicImport')) and PyJsStrictEq(var.get(u"this").callprop(u'lookahead').get(u'type'),var.get(u'types').get(u'parenL'))): + break + if var.get(u"this").get(u'options').get(u'allowImportExportEverywhere').neg(): + if var.get(u'topLevel').neg(): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u"'import' and 'export' may only appear at the top level")) + if var.get(u"this").get(u'inModule').neg(): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u"'import' and 'export' may appear only with 'sourceType: module'")) + return (var.get(u"this").callprop(u'parseImport', var.get(u'node')) if PyJsStrictEq(var.get(u'starttype'),var.get(u'types').get(u'_import')) else var.get(u"this").callprop(u'parseExport', var.get(u'node'))) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'name')): + SWITCHED = True + if PyJsStrictEq(var.get(u"this").get(u'state').get(u'value'),Js(u'async')): + var.put(u'state', var.get(u"this").get(u'state').callprop(u'clone')) + var.get(u"this").callprop(u'next') + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'_function')) and var.get(u"this").callprop(u'canInsertSemicolon').neg()): + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'_function')) + return var.get(u"this").callprop(u'parseFunction', var.get(u'node'), var.get(u'true'), Js(False), var.get(u'true')) + else: + var.get(u"this").put(u'state', var.get(u'state')) + SWITCHED = True + break + var.put(u'maybeName', var.get(u"this").get(u'state').get(u'value')) + var.put(u'expr', var.get(u"this").callprop(u'parseExpression')) + if ((PyJsStrictEq(var.get(u'starttype'),var.get(u'types').get(u'name')) and PyJsStrictEq(var.get(u'expr').get(u'type'),Js(u'Identifier'))) and var.get(u"this").callprop(u'eat', var.get(u'types').get(u'colon'))): + return var.get(u"this").callprop(u'parseLabeledStatement', var.get(u'node'), var.get(u'maybeName'), var.get(u'expr')) + else: + return var.get(u"this").callprop(u'parseExpressionStatement', var.get(u'node'), var.get(u'expr')) + PyJs_anonymous_2964_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseStatement', PyJs_anonymous_2964_) + @Js + def PyJs_anonymous_2965_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").get(u'state').get(u'decorators').get(u'length'): + var.get(u'node').put(u'decorators', var.get(u"this").get(u'state').get(u'decorators')) + var.get(u"this").get(u'state').put(u'decorators', Js([])) + PyJs_anonymous_2965_._set_name(u'anonymous') + var.get(u'pp$1').put(u'takeDecorators', PyJs_anonymous_2965_) + @Js + def PyJs_anonymous_2966_(allowExport, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'allowExport':allowExport}, var) + var.registers([u'allowExport']) + while var.get(u"this").callprop(u'match', var.get(u'types').get(u'at')): + var.get(u"this").get(u'state').get(u'decorators').callprop(u'push', var.get(u"this").callprop(u'parseDecorator')) + if (var.get(u'allowExport') and var.get(u"this").callprop(u'match', var.get(u'types').get(u'_export'))): + return var.get('undefined') + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'_class')).neg(): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'Leading decorators must be attached to a class declaration')) + PyJs_anonymous_2966_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseDecorators', PyJs_anonymous_2966_) + @Js + def PyJs_anonymous_2967_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").callprop(u'hasPlugin', Js(u'decorators')).neg(): + var.get(u"this").callprop(u'unexpected') + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + var.get(u'node').put(u'expression', var.get(u"this").callprop(u'parseMaybeAssign')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'Decorator')) + PyJs_anonymous_2967_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseDecorator', PyJs_anonymous_2967_) + @Js + def PyJs_anonymous_2968_(node, keyword, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'keyword':keyword}, var) + var.registers([u'i', u'node', u'isBreak', u'keyword', u'lab']) + var.put(u'isBreak', PyJsStrictEq(var.get(u'keyword'),Js(u'break'))) + var.get(u"this").callprop(u'next') + if var.get(u"this").callprop(u'isLineTerminator'): + var.get(u'node').put(u'label', var.get(u"null")) + else: + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')).neg(): + var.get(u"this").callprop(u'unexpected') + else: + var.get(u'node').put(u'label', var.get(u"this").callprop(u'parseIdentifier')) + var.get(u"this").callprop(u'semicolon') + var.put(u'i', PyJsComma(Js(0.0), Js(None))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'_label', var.get(u'_ref')) + if PyJsStrictEq(var.get(u'_label').get(u'name'),var.get(u'maybeName')): + var.get(u"this").callprop(u'raise', var.get(u'expr').get(u'start'), ((Js(u"Label '")+var.get(u'maybeName'))+Js(u"' is already declared"))) + + var.put(u'kind', (Js(u'loop') if var.get(u"this").get(u'state').get(u'type').get(u'isLoop') else (Js(u'switch') if var.get(u"this").callprop(u'match', var.get(u'types').get(u'_switch')) else var.get(u"null")))) + #for JS loop + var.put(u'i', (var.get(u"this").get(u'state').get(u'labels').get(u'length')-Js(1.0))) + while (var.get(u'i')>=Js(0.0)): + try: + var.put(u'label', var.get(u"this").get(u'state').get(u'labels').get(var.get(u'i'))) + if PyJsStrictEq(var.get(u'label').get(u'statementStart'),var.get(u'node').get(u'start')): + var.get(u'label').put(u'statementStart', var.get(u"this").get(u'state').get(u'start')) + var.get(u'label').put(u'kind', var.get(u'kind')) + else: + break + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + PyJs_Object_2984_ = Js({u'name':var.get(u'maybeName'),u'kind':var.get(u'kind'),u'statementStart':var.get(u"this").get(u'state').get(u'start')}) + var.get(u"this").get(u'state').get(u'labels').callprop(u'push', PyJs_Object_2984_) + var.get(u'node').put(u'body', var.get(u"this").callprop(u'parseStatement', var.get(u'true'))) + var.get(u"this").get(u'state').get(u'labels').callprop(u'pop') + var.get(u'node').put(u'label', var.get(u'expr')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'LabeledStatement')) + PyJs_anonymous_2983_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseLabeledStatement', PyJs_anonymous_2983_) + @Js + def PyJs_anonymous_2985_(node, expr, this, arguments, var=var): + var = Scope({u'node':node, u'expr':expr, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'expr']) + var.get(u'node').put(u'expression', var.get(u'expr')) + var.get(u"this").callprop(u'semicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ExpressionStatement')) + PyJs_anonymous_2985_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseExpressionStatement', PyJs_anonymous_2985_) + @Js + def PyJs_anonymous_2986_(allowDirectives, this, arguments, var=var): + var = Scope({u'this':this, u'allowDirectives':allowDirectives, u'arguments':arguments}, var) + var.registers([u'node', u'allowDirectives']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceL')) + var.get(u"this").callprop(u'parseBlockBody', var.get(u'node'), var.get(u'allowDirectives'), Js(False), var.get(u'types').get(u'braceR')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'BlockStatement')) + PyJs_anonymous_2986_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseBlock', PyJs_anonymous_2986_) + @Js + def PyJs_anonymous_2987_(node, allowDirectives, topLevel, end, this, arguments, var=var): + var = Scope({u'node':node, u'topLevel':topLevel, u'allowDirectives':allowDirectives, u'end':end, u'arguments':arguments, u'this':this}, var) + var.registers([u'node', u'allowDirectives', u'end', u'parsedNonDirective', u'directive', u'topLevel', u'stmt', u'octalPosition', u'oldStrict']) + var.get(u'node').put(u'body', Js([])) + var.get(u'node').put(u'directives', Js([])) + var.put(u'parsedNonDirective', Js(False)) + var.put(u'oldStrict', PyJsComma(Js(0.0), Js(None))) + var.put(u'octalPosition', PyJsComma(Js(0.0), Js(None))) + while var.get(u"this").callprop(u'eat', var.get(u'end')).neg(): + if ((var.get(u'parsedNonDirective').neg() and var.get(u"this").get(u'state').get(u'containsOctal')) and var.get(u'octalPosition').neg()): + var.put(u'octalPosition', var.get(u"this").get(u'state').get(u'octalPosition')) + var.put(u'stmt', var.get(u"this").callprop(u'parseStatement', var.get(u'true'), var.get(u'topLevel'))) + if ((((var.get(u'allowDirectives') and var.get(u'parsedNonDirective').neg()) and PyJsStrictEq(var.get(u'stmt').get(u'type'),Js(u'ExpressionStatement'))) and PyJsStrictEq(var.get(u'stmt').get(u'expression').get(u'type'),Js(u'StringLiteral'))) and var.get(u'stmt').get(u'expression').get(u'extra').get(u'parenthesized').neg()): + var.put(u'directive', var.get(u"this").callprop(u'stmtToDirective', var.get(u'stmt'))) + var.get(u'node').get(u'directives').callprop(u'push', var.get(u'directive')) + if (PyJsStrictEq(var.get(u'oldStrict'),var.get(u'undefined')) and PyJsStrictEq(var.get(u'directive').get(u'value').get(u'value'),Js(u'use strict'))): + var.put(u'oldStrict', var.get(u"this").get(u'state').get(u'strict')) + var.get(u"this").callprop(u'setStrict', var.get(u'true')) + if var.get(u'octalPosition'): + var.get(u"this").callprop(u'raise', var.get(u'octalPosition'), Js(u'Octal literal in strict mode')) + continue + var.put(u'parsedNonDirective', var.get(u'true')) + var.get(u'node').get(u'body').callprop(u'push', var.get(u'stmt')) + if PyJsStrictEq(var.get(u'oldStrict'),Js(False)): + var.get(u"this").callprop(u'setStrict', Js(False)) + PyJs_anonymous_2987_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseBlockBody', PyJs_anonymous_2987_) + @Js + def PyJs_anonymous_2988_(node, init, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'init':init, u'arguments':arguments}, var) + var.registers([u'node', u'init']) + var.get(u'node').put(u'init', var.get(u'init')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'semi')) + var.get(u'node').put(u'test', (var.get(u"null") if var.get(u"this").callprop(u'match', var.get(u'types').get(u'semi')) else var.get(u"this").callprop(u'parseExpression'))) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'semi')) + var.get(u'node').put(u'update', (var.get(u"null") if var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenR')) else var.get(u"this").callprop(u'parseExpression'))) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenR')) + var.get(u'node').put(u'body', var.get(u"this").callprop(u'parseStatement', Js(False))) + var.get(u"this").get(u'state').get(u'labels').callprop(u'pop') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ForStatement')) + PyJs_anonymous_2988_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseFor', PyJs_anonymous_2988_) + @Js + def PyJs_anonymous_2989_(node, init, forAwait, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'init':init, u'forAwait':forAwait, u'arguments':arguments}, var) + var.registers([u'node', u'init', u'type', u'forAwait']) + var.put(u'type', PyJsComma(Js(0.0), Js(None))) + if var.get(u'forAwait'): + var.get(u"this").callprop(u'eatContextual', Js(u'of')) + var.put(u'type', Js(u'ForAwaitStatement')) + else: + var.put(u'type', (Js(u'ForInStatement') if var.get(u"this").callprop(u'match', var.get(u'types').get(u'_in')) else Js(u'ForOfStatement'))) + var.get(u"this").callprop(u'next') + var.get(u'node').put(u'left', var.get(u'init')) + var.get(u'node').put(u'right', var.get(u"this").callprop(u'parseExpression')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenR')) + var.get(u'node').put(u'body', var.get(u"this").callprop(u'parseStatement', Js(False))) + var.get(u"this").get(u'state').get(u'labels').callprop(u'pop') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), var.get(u'type')) + PyJs_anonymous_2989_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseForIn', PyJs_anonymous_2989_) + @Js + def PyJs_anonymous_2990_(node, isFor, kind, this, arguments, var=var): + var = Scope({u'node':node, u'isFor':isFor, u'kind':kind, u'this':this, u'arguments':arguments}, var) + var.registers([u'decl', u'node', u'kind', u'isFor']) + var.get(u'node').put(u'declarations', Js([])) + var.get(u'node').put(u'kind', var.get(u'kind').get(u'keyword')) + #for JS loop + + while 1: + var.put(u'decl', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'parseVarHead', var.get(u'decl')) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'eq')): + var.get(u'decl').put(u'init', var.get(u"this").callprop(u'parseMaybeAssign', var.get(u'isFor'))) + else: + if (PyJsStrictEq(var.get(u'kind'),var.get(u'types').get(u'_const')) and (var.get(u"this").callprop(u'match', var.get(u'types').get(u'_in')) or var.get(u"this").callprop(u'isContextual', Js(u'of'))).neg()): + var.get(u"this").callprop(u'unexpected') + else: + if (PyJsStrictNeq(var.get(u'decl').get(u'id').get(u'type'),Js(u'Identifier')) and (var.get(u'isFor') and (var.get(u"this").callprop(u'match', var.get(u'types').get(u'_in')) or var.get(u"this").callprop(u'isContextual', Js(u'of')))).neg()): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'lastTokEnd'), Js(u'Complex binding patterns require an initialization value')) + else: + var.get(u'decl').put(u'init', var.get(u"null")) + var.get(u'node').get(u'declarations').callprop(u'push', var.get(u"this").callprop(u'finishNode', var.get(u'decl'), Js(u'VariableDeclarator'))) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'comma')).neg(): + break + + return var.get(u'node') + PyJs_anonymous_2990_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseVar', PyJs_anonymous_2990_) + @Js + def PyJs_anonymous_2991_(decl, this, arguments, var=var): + var = Scope({u'decl':decl, u'this':this, u'arguments':arguments}, var) + var.registers([u'decl']) + var.get(u'decl').put(u'id', var.get(u"this").callprop(u'parseBindingAtom')) + var.get(u"this").callprop(u'checkLVal', var.get(u'decl').get(u'id'), var.get(u'true'), var.get(u'undefined'), Js(u'variable declaration')) + PyJs_anonymous_2991_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseVarHead', PyJs_anonymous_2991_) + @Js + def PyJs_anonymous_2992_(node, isStatement, allowExpressionBody, isAsync, optionalId, this, arguments, var=var): + var = Scope({u'node':node, u'optionalId':optionalId, u'isAsync':isAsync, u'arguments':arguments, u'this':this, u'isStatement':isStatement, u'allowExpressionBody':allowExpressionBody}, var) + var.registers([u'node', u'optionalId', u'isAsync', u'oldInMethod', u'isStatement', u'allowExpressionBody']) + var.put(u'oldInMethod', var.get(u"this").get(u'state').get(u'inMethod')) + var.get(u"this").get(u'state').put(u'inMethod', Js(False)) + var.get(u"this").callprop(u'initFunction', var.get(u'node'), var.get(u'isAsync')) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'star')): + if (var.get(u'node').get(u'async') and var.get(u"this").callprop(u'hasPlugin', Js(u'asyncGenerators')).neg()): + var.get(u"this").callprop(u'unexpected') + else: + var.get(u'node').put(u'generator', var.get(u'true')) + var.get(u"this").callprop(u'next') + if (((var.get(u'isStatement') and var.get(u'optionalId').neg()) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')).neg()) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'_yield')).neg()): + var.get(u"this").callprop(u'unexpected') + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'_yield'))): + var.get(u'node').put(u'id', var.get(u"this").callprop(u'parseBindingIdentifier')) + var.get(u"this").callprop(u'parseFunctionParams', var.get(u'node')) + var.get(u"this").callprop(u'parseFunctionBody', var.get(u'node'), var.get(u'allowExpressionBody')) + var.get(u"this").get(u'state').put(u'inMethod', var.get(u'oldInMethod')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), (Js(u'FunctionDeclaration') if var.get(u'isStatement') else Js(u'FunctionExpression'))) + PyJs_anonymous_2992_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseFunction', PyJs_anonymous_2992_) + @Js + def PyJs_anonymous_2993_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenL')) + var.get(u'node').put(u'params', var.get(u"this").callprop(u'parseBindingList', var.get(u'types').get(u'parenR'))) + PyJs_anonymous_2993_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseFunctionParams', PyJs_anonymous_2993_) + @Js + def PyJs_anonymous_2994_(node, isStatement, optionalId, this, arguments, var=var): + var = Scope({u'node':node, u'optionalId':optionalId, u'this':this, u'isStatement':isStatement, u'arguments':arguments}, var) + var.registers([u'node', u'optionalId', u'isStatement']) + var.get(u"this").callprop(u'next') + var.get(u"this").callprop(u'parseClassId', var.get(u'node'), var.get(u'isStatement'), var.get(u'optionalId')) + var.get(u"this").callprop(u'parseClassSuper', var.get(u'node')) + var.get(u"this").callprop(u'parseClassBody', var.get(u'node')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), (Js(u'ClassDeclaration') if var.get(u'isStatement') else Js(u'ClassExpression'))) + PyJs_anonymous_2994_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseClass', PyJs_anonymous_2994_) + @Js + def PyJs_anonymous_2995_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return (var.get(u"this").callprop(u'match', var.get(u'types').get(u'eq')) or var.get(u"this").callprop(u'isLineTerminator')) + PyJs_anonymous_2995_._set_name(u'anonymous') + var.get(u'pp$1').put(u'isClassProperty', PyJs_anonymous_2995_) + @Js + def PyJs_anonymous_2996_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return Js(False) + PyJs_anonymous_2996_._set_name(u'anonymous') + var.get(u'pp$1').put(u'isClassMutatorStarter', PyJs_anonymous_2996_) + @Js + def PyJs_anonymous_2997_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'isStaticPrototype', u'hadConstructor', u'isConstructorCall', u'isGetSet', u'isGenerator', u'start', u'paramCount', u'isMaybeStatic', u'classBody', u'key', u'isConstructor', u'isAsync', u'isAsyncMethod', u'hadConstructorCall', u'decorators', u'method', u'oldStrict']) + var.put(u'oldStrict', var.get(u"this").get(u'state').get(u'strict')) + var.get(u"this").get(u'state').put(u'strict', var.get(u'true')) + var.put(u'hadConstructorCall', Js(False)) + var.put(u'hadConstructor', Js(False)) + var.put(u'decorators', Js([])) + var.put(u'classBody', var.get(u"this").callprop(u'startNode')) + var.get(u'classBody').put(u'body', Js([])) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceL')) + while var.get(u"this").callprop(u'eat', var.get(u'types').get(u'braceR')).neg(): + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'semi')): + continue + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'at')): + var.get(u'decorators').callprop(u'push', var.get(u"this").callprop(u'parseDecorator')) + continue + var.put(u'method', var.get(u"this").callprop(u'startNode')) + if var.get(u'decorators').get(u'length'): + var.get(u'method').put(u'decorators', var.get(u'decorators')) + var.put(u'decorators', Js([])) + var.put(u'isConstructorCall', Js(False)) + var.put(u'isMaybeStatic', (var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')) and PyJsStrictEq(var.get(u"this").get(u'state').get(u'value'),Js(u'static')))) + var.put(u'isGenerator', var.get(u"this").callprop(u'eat', var.get(u'types').get(u'star'))) + var.put(u'isGetSet', Js(False)) + var.put(u'isAsync', Js(False)) + var.get(u"this").callprop(u'parsePropertyName', var.get(u'method')) + var.get(u'method').put(u'static', (var.get(u'isMaybeStatic') and var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')).neg())) + if var.get(u'method').get(u'static'): + var.put(u'isGenerator', var.get(u"this").callprop(u'eat', var.get(u'types').get(u'star'))) + var.get(u"this").callprop(u'parsePropertyName', var.get(u'method')) + if var.get(u'isGenerator').neg(): + if var.get(u"this").callprop(u'isClassProperty'): + var.get(u'classBody').get(u'body').callprop(u'push', var.get(u"this").callprop(u'parseClassProperty', var.get(u'method'))) + continue + def PyJs_LONG_2998_(var=var): + return (((((PyJsStrictEq(var.get(u'method').get(u'key').get(u'type'),Js(u'Identifier')) and var.get(u'method').get(u'computed').neg()) and var.get(u"this").callprop(u'hasPlugin', Js(u'classConstructorCall'))) and PyJsStrictEq(var.get(u'method').get(u'key').get(u'name'),Js(u'call'))) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'name'))) and PyJsStrictEq(var.get(u"this").get(u'state').get(u'value'),Js(u'constructor'))) + if PyJs_LONG_2998_(): + var.put(u'isConstructorCall', var.get(u'true')) + var.get(u"this").callprop(u'parsePropertyName', var.get(u'method')) + var.put(u'isAsyncMethod', (((var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')).neg() and var.get(u'method').get(u'computed').neg()) and PyJsStrictEq(var.get(u'method').get(u'key').get(u'type'),Js(u'Identifier'))) and PyJsStrictEq(var.get(u'method').get(u'key').get(u'name'),Js(u'async')))) + if var.get(u'isAsyncMethod'): + if (var.get(u"this").callprop(u'hasPlugin', Js(u'asyncGenerators')) and var.get(u"this").callprop(u'eat', var.get(u'types').get(u'star'))): + var.put(u'isGenerator', var.get(u'true')) + var.put(u'isAsync', var.get(u'true')) + var.get(u"this").callprop(u'parsePropertyName', var.get(u'method')) + var.get(u'method').put(u'kind', Js(u'method')) + if var.get(u'method').get(u'computed').neg(): + var.put(u'key', var.get(u'method').get(u'key')) + if (((((var.get(u'isAsync').neg() and var.get(u'isGenerator').neg()) and var.get(u"this").callprop(u'isClassMutatorStarter').neg()) and PyJsStrictEq(var.get(u'key').get(u'type'),Js(u'Identifier'))) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')).neg()) and (PyJsStrictEq(var.get(u'key').get(u'name'),Js(u'get')) or PyJsStrictEq(var.get(u'key').get(u'name'),Js(u'set')))): + var.put(u'isGetSet', var.get(u'true')) + var.get(u'method').put(u'kind', var.get(u'key').get(u'name')) + var.put(u'key', var.get(u"this").callprop(u'parsePropertyName', var.get(u'method'))) + var.put(u'isConstructor', ((var.get(u'isConstructorCall').neg() and var.get(u'method').get(u'static').neg()) and ((PyJsStrictEq(var.get(u'key').get(u'type'),Js(u'Identifier')) and PyJsStrictEq(var.get(u'key').get(u'name'),Js(u'constructor'))) or (PyJsStrictEq(var.get(u'key').get(u'type'),Js(u'StringLiteral')) and PyJsStrictEq(var.get(u'key').get(u'value'),Js(u'constructor')))))) + if var.get(u'isConstructor'): + if var.get(u'hadConstructor'): + var.get(u"this").callprop(u'raise', var.get(u'key').get(u'start'), Js(u'Duplicate constructor in the same class')) + if var.get(u'isGetSet'): + var.get(u"this").callprop(u'raise', var.get(u'key').get(u'start'), Js(u"Constructor can't have get/set modifier")) + if var.get(u'isGenerator'): + var.get(u"this").callprop(u'raise', var.get(u'key').get(u'start'), Js(u"Constructor can't be a generator")) + if var.get(u'isAsync'): + var.get(u"this").callprop(u'raise', var.get(u'key').get(u'start'), Js(u"Constructor can't be an async function")) + var.get(u'method').put(u'kind', Js(u'constructor')) + var.put(u'hadConstructor', var.get(u'true')) + var.put(u'isStaticPrototype', (var.get(u'method').get(u'static') and ((PyJsStrictEq(var.get(u'key').get(u'type'),Js(u'Identifier')) and PyJsStrictEq(var.get(u'key').get(u'name'),Js(u'prototype'))) or (PyJsStrictEq(var.get(u'key').get(u'type'),Js(u'StringLiteral')) and PyJsStrictEq(var.get(u'key').get(u'value'),Js(u'prototype')))))) + if var.get(u'isStaticPrototype'): + var.get(u"this").callprop(u'raise', var.get(u'key').get(u'start'), Js(u'Classes may not have static property named prototype')) + if var.get(u'isConstructorCall'): + if var.get(u'hadConstructorCall'): + var.get(u"this").callprop(u'raise', var.get(u'method').get(u'start'), Js(u'Duplicate constructor call in the same class')) + var.get(u'method').put(u'kind', Js(u'constructorCall')) + var.put(u'hadConstructorCall', var.get(u'true')) + if ((PyJsStrictEq(var.get(u'method').get(u'kind'),Js(u'constructor')) or PyJsStrictEq(var.get(u'method').get(u'kind'),Js(u'constructorCall'))) and var.get(u'method').get(u'decorators')): + var.get(u"this").callprop(u'raise', var.get(u'method').get(u'start'), Js(u"You can't attach decorators to a class constructor")) + var.get(u"this").callprop(u'parseClassMethod', var.get(u'classBody'), var.get(u'method'), var.get(u'isGenerator'), var.get(u'isAsync')) + if var.get(u'isGetSet'): + var.put(u'paramCount', (Js(0.0) if PyJsStrictEq(var.get(u'method').get(u'kind'),Js(u'get')) else Js(1.0))) + if PyJsStrictNeq(var.get(u'method').get(u'params').get(u'length'),var.get(u'paramCount')): + var.put(u'start', var.get(u'method').get(u'start')) + if PyJsStrictEq(var.get(u'method').get(u'kind'),Js(u'get')): + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'getter should have no params')) + else: + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'setter should have exactly one param')) + if var.get(u'decorators').get(u'length'): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'You have trailing decorators with no method')) + var.get(u'node').put(u'body', var.get(u"this").callprop(u'finishNode', var.get(u'classBody'), Js(u'ClassBody'))) + var.get(u"this").get(u'state').put(u'strict', var.get(u'oldStrict')) + PyJs_anonymous_2997_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseClassBody', PyJs_anonymous_2997_) + @Js + def PyJs_anonymous_2999_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'eq')): + if var.get(u"this").callprop(u'hasPlugin', Js(u'classProperties')).neg(): + var.get(u"this").callprop(u'unexpected') + var.get(u"this").callprop(u'next') + var.get(u'node').put(u'value', var.get(u"this").callprop(u'parseMaybeAssign')) + else: + var.get(u'node').put(u'value', var.get(u"null")) + var.get(u"this").callprop(u'semicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ClassProperty')) + PyJs_anonymous_2999_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseClassProperty', PyJs_anonymous_2999_) + @Js + def PyJs_anonymous_3000_(classBody, method, isGenerator, isAsync, this, arguments, var=var): + var = Scope({u'isAsync':isAsync, u'classBody':classBody, u'this':this, u'isGenerator':isGenerator, u'method':method, u'arguments':arguments}, var) + var.registers([u'isAsync', u'isGenerator', u'classBody', u'method']) + var.get(u"this").callprop(u'parseMethod', var.get(u'method'), var.get(u'isGenerator'), var.get(u'isAsync')) + var.get(u'classBody').get(u'body').callprop(u'push', var.get(u"this").callprop(u'finishNode', var.get(u'method'), Js(u'ClassMethod'))) + PyJs_anonymous_3000_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseClassMethod', PyJs_anonymous_3000_) + @Js + def PyJs_anonymous_3001_(node, isStatement, optionalId, this, arguments, var=var): + var = Scope({u'node':node, u'optionalId':optionalId, u'this':this, u'isStatement':isStatement, u'arguments':arguments}, var) + var.registers([u'node', u'optionalId', u'isStatement']) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')): + var.get(u'node').put(u'id', var.get(u"this").callprop(u'parseIdentifier')) + else: + if (var.get(u'optionalId') or var.get(u'isStatement').neg()): + var.get(u'node').put(u'id', var.get(u"null")) + else: + var.get(u"this").callprop(u'unexpected') + PyJs_anonymous_3001_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseClassId', PyJs_anonymous_3001_) + @Js + def PyJs_anonymous_3002_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u'node').put(u'superClass', (var.get(u"this").callprop(u'parseExprSubscripts') if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'_extends')) else var.get(u"null"))) + PyJs_anonymous_3002_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseClassSuper', PyJs_anonymous_3002_) + @Js + def PyJs_anonymous_3003_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'specifier', u'expr', u'_specifier', u'_specifier2', u'needsSemi']) + var.get(u"this").callprop(u'next') + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'star')): + var.put(u'specifier', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + if (var.get(u"this").callprop(u'hasPlugin', Js(u'exportExtensions')) and var.get(u"this").callprop(u'eatContextual', Js(u'as'))): + var.get(u'specifier').put(u'exported', var.get(u"this").callprop(u'parseIdentifier')) + var.get(u'node').put(u'specifiers', Js([var.get(u"this").callprop(u'finishNode', var.get(u'specifier'), Js(u'ExportNamespaceSpecifier'))])) + var.get(u"this").callprop(u'parseExportSpecifiersMaybe', var.get(u'node')) + var.get(u"this").callprop(u'parseExportFrom', var.get(u'node'), var.get(u'true')) + else: + var.get(u"this").callprop(u'parseExportFrom', var.get(u'node'), var.get(u'true')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ExportAllDeclaration')) + else: + if (var.get(u"this").callprop(u'hasPlugin', Js(u'exportExtensions')) and var.get(u"this").callprop(u'isExportDefaultSpecifier')): + var.put(u'_specifier', var.get(u"this").callprop(u'startNode')) + var.get(u'_specifier').put(u'exported', var.get(u"this").callprop(u'parseIdentifier', var.get(u'true'))) + var.get(u'node').put(u'specifiers', Js([var.get(u"this").callprop(u'finishNode', var.get(u'_specifier'), Js(u'ExportDefaultSpecifier'))])) + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'comma')) and PyJsStrictEq(var.get(u"this").callprop(u'lookahead').get(u'type'),var.get(u'types').get(u'star'))): + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + var.put(u'_specifier2', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'star')) + var.get(u"this").callprop(u'expectContextual', Js(u'as')) + var.get(u'_specifier2').put(u'exported', var.get(u"this").callprop(u'parseIdentifier')) + var.get(u'node').get(u'specifiers').callprop(u'push', var.get(u"this").callprop(u'finishNode', var.get(u'_specifier2'), Js(u'ExportNamespaceSpecifier'))) + else: + var.get(u"this").callprop(u'parseExportSpecifiersMaybe', var.get(u'node')) + var.get(u"this").callprop(u'parseExportFrom', var.get(u'node'), var.get(u'true')) + else: + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'_default')): + var.put(u'expr', var.get(u"this").callprop(u'startNode')) + var.put(u'needsSemi', Js(False)) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'_function')): + var.put(u'expr', var.get(u"this").callprop(u'parseFunction', var.get(u'expr'), var.get(u'true'), Js(False), Js(False), var.get(u'true'))) + else: + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'_class')): + var.put(u'expr', var.get(u"this").callprop(u'parseClass', var.get(u'expr'), var.get(u'true'), var.get(u'true'))) + else: + var.put(u'needsSemi', var.get(u'true')) + var.put(u'expr', var.get(u"this").callprop(u'parseMaybeAssign')) + var.get(u'node').put(u'declaration', var.get(u'expr')) + if var.get(u'needsSemi'): + var.get(u"this").callprop(u'semicolon') + var.get(u"this").callprop(u'checkExport', var.get(u'node'), var.get(u'true'), var.get(u'true')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ExportDefaultDeclaration')) + else: + if (var.get(u"this").get(u'state').get(u'type').get(u'keyword') or var.get(u"this").callprop(u'shouldParseExportDeclaration')): + var.get(u'node').put(u'specifiers', Js([])) + var.get(u'node').put(u'source', var.get(u"null")) + var.get(u'node').put(u'declaration', var.get(u"this").callprop(u'parseExportDeclaration', var.get(u'node'))) + else: + var.get(u'node').put(u'declaration', var.get(u"null")) + var.get(u'node').put(u'specifiers', var.get(u"this").callprop(u'parseExportSpecifiers')) + var.get(u"this").callprop(u'parseExportFrom', var.get(u'node')) + var.get(u"this").callprop(u'checkExport', var.get(u'node'), var.get(u'true')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ExportNamedDeclaration')) + PyJs_anonymous_3003_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseExport', PyJs_anonymous_3003_) + @Js + def PyJs_anonymous_3004_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").callprop(u'parseStatement', var.get(u'true')) + PyJs_anonymous_3004_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseExportDeclaration', PyJs_anonymous_3004_) + @Js + def PyJs_anonymous_3005_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'lookahead']) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')): + return ((PyJsStrictNeq(var.get(u"this").get(u'state').get(u'value'),Js(u'type')) and PyJsStrictNeq(var.get(u"this").get(u'state').get(u'value'),Js(u'async'))) and PyJsStrictNeq(var.get(u"this").get(u'state').get(u'value'),Js(u'interface'))) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'_default')).neg(): + return Js(False) + var.put(u'lookahead', var.get(u"this").callprop(u'lookahead')) + return (PyJsStrictEq(var.get(u'lookahead').get(u'type'),var.get(u'types').get(u'comma')) or (PyJsStrictEq(var.get(u'lookahead').get(u'type'),var.get(u'types').get(u'name')) and PyJsStrictEq(var.get(u'lookahead').get(u'value'),Js(u'from')))) + PyJs_anonymous_3005_._set_name(u'anonymous') + var.get(u'pp$1').put(u'isExportDefaultSpecifier', PyJs_anonymous_3005_) + @Js + def PyJs_anonymous_3006_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'comma')): + var.get(u'node').put(u'specifiers', var.get(u'node').get(u'specifiers').callprop(u'concat', var.get(u"this").callprop(u'parseExportSpecifiers'))) + PyJs_anonymous_3006_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseExportSpecifiersMaybe', PyJs_anonymous_3006_) + @Js + def PyJs_anonymous_3007_(node, expect, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'expect':expect, u'arguments':arguments}, var) + var.registers([u'node', u'expect']) + if var.get(u"this").callprop(u'eatContextual', Js(u'from')): + var.get(u'node').put(u'source', (var.get(u"this").callprop(u'parseExprAtom') if var.get(u"this").callprop(u'match', var.get(u'types').get(u'string')) else var.get(u"this").callprop(u'unexpected'))) + var.get(u"this").callprop(u'checkExport', var.get(u'node')) + else: + if var.get(u'expect'): + var.get(u"this").callprop(u'unexpected') + else: + var.get(u'node').put(u'source', var.get(u"null")) + var.get(u"this").callprop(u'semicolon') + PyJs_anonymous_3007_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseExportFrom', PyJs_anonymous_3007_) + @Js + def PyJs_anonymous_3008_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").callprop(u'isContextual', Js(u'async')) + PyJs_anonymous_3008_._set_name(u'anonymous') + var.get(u'pp$1').put(u'shouldParseExportDeclaration', PyJs_anonymous_3008_) + @Js + def PyJs_anonymous_3009_(node, checkNames, isDefault, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'checkNames':checkNames, u'arguments':arguments, u'isDefault':isDefault}, var) + var.registers([u'node', u'specifier', u'_isArray3', u'_isArray2', u'isClass', u'_ref3', u'_i3', u'_i2', u'_ref2', u'checkNames', u'isDefault', u'declaration', u'_iterator3', u'_iterator2']) + if var.get(u'checkNames'): + if var.get(u'isDefault'): + var.get(u"this").callprop(u'checkDuplicateExports', var.get(u'node'), Js(u'default')) + else: + if (var.get(u'node').get(u'specifiers') and var.get(u'node').get(u'specifiers').get(u'length')): + #for JS loop + var.put(u'_iterator2', var.get(u'node').get(u'specifiers')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else var.get(u'_iterator2').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'specifier', var.get(u'_ref2')) + var.get(u"this").callprop(u'checkDuplicateExports', var.get(u'specifier'), var.get(u'specifier').get(u'exported').get(u'name')) + + else: + if var.get(u'node').get(u'declaration'): + if (PyJsStrictEq(var.get(u'node').get(u'declaration').get(u'type'),Js(u'FunctionDeclaration')) or PyJsStrictEq(var.get(u'node').get(u'declaration').get(u'type'),Js(u'ClassDeclaration'))): + var.get(u"this").callprop(u'checkDuplicateExports', var.get(u'node'), var.get(u'node').get(u'declaration').get(u'id').get(u'name')) + else: + if PyJsStrictEq(var.get(u'node').get(u'declaration').get(u'type'),Js(u'VariableDeclaration')): + #for JS loop + var.put(u'_iterator3', var.get(u'node').get(u'declaration').get(u'declarations')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else var.get(u'_iterator3').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'declaration', var.get(u'_ref3')) + var.get(u"this").callprop(u'checkDeclaration', var.get(u'declaration').get(u'id')) + + if var.get(u"this").get(u'state').get(u'decorators').get(u'length'): + var.put(u'isClass', (var.get(u'node').get(u'declaration') and (PyJsStrictEq(var.get(u'node').get(u'declaration').get(u'type'),Js(u'ClassDeclaration')) or PyJsStrictEq(var.get(u'node').get(u'declaration').get(u'type'),Js(u'ClassExpression'))))) + if (var.get(u'node').get(u'declaration').neg() or var.get(u'isClass').neg()): + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'start'), Js(u'You can only use decorators on an export when exporting a class')) + var.get(u"this").callprop(u'takeDecorators', var.get(u'node').get(u'declaration')) + PyJs_anonymous_3009_._set_name(u'anonymous') + var.get(u'pp$1').put(u'checkExport', PyJs_anonymous_3009_) + @Js + def PyJs_anonymous_3010_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray5', u'_isArray4', u'_i5', u'_i4', u'elem', u'prop', u'_iterator5', u'_iterator4', u'_ref5', u'_ref4']) + if PyJsStrictEq(var.get(u'node').get(u'type'),Js(u'ObjectPattern')): + #for JS loop + var.put(u'_iterator4', var.get(u'node').get(u'properties')) + var.put(u'_isArray4', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator4'))) + var.put(u'_i4', Js(0.0)) + var.put(u'_iterator4', (var.get(u'_iterator4') if var.get(u'_isArray4') else var.get(u'_iterator4').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray4'): + if (var.get(u'_i4')>=var.get(u'_iterator4').get(u'length')): + break + var.put(u'_ref4', var.get(u'_iterator4').get((var.put(u'_i4',Js(var.get(u'_i4').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i4', var.get(u'_iterator4').callprop(u'next')) + if var.get(u'_i4').get(u'done'): + break + var.put(u'_ref4', var.get(u'_i4').get(u'value')) + var.put(u'prop', var.get(u'_ref4')) + var.get(u"this").callprop(u'checkDeclaration', var.get(u'prop')) + + else: + if PyJsStrictEq(var.get(u'node').get(u'type'),Js(u'ArrayPattern')): + #for JS loop + var.put(u'_iterator5', var.get(u'node').get(u'elements')) + var.put(u'_isArray5', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator5'))) + var.put(u'_i5', Js(0.0)) + var.put(u'_iterator5', (var.get(u'_iterator5') if var.get(u'_isArray5') else var.get(u'_iterator5').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray5'): + if (var.get(u'_i5')>=var.get(u'_iterator5').get(u'length')): + break + var.put(u'_ref5', var.get(u'_iterator5').get((var.put(u'_i5',Js(var.get(u'_i5').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i5', var.get(u'_iterator5').callprop(u'next')) + if var.get(u'_i5').get(u'done'): + break + var.put(u'_ref5', var.get(u'_i5').get(u'value')) + var.put(u'elem', var.get(u'_ref5')) + if var.get(u'elem'): + var.get(u"this").callprop(u'checkDeclaration', var.get(u'elem')) + + else: + if PyJsStrictEq(var.get(u'node').get(u'type'),Js(u'ObjectProperty')): + var.get(u"this").callprop(u'checkDeclaration', var.get(u'node').get(u'value')) + else: + if (PyJsStrictEq(var.get(u'node').get(u'type'),Js(u'RestElement')) or PyJsStrictEq(var.get(u'node').get(u'type'),Js(u'RestProperty'))): + var.get(u"this").callprop(u'checkDeclaration', var.get(u'node').get(u'argument')) + else: + if PyJsStrictEq(var.get(u'node').get(u'type'),Js(u'Identifier')): + var.get(u"this").callprop(u'checkDuplicateExports', var.get(u'node'), var.get(u'node').get(u'name')) + PyJs_anonymous_3010_._set_name(u'anonymous') + var.get(u'pp$1').put(u'checkDeclaration', PyJs_anonymous_3010_) + @Js + def PyJs_anonymous_3011_(node, name, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'node', u'name']) + if (var.get(u"this").get(u'state').get(u'exportedIdentifiers').callprop(u'indexOf', var.get(u'name'))>(-Js(1.0))): + var.get(u"this").callprop(u'raiseDuplicateExportError', var.get(u'node'), var.get(u'name')) + var.get(u"this").get(u'state').get(u'exportedIdentifiers').callprop(u'push', var.get(u'name')) + PyJs_anonymous_3011_._set_name(u'anonymous') + var.get(u'pp$1').put(u'checkDuplicateExports', PyJs_anonymous_3011_) + @Js + def PyJs_anonymous_3012_(node, name, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'name':name, u'arguments':arguments}, var) + var.registers([u'node', u'name']) + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'start'), (Js(u'Only one default export allowed per module.') if PyJsStrictEq(var.get(u'name'),Js(u'default')) else ((Js(u'`')+var.get(u'name'))+Js(u'` has already been exported. Exported identifiers must be unique.')))) + PyJs_anonymous_3012_._set_name(u'anonymous') + var.get(u'pp$1').put(u'raiseDuplicateExportError', PyJs_anonymous_3012_) + @Js + def PyJs_anonymous_3013_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'nodes', u'isDefault', u'needsFrom', u'first']) + var.put(u'nodes', Js([])) + var.put(u'first', var.get(u'true')) + var.put(u'needsFrom', PyJsComma(Js(0.0), Js(None))) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceL')) + while var.get(u"this").callprop(u'eat', var.get(u'types').get(u'braceR')).neg(): + if var.get(u'first'): + var.put(u'first', Js(False)) + else: + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'braceR')): + break + var.put(u'isDefault', var.get(u"this").callprop(u'match', var.get(u'types').get(u'_default'))) + if (var.get(u'isDefault') and var.get(u'needsFrom').neg()): + var.put(u'needsFrom', var.get(u'true')) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u'node').put(u'local', var.get(u"this").callprop(u'parseIdentifier', var.get(u'isDefault'))) + var.get(u'node').put(u'exported', (var.get(u"this").callprop(u'parseIdentifier', var.get(u'true')) if var.get(u"this").callprop(u'eatContextual', Js(u'as')) else var.get(u'node').get(u'local').callprop(u'__clone'))) + var.get(u'nodes').callprop(u'push', var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ExportSpecifier'))) + if (var.get(u'needsFrom') and var.get(u"this").callprop(u'isContextual', Js(u'from')).neg()): + var.get(u"this").callprop(u'unexpected') + return var.get(u'nodes') + PyJs_anonymous_3013_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseExportSpecifiers', PyJs_anonymous_3013_) + @Js + def PyJs_anonymous_3014_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'next') + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'string')): + var.get(u'node').put(u'specifiers', Js([])) + var.get(u'node').put(u'source', var.get(u"this").callprop(u'parseExprAtom')) + else: + var.get(u'node').put(u'specifiers', Js([])) + var.get(u"this").callprop(u'parseImportSpecifiers', var.get(u'node')) + var.get(u"this").callprop(u'expectContextual', Js(u'from')) + var.get(u'node').put(u'source', (var.get(u"this").callprop(u'parseExprAtom') if var.get(u"this").callprop(u'match', var.get(u'types').get(u'string')) else var.get(u"this").callprop(u'unexpected'))) + var.get(u"this").callprop(u'semicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ImportDeclaration')) + PyJs_anonymous_3014_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseImport', PyJs_anonymous_3014_) + @Js + def PyJs_anonymous_3015_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'specifier', u'startLoc', u'_specifier3', u'startPos', u'first']) + var.put(u'first', var.get(u'true')) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')): + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.get(u'node').get(u'specifiers').callprop(u'push', var.get(u"this").callprop(u'parseImportSpecifierDefault', var.get(u"this").callprop(u'parseIdentifier'), var.get(u'startPos'), var.get(u'startLoc'))) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'comma')).neg(): + return var.get('undefined') + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'star')): + var.put(u'specifier', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + var.get(u"this").callprop(u'expectContextual', Js(u'as')) + var.get(u'specifier').put(u'local', var.get(u"this").callprop(u'parseIdentifier')) + var.get(u"this").callprop(u'checkLVal', var.get(u'specifier').get(u'local'), var.get(u'true'), var.get(u'undefined'), Js(u'import namespace specifier')) + var.get(u'node').get(u'specifiers').callprop(u'push', var.get(u"this").callprop(u'finishNode', var.get(u'specifier'), Js(u'ImportNamespaceSpecifier'))) + return var.get('undefined') + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceL')) + while var.get(u"this").callprop(u'eat', var.get(u'types').get(u'braceR')).neg(): + if var.get(u'first'): + var.put(u'first', Js(False)) + else: + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'braceR')): + break + var.put(u'_specifier3', var.get(u"this").callprop(u'startNode')) + var.get(u'_specifier3').put(u'imported', var.get(u"this").callprop(u'parseIdentifier', var.get(u'true'))) + var.get(u'_specifier3').put(u'local', (var.get(u"this").callprop(u'parseIdentifier') if var.get(u"this").callprop(u'eatContextual', Js(u'as')) else var.get(u'_specifier3').get(u'imported').callprop(u'__clone'))) + var.get(u"this").callprop(u'checkLVal', var.get(u'_specifier3').get(u'local'), var.get(u'true'), var.get(u'undefined'), Js(u'import specifier')) + var.get(u'node').get(u'specifiers').callprop(u'push', var.get(u"this").callprop(u'finishNode', var.get(u'_specifier3'), Js(u'ImportSpecifier'))) + PyJs_anonymous_3015_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseImportSpecifiers', PyJs_anonymous_3015_) + @Js + def PyJs_anonymous_3016_(id, startPos, startLoc, this, arguments, var=var): + var = Scope({u'this':this, u'startPos':startPos, u'id':id, u'startLoc':startLoc, u'arguments':arguments}, var) + var.registers([u'node', u'startPos', u'id', u'startLoc']) + var.put(u'node', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'node').put(u'local', var.get(u'id')) + var.get(u"this").callprop(u'checkLVal', var.get(u'node').get(u'local'), var.get(u'true'), var.get(u'undefined'), Js(u'default import specifier')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ImportDefaultSpecifier')) + PyJs_anonymous_3016_._set_name(u'anonymous') + var.get(u'pp$1').put(u'parseImportSpecifierDefault', PyJs_anonymous_3016_) + var.put(u'pp$2', var.get(u'Parser').get(u'prototype')) + @Js + def PyJs_anonymous_3017_(node, isBinding, contextDescription, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'isBinding':isBinding, u'arguments':arguments, u'contextDescription':contextDescription}, var) + var.registers([u'node', u'_isArray', u'_iterator', u'isBinding', u'prop', u'_i', u'message', u'contextDescription', u'_ref']) + if var.get(u'node'): + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'Identifier')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ObjectPattern')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ArrayPattern')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'AssignmentPattern')): + SWITCHED = True + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ObjectExpression')): + SWITCHED = True + var.get(u'node').put(u'type', Js(u'ObjectPattern')) + #for JS loop + var.put(u'_iterator', var.get(u'node').get(u'properties')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else var.get(u'_iterator').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'prop', var.get(u'_ref')) + if PyJsStrictEq(var.get(u'prop').get(u'type'),Js(u'ObjectMethod')): + if (PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'get')) or PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'set'))): + var.get(u"this").callprop(u'raise', var.get(u'prop').get(u'key').get(u'start'), Js(u"Object pattern can't contain getter or setter")) + else: + var.get(u"this").callprop(u'raise', var.get(u'prop').get(u'key').get(u'start'), Js(u"Object pattern can't contain methods")) + else: + var.get(u"this").callprop(u'toAssignable', var.get(u'prop'), var.get(u'isBinding'), Js(u'object destructuring pattern')) + + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ObjectProperty')): + SWITCHED = True + var.get(u"this").callprop(u'toAssignable', var.get(u'node').get(u'value'), var.get(u'isBinding'), var.get(u'contextDescription')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'SpreadProperty')): + SWITCHED = True + var.get(u'node').put(u'type', Js(u'RestProperty')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ArrayExpression')): + SWITCHED = True + var.get(u'node').put(u'type', Js(u'ArrayPattern')) + var.get(u"this").callprop(u'toAssignableList', var.get(u'node').get(u'elements'), var.get(u'isBinding'), var.get(u'contextDescription')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'AssignmentExpression')): + SWITCHED = True + if PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'=')): + var.get(u'node').put(u'type', Js(u'AssignmentPattern')) + var.get(u'node').delete(u'operator') + else: + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'left').get(u'end'), Js(u"Only '=' operator can be used for specifying default value.")) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'MemberExpression')): + SWITCHED = True + if var.get(u'isBinding').neg(): + break + if True: + SWITCHED = True + var.put(u'message', (Js(u'Invalid left-hand side')+((Js(u' in ')+var.get(u'contextDescription')) if var.get(u'contextDescription') else Js(u'expression')))) + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'start'), var.get(u'message')) + SWITCHED = True + break + return var.get(u'node') + PyJs_anonymous_3017_._set_name(u'anonymous') + var.get(u'pp$2').put(u'toAssignable', PyJs_anonymous_3017_) + @Js + def PyJs_anonymous_3018_(exprList, isBinding, contextDescription, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'isBinding':isBinding, u'exprList':exprList, u'contextDescription':contextDescription}, var) + var.registers([u'last', u'i', u'isBinding', u'contextDescription', u'arg', u'end', u'exprList', u'elt']) + var.put(u'end', var.get(u'exprList').get(u'length')) + if var.get(u'end'): + var.put(u'last', var.get(u'exprList').get((var.get(u'end')-Js(1.0)))) + if (var.get(u'last') and PyJsStrictEq(var.get(u'last').get(u'type'),Js(u'RestElement'))): + var.put(u'end',Js(var.get(u'end').to_number())-Js(1)) + else: + if (var.get(u'last') and PyJsStrictEq(var.get(u'last').get(u'type'),Js(u'SpreadElement'))): + var.get(u'last').put(u'type', Js(u'RestElement')) + var.put(u'arg', var.get(u'last').get(u'argument')) + var.get(u"this").callprop(u'toAssignable', var.get(u'arg'), var.get(u'isBinding'), var.get(u'contextDescription')) + if ((PyJsStrictNeq(var.get(u'arg').get(u'type'),Js(u'Identifier')) and PyJsStrictNeq(var.get(u'arg').get(u'type'),Js(u'MemberExpression'))) and PyJsStrictNeq(var.get(u'arg').get(u'type'),Js(u'ArrayPattern'))): + var.get(u"this").callprop(u'unexpected', var.get(u'arg').get(u'start')) + var.put(u'end',Js(var.get(u'end').to_number())-Js(1)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'prop', var.get(u'_ref2')) + if PyJsStrictEq(var.get(u'prop').get(u'type'),Js(u'ObjectProperty')): + var.put(u'prop', var.get(u'prop').get(u'value')) + var.get(u"this").callprop(u'checkLVal', var.get(u'prop'), var.get(u'isBinding'), var.get(u'checkClashes'), Js(u'object destructuring pattern')) + + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ArrayPattern')): + SWITCHED = True + #for JS loop + var.put(u'_iterator3', var.get(u'expr').get(u'elements')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else var.get(u'_iterator3').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'elem', var.get(u'_ref3')) + if var.get(u'elem'): + var.get(u"this").callprop(u'checkLVal', var.get(u'elem'), var.get(u'isBinding'), var.get(u'checkClashes'), Js(u'array destructuring pattern')) + + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'AssignmentPattern')): + SWITCHED = True + var.get(u"this").callprop(u'checkLVal', var.get(u'expr').get(u'left'), var.get(u'isBinding'), var.get(u'checkClashes'), Js(u'assignment pattern')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'RestProperty')): + SWITCHED = True + var.get(u"this").callprop(u'checkLVal', var.get(u'expr').get(u'argument'), var.get(u'isBinding'), var.get(u'checkClashes'), Js(u'rest property')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'RestElement')): + SWITCHED = True + var.get(u"this").callprop(u'checkLVal', var.get(u'expr').get(u'argument'), var.get(u'isBinding'), var.get(u'checkClashes'), Js(u'rest element')) + break + if True: + SWITCHED = True + var.put(u'message', (((Js(u'Binding invalid') if var.get(u'isBinding') else Js(u'Invalid'))+Js(u' left-hand side'))+((Js(u' in ')+var.get(u'contextDescription')) if var.get(u'contextDescription') else Js(u'expression')))) + var.get(u"this").callprop(u'raise', var.get(u'expr').get(u'start'), var.get(u'message')) + SWITCHED = True + break + PyJs_anonymous_3028_._set_name(u'anonymous') + var.get(u'pp$2').put(u'checkLVal', PyJs_anonymous_3028_) + var.put(u'pp$3', var.get(u'Parser').get(u'prototype')) + @Js + def PyJs_anonymous_3029_(prop, propHash, this, arguments, var=var): + var = Scope({u'this':this, u'propHash':propHash, u'arguments':arguments, u'prop':prop}, var) + var.registers([u'propHash', u'name', u'key', u'prop']) + if var.get(u'prop').get(u'computed'): + return var.get('undefined') + var.put(u'key', var.get(u'prop').get(u'key')) + var.put(u'name', PyJsComma(Js(0.0), Js(None))) + while 1: + SWITCHED = False + CONDITION = (var.get(u'key').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'Identifier')): + SWITCHED = True + var.put(u'name', var.get(u'key').get(u'name')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'StringLiteral')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'NumericLiteral')): + SWITCHED = True + var.put(u'name', var.get(u'String')(var.get(u'key').get(u'value'))) + break + if True: + SWITCHED = True + return var.get('undefined') + SWITCHED = True + break + if (PyJsStrictEq(var.get(u'name'),Js(u'__proto__')) and var.get(u'prop').get(u'kind').neg()): + if var.get(u'propHash').get(u'proto'): + var.get(u"this").callprop(u'raise', var.get(u'key').get(u'start'), Js(u'Redefinition of __proto__ property')) + var.get(u'propHash').put(u'proto', var.get(u'true')) + PyJs_anonymous_3029_._set_name(u'anonymous') + var.get(u'pp$3').put(u'checkPropClash', PyJs_anonymous_3029_) + @Js + def PyJs_anonymous_3030_(noIn, refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'noIn':noIn, u'this':this, u'refShorthandDefaultPos':refShorthandDefaultPos, u'arguments':arguments}, var) + var.registers([u'node', u'expr', u'refShorthandDefaultPos', u'startLoc', u'noIn', u'startPos']) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.put(u'expr', var.get(u"this").callprop(u'parseMaybeAssign', var.get(u'noIn'), var.get(u'refShorthandDefaultPos'))) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'comma')): + var.put(u'node', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'node').put(u'expressions', Js([var.get(u'expr')])) + while var.get(u"this").callprop(u'eat', var.get(u'types').get(u'comma')): + var.get(u'node').get(u'expressions').callprop(u'push', var.get(u"this").callprop(u'parseMaybeAssign', var.get(u'noIn'), var.get(u'refShorthandDefaultPos'))) + var.get(u"this").callprop(u'toReferencedList', var.get(u'node').get(u'expressions')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'SequenceExpression')) + return var.get(u'expr') + PyJs_anonymous_3030_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseExpression', PyJs_anonymous_3030_) + @Js + def PyJs_anonymous_3031_(noIn, refShorthandDefaultPos, afterLeftParse, refNeedsArrowPos, this, arguments, var=var): + var = Scope({u'afterLeftParse':afterLeftParse, u'this':this, u'refShorthandDefaultPos':refShorthandDefaultPos, u'noIn':noIn, u'arguments':arguments, u'refNeedsArrowPos':refNeedsArrowPos}, var) + var.registers([u'node', u'afterLeftParse', u'startLoc', u'errorMsg', u'refNeedsArrowPos', u'refShorthandDefaultPos', u'failOnShorthandAssign', u'noIn', u'startPos', u'_left', u'left']) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'_yield')) and var.get(u"this").get(u'state').get(u'inGenerator')): + var.put(u'_left', var.get(u"this").callprop(u'parseYield')) + if var.get(u'afterLeftParse'): + var.put(u'_left', var.get(u'afterLeftParse').callprop(u'call', var.get(u"this"), var.get(u'_left'), var.get(u'startPos'), var.get(u'startLoc'))) + return var.get(u'_left') + var.put(u'failOnShorthandAssign', PyJsComma(Js(0.0), Js(None))) + if var.get(u'refShorthandDefaultPos'): + var.put(u'failOnShorthandAssign', Js(False)) + else: + PyJs_Object_3032_ = Js({u'start':Js(0.0)}) + var.put(u'refShorthandDefaultPos', PyJs_Object_3032_) + var.put(u'failOnShorthandAssign', var.get(u'true')) + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'name'))): + var.get(u"this").get(u'state').put(u'potentialArrowAt', var.get(u"this").get(u'state').get(u'start')) + var.put(u'left', var.get(u"this").callprop(u'parseMaybeConditional', var.get(u'noIn'), var.get(u'refShorthandDefaultPos'), var.get(u'refNeedsArrowPos'))) + if var.get(u'afterLeftParse'): + var.put(u'left', var.get(u'afterLeftParse').callprop(u'call', var.get(u"this"), var.get(u'left'), var.get(u'startPos'), var.get(u'startLoc'))) + if var.get(u"this").get(u'state').get(u'type').get(u'isAssign'): + var.put(u'node', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'node').put(u'operator', var.get(u"this").get(u'state').get(u'value')) + var.get(u'node').put(u'left', (var.get(u"this").callprop(u'toAssignable', var.get(u'left'), var.get(u'undefined'), Js(u'assignment expression')) if var.get(u"this").callprop(u'match', var.get(u'types').get(u'eq')) else var.get(u'left'))) + var.get(u'refShorthandDefaultPos').put(u'start', Js(0.0)) + var.get(u"this").callprop(u'checkLVal', var.get(u'left'), var.get(u'undefined'), var.get(u'undefined'), Js(u'assignment expression')) + if (var.get(u'left').get(u'extra') and var.get(u'left').get(u'extra').get(u'parenthesized')): + var.put(u'errorMsg', PyJsComma(Js(0.0), Js(None))) + if PyJsStrictEq(var.get(u'left').get(u'type'),Js(u'ObjectPattern')): + var.put(u'errorMsg', Js(u'`({a}) = 0` use `({a} = 0)`')) + else: + if PyJsStrictEq(var.get(u'left').get(u'type'),Js(u'ArrayPattern')): + var.put(u'errorMsg', Js(u'`([a]) = 0` use `([a] = 0)`')) + if var.get(u'errorMsg'): + var.get(u"this").callprop(u'raise', var.get(u'left').get(u'start'), (Js(u"You're trying to assign to a parenthesized expression, eg. instead of ")+var.get(u'errorMsg'))) + var.get(u"this").callprop(u'next') + var.get(u'node').put(u'right', var.get(u"this").callprop(u'parseMaybeAssign', var.get(u'noIn'))) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'AssignmentExpression')) + else: + if (var.get(u'failOnShorthandAssign') and var.get(u'refShorthandDefaultPos').get(u'start')): + var.get(u"this").callprop(u'unexpected', var.get(u'refShorthandDefaultPos').get(u'start')) + return var.get(u'left') + PyJs_anonymous_3031_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseMaybeAssign', PyJs_anonymous_3031_) + @Js + def PyJs_anonymous_3033_(noIn, refShorthandDefaultPos, refNeedsArrowPos, this, arguments, var=var): + var = Scope({u'noIn':noIn, u'this':this, u'refShorthandDefaultPos':refShorthandDefaultPos, u'arguments':arguments, u'refNeedsArrowPos':refNeedsArrowPos}, var) + var.registers([u'expr', u'refShorthandDefaultPos', u'startLoc', u'noIn', u'startPos', u'refNeedsArrowPos']) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.put(u'expr', var.get(u"this").callprop(u'parseExprOps', var.get(u'noIn'), var.get(u'refShorthandDefaultPos'))) + if (var.get(u'refShorthandDefaultPos') and var.get(u'refShorthandDefaultPos').get(u'start')): + return var.get(u'expr') + return var.get(u"this").callprop(u'parseConditional', var.get(u'expr'), var.get(u'noIn'), var.get(u'startPos'), var.get(u'startLoc'), var.get(u'refNeedsArrowPos')) + PyJs_anonymous_3033_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseMaybeConditional', PyJs_anonymous_3033_) + @Js + def PyJs_anonymous_3034_(expr, noIn, startPos, startLoc, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'startLoc':startLoc, u'noIn':noIn, u'expr':expr, u'startPos':startPos}, var) + var.registers([u'node', u'expr', u'startPos', u'noIn', u'startLoc']) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'question')): + var.put(u'node', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'node').put(u'test', var.get(u'expr')) + var.get(u'node').put(u'consequent', var.get(u"this").callprop(u'parseMaybeAssign')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'colon')) + var.get(u'node').put(u'alternate', var.get(u"this").callprop(u'parseMaybeAssign', var.get(u'noIn'))) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ConditionalExpression')) + return var.get(u'expr') + PyJs_anonymous_3034_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseConditional', PyJs_anonymous_3034_) + @Js + def PyJs_anonymous_3035_(noIn, refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'noIn':noIn, u'this':this, u'refShorthandDefaultPos':refShorthandDefaultPos, u'arguments':arguments}, var) + var.registers([u'noIn', u'expr', u'startPos', u'refShorthandDefaultPos', u'startLoc']) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.put(u'expr', var.get(u"this").callprop(u'parseMaybeUnary', var.get(u'refShorthandDefaultPos'))) + if (var.get(u'refShorthandDefaultPos') and var.get(u'refShorthandDefaultPos').get(u'start')): + return var.get(u'expr') + else: + return var.get(u"this").callprop(u'parseExprOp', var.get(u'expr'), var.get(u'startPos'), var.get(u'startLoc'), (-Js(1.0)), var.get(u'noIn')) + PyJs_anonymous_3035_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseExprOps', PyJs_anonymous_3035_) + @Js + def PyJs_anonymous_3036_(left, leftStartPos, leftStartLoc, minPrec, noIn, this, arguments, var=var): + var = Scope({u'minPrec':minPrec, u'arguments':arguments, u'noIn':noIn, u'leftStartLoc':leftStartLoc, u'this':this, u'leftStartPos':leftStartPos, u'left':left}, var) + var.registers([u'node', u'minPrec', u'leftStartPos', u'prec', u'startLoc', u'noIn', u'leftStartLoc', u'startPos', u'op', u'left']) + var.put(u'prec', var.get(u"this").get(u'state').get(u'type').get(u'binop')) + if ((var.get(u'prec')!=var.get(u"null")) and (var.get(u'noIn').neg() or var.get(u"this").callprop(u'match', var.get(u'types').get(u'_in')).neg())): + if (var.get(u'prec')>var.get(u'minPrec')): + var.put(u'node', var.get(u"this").callprop(u'startNodeAt', var.get(u'leftStartPos'), var.get(u'leftStartLoc'))) + var.get(u'node').put(u'left', var.get(u'left')) + var.get(u'node').put(u'operator', var.get(u"this").get(u'state').get(u'value')) + if ((((PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'**')) and PyJsStrictEq(var.get(u'left').get(u'type'),Js(u'UnaryExpression'))) and var.get(u'left').get(u'extra')) and var.get(u'left').get(u'extra').get(u'parenthesizedArgument').neg()) and var.get(u'left').get(u'extra').get(u'parenthesized').neg()): + var.get(u"this").callprop(u'raise', var.get(u'left').get(u'argument').get(u'start'), Js(u'Illegal expression. Wrap left hand side or entire exponentiation in parentheses.')) + var.put(u'op', var.get(u"this").get(u'state').get(u'type')) + var.get(u"this").callprop(u'next') + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.get(u'node').put(u'right', var.get(u"this").callprop(u'parseExprOp', var.get(u"this").callprop(u'parseMaybeUnary'), var.get(u'startPos'), var.get(u'startLoc'), ((var.get(u'prec')-Js(1.0)) if var.get(u'op').get(u'rightAssociative') else var.get(u'prec')), var.get(u'noIn'))) + var.get(u"this").callprop(u'finishNode', var.get(u'node'), (Js(u'LogicalExpression') if (PyJsStrictEq(var.get(u'op'),var.get(u'types').get(u'logicalOR')) or PyJsStrictEq(var.get(u'op'),var.get(u'types').get(u'logicalAND'))) else Js(u'BinaryExpression'))) + return var.get(u"this").callprop(u'parseExprOp', var.get(u'node'), var.get(u'leftStartPos'), var.get(u'leftStartLoc'), var.get(u'minPrec'), var.get(u'noIn')) + return var.get(u'left') + PyJs_anonymous_3036_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseExprOp', PyJs_anonymous_3036_) + @Js + def PyJs_anonymous_3037_(refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'this':this, u'refShorthandDefaultPos':refShorthandDefaultPos, u'arguments':arguments}, var) + var.registers([u'node', u'expr', u'update', u'_node', u'refShorthandDefaultPos', u'startLoc', u'startPos', u'argType']) + if var.get(u"this").get(u'state').get(u'type').get(u'prefix'): + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.put(u'update', var.get(u"this").callprop(u'match', var.get(u'types').get(u'incDec'))) + var.get(u'node').put(u'operator', var.get(u"this").get(u'state').get(u'value')) + var.get(u'node').put(u'prefix', var.get(u'true')) + var.get(u"this").callprop(u'next') + var.put(u'argType', var.get(u"this").get(u'state').get(u'type')) + var.get(u'node').put(u'argument', var.get(u"this").callprop(u'parseMaybeUnary')) + var.get(u"this").callprop(u'addExtra', var.get(u'node'), Js(u'parenthesizedArgument'), (PyJsStrictEq(var.get(u'argType'),var.get(u'types').get(u'parenL')) and (var.get(u'node').get(u'argument').get(u'extra').neg() or var.get(u'node').get(u'argument').get(u'extra').get(u'parenthesized').neg()))) + if (var.get(u'refShorthandDefaultPos') and var.get(u'refShorthandDefaultPos').get(u'start')): + var.get(u"this").callprop(u'unexpected', var.get(u'refShorthandDefaultPos').get(u'start')) + if var.get(u'update'): + var.get(u"this").callprop(u'checkLVal', var.get(u'node').get(u'argument'), var.get(u'undefined'), var.get(u'undefined'), Js(u'prefix operation')) + else: + if ((var.get(u"this").get(u'state').get(u'strict') and PyJsStrictEq(var.get(u'node').get(u'operator'),Js(u'delete'))) and PyJsStrictEq(var.get(u'node').get(u'argument').get(u'type'),Js(u'Identifier'))): + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'start'), Js(u'Deleting local variable in strict mode')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), (Js(u'UpdateExpression') if var.get(u'update') else Js(u'UnaryExpression'))) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.put(u'expr', var.get(u"this").callprop(u'parseExprSubscripts', var.get(u'refShorthandDefaultPos'))) + if (var.get(u'refShorthandDefaultPos') and var.get(u'refShorthandDefaultPos').get(u'start')): + return var.get(u'expr') + while (var.get(u"this").get(u'state').get(u'type').get(u'postfix') and var.get(u"this").callprop(u'canInsertSemicolon').neg()): + var.put(u'_node', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'_node').put(u'operator', var.get(u"this").get(u'state').get(u'value')) + var.get(u'_node').put(u'prefix', Js(False)) + var.get(u'_node').put(u'argument', var.get(u'expr')) + var.get(u"this").callprop(u'checkLVal', var.get(u'expr'), var.get(u'undefined'), var.get(u'undefined'), Js(u'postfix operation')) + var.get(u"this").callprop(u'next') + var.put(u'expr', var.get(u"this").callprop(u'finishNode', var.get(u'_node'), Js(u'UpdateExpression'))) + return var.get(u'expr') + PyJs_anonymous_3037_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseMaybeUnary', PyJs_anonymous_3037_) + @Js + def PyJs_anonymous_3038_(refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'this':this, u'refShorthandDefaultPos':refShorthandDefaultPos, u'arguments':arguments}, var) + var.registers([u'expr', u'startPos', u'potentialArrowAt', u'startLoc', u'refShorthandDefaultPos']) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.put(u'potentialArrowAt', var.get(u"this").get(u'state').get(u'potentialArrowAt')) + var.put(u'expr', var.get(u"this").callprop(u'parseExprAtom', var.get(u'refShorthandDefaultPos'))) + if (PyJsStrictEq(var.get(u'expr').get(u'type'),Js(u'ArrowFunctionExpression')) and PyJsStrictEq(var.get(u'expr').get(u'start'),var.get(u'potentialArrowAt'))): + return var.get(u'expr') + if (var.get(u'refShorthandDefaultPos') and var.get(u'refShorthandDefaultPos').get(u'start')): + return var.get(u'expr') + return var.get(u"this").callprop(u'parseSubscripts', var.get(u'expr'), var.get(u'startPos'), var.get(u'startLoc')) + PyJs_anonymous_3038_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseExprSubscripts', PyJs_anonymous_3038_) + @Js + def PyJs_anonymous_3039_(base, startPos, startLoc, noCalls, this, arguments, var=var): + var = Scope({u'base':base, u'arguments':arguments, u'startLoc':startLoc, u'this':this, u'startPos':startPos, u'noCalls':noCalls}, var) + var.registers([u'node', u'startLoc', u'possibleAsync', u'_node3', u'_node2', u'base', u'_node5', u'_node4', u'startPos', u'noCalls']) + #for JS loop + + while 1: + if (var.get(u'noCalls').neg() and var.get(u"this").callprop(u'eat', var.get(u'types').get(u'doubleColon'))): + var.put(u'node', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'node').put(u'object', var.get(u'base')) + var.get(u'node').put(u'callee', var.get(u"this").callprop(u'parseNoCallExpr')) + return var.get(u"this").callprop(u'parseSubscripts', var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'BindExpression')), var.get(u'startPos'), var.get(u'startLoc'), var.get(u'noCalls')) + else: + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'dot')): + var.put(u'_node2', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'_node2').put(u'object', var.get(u'base')) + var.get(u'_node2').put(u'property', var.get(u"this").callprop(u'parseIdentifier', var.get(u'true'))) + var.get(u'_node2').put(u'computed', Js(False)) + var.put(u'base', var.get(u"this").callprop(u'finishNode', var.get(u'_node2'), Js(u'MemberExpression'))) + else: + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'bracketL')): + var.put(u'_node3', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'_node3').put(u'object', var.get(u'base')) + var.get(u'_node3').put(u'property', var.get(u"this").callprop(u'parseExpression')) + var.get(u'_node3').put(u'computed', var.get(u'true')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'bracketR')) + var.put(u'base', var.get(u"this").callprop(u'finishNode', var.get(u'_node3'), Js(u'MemberExpression'))) + else: + if (var.get(u'noCalls').neg() and var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL'))): + var.put(u'possibleAsync', (((PyJsStrictEq(var.get(u"this").get(u'state').get(u'potentialArrowAt'),var.get(u'base').get(u'start')) and PyJsStrictEq(var.get(u'base').get(u'type'),Js(u'Identifier'))) and PyJsStrictEq(var.get(u'base').get(u'name'),Js(u'async'))) and var.get(u"this").callprop(u'canInsertSemicolon').neg())) + var.get(u"this").callprop(u'next') + var.put(u'_node4', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'_node4').put(u'callee', var.get(u'base')) + var.get(u'_node4').put(u'arguments', var.get(u"this").callprop(u'parseCallExpressionArguments', var.get(u'types').get(u'parenR'), var.get(u'possibleAsync'))) + if (PyJsStrictEq(var.get(u'_node4').get(u'callee').get(u'type'),Js(u'Import')) and PyJsStrictNeq(var.get(u'_node4').get(u'arguments').get(u'length'),Js(1.0))): + var.get(u"this").callprop(u'raise', var.get(u'_node4').get(u'start'), Js(u'import() requires exactly one argument')) + var.put(u'base', var.get(u"this").callprop(u'finishNode', var.get(u'_node4'), Js(u'CallExpression'))) + if (var.get(u'possibleAsync') and var.get(u"this").callprop(u'shouldParseAsyncArrow')): + return var.get(u"this").callprop(u'parseAsyncArrowFromCallExpression', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc')), var.get(u'_node4')) + else: + var.get(u"this").callprop(u'toReferencedList', var.get(u'_node4').get(u'arguments')) + else: + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'backQuote')): + var.put(u'_node5', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'_node5').put(u'tag', var.get(u'base')) + var.get(u'_node5').put(u'quasi', var.get(u"this").callprop(u'parseTemplate')) + var.put(u'base', var.get(u"this").callprop(u'finishNode', var.get(u'_node5'), Js(u'TaggedTemplateExpression'))) + else: + return var.get(u'base') + + PyJs_anonymous_3039_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseSubscripts', PyJs_anonymous_3039_) + @Js + def PyJs_anonymous_3040_(close, possibleAsyncArrow, this, arguments, var=var): + var = Scope({u'this':this, u'close':close, u'possibleAsyncArrow':possibleAsyncArrow, u'arguments':arguments}, var) + var.registers([u'elts', u'close', u'first', u'possibleAsyncArrow', u'innerParenStart']) + var.put(u'innerParenStart', PyJsComma(Js(0.0), Js(None))) + var.put(u'elts', Js([])) + var.put(u'first', var.get(u'true')) + while var.get(u"this").callprop(u'eat', var.get(u'close')).neg(): + if var.get(u'first'): + var.put(u'first', Js(False)) + else: + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + if var.get(u"this").callprop(u'eat', var.get(u'close')): + break + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')) and var.get(u'innerParenStart').neg()): + var.put(u'innerParenStart', var.get(u"this").get(u'state').get(u'start')) + PyJs_Object_3041_ = Js({u'start':Js(0.0)}) + var.get(u'elts').callprop(u'push', var.get(u"this").callprop(u'parseExprListItem', var.get(u'undefined'), (PyJs_Object_3041_ if var.get(u'possibleAsyncArrow') else var.get(u'undefined')))) + if ((var.get(u'possibleAsyncArrow') and var.get(u'innerParenStart')) and var.get(u"this").callprop(u'shouldParseAsyncArrow')): + var.get(u"this").callprop(u'unexpected') + return var.get(u'elts') + PyJs_anonymous_3040_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseCallExpressionArguments', PyJs_anonymous_3040_) + @Js + def PyJs_anonymous_3042_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").callprop(u'match', var.get(u'types').get(u'arrow')) + PyJs_anonymous_3042_._set_name(u'anonymous') + var.get(u'pp$3').put(u'shouldParseAsyncArrow', PyJs_anonymous_3042_) + @Js + def PyJs_anonymous_3043_(node, call, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'call':call, u'arguments':arguments}, var) + var.registers([u'node', u'call']) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'arrow')) + return var.get(u"this").callprop(u'parseArrowExpression', var.get(u'node'), var.get(u'call').get(u'arguments'), var.get(u'true')) + PyJs_anonymous_3043_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseAsyncArrowFromCallExpression', PyJs_anonymous_3043_) + @Js + def PyJs_anonymous_3044_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'startPos', u'startLoc']) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + return var.get(u"this").callprop(u'parseSubscripts', var.get(u"this").callprop(u'parseExprAtom'), var.get(u'startPos'), var.get(u'startLoc'), var.get(u'true')) + PyJs_anonymous_3044_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseNoCallExpr', PyJs_anonymous_3044_) + @Js + def PyJs_anonymous_3045_(refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'this':this, u'refShorthandDefaultPos':refShorthandDefaultPos, u'arguments':arguments}, var) + var.registers([u'node', u'oldLabels', u'allowAwait', u'oldInFunction', u'allowYield', u'value', u'params', u'_node6', u'callee', u'id', u'canBeArrow', u'refShorthandDefaultPos']) + var.put(u'node', PyJsComma(Js(0.0), Js(None))) + var.put(u'canBeArrow', PyJsStrictEq(var.get(u"this").get(u'state').get(u'potentialArrowAt'),var.get(u"this").get(u'state').get(u'start'))) + while 1: + SWITCHED = False + CONDITION = (var.get(u"this").get(u'state').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_super')): + SWITCHED = True + if (var.get(u"this").get(u'state').get(u'inMethod').neg() and var.get(u"this").get(u'options').get(u'allowSuperOutsideMethod').neg()): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u"'super' outside of function or class")) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + if ((var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')).neg() and var.get(u"this").callprop(u'match', var.get(u'types').get(u'bracketL')).neg()) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'dot')).neg()): + var.get(u"this").callprop(u'unexpected') + if ((var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')) and PyJsStrictNeq(var.get(u"this").get(u'state').get(u'inMethod'),Js(u'constructor'))) and var.get(u"this").get(u'options').get(u'allowSuperOutsideMethod').neg()): + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'start'), Js(u'super() outside of class constructor')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'Super')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_import')): + SWITCHED = True + if var.get(u"this").callprop(u'hasPlugin', Js(u'dynamicImport')).neg(): + var.get(u"this").callprop(u'unexpected') + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')).neg(): + var.get(u"this").callprop(u'unexpected', var.get(u"null"), var.get(u'types').get(u'parenL')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'Import')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_this')): + SWITCHED = True + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ThisExpression')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_yield')): + SWITCHED = True + if var.get(u"this").get(u'state').get(u'inGenerator'): + var.get(u"this").callprop(u'unexpected') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'name')): + SWITCHED = True + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.put(u'allowAwait', (PyJsStrictEq(var.get(u"this").get(u'state').get(u'value'),Js(u'await')) and var.get(u"this").get(u'state').get(u'inAsync'))) + var.put(u'allowYield', var.get(u"this").callprop(u'shouldAllowYieldIdentifier')) + var.put(u'id', var.get(u"this").callprop(u'parseIdentifier', (var.get(u'allowAwait') or var.get(u'allowYield')))) + if PyJsStrictEq(var.get(u'id').get(u'name'),Js(u'await')): + if (var.get(u"this").get(u'state').get(u'inAsync') or var.get(u"this").get(u'inModule')): + return var.get(u"this").callprop(u'parseAwait', var.get(u'node')) + else: + if ((PyJsStrictEq(var.get(u'id').get(u'name'),Js(u'async')) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'_function'))) and var.get(u"this").callprop(u'canInsertSemicolon').neg()): + var.get(u"this").callprop(u'next') + return var.get(u"this").callprop(u'parseFunction', var.get(u'node'), Js(False), Js(False), var.get(u'true')) + else: + if ((var.get(u'canBeArrow') and PyJsStrictEq(var.get(u'id').get(u'name'),Js(u'async'))) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'name'))): + var.put(u'params', Js([var.get(u"this").callprop(u'parseIdentifier')])) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'arrow')) + return var.get(u"this").callprop(u'parseArrowExpression', var.get(u'node'), var.get(u'params'), var.get(u'true')) + if ((var.get(u'canBeArrow') and var.get(u"this").callprop(u'canInsertSemicolon').neg()) and var.get(u"this").callprop(u'eat', var.get(u'types').get(u'arrow'))): + return var.get(u"this").callprop(u'parseArrowExpression', var.get(u'node'), Js([var.get(u'id')])) + return var.get(u'id') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_do')): + SWITCHED = True + if var.get(u"this").callprop(u'hasPlugin', Js(u'doExpressions')): + var.put(u'_node6', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + var.put(u'oldInFunction', var.get(u"this").get(u'state').get(u'inFunction')) + var.put(u'oldLabels', var.get(u"this").get(u'state').get(u'labels')) + var.get(u"this").get(u'state').put(u'labels', Js([])) + var.get(u"this").get(u'state').put(u'inFunction', Js(False)) + var.get(u'_node6').put(u'body', var.get(u"this").callprop(u'parseBlock', Js(False), var.get(u'true'))) + var.get(u"this").get(u'state').put(u'inFunction', var.get(u'oldInFunction')) + var.get(u"this").get(u'state').put(u'labels', var.get(u'oldLabels')) + return var.get(u"this").callprop(u'finishNode', var.get(u'_node6'), Js(u'DoExpression')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'regexp')): + SWITCHED = True + var.put(u'value', var.get(u"this").get(u'state').get(u'value')) + var.put(u'node', var.get(u"this").callprop(u'parseLiteral', var.get(u'value').get(u'value'), Js(u'RegExpLiteral'))) + var.get(u'node').put(u'pattern', var.get(u'value').get(u'pattern')) + var.get(u'node').put(u'flags', var.get(u'value').get(u'flags')) + return var.get(u'node') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'num')): + SWITCHED = True + return var.get(u"this").callprop(u'parseLiteral', var.get(u"this").get(u'state').get(u'value'), Js(u'NumericLiteral')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'string')): + SWITCHED = True + return var.get(u"this").callprop(u'parseLiteral', var.get(u"this").get(u'state').get(u'value'), Js(u'StringLiteral')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_null')): + SWITCHED = True + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'NullLiteral')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_true')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_false')): + SWITCHED = True + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u'node').put(u'value', var.get(u"this").callprop(u'match', var.get(u'types').get(u'_true'))) + var.get(u"this").callprop(u'next') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'BooleanLiteral')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'parenL')): + SWITCHED = True + return var.get(u"this").callprop(u'parseParenAndDistinguishExpression', var.get(u"null"), var.get(u"null"), var.get(u'canBeArrow')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'bracketL')): + SWITCHED = True + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + var.get(u'node').put(u'elements', var.get(u"this").callprop(u'parseExprList', var.get(u'types').get(u'bracketR'), var.get(u'true'), var.get(u'refShorthandDefaultPos'))) + var.get(u"this").callprop(u'toReferencedList', var.get(u'node').get(u'elements')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ArrayExpression')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'braceL')): + SWITCHED = True + return var.get(u"this").callprop(u'parseObj', Js(False), var.get(u'refShorthandDefaultPos')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_function')): + SWITCHED = True + return var.get(u"this").callprop(u'parseFunctionExpression') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'at')): + SWITCHED = True + var.get(u"this").callprop(u'parseDecorators') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_class')): + SWITCHED = True + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'takeDecorators', var.get(u'node')) + return var.get(u"this").callprop(u'parseClass', var.get(u'node'), Js(False)) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'_new')): + SWITCHED = True + return var.get(u"this").callprop(u'parseNew') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'backQuote')): + SWITCHED = True + return var.get(u"this").callprop(u'parseTemplate') + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'types').get(u'doubleColon')): + SWITCHED = True + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + var.get(u'node').put(u'object', var.get(u"null")) + var.put(u'callee', var.get(u'node').put(u'callee', var.get(u"this").callprop(u'parseNoCallExpr'))) + if PyJsStrictEq(var.get(u'callee').get(u'type'),Js(u'MemberExpression')): + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'BindExpression')) + else: + var.get(u"this").callprop(u'raise', var.get(u'callee').get(u'start'), Js(u'Binding should be performed on object property.')) + if True: + SWITCHED = True + var.get(u"this").callprop(u'unexpected') + SWITCHED = True + break + PyJs_anonymous_3045_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseExprAtom', PyJs_anonymous_3045_) + @Js + def PyJs_anonymous_3046_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'meta']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.put(u'meta', var.get(u"this").callprop(u'parseIdentifier', var.get(u'true'))) + if ((var.get(u"this").get(u'state').get(u'inGenerator') and var.get(u"this").callprop(u'eat', var.get(u'types').get(u'dot'))) and var.get(u"this").callprop(u'hasPlugin', Js(u'functionSent'))): + return var.get(u"this").callprop(u'parseMetaProperty', var.get(u'node'), var.get(u'meta'), Js(u'sent')) + else: + return var.get(u"this").callprop(u'parseFunction', var.get(u'node'), Js(False)) + PyJs_anonymous_3046_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseFunctionExpression', PyJs_anonymous_3046_) + @Js + def PyJs_anonymous_3047_(node, meta, propertyName, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'propertyName':propertyName, u'meta':meta, u'arguments':arguments}, var) + var.registers([u'node', u'propertyName', u'meta']) + var.get(u'node').put(u'meta', var.get(u'meta')) + var.get(u'node').put(u'property', var.get(u"this").callprop(u'parseIdentifier', var.get(u'true'))) + if PyJsStrictNeq(var.get(u'node').get(u'property').get(u'name'),var.get(u'propertyName')): + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'property').get(u'start'), (((Js(u'The only valid meta property for new is ')+var.get(u'meta').get(u'name'))+Js(u'.'))+var.get(u'propertyName'))) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'MetaProperty')) + PyJs_anonymous_3047_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseMetaProperty', PyJs_anonymous_3047_) + @Js + def PyJs_anonymous_3048_(value, type, this, arguments, var=var): + var = Scope({u'this':this, u'type':type, u'arguments':arguments, u'value':value}, var) + var.registers([u'node', u'type', u'value']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'addExtra', var.get(u'node'), Js(u'rawValue'), var.get(u'value')) + var.get(u"this").callprop(u'addExtra', var.get(u'node'), Js(u'raw'), var.get(u"this").get(u'input').callprop(u'slice', var.get(u"this").get(u'state').get(u'start'), var.get(u"this").get(u'state').get(u'end'))) + var.get(u'node').put(u'value', var.get(u'value')) + var.get(u"this").callprop(u'next') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), var.get(u'type')) + PyJs_anonymous_3048_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseLiteral', PyJs_anonymous_3048_) + @Js + def PyJs_anonymous_3049_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'val']) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenL')) + var.put(u'val', var.get(u"this").callprop(u'parseExpression')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenR')) + return var.get(u'val') + PyJs_anonymous_3049_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseParenExpression', PyJs_anonymous_3049_) + @Js + def PyJs_anonymous_3050_(startPos, startLoc, canBeArrow, this, arguments, var=var): + var = Scope({u'this':this, u'startPos':startPos, u'canBeArrow':canBeArrow, u'startLoc':startLoc, u'arguments':arguments}, var) + var.registers([u'innerStartLoc', u'optionalCommaStart', u'_ref', u'startPos', u'arrowNode', u'_iterator', u'val', u'param', u'innerStartPos', u'spreadNodeStartPos', u'refShorthandDefaultPos', u'_i', u'spreadStart', u'exprList', u'canBeArrow', u'innerEndPos', u'spreadNodeStartLoc', u'refNeedsArrowPos', u'_isArray', u'innerEndLoc', u'startLoc', u'first']) + var.put(u'startPos', (var.get(u'startPos') or var.get(u"this").get(u'state').get(u'start'))) + var.put(u'startLoc', (var.get(u'startLoc') or var.get(u"this").get(u'state').get(u'startLoc'))) + var.put(u'val', PyJsComma(Js(0.0), Js(None))) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenL')) + var.put(u'innerStartPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'innerStartLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.put(u'exprList', Js([])) + var.put(u'first', var.get(u'true')) + PyJs_Object_3051_ = Js({u'start':Js(0.0)}) + var.put(u'refShorthandDefaultPos', PyJs_Object_3051_) + var.put(u'spreadStart', PyJsComma(Js(0.0), Js(None))) + var.put(u'optionalCommaStart', PyJsComma(Js(0.0), Js(None))) + PyJs_Object_3052_ = Js({u'start':Js(0.0)}) + var.put(u'refNeedsArrowPos', PyJs_Object_3052_) + while var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenR')).neg(): + if var.get(u'first'): + var.put(u'first', Js(False)) + else: + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma'), (var.get(u'refNeedsArrowPos').get(u'start') or var.get(u"null"))) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenR')): + var.put(u'optionalCommaStart', var.get(u"this").get(u'state').get(u'start')) + break + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'ellipsis')): + var.put(u'spreadNodeStartPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'spreadNodeStartLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.put(u'spreadStart', var.get(u"this").get(u'state').get(u'start')) + var.get(u'exprList').callprop(u'push', var.get(u"this").callprop(u'parseParenItem', var.get(u"this").callprop(u'parseRest'), var.get(u'spreadNodeStartLoc'), var.get(u'spreadNodeStartPos'))) + break + else: + var.get(u'exprList').callprop(u'push', var.get(u"this").callprop(u'parseMaybeAssign', Js(False), var.get(u'refShorthandDefaultPos'), var.get(u"this").get(u'parseParenItem'), var.get(u'refNeedsArrowPos'))) + var.put(u'innerEndPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'innerEndLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenR')) + var.put(u'arrowNode', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + if ((var.get(u'canBeArrow') and var.get(u"this").callprop(u'shouldParseArrow')) and var.put(u'arrowNode', var.get(u"this").callprop(u'parseArrow', var.get(u'arrowNode')))): + #for JS loop + var.put(u'_iterator', var.get(u'exprList')) + var.put(u'_isArray', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator'))) + var.put(u'_i', Js(0.0)) + var.put(u'_iterator', (var.get(u'_iterator') if var.get(u'_isArray') else var.get(u'_iterator').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray'): + if (var.get(u'_i')>=var.get(u'_iterator').get(u'length')): + break + var.put(u'_ref', var.get(u'_iterator').get((var.put(u'_i',Js(var.get(u'_i').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i', var.get(u'_iterator').callprop(u'next')) + if var.get(u'_i').get(u'done'): + break + var.put(u'_ref', var.get(u'_i').get(u'value')) + var.put(u'param', var.get(u'_ref')) + if (var.get(u'param').get(u'extra') and var.get(u'param').get(u'extra').get(u'parenthesized')): + var.get(u"this").callprop(u'unexpected', var.get(u'param').get(u'extra').get(u'parenStart')) + + return var.get(u"this").callprop(u'parseArrowExpression', var.get(u'arrowNode'), var.get(u'exprList')) + if var.get(u'exprList').get(u'length').neg(): + var.get(u"this").callprop(u'unexpected', var.get(u"this").get(u'state').get(u'lastTokStart')) + if var.get(u'optionalCommaStart'): + var.get(u"this").callprop(u'unexpected', var.get(u'optionalCommaStart')) + if var.get(u'spreadStart'): + var.get(u"this").callprop(u'unexpected', var.get(u'spreadStart')) + if var.get(u'refShorthandDefaultPos').get(u'start'): + var.get(u"this").callprop(u'unexpected', var.get(u'refShorthandDefaultPos').get(u'start')) + if var.get(u'refNeedsArrowPos').get(u'start'): + var.get(u"this").callprop(u'unexpected', var.get(u'refNeedsArrowPos').get(u'start')) + if (var.get(u'exprList').get(u'length')>Js(1.0)): + var.put(u'val', var.get(u"this").callprop(u'startNodeAt', var.get(u'innerStartPos'), var.get(u'innerStartLoc'))) + var.get(u'val').put(u'expressions', var.get(u'exprList')) + var.get(u"this").callprop(u'toReferencedList', var.get(u'val').get(u'expressions')) + var.get(u"this").callprop(u'finishNodeAt', var.get(u'val'), Js(u'SequenceExpression'), var.get(u'innerEndPos'), var.get(u'innerEndLoc')) + else: + var.put(u'val', var.get(u'exprList').get(u'0')) + var.get(u"this").callprop(u'addExtra', var.get(u'val'), Js(u'parenthesized'), var.get(u'true')) + var.get(u"this").callprop(u'addExtra', var.get(u'val'), Js(u'parenStart'), var.get(u'startPos')) + return var.get(u'val') + PyJs_anonymous_3050_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseParenAndDistinguishExpression', PyJs_anonymous_3050_) + @Js + def PyJs_anonymous_3053_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u"this").callprop(u'canInsertSemicolon').neg() + PyJs_anonymous_3053_._set_name(u'anonymous') + var.get(u'pp$3').put(u'shouldParseArrow', PyJs_anonymous_3053_) + @Js + def PyJs_anonymous_3054_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'arrow')): + return var.get(u'node') + PyJs_anonymous_3054_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseArrow', PyJs_anonymous_3054_) + @Js + def PyJs_anonymous_3055_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return var.get(u'node') + PyJs_anonymous_3055_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseParenItem', PyJs_anonymous_3055_) + @Js + def PyJs_anonymous_3056_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'meta']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.put(u'meta', var.get(u"this").callprop(u'parseIdentifier', var.get(u'true'))) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'dot')): + return var.get(u"this").callprop(u'parseMetaProperty', var.get(u'node'), var.get(u'meta'), Js(u'target')) + var.get(u'node').put(u'callee', var.get(u"this").callprop(u'parseNoCallExpr')) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'parenL')): + var.get(u'node').put(u'arguments', var.get(u"this").callprop(u'parseExprList', var.get(u'types').get(u'parenR'))) + var.get(u"this").callprop(u'toReferencedList', var.get(u'node').get(u'arguments')) + else: + var.get(u'node').put(u'arguments', Js([])) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'NewExpression')) + PyJs_anonymous_3056_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseNew', PyJs_anonymous_3056_) + @Js + def PyJs_anonymous_3057_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'elem']) + var.put(u'elem', var.get(u"this").callprop(u'startNode')) + PyJs_Object_3058_ = Js({u'raw':var.get(u"this").get(u'input').callprop(u'slice', var.get(u"this").get(u'state').get(u'start'), var.get(u"this").get(u'state').get(u'end')).callprop(u'replace', JsRegExp(u'/\\r\\n?/g'), Js(u'\n')),u'cooked':var.get(u"this").get(u'state').get(u'value')}) + var.get(u'elem').put(u'value', PyJs_Object_3058_) + var.get(u"this").callprop(u'next') + var.get(u'elem').put(u'tail', var.get(u"this").callprop(u'match', var.get(u'types').get(u'backQuote'))) + return var.get(u"this").callprop(u'finishNode', var.get(u'elem'), Js(u'TemplateElement')) + PyJs_anonymous_3057_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseTemplateElement', PyJs_anonymous_3057_) + @Js + def PyJs_anonymous_3059_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'curElt']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + var.get(u'node').put(u'expressions', Js([])) + var.put(u'curElt', var.get(u"this").callprop(u'parseTemplateElement')) + var.get(u'node').put(u'quasis', Js([var.get(u'curElt')])) + while var.get(u'curElt').get(u'tail').neg(): + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'dollarBraceL')) + var.get(u'node').get(u'expressions').callprop(u'push', var.get(u"this").callprop(u'parseExpression')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceR')) + var.get(u'node').get(u'quasis').callprop(u'push', var.put(u'curElt', var.get(u"this").callprop(u'parseTemplateElement'))) + var.get(u"this").callprop(u'next') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'TemplateLiteral')) + PyJs_anonymous_3059_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseTemplate', PyJs_anonymous_3059_) + @Js + def PyJs_anonymous_3060_(isPattern, refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'refShorthandDefaultPos':refShorthandDefaultPos, u'isPattern':isPattern}, var) + var.registers([u'node', u'firstRestLocation', u'isGenerator', u'prop', u'isAsync', u'asyncId', u'refShorthandDefaultPos', u'startLoc', u'propHash', u'position', u'startPos', u'isPattern', u'decorators', u'first']) + var.put(u'decorators', Js([])) + var.put(u'propHash', var.get(u'Object').callprop(u'create', var.get(u"null"))) + var.put(u'first', var.get(u'true')) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u'node').put(u'properties', Js([])) + var.get(u"this").callprop(u'next') + var.put(u'firstRestLocation', var.get(u"null")) + while var.get(u"this").callprop(u'eat', var.get(u'types').get(u'braceR')).neg(): + if var.get(u'first'): + var.put(u'first', Js(False)) + else: + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'braceR')): + break + while var.get(u"this").callprop(u'match', var.get(u'types').get(u'at')): + var.get(u'decorators').callprop(u'push', var.get(u"this").callprop(u'parseDecorator')) + var.put(u'prop', var.get(u"this").callprop(u'startNode')) + var.put(u'isGenerator', Js(False)) + var.put(u'isAsync', Js(False)) + var.put(u'startPos', PyJsComma(Js(0.0), Js(None))) + var.put(u'startLoc', PyJsComma(Js(0.0), Js(None))) + if var.get(u'decorators').get(u'length'): + var.get(u'prop').put(u'decorators', var.get(u'decorators')) + var.put(u'decorators', Js([])) + if (var.get(u"this").callprop(u'hasPlugin', Js(u'objectRestSpread')) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'ellipsis'))): + var.put(u'prop', var.get(u"this").callprop(u'parseSpread')) + var.get(u'prop').put(u'type', (Js(u'RestProperty') if var.get(u'isPattern') else Js(u'SpreadProperty'))) + var.get(u'node').get(u'properties').callprop(u'push', var.get(u'prop')) + if var.get(u'isPattern'): + var.put(u'position', var.get(u"this").get(u'state').get(u'start')) + if PyJsStrictNeq(var.get(u'firstRestLocation'),var.get(u"null")): + var.get(u"this").callprop(u'unexpected', var.get(u'firstRestLocation'), Js(u'Cannot have multiple rest elements when destructuring')) + else: + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'braceR')): + break + else: + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'comma')) and PyJsStrictEq(var.get(u"this").callprop(u'lookahead').get(u'type'),var.get(u'types').get(u'braceR'))): + continue + else: + var.put(u'firstRestLocation', var.get(u'position')) + continue + else: + continue + var.get(u'prop').put(u'method', Js(False)) + var.get(u'prop').put(u'shorthand', Js(False)) + if (var.get(u'isPattern') or var.get(u'refShorthandDefaultPos')): + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + if var.get(u'isPattern').neg(): + var.put(u'isGenerator', var.get(u"this").callprop(u'eat', var.get(u'types').get(u'star'))) + if (var.get(u'isPattern').neg() and var.get(u"this").callprop(u'isContextual', Js(u'async'))): + if var.get(u'isGenerator'): + var.get(u"this").callprop(u'unexpected') + var.put(u'asyncId', var.get(u"this").callprop(u'parseIdentifier')) + if ((((var.get(u"this").callprop(u'match', var.get(u'types').get(u'colon')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL'))) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceR'))) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'eq'))) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'comma'))): + var.get(u'prop').put(u'key', var.get(u'asyncId')) + else: + var.put(u'isAsync', var.get(u'true')) + if var.get(u"this").callprop(u'hasPlugin', Js(u'asyncGenerators')): + var.put(u'isGenerator', var.get(u"this").callprop(u'eat', var.get(u'types').get(u'star'))) + var.get(u"this").callprop(u'parsePropertyName', var.get(u'prop')) + else: + var.get(u"this").callprop(u'parsePropertyName', var.get(u'prop')) + var.get(u"this").callprop(u'parseObjPropValue', var.get(u'prop'), var.get(u'startPos'), var.get(u'startLoc'), var.get(u'isGenerator'), var.get(u'isAsync'), var.get(u'isPattern'), var.get(u'refShorthandDefaultPos')) + var.get(u"this").callprop(u'checkPropClash', var.get(u'prop'), var.get(u'propHash')) + if var.get(u'prop').get(u'shorthand'): + var.get(u"this").callprop(u'addExtra', var.get(u'prop'), Js(u'shorthand'), var.get(u'true')) + var.get(u'node').get(u'properties').callprop(u'push', var.get(u'prop')) + if PyJsStrictNeq(var.get(u'firstRestLocation'),var.get(u"null")): + var.get(u"this").callprop(u'unexpected', var.get(u'firstRestLocation'), Js(u'The rest element has to be the last element when destructuring')) + if var.get(u'decorators').get(u'length'): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'You have trailing decorators with no property')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), (Js(u'ObjectPattern') if var.get(u'isPattern') else Js(u'ObjectExpression'))) + PyJs_anonymous_3060_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseObj', PyJs_anonymous_3060_) + @Js + def PyJs_anonymous_3061_(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'isGenerator':isGenerator, u'prop':prop, u'isAsync':isAsync, u'refShorthandDefaultPos':refShorthandDefaultPos, u'startLoc':startLoc, u'startPos':startPos, u'isPattern':isPattern}, var) + var.registers([u'isGenerator', u'prop', u'start', u'paramCount', u'illegalBinding', u'refShorthandDefaultPos', u'startLoc', u'isAsync', u'startPos', u'isPattern']) + if ((var.get(u'isAsync') or var.get(u'isGenerator')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL'))): + if var.get(u'isPattern'): + var.get(u"this").callprop(u'unexpected') + var.get(u'prop').put(u'kind', Js(u'method')) + var.get(u'prop').put(u'method', var.get(u'true')) + var.get(u"this").callprop(u'parseMethod', var.get(u'prop'), var.get(u'isGenerator'), var.get(u'isAsync')) + return var.get(u"this").callprop(u'finishNode', var.get(u'prop'), Js(u'ObjectMethod')) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'colon')): + var.get(u'prop').put(u'value', (var.get(u"this").callprop(u'parseMaybeDefault', var.get(u"this").get(u'state').get(u'start'), var.get(u"this").get(u'state').get(u'startLoc')) if var.get(u'isPattern') else var.get(u"this").callprop(u'parseMaybeAssign', Js(False), var.get(u'refShorthandDefaultPos')))) + return var.get(u"this").callprop(u'finishNode', var.get(u'prop'), Js(u'ObjectProperty')) + def PyJs_LONG_3062_(var=var): + return (((((var.get(u'isPattern').neg() and var.get(u'prop').get(u'computed').neg()) and PyJsStrictEq(var.get(u'prop').get(u'key').get(u'type'),Js(u'Identifier'))) and (PyJsStrictEq(var.get(u'prop').get(u'key').get(u'name'),Js(u'get')) or PyJsStrictEq(var.get(u'prop').get(u'key').get(u'name'),Js(u'set')))) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'comma')).neg()) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceR')).neg()) + if PyJs_LONG_3062_(): + if (var.get(u'isGenerator') or var.get(u'isAsync')): + var.get(u"this").callprop(u'unexpected') + var.get(u'prop').put(u'kind', var.get(u'prop').get(u'key').get(u'name')) + var.get(u"this").callprop(u'parsePropertyName', var.get(u'prop')) + var.get(u"this").callprop(u'parseMethod', var.get(u'prop'), Js(False)) + var.put(u'paramCount', (Js(0.0) if PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'get')) else Js(1.0))) + if PyJsStrictNeq(var.get(u'prop').get(u'params').get(u'length'),var.get(u'paramCount')): + var.put(u'start', var.get(u'prop').get(u'start')) + if PyJsStrictEq(var.get(u'prop').get(u'kind'),Js(u'get')): + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'getter should have no params')) + else: + var.get(u"this").callprop(u'raise', var.get(u'start'), Js(u'setter should have exactly one param')) + return var.get(u"this").callprop(u'finishNode', var.get(u'prop'), Js(u'ObjectMethod')) + if (var.get(u'prop').get(u'computed').neg() and PyJsStrictEq(var.get(u'prop').get(u'key').get(u'type'),Js(u'Identifier'))): + if var.get(u'isPattern'): + var.put(u'illegalBinding', var.get(u"this").callprop(u'isKeyword', var.get(u'prop').get(u'key').get(u'name'))) + if (var.get(u'illegalBinding').neg() and var.get(u"this").get(u'state').get(u'strict')): + var.put(u'illegalBinding', (var.get(u'reservedWords').callprop(u'strictBind', var.get(u'prop').get(u'key').get(u'name')) or var.get(u'reservedWords').callprop(u'strict', var.get(u'prop').get(u'key').get(u'name')))) + if var.get(u'illegalBinding'): + var.get(u"this").callprop(u'raise', var.get(u'prop').get(u'key').get(u'start'), (Js(u'Binding ')+var.get(u'prop').get(u'key').get(u'name'))) + var.get(u'prop').put(u'value', var.get(u"this").callprop(u'parseMaybeDefault', var.get(u'startPos'), var.get(u'startLoc'), var.get(u'prop').get(u'key').callprop(u'__clone'))) + else: + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'eq')) and var.get(u'refShorthandDefaultPos')): + if var.get(u'refShorthandDefaultPos').get(u'start').neg(): + var.get(u'refShorthandDefaultPos').put(u'start', var.get(u"this").get(u'state').get(u'start')) + var.get(u'prop').put(u'value', var.get(u"this").callprop(u'parseMaybeDefault', var.get(u'startPos'), var.get(u'startLoc'), var.get(u'prop').get(u'key').callprop(u'__clone'))) + else: + var.get(u'prop').put(u'value', var.get(u'prop').get(u'key').callprop(u'__clone')) + var.get(u'prop').put(u'shorthand', var.get(u'true')) + return var.get(u"this").callprop(u'finishNode', var.get(u'prop'), Js(u'ObjectProperty')) + var.get(u"this").callprop(u'unexpected') + PyJs_anonymous_3061_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseObjPropValue', PyJs_anonymous_3061_) + @Js + def PyJs_anonymous_3063_(prop, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'prop':prop}, var) + var.registers([u'prop']) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'bracketL')): + var.get(u'prop').put(u'computed', var.get(u'true')) + var.get(u'prop').put(u'key', var.get(u"this").callprop(u'parseMaybeAssign')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'bracketR')) + return var.get(u'prop').get(u'key') + else: + var.get(u'prop').put(u'computed', Js(False)) + return var.get(u'prop').put(u'key', (var.get(u"this").callprop(u'parseExprAtom') if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'num')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'string'))) else var.get(u"this").callprop(u'parseIdentifier', var.get(u'true')))) + PyJs_anonymous_3063_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parsePropertyName', PyJs_anonymous_3063_) + @Js + def PyJs_anonymous_3064_(node, isAsync, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'isAsync':isAsync, u'arguments':arguments}, var) + var.registers([u'node', u'isAsync']) + var.get(u'node').put(u'id', var.get(u"null")) + var.get(u'node').put(u'generator', Js(False)) + var.get(u'node').put(u'expression', Js(False)) + var.get(u'node').put(u'async', var.get(u'isAsync').neg().neg()) + PyJs_anonymous_3064_._set_name(u'anonymous') + var.get(u'pp$3').put(u'initFunction', PyJs_anonymous_3064_) + @Js + def PyJs_anonymous_3065_(node, isGenerator, isAsync, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'isAsync':isAsync, u'isGenerator':isGenerator, u'arguments':arguments}, var) + var.registers([u'node', u'oldInMethod', u'isAsync', u'isGenerator']) + var.put(u'oldInMethod', var.get(u"this").get(u'state').get(u'inMethod')) + var.get(u"this").get(u'state').put(u'inMethod', (var.get(u'node').get(u'kind') or var.get(u'true'))) + var.get(u"this").callprop(u'initFunction', var.get(u'node'), var.get(u'isAsync')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenL')) + var.get(u'node').put(u'params', var.get(u"this").callprop(u'parseBindingList', var.get(u'types').get(u'parenR'))) + var.get(u'node').put(u'generator', var.get(u'isGenerator')) + var.get(u"this").callprop(u'parseFunctionBody', var.get(u'node')) + var.get(u"this").get(u'state').put(u'inMethod', var.get(u'oldInMethod')) + return var.get(u'node') + PyJs_anonymous_3065_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseMethod', PyJs_anonymous_3065_) + @Js + def PyJs_anonymous_3066_(node, params, isAsync, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'isAsync':isAsync, u'params':params, u'arguments':arguments}, var) + var.registers([u'node', u'isAsync', u'params']) + var.get(u"this").callprop(u'initFunction', var.get(u'node'), var.get(u'isAsync')) + var.get(u'node').put(u'params', var.get(u"this").callprop(u'toAssignableList', var.get(u'params'), var.get(u'true'), Js(u'arrow function parameters'))) + var.get(u"this").callprop(u'parseFunctionBody', var.get(u'node'), var.get(u'true')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ArrowFunctionExpression')) + PyJs_anonymous_3066_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseArrowExpression', PyJs_anonymous_3066_) + @Js + def PyJs_anonymous_3067_(node, allowExpression, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'allowExpression':allowExpression, u'arguments':arguments}, var) + var.registers([u'node', u'_isArray3', u'_isArray2', u'directive', u'oldLabels', u'checkLVal', u'oldInAsync', u'allowExpression', u'isStrict', u'_i3', u'_i2', u'param', u'_ref2', u'oldInFunc', u'isExpression', u'oldStrict', u'nameHash', u'oldInGen', u'_ref3', u'_iterator3', u'_iterator2']) + var.put(u'isExpression', (var.get(u'allowExpression') and var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceL')).neg())) + var.put(u'oldInAsync', var.get(u"this").get(u'state').get(u'inAsync')) + var.get(u"this").get(u'state').put(u'inAsync', var.get(u'node').get(u'async')) + if var.get(u'isExpression'): + var.get(u'node').put(u'body', var.get(u"this").callprop(u'parseMaybeAssign')) + var.get(u'node').put(u'expression', var.get(u'true')) + else: + var.put(u'oldInFunc', var.get(u"this").get(u'state').get(u'inFunction')) + var.put(u'oldInGen', var.get(u"this").get(u'state').get(u'inGenerator')) + var.put(u'oldLabels', var.get(u"this").get(u'state').get(u'labels')) + var.get(u"this").get(u'state').put(u'inFunction', var.get(u'true')) + var.get(u"this").get(u'state').put(u'inGenerator', var.get(u'node').get(u'generator')) + var.get(u"this").get(u'state').put(u'labels', Js([])) + var.get(u'node').put(u'body', var.get(u"this").callprop(u'parseBlock', var.get(u'true'))) + var.get(u'node').put(u'expression', Js(False)) + var.get(u"this").get(u'state').put(u'inFunction', var.get(u'oldInFunc')) + var.get(u"this").get(u'state').put(u'inGenerator', var.get(u'oldInGen')) + var.get(u"this").get(u'state').put(u'labels', var.get(u'oldLabels')) + var.get(u"this").get(u'state').put(u'inAsync', var.get(u'oldInAsync')) + var.put(u'checkLVal', var.get(u"this").get(u'state').get(u'strict')) + var.put(u'isStrict', Js(False)) + if var.get(u'allowExpression'): + var.put(u'checkLVal', var.get(u'true')) + if (var.get(u'isExpression').neg() and var.get(u'node').get(u'body').get(u'directives').get(u'length')): + #for JS loop + var.put(u'_iterator2', var.get(u'node').get(u'body').get(u'directives')) + var.put(u'_isArray2', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator2'))) + var.put(u'_i2', Js(0.0)) + var.put(u'_iterator2', (var.get(u'_iterator2') if var.get(u'_isArray2') else var.get(u'_iterator2').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray2'): + if (var.get(u'_i2')>=var.get(u'_iterator2').get(u'length')): + break + var.put(u'_ref2', var.get(u'_iterator2').get((var.put(u'_i2',Js(var.get(u'_i2').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i2', var.get(u'_iterator2').callprop(u'next')) + if var.get(u'_i2').get(u'done'): + break + var.put(u'_ref2', var.get(u'_i2').get(u'value')) + var.put(u'directive', var.get(u'_ref2')) + if PyJsStrictEq(var.get(u'directive').get(u'value').get(u'value'),Js(u'use strict')): + var.put(u'isStrict', var.get(u'true')) + var.put(u'checkLVal', var.get(u'true')) + break + + if (((var.get(u'isStrict') and var.get(u'node').get(u'id')) and PyJsStrictEq(var.get(u'node').get(u'id').get(u'type'),Js(u'Identifier'))) and PyJsStrictEq(var.get(u'node').get(u'id').get(u'name'),Js(u'yield'))): + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'id').get(u'start'), Js(u'Binding yield in strict mode')) + if var.get(u'checkLVal'): + var.put(u'nameHash', var.get(u'Object').callprop(u'create', var.get(u"null"))) + var.put(u'oldStrict', var.get(u"this").get(u'state').get(u'strict')) + if var.get(u'isStrict'): + var.get(u"this").get(u'state').put(u'strict', var.get(u'true')) + if var.get(u'node').get(u'id'): + var.get(u"this").callprop(u'checkLVal', var.get(u'node').get(u'id'), var.get(u'true'), var.get(u'undefined'), Js(u'function name')) + #for JS loop + var.put(u'_iterator3', var.get(u'node').get(u'params')) + var.put(u'_isArray3', var.get(u'Array').callprop(u'isArray', var.get(u'_iterator3'))) + var.put(u'_i3', Js(0.0)) + var.put(u'_iterator3', (var.get(u'_iterator3') if var.get(u'_isArray3') else var.get(u'_iterator3').callprop(var.get(u'Symbol').get(u'iterator')))) + while 1: + pass + if var.get(u'_isArray3'): + if (var.get(u'_i3')>=var.get(u'_iterator3').get(u'length')): + break + var.put(u'_ref3', var.get(u'_iterator3').get((var.put(u'_i3',Js(var.get(u'_i3').to_number())+Js(1))-Js(1)))) + else: + var.put(u'_i3', var.get(u'_iterator3').callprop(u'next')) + if var.get(u'_i3').get(u'done'): + break + var.put(u'_ref3', var.get(u'_i3').get(u'value')) + var.put(u'param', var.get(u'_ref3')) + if (var.get(u'isStrict') and PyJsStrictNeq(var.get(u'param').get(u'type'),Js(u'Identifier'))): + var.get(u"this").callprop(u'raise', var.get(u'param').get(u'start'), Js(u'Non-simple parameter in strict mode')) + var.get(u"this").callprop(u'checkLVal', var.get(u'param'), var.get(u'true'), var.get(u'nameHash'), Js(u'function parameter list')) + + var.get(u"this").get(u'state').put(u'strict', var.get(u'oldStrict')) + PyJs_anonymous_3067_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseFunctionBody', PyJs_anonymous_3067_) + @Js + def PyJs_anonymous_3068_(close, allowEmpty, refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'this':this, u'close':close, u'allowEmpty':allowEmpty, u'refShorthandDefaultPos':refShorthandDefaultPos, u'arguments':arguments}, var) + var.registers([u'elts', u'close', u'allowEmpty', u'refShorthandDefaultPos', u'first']) + var.put(u'elts', Js([])) + var.put(u'first', var.get(u'true')) + while var.get(u"this").callprop(u'eat', var.get(u'close')).neg(): + if var.get(u'first'): + var.put(u'first', Js(False)) + else: + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + if var.get(u"this").callprop(u'eat', var.get(u'close')): + break + var.get(u'elts').callprop(u'push', var.get(u"this").callprop(u'parseExprListItem', var.get(u'allowEmpty'), var.get(u'refShorthandDefaultPos'))) + return var.get(u'elts') + PyJs_anonymous_3068_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseExprList', PyJs_anonymous_3068_) + @Js + def PyJs_anonymous_3069_(allowEmpty, refShorthandDefaultPos, this, arguments, var=var): + var = Scope({u'this':this, u'allowEmpty':allowEmpty, u'refShorthandDefaultPos':refShorthandDefaultPos, u'arguments':arguments}, var) + var.registers([u'allowEmpty', u'refShorthandDefaultPos', u'elt']) + var.put(u'elt', PyJsComma(Js(0.0), Js(None))) + if (var.get(u'allowEmpty') and var.get(u"this").callprop(u'match', var.get(u'types').get(u'comma'))): + var.put(u'elt', var.get(u"null")) + else: + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'ellipsis')): + var.put(u'elt', var.get(u"this").callprop(u'parseSpread', var.get(u'refShorthandDefaultPos'))) + else: + var.put(u'elt', var.get(u"this").callprop(u'parseMaybeAssign', Js(False), var.get(u'refShorthandDefaultPos'), var.get(u"this").get(u'parseParenItem'))) + return var.get(u'elt') + PyJs_anonymous_3069_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseExprListItem', PyJs_anonymous_3069_) + @Js + def PyJs_anonymous_3070_(liberal, this, arguments, var=var): + var = Scope({u'this':this, u'liberal':liberal, u'arguments':arguments}, var) + var.registers([u'node', u'liberal']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')): + if ((var.get(u'liberal').neg() and var.get(u"this").get(u'state').get(u'strict')) and var.get(u'reservedWords').callprop(u'strict', var.get(u"this").get(u'state').get(u'value'))): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), ((Js(u"The keyword '")+var.get(u"this").get(u'state').get(u'value'))+Js(u"' is reserved"))) + var.get(u'node').put(u'name', var.get(u"this").get(u'state').get(u'value')) + else: + if (var.get(u'liberal') and var.get(u"this").get(u'state').get(u'type').get(u'keyword')): + var.get(u'node').put(u'name', var.get(u"this").get(u'state').get(u'type').get(u'keyword')) + else: + var.get(u"this").callprop(u'unexpected') + if ((var.get(u'liberal').neg() and PyJsStrictEq(var.get(u'node').get(u'name'),Js(u'await'))) and var.get(u"this").get(u'state').get(u'inAsync')): + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'start'), Js(u'invalid use of await inside of an async function')) + var.get(u'node').get(u'loc').put(u'identifierName', var.get(u'node').get(u'name')) + var.get(u"this").callprop(u'next') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'Identifier')) + PyJs_anonymous_3070_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseIdentifier', PyJs_anonymous_3070_) + @Js + def PyJs_anonymous_3071_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").get(u'state').get(u'inAsync').neg(): + var.get(u"this").callprop(u'unexpected') + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'star')): + var.get(u"this").callprop(u'raise', var.get(u'node').get(u'start'), Js(u'await* has been removed from the async functions proposal. Use Promise.all() instead.')) + var.get(u'node').put(u'argument', var.get(u"this").callprop(u'parseMaybeUnary')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'AwaitExpression')) + PyJs_anonymous_3071_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseAwait', PyJs_anonymous_3071_) + @Js + def PyJs_anonymous_3072_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'next') + if ((var.get(u"this").callprop(u'match', var.get(u'types').get(u'semi')) or var.get(u"this").callprop(u'canInsertSemicolon')) or (var.get(u"this").callprop(u'match', var.get(u'types').get(u'star')).neg() and var.get(u"this").get(u'state').get(u'type').get(u'startsExpr').neg())): + var.get(u'node').put(u'delegate', Js(False)) + var.get(u'node').put(u'argument', var.get(u"null")) + else: + var.get(u'node').put(u'delegate', var.get(u"this").callprop(u'eat', var.get(u'types').get(u'star'))) + var.get(u'node').put(u'argument', var.get(u"this").callprop(u'parseMaybeAssign')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'YieldExpression')) + PyJs_anonymous_3072_._set_name(u'anonymous') + var.get(u'pp$3').put(u'parseYield', PyJs_anonymous_3072_) + pass + var.put(u'pp$4', var.get(u'Parser').get(u'prototype')) + var.put(u'commentKeys', Js([Js(u'leadingComments'), Js(u'trailingComments'), Js(u'innerComments')])) + @Js + def PyJs_anonymous_3073_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'Node']) + @Js + def PyJsHoisted_Node_(pos, loc, filename, this, arguments, var=var): + var = Scope({u'this':this, u'loc':loc, u'pos':pos, u'arguments':arguments, u'filename':filename}, var) + var.registers([u'loc', u'pos', u'filename']) + var.get(u'_classCallCheck$6')(var.get(u"this"), var.get(u'Node')) + var.get(u"this").put(u'type', Js(u'')) + var.get(u"this").put(u'start', var.get(u'pos')) + var.get(u"this").put(u'end', Js(0.0)) + var.get(u"this").put(u'loc', var.get(u'SourceLocation').create(var.get(u'loc'))) + if var.get(u'filename'): + var.get(u"this").get(u'loc').put(u'filename', var.get(u'filename')) + PyJsHoisted_Node_.func_name = u'Node' + var.put(u'Node', PyJsHoisted_Node_) + pass + @Js + def PyJs___clone_3074_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'__clone':PyJs___clone_3074_}, var) + var.registers([u'node2', u'key']) + var.put(u'node2', var.get(u'Node').create()) + for PyJsTemp in var.get(u"this"): + var.put(u'key', PyJsTemp) + if (var.get(u'commentKeys').callprop(u'indexOf', var.get(u'key'))Js(0.0))): + return var.get('undefined') + var.put(u'stack', var.get(u"this").get(u'state').get(u'commentStack')) + var.put(u'lastChild', PyJsComma(Js(0.0), Js(None))) + var.put(u'trailingComments', PyJsComma(Js(0.0), Js(None))) + var.put(u'i', PyJsComma(Js(0.0), Js(None))) + var.put(u'j', PyJsComma(Js(0.0), Js(None))) + if (var.get(u"this").get(u'state').get(u'trailingComments').get(u'length')>Js(0.0)): + if (var.get(u"this").get(u'state').get(u'trailingComments').get(u'0').get(u'start')>=var.get(u'node').get(u'end')): + var.put(u'trailingComments', var.get(u"this").get(u'state').get(u'trailingComments')) + var.get(u"this").get(u'state').put(u'trailingComments', Js([])) + else: + var.get(u"this").get(u'state').get(u'trailingComments').put(u'length', Js(0.0)) + else: + var.put(u'lastInStack', var.get(u'last')(var.get(u'stack'))) + if (((var.get(u'stack').get(u'length')>Js(0.0)) and var.get(u'lastInStack').get(u'trailingComments')) and (var.get(u'lastInStack').get(u'trailingComments').get(u'0').get(u'start')>=var.get(u'node').get(u'end'))): + var.put(u'trailingComments', var.get(u'lastInStack').get(u'trailingComments')) + var.get(u'lastInStack').put(u'trailingComments', var.get(u"null")) + while ((var.get(u'stack').get(u'length')>Js(0.0)) and (var.get(u'last')(var.get(u'stack')).get(u'start')>=var.get(u'node').get(u'start'))): + var.put(u'lastChild', var.get(u'stack').callprop(u'pop')) + if var.get(u'lastChild'): + if var.get(u'lastChild').get(u'leadingComments'): + if (PyJsStrictNeq(var.get(u'lastChild'),var.get(u'node')) and (var.get(u'last')(var.get(u'lastChild').get(u'leadingComments')).get(u'end')<=var.get(u'node').get(u'start'))): + var.get(u'node').put(u'leadingComments', var.get(u'lastChild').get(u'leadingComments')) + var.get(u'lastChild').put(u'leadingComments', var.get(u"null")) + else: + #for JS loop + var.put(u'i', (var.get(u'lastChild').get(u'leadingComments').get(u'length')-Js(2.0))) + while (var.get(u'i')>=Js(0.0)): + try: + if (var.get(u'lastChild').get(u'leadingComments').get(var.get(u'i')).get(u'end')<=var.get(u'node').get(u'start')): + var.get(u'node').put(u'leadingComments', var.get(u'lastChild').get(u'leadingComments').callprop(u'splice', Js(0.0), (var.get(u'i')+Js(1.0)))) + break + finally: + var.put(u'i',Js(var.get(u'i').to_number())-Js(1)) + else: + if (var.get(u"this").get(u'state').get(u'leadingComments').get(u'length')>Js(0.0)): + if (var.get(u'last')(var.get(u"this").get(u'state').get(u'leadingComments')).get(u'end')<=var.get(u'node').get(u'start')): + if var.get(u"this").get(u'state').get(u'commentPreviousNode'): + #for JS loop + var.put(u'j', Js(0.0)) + while (var.get(u'j')Js(0.0)): + var.get(u'node').put(u'leadingComments', var.get(u"this").get(u'state').get(u'leadingComments')) + var.get(u"this").get(u'state').put(u'leadingComments', Js([])) + else: + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')var.get(u'node').get(u'start')): + break + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + var.get(u'node').put(u'leadingComments', var.get(u"this").get(u'state').get(u'leadingComments').callprop(u'slice', Js(0.0), var.get(u'i'))) + if PyJsStrictEq(var.get(u'node').get(u'leadingComments').get(u'length'),Js(0.0)): + var.get(u'node').put(u'leadingComments', var.get(u"null")) + var.put(u'trailingComments', var.get(u"this").get(u'state').get(u'leadingComments').callprop(u'slice', var.get(u'i'))) + if PyJsStrictEq(var.get(u'trailingComments').get(u'length'),Js(0.0)): + var.put(u'trailingComments', var.get(u"null")) + var.get(u"this").get(u'state').put(u'commentPreviousNode', var.get(u'node')) + if var.get(u'trailingComments'): + if ((var.get(u'trailingComments').get(u'length') and (var.get(u'trailingComments').get(u'0').get(u'start')>=var.get(u'node').get(u'start'))) and (var.get(u'last')(var.get(u'trailingComments')).get(u'end')<=var.get(u'node').get(u'end'))): + var.get(u'node').put(u'innerComments', var.get(u'trailingComments')) + else: + var.get(u'node').put(u'trailingComments', var.get(u'trailingComments')) + var.get(u'stack').callprop(u'push', var.get(u'node')) + PyJs_anonymous_3081_._set_name(u'anonymous') + var.get(u'pp$6').put(u'processComment', PyJs_anonymous_3081_) + var.put(u'pp$7', var.get(u'Parser').get(u'prototype')) + @Js + def PyJs_anonymous_3082_(tok, allowLeadingPipeOrAnd, this, arguments, var=var): + var = Scope({u'this':this, u'tok':tok, u'arguments':arguments, u'allowLeadingPipeOrAnd':allowLeadingPipeOrAnd}, var) + var.registers([u'tok', u'oldInType', u'type', u'allowLeadingPipeOrAnd']) + var.put(u'oldInType', var.get(u"this").get(u'state').get(u'inType')) + var.get(u"this").get(u'state').put(u'inType', var.get(u'true')) + var.get(u"this").callprop(u'expect', (var.get(u'tok') or var.get(u'types').get(u'colon'))) + if var.get(u'allowLeadingPipeOrAnd'): + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'bitwiseAND')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'bitwiseOR'))): + var.get(u"this").callprop(u'next') + var.put(u'type', var.get(u"this").callprop(u'flowParseType')) + var.get(u"this").get(u'state').put(u'inType', var.get(u'oldInType')) + return var.get(u'type') + PyJs_anonymous_3082_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseTypeInitialiser', PyJs_anonymous_3082_) + @Js + def PyJs_anonymous_3083_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'next') + var.get(u"this").callprop(u'flowParseInterfaceish', var.get(u'node'), var.get(u'true')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'DeclareClass')) + PyJs_anonymous_3083_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseDeclareClass', PyJs_anonymous_3083_) + @Js + def PyJs_anonymous_3084_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'typeContainer', u'tmp', u'typeNode', u'id', u'node']) + var.get(u"this").callprop(u'next') + var.put(u'id', var.get(u'node').put(u'id', var.get(u"this").callprop(u'parseIdentifier'))) + var.put(u'typeNode', var.get(u"this").callprop(u'startNode')) + var.put(u'typeContainer', var.get(u"this").callprop(u'startNode')) + if var.get(u"this").callprop(u'isRelational', Js(u'<')): + var.get(u'typeNode').put(u'typeParameters', var.get(u"this").callprop(u'flowParseTypeParameterDeclaration')) + else: + var.get(u'typeNode').put(u'typeParameters', var.get(u"null")) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenL')) + var.put(u'tmp', var.get(u"this").callprop(u'flowParseFunctionTypeParams')) + var.get(u'typeNode').put(u'params', var.get(u'tmp').get(u'params')) + var.get(u'typeNode').put(u'rest', var.get(u'tmp').get(u'rest')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenR')) + var.get(u'typeNode').put(u'returnType', var.get(u"this").callprop(u'flowParseTypeInitialiser')) + var.get(u'typeContainer').put(u'typeAnnotation', var.get(u"this").callprop(u'finishNode', var.get(u'typeNode'), Js(u'FunctionTypeAnnotation'))) + var.get(u'id').put(u'typeAnnotation', var.get(u"this").callprop(u'finishNode', var.get(u'typeContainer'), Js(u'TypeAnnotation'))) + var.get(u"this").callprop(u'finishNode', var.get(u'id'), var.get(u'id').get(u'type')) + var.get(u"this").callprop(u'semicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'DeclareFunction')) + PyJs_anonymous_3084_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseDeclareFunction', PyJs_anonymous_3084_) + @Js + def PyJs_anonymous_3085_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'_class')): + return var.get(u"this").callprop(u'flowParseDeclareClass', var.get(u'node')) + else: + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'_function')): + return var.get(u"this").callprop(u'flowParseDeclareFunction', var.get(u'node')) + else: + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'_var')): + return var.get(u"this").callprop(u'flowParseDeclareVariable', var.get(u'node')) + else: + if var.get(u"this").callprop(u'isContextual', Js(u'module')): + if PyJsStrictEq(var.get(u"this").callprop(u'lookahead').get(u'type'),var.get(u'types').get(u'dot')): + return var.get(u"this").callprop(u'flowParseDeclareModuleExports', var.get(u'node')) + else: + return var.get(u"this").callprop(u'flowParseDeclareModule', var.get(u'node')) + else: + if var.get(u"this").callprop(u'isContextual', Js(u'type')): + return var.get(u"this").callprop(u'flowParseDeclareTypeAlias', var.get(u'node')) + else: + if var.get(u"this").callprop(u'isContextual', Js(u'interface')): + return var.get(u"this").callprop(u'flowParseDeclareInterface', var.get(u'node')) + else: + var.get(u"this").callprop(u'unexpected') + PyJs_anonymous_3085_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseDeclare', PyJs_anonymous_3085_) + @Js + def PyJs_anonymous_3086_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'next') + var.get(u'node').put(u'id', var.get(u"this").callprop(u'flowParseTypeAnnotatableIdentifier')) + var.get(u"this").callprop(u'semicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'DeclareVariable')) + PyJs_anonymous_3086_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseDeclareVariable', PyJs_anonymous_3086_) + @Js + def PyJs_anonymous_3087_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'bodyNode', u'body', u'node2', u'node']) + var.get(u"this").callprop(u'next') + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'string')): + var.get(u'node').put(u'id', var.get(u"this").callprop(u'parseExprAtom')) + else: + var.get(u'node').put(u'id', var.get(u"this").callprop(u'parseIdentifier')) + var.put(u'bodyNode', var.get(u'node').put(u'body', var.get(u"this").callprop(u'startNode'))) + var.put(u'body', var.get(u'bodyNode').put(u'body', Js([]))) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceL')) + while var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceR')).neg(): + var.put(u'node2', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'expectContextual', Js(u'declare'), Js(u'Unexpected token. Only declares are allowed inside declare module')) + var.get(u'body').callprop(u'push', var.get(u"this").callprop(u'flowParseDeclare', var.get(u'node2'))) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceR')) + var.get(u"this").callprop(u'finishNode', var.get(u'bodyNode'), Js(u'BlockStatement')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'DeclareModule')) + PyJs_anonymous_3087_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseDeclareModule', PyJs_anonymous_3087_) + @Js + def PyJs_anonymous_3088_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'expectContextual', Js(u'module')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'dot')) + var.get(u"this").callprop(u'expectContextual', Js(u'exports')) + var.get(u'node').put(u'typeAnnotation', var.get(u"this").callprop(u'flowParseTypeAnnotation')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'DeclareModuleExports')) + PyJs_anonymous_3088_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseDeclareModuleExports', PyJs_anonymous_3088_) + @Js + def PyJs_anonymous_3089_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'next') + var.get(u"this").callprop(u'flowParseTypeAlias', var.get(u'node')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'DeclareTypeAlias')) + PyJs_anonymous_3089_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseDeclareTypeAlias', PyJs_anonymous_3089_) + @Js + def PyJs_anonymous_3090_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'next') + var.get(u"this").callprop(u'flowParseInterfaceish', var.get(u'node')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'DeclareInterface')) + PyJs_anonymous_3090_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseDeclareInterface', PyJs_anonymous_3090_) + @Js + def PyJs_anonymous_3091_(node, allowStatic, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments, u'allowStatic':allowStatic}, var) + var.registers([u'node', u'allowStatic']) + var.get(u'node').put(u'id', var.get(u"this").callprop(u'parseIdentifier')) + if var.get(u"this").callprop(u'isRelational', Js(u'<')): + var.get(u'node').put(u'typeParameters', var.get(u"this").callprop(u'flowParseTypeParameterDeclaration')) + else: + var.get(u'node').put(u'typeParameters', var.get(u"null")) + var.get(u'node').put(u'extends', Js([])) + var.get(u'node').put(u'mixins', Js([])) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'_extends')): + while 1: + var.get(u'node').get(u'extends').callprop(u'push', var.get(u"this").callprop(u'flowParseInterfaceExtends')) + if not var.get(u"this").callprop(u'eat', var.get(u'types').get(u'comma')): + break + if var.get(u"this").callprop(u'isContextual', Js(u'mixins')): + var.get(u"this").callprop(u'next') + while 1: + var.get(u'node').get(u'mixins').callprop(u'push', var.get(u"this").callprop(u'flowParseInterfaceExtends')) + if not var.get(u"this").callprop(u'eat', var.get(u'types').get(u'comma')): + break + var.get(u'node').put(u'body', var.get(u"this").callprop(u'flowParseObjectType', var.get(u'allowStatic'))) + PyJs_anonymous_3091_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseInterfaceish', PyJs_anonymous_3091_) + @Js + def PyJs_anonymous_3092_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u'node').put(u'id', var.get(u"this").callprop(u'flowParseQualifiedTypeIdentifier')) + if var.get(u"this").callprop(u'isRelational', Js(u'<')): + var.get(u'node').put(u'typeParameters', var.get(u"this").callprop(u'flowParseTypeParameterInstantiation')) + else: + var.get(u'node').put(u'typeParameters', var.get(u"null")) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'InterfaceExtends')) + PyJs_anonymous_3092_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseInterfaceExtends', PyJs_anonymous_3092_) + @Js + def PyJs_anonymous_3093_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u"this").callprop(u'flowParseInterfaceish', var.get(u'node'), Js(False)) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'InterfaceDeclaration')) + PyJs_anonymous_3093_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseInterface', PyJs_anonymous_3093_) + @Js + def PyJs_anonymous_3094_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u'node').put(u'id', var.get(u"this").callprop(u'parseIdentifier')) + if var.get(u"this").callprop(u'isRelational', Js(u'<')): + var.get(u'node').put(u'typeParameters', var.get(u"this").callprop(u'flowParseTypeParameterDeclaration')) + else: + var.get(u'node').put(u'typeParameters', var.get(u"null")) + var.get(u'node').put(u'right', var.get(u"this").callprop(u'flowParseTypeInitialiser', var.get(u'types').get(u'eq'), var.get(u'true'))) + var.get(u"this").callprop(u'semicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'TypeAlias')) + PyJs_anonymous_3094_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseTypeAlias', PyJs_anonymous_3094_) + @Js + def PyJs_anonymous_3095_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'variance', u'ident']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.put(u'variance', var.get(u"this").callprop(u'flowParseVariance')) + var.put(u'ident', var.get(u"this").callprop(u'flowParseTypeAnnotatableIdentifier')) + var.get(u'node').put(u'name', var.get(u'ident').get(u'name')) + var.get(u'node').put(u'variance', var.get(u'variance')) + var.get(u'node').put(u'bound', var.get(u'ident').get(u'typeAnnotation')) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'eq')): + var.get(u"this").callprop(u'eat', var.get(u'types').get(u'eq')) + var.get(u'node').put(u'default', var.get(u"this").callprop(u'flowParseType')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'TypeParameter')) + PyJs_anonymous_3095_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseTypeParameter', PyJs_anonymous_3095_) + @Js + def PyJs_anonymous_3096_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'oldInType']) + var.put(u'oldInType', var.get(u"this").get(u'state').get(u'inType')) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u'node').put(u'params', Js([])) + var.get(u"this").get(u'state').put(u'inType', var.get(u'true')) + if (var.get(u"this").callprop(u'isRelational', Js(u'<')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'jsxTagStart'))): + var.get(u"this").callprop(u'next') + else: + var.get(u"this").callprop(u'unexpected') + while 1: + var.get(u'node').get(u'params').callprop(u'push', var.get(u"this").callprop(u'flowParseTypeParameter')) + if var.get(u"this").callprop(u'isRelational', Js(u'>')).neg(): + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + if not var.get(u"this").callprop(u'isRelational', Js(u'>')).neg(): + break + var.get(u"this").callprop(u'expectRelational', Js(u'>')) + var.get(u"this").get(u'state').put(u'inType', var.get(u'oldInType')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'TypeParameterDeclaration')) + PyJs_anonymous_3096_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseTypeParameterDeclaration', PyJs_anonymous_3096_) + @Js + def PyJs_anonymous_3097_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'oldInType']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.put(u'oldInType', var.get(u"this").get(u'state').get(u'inType')) + var.get(u'node').put(u'params', Js([])) + var.get(u"this").get(u'state').put(u'inType', var.get(u'true')) + var.get(u"this").callprop(u'expectRelational', Js(u'<')) + while var.get(u"this").callprop(u'isRelational', Js(u'>')).neg(): + var.get(u'node').get(u'params').callprop(u'push', var.get(u"this").callprop(u'flowParseType')) + if var.get(u"this").callprop(u'isRelational', Js(u'>')).neg(): + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + var.get(u"this").callprop(u'expectRelational', Js(u'>')) + var.get(u"this").get(u'state').put(u'inType', var.get(u'oldInType')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'TypeParameterInstantiation')) + PyJs_anonymous_3097_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseTypeParameterInstantiation', PyJs_anonymous_3097_) + @Js + def PyJs_anonymous_3098_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return (var.get(u"this").callprop(u'parseExprAtom') if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'num')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'string'))) else var.get(u"this").callprop(u'parseIdentifier', var.get(u'true'))) + PyJs_anonymous_3098_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseObjectPropertyKey', PyJs_anonymous_3098_) + @Js + def PyJs_anonymous_3099_(node, isStatic, variance, this, arguments, var=var): + var = Scope({u'node':node, u'variance':variance, u'isStatic':isStatic, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'variance', u'isStatic']) + var.get(u'node').put(u'static', var.get(u'isStatic')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'bracketL')) + var.get(u'node').put(u'id', var.get(u"this").callprop(u'flowParseObjectPropertyKey')) + var.get(u'node').put(u'key', var.get(u"this").callprop(u'flowParseTypeInitialiser')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'bracketR')) + var.get(u'node').put(u'value', var.get(u"this").callprop(u'flowParseTypeInitialiser')) + var.get(u'node').put(u'variance', var.get(u'variance')) + var.get(u"this").callprop(u'flowObjectTypeSemicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ObjectTypeIndexer')) + PyJs_anonymous_3099_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseObjectTypeIndexer', PyJs_anonymous_3099_) + @Js + def PyJs_anonymous_3100_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u'node').put(u'params', Js([])) + var.get(u'node').put(u'rest', var.get(u"null")) + var.get(u'node').put(u'typeParameters', var.get(u"null")) + if var.get(u"this").callprop(u'isRelational', Js(u'<')): + var.get(u'node').put(u'typeParameters', var.get(u"this").callprop(u'flowParseTypeParameterDeclaration')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenL')) + while var.get(u"this").callprop(u'match', var.get(u'types').get(u'name')): + var.get(u'node').get(u'params').callprop(u'push', var.get(u"this").callprop(u'flowParseFunctionTypeParam')) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenR')).neg(): + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'comma')) + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'ellipsis')): + var.get(u'node').put(u'rest', var.get(u"this").callprop(u'flowParseFunctionTypeParam')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'parenR')) + var.get(u'node').put(u'returnType', var.get(u"this").callprop(u'flowParseTypeInitialiser')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'FunctionTypeAnnotation')) + PyJs_anonymous_3100_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseObjectTypeMethodish', PyJs_anonymous_3100_) + @Js + def PyJs_anonymous_3101_(startPos, startLoc, isStatic, key, this, arguments, var=var): + var = Scope({u'isStatic':isStatic, u'startLoc':startLoc, u'key':key, u'this':this, u'startPos':startPos, u'arguments':arguments}, var) + var.registers([u'node', u'key', u'startPos', u'isStatic', u'startLoc']) + var.put(u'node', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'node').put(u'value', var.get(u"this").callprop(u'flowParseObjectTypeMethodish', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc')))) + var.get(u'node').put(u'static', var.get(u'isStatic')) + var.get(u'node').put(u'key', var.get(u'key')) + var.get(u'node').put(u'optional', Js(False)) + var.get(u"this").callprop(u'flowObjectTypeSemicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ObjectTypeProperty')) + PyJs_anonymous_3101_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseObjectTypeMethod', PyJs_anonymous_3101_) + @Js + def PyJs_anonymous_3102_(node, isStatic, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'isStatic':isStatic, u'arguments':arguments}, var) + var.registers([u'node', u'valueNode', u'isStatic']) + var.put(u'valueNode', var.get(u"this").callprop(u'startNode')) + var.get(u'node').put(u'static', var.get(u'isStatic')) + var.get(u'node').put(u'value', var.get(u"this").callprop(u'flowParseObjectTypeMethodish', var.get(u'valueNode'))) + var.get(u"this").callprop(u'flowObjectTypeSemicolon') + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ObjectTypeCallProperty')) + PyJs_anonymous_3102_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseObjectTypeCallProperty', PyJs_anonymous_3102_) + @Js + def PyJs_anonymous_3103_(allowStatic, allowExact, this, arguments, var=var): + var = Scope({u'this':this, u'allowExact':allowExact, u'arguments':arguments, u'allowStatic':allowStatic}, var) + var.registers([u'node', u'isStatic', u'nodeStart', u'variancePos', u'propertyKey', u'endDelim', u'oldInType', u'optional', u'startLoc', u'variance', u'startPos', u'exact', u'allowExact', u'allowStatic', u'out']) + var.put(u'oldInType', var.get(u"this").get(u'state').get(u'inType')) + var.get(u"this").get(u'state').put(u'inType', var.get(u'true')) + var.put(u'nodeStart', var.get(u"this").callprop(u'startNode')) + var.put(u'node', PyJsComma(Js(0.0), Js(None))) + var.put(u'propertyKey', PyJsComma(Js(0.0), Js(None))) + var.put(u'isStatic', Js(False)) + var.get(u'nodeStart').put(u'callProperties', Js([])) + var.get(u'nodeStart').put(u'properties', Js([])) + var.get(u'nodeStart').put(u'indexers', Js([])) + var.put(u'endDelim', PyJsComma(Js(0.0), Js(None))) + var.put(u'exact', PyJsComma(Js(0.0), Js(None))) + if (var.get(u'allowExact') and var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceBarL'))): + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceBarL')) + var.put(u'endDelim', var.get(u'types').get(u'braceBarR')) + var.put(u'exact', var.get(u'true')) + else: + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'braceL')) + var.put(u'endDelim', var.get(u'types').get(u'braceR')) + var.put(u'exact', Js(False)) + var.get(u'nodeStart').put(u'exact', var.get(u'exact')) + while var.get(u"this").callprop(u'match', var.get(u'endDelim')).neg(): + var.put(u'optional', Js(False)) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + if ((var.get(u'allowStatic') and var.get(u"this").callprop(u'isContextual', Js(u'static'))) and PyJsStrictNeq(var.get(u"this").callprop(u'lookahead').get(u'type'),var.get(u'types').get(u'colon'))): + var.get(u"this").callprop(u'next') + var.put(u'isStatic', var.get(u'true')) + var.put(u'variancePos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'variance', var.get(u"this").callprop(u'flowParseVariance')) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'bracketL')): + var.get(u'nodeStart').get(u'indexers').callprop(u'push', var.get(u"this").callprop(u'flowParseObjectTypeIndexer', var.get(u'node'), var.get(u'isStatic'), var.get(u'variance'))) + else: + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL')) or var.get(u"this").callprop(u'isRelational', Js(u'<'))): + if var.get(u'variance'): + var.get(u"this").callprop(u'unexpected', var.get(u'variancePos')) + var.get(u'nodeStart').get(u'callProperties').callprop(u'push', var.get(u"this").callprop(u'flowParseObjectTypeCallProperty', var.get(u'node'), var.get(u'allowStatic'))) + else: + var.put(u'propertyKey', var.get(u"this").callprop(u'flowParseObjectPropertyKey')) + if (var.get(u"this").callprop(u'isRelational', Js(u'<')) or var.get(u"this").callprop(u'match', var.get(u'types').get(u'parenL'))): + if var.get(u'variance'): + var.get(u"this").callprop(u'unexpected', var.get(u'variancePos')) + var.get(u'nodeStart').get(u'properties').callprop(u'push', var.get(u"this").callprop(u'flowParseObjectTypeMethod', var.get(u'startPos'), var.get(u'startLoc'), var.get(u'isStatic'), var.get(u'propertyKey'))) + else: + if var.get(u"this").callprop(u'eat', var.get(u'types').get(u'question')): + var.put(u'optional', var.get(u'true')) + var.get(u'node').put(u'key', var.get(u'propertyKey')) + var.get(u'node').put(u'value', var.get(u"this").callprop(u'flowParseTypeInitialiser')) + var.get(u'node').put(u'optional', var.get(u'optional')) + var.get(u'node').put(u'static', var.get(u'isStatic')) + var.get(u'node').put(u'variance', var.get(u'variance')) + var.get(u"this").callprop(u'flowObjectTypeSemicolon') + var.get(u'nodeStart').get(u'properties').callprop(u'push', var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'ObjectTypeProperty'))) + var.put(u'isStatic', Js(False)) + var.get(u"this").callprop(u'expect', var.get(u'endDelim')) + var.put(u'out', var.get(u"this").callprop(u'finishNode', var.get(u'nodeStart'), Js(u'ObjectTypeAnnotation'))) + var.get(u"this").get(u'state').put(u'inType', var.get(u'oldInType')) + return var.get(u'out') + PyJs_anonymous_3103_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseObjectType', PyJs_anonymous_3103_) + @Js + def PyJs_anonymous_3104_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if (((var.get(u"this").callprop(u'eat', var.get(u'types').get(u'semi')).neg() and var.get(u"this").callprop(u'eat', var.get(u'types').get(u'comma')).neg()) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceR')).neg()) and var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceBarR')).neg()): + var.get(u"this").callprop(u'unexpected') + PyJs_anonymous_3104_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowObjectTypeSemicolon', PyJs_anonymous_3104_) + @Js + def PyJs_anonymous_3105_(startPos, startLoc, id, this, arguments, var=var): + var = Scope({u'this':this, u'startPos':startPos, u'id':id, u'startLoc':startLoc, u'arguments':arguments}, var) + var.registers([u'node', u'startPos', u'node2', u'id', u'startLoc']) + var.put(u'startPos', (var.get(u'startPos') or var.get(u"this").get(u'state').get(u'start'))) + var.put(u'startLoc', (var.get(u'startLoc') or var.get(u"this").get(u'state').get(u'startLoc'))) + var.put(u'node', (var.get(u'id') or var.get(u"this").callprop(u'parseIdentifier'))) + while var.get(u"this").callprop(u'eat', var.get(u'types').get(u'dot')): + var.put(u'node2', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'node2').put(u'qualification', var.get(u'node')) + var.get(u'node2').put(u'id', var.get(u"this").callprop(u'parseIdentifier')) + var.put(u'node', var.get(u"this").callprop(u'finishNode', var.get(u'node2'), Js(u'QualifiedTypeIdentifier'))) + return var.get(u'node') + PyJs_anonymous_3105_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseQualifiedTypeIdentifier', PyJs_anonymous_3105_) + @Js + def PyJs_anonymous_3106_(startPos, startLoc, id, this, arguments, var=var): + var = Scope({u'this':this, u'startPos':startPos, u'id':id, u'startLoc':startLoc, u'arguments':arguments}, var) + var.registers([u'node', u'startPos', u'id', u'startLoc']) + var.put(u'node', var.get(u"this").callprop(u'startNodeAt', var.get(u'startPos'), var.get(u'startLoc'))) + var.get(u'node').put(u'typeParameters', var.get(u"null")) + var.get(u'node').put(u'id', var.get(u"this").callprop(u'flowParseQualifiedTypeIdentifier', var.get(u'startPos'), var.get(u'startLoc'), var.get(u'id'))) + if var.get(u"this").callprop(u'isRelational', Js(u'<')): + var.get(u'node').put(u'typeParameters', var.get(u"this").callprop(u'flowParseTypeParameterInstantiation')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'GenericTypeAnnotation')) + PyJs_anonymous_3106_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseGenericType', PyJs_anonymous_3106_) + @Js + def PyJs_anonymous_3107_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'_typeof')) + var.get(u'node').put(u'argument', var.get(u"this").callprop(u'flowParsePrimaryType')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'TypeofTypeAnnotation')) + PyJs_anonymous_3107_._set_name(u'anonymous') + var.get(u'pp$7').put(u'flowParseTypeofType', PyJs_anonymous_3107_) + @Js + def PyJs_anonymous_3108_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.put(u'node', var.get(u"this").callprop(u'startNode')) + var.get(u'node').put(u'types', Js([])) + var.get(u"this").callprop(u'expect', var.get(u'types').get(u'bracketL')) + while ((var.get(u"this").get(u'state').get(u'pos')'),u'nbsp':Js(u'\xa0'),u'iexcl':Js(u'\xa1'),u'cent':Js(u'\xa2'),u'pound':Js(u'\xa3'),u'curren':Js(u'\xa4'),u'yen':Js(u'\xa5'),u'brvbar':Js(u'\xa6'),u'sect':Js(u'\xa7'),u'uml':Js(u'\xa8'),u'copy':Js(u'\xa9'),u'ordf':Js(u'\xaa'),u'laquo':Js(u'\xab'),u'not':Js(u'\xac'),u'shy':Js(u'\xad'),u'reg':Js(u'\xae'),u'macr':Js(u'\xaf'),u'deg':Js(u'\xb0'),u'plusmn':Js(u'\xb1'),u'sup2':Js(u'\xb2'),u'sup3':Js(u'\xb3'),u'acute':Js(u'\xb4'),u'micro':Js(u'\xb5'),u'para':Js(u'\xb6'),u'middot':Js(u'\xb7'),u'cedil':Js(u'\xb8'),u'sup1':Js(u'\xb9'),u'ordm':Js(u'\xba'),u'raquo':Js(u'\xbb'),u'frac14':Js(u'\xbc'),u'frac12':Js(u'\xbd'),u'frac34':Js(u'\xbe'),u'iquest':Js(u'\xbf'),u'Agrave':Js(u'\xc0'),u'Aacute':Js(u'\xc1'),u'Acirc':Js(u'\xc2'),u'Atilde':Js(u'\xc3'),u'Auml':Js(u'\xc4'),u'Aring':Js(u'\xc5'),u'AElig':Js(u'\xc6'),u'Ccedil':Js(u'\xc7'),u'Egrave':Js(u'\xc8'),u'Eacute':Js(u'\xc9'),u'Ecirc':Js(u'\xca'),u'Euml':Js(u'\xcb'),u'Igrave':Js(u'\xcc'),u'Iacute':Js(u'\xcd'),u'Icirc':Js(u'\xce'),u'Iuml':Js(u'\xcf'),u'ETH':Js(u'\xd0'),u'Ntilde':Js(u'\xd1'),u'Ograve':Js(u'\xd2'),u'Oacute':Js(u'\xd3'),u'Ocirc':Js(u'\xd4'),u'Otilde':Js(u'\xd5'),u'Ouml':Js(u'\xd6'),u'times':Js(u'\xd7'),u'Oslash':Js(u'\xd8'),u'Ugrave':Js(u'\xd9'),u'Uacute':Js(u'\xda'),u'Ucirc':Js(u'\xdb'),u'Uuml':Js(u'\xdc'),u'Yacute':Js(u'\xdd'),u'THORN':Js(u'\xde'),u'szlig':Js(u'\xdf'),u'agrave':Js(u'\xe0'),u'aacute':Js(u'\xe1'),u'acirc':Js(u'\xe2'),u'atilde':Js(u'\xe3'),u'auml':Js(u'\xe4'),u'aring':Js(u'\xe5'),u'aelig':Js(u'\xe6'),u'ccedil':Js(u'\xe7'),u'egrave':Js(u'\xe8'),u'eacute':Js(u'\xe9'),u'ecirc':Js(u'\xea'),u'euml':Js(u'\xeb'),u'igrave':Js(u'\xec'),u'iacute':Js(u'\xed'),u'icirc':Js(u'\xee'),u'iuml':Js(u'\xef'),u'eth':Js(u'\xf0'),u'ntilde':Js(u'\xf1'),u'ograve':Js(u'\xf2'),u'oacute':Js(u'\xf3'),u'ocirc':Js(u'\xf4'),u'otilde':Js(u'\xf5'),u'ouml':Js(u'\xf6'),u'divide':Js(u'\xf7'),u'oslash':Js(u'\xf8'),u'ugrave':Js(u'\xf9'),u'uacute':Js(u'\xfa'),u'ucirc':Js(u'\xfb'),u'uuml':Js(u'\xfc'),u'yacute':Js(u'\xfd'),u'thorn':Js(u'\xfe'),u'yuml':Js(u'\xff'),u'OElig':Js(u'\u0152'),u'oelig':Js(u'\u0153'),u'Scaron':Js(u'\u0160'),u'scaron':Js(u'\u0161'),u'Yuml':Js(u'\u0178'),u'fnof':Js(u'\u0192'),u'circ':Js(u'\u02c6'),u'tilde':Js(u'\u02dc'),u'Alpha':Js(u'\u0391'),u'Beta':Js(u'\u0392'),u'Gamma':Js(u'\u0393'),u'Delta':Js(u'\u0394'),u'Epsilon':Js(u'\u0395'),u'Zeta':Js(u'\u0396'),u'Eta':Js(u'\u0397'),u'Theta':Js(u'\u0398'),u'Iota':Js(u'\u0399'),u'Kappa':Js(u'\u039a'),u'Lambda':Js(u'\u039b'),u'Mu':Js(u'\u039c'),u'Nu':Js(u'\u039d'),u'Xi':Js(u'\u039e'),u'Omicron':Js(u'\u039f'),u'Pi':Js(u'\u03a0'),u'Rho':Js(u'\u03a1'),u'Sigma':Js(u'\u03a3'),u'Tau':Js(u'\u03a4'),u'Upsilon':Js(u'\u03a5'),u'Phi':Js(u'\u03a6'),u'Chi':Js(u'\u03a7'),u'Psi':Js(u'\u03a8'),u'Omega':Js(u'\u03a9'),u'alpha':Js(u'\u03b1'),u'beta':Js(u'\u03b2'),u'gamma':Js(u'\u03b3'),u'delta':Js(u'\u03b4'),u'epsilon':Js(u'\u03b5'),u'zeta':Js(u'\u03b6'),u'eta':Js(u'\u03b7'),u'theta':Js(u'\u03b8'),u'iota':Js(u'\u03b9'),u'kappa':Js(u'\u03ba'),u'lambda':Js(u'\u03bb'),u'mu':Js(u'\u03bc'),u'nu':Js(u'\u03bd'),u'xi':Js(u'\u03be'),u'omicron':Js(u'\u03bf'),u'pi':Js(u'\u03c0'),u'rho':Js(u'\u03c1'),u'sigmaf':Js(u'\u03c2'),u'sigma':Js(u'\u03c3'),u'tau':Js(u'\u03c4'),u'upsilon':Js(u'\u03c5'),u'phi':Js(u'\u03c6'),u'chi':Js(u'\u03c7'),u'psi':Js(u'\u03c8'),u'omega':Js(u'\u03c9'),u'thetasym':Js(u'\u03d1'),u'upsih':Js(u'\u03d2'),u'piv':Js(u'\u03d6'),u'ensp':Js(u'\u2002'),u'emsp':Js(u'\u2003'),u'thinsp':Js(u'\u2009'),u'zwnj':Js(u'\u200c'),u'zwj':Js(u'\u200d'),u'lrm':Js(u'\u200e'),u'rlm':Js(u'\u200f'),u'ndash':Js(u'\u2013'),u'mdash':Js(u'\u2014'),u'lsquo':Js(u'\u2018'),u'rsquo':Js(u'\u2019'),u'sbquo':Js(u'\u201a'),u'ldquo':Js(u'\u201c'),u'rdquo':Js(u'\u201d'),u'bdquo':Js(u'\u201e'),u'dagger':Js(u'\u2020'),u'Dagger':Js(u'\u2021'),u'bull':Js(u'\u2022'),u'hellip':Js(u'\u2026'),u'permil':Js(u'\u2030'),u'prime':Js(u'\u2032'),u'Prime':Js(u'\u2033'),u'lsaquo':Js(u'\u2039'),u'rsaquo':Js(u'\u203a'),u'oline':Js(u'\u203e'),u'frasl':Js(u'\u2044'),u'euro':Js(u'\u20ac'),u'image':Js(u'\u2111'),u'weierp':Js(u'\u2118'),u'real':Js(u'\u211c'),u'trade':Js(u'\u2122'),u'alefsym':Js(u'\u2135'),u'larr':Js(u'\u2190'),u'uarr':Js(u'\u2191'),u'rarr':Js(u'\u2192'),u'darr':Js(u'\u2193'),u'harr':Js(u'\u2194'),u'crarr':Js(u'\u21b5'),u'lArr':Js(u'\u21d0'),u'uArr':Js(u'\u21d1'),u'rArr':Js(u'\u21d2'),u'dArr':Js(u'\u21d3'),u'hArr':Js(u'\u21d4'),u'forall':Js(u'\u2200'),u'part':Js(u'\u2202'),u'exist':Js(u'\u2203'),u'empty':Js(u'\u2205'),u'nabla':Js(u'\u2207'),u'isin':Js(u'\u2208'),u'notin':Js(u'\u2209'),u'ni':Js(u'\u220b'),u'prod':Js(u'\u220f'),u'sum':Js(u'\u2211'),u'minus':Js(u'\u2212'),u'lowast':Js(u'\u2217'),u'radic':Js(u'\u221a'),u'prop':Js(u'\u221d'),u'infin':Js(u'\u221e'),u'ang':Js(u'\u2220'),u'and':Js(u'\u2227'),u'or':Js(u'\u2228'),u'cap':Js(u'\u2229'),u'cup':Js(u'\u222a'),u'int':Js(u'\u222b'),u'there4':Js(u'\u2234'),u'sim':Js(u'\u223c'),u'cong':Js(u'\u2245'),u'asymp':Js(u'\u2248'),u'ne':Js(u'\u2260'),u'equiv':Js(u'\u2261'),u'le':Js(u'\u2264'),u'ge':Js(u'\u2265'),u'sub':Js(u'\u2282'),u'sup':Js(u'\u2283'),u'nsub':Js(u'\u2284'),u'sube':Js(u'\u2286'),u'supe':Js(u'\u2287'),u'oplus':Js(u'\u2295'),u'otimes':Js(u'\u2297'),u'perp':Js(u'\u22a5'),u'sdot':Js(u'\u22c5'),u'lceil':Js(u'\u2308'),u'rceil':Js(u'\u2309'),u'lfloor':Js(u'\u230a'),u'rfloor':Js(u'\u230b'),u'lang':Js(u'\u2329'),u'rang':Js(u'\u232a'),u'loz':Js(u'\u25ca'),u'spades':Js(u'\u2660'),u'clubs':Js(u'\u2663'),u'hearts':Js(u'\u2665'),u'diams':Js(u'\u2666')}) + var.put(u'XHTMLEntities', PyJs_Object_3194_) + var.put(u'HEX_NUMBER', JsRegExp(u'/^[\\da-fA-F]+$/')) + var.put(u'DECIMAL_NUMBER', JsRegExp(u'/^\\d+$/')) + var.get(u'types$1').put(u'j_oTag', var.get(u'TokContext').create(Js(u'...'), var.get(u'true'), var.get(u'true'))) + var.get(u'types').put(u'jsxName', var.get(u'TokenType').create(Js(u'jsxName'))) + PyJs_Object_3195_ = Js({u'beforeExpr':var.get(u'true')}) + var.get(u'types').put(u'jsxText', var.get(u'TokenType').create(Js(u'jsxText'), PyJs_Object_3195_)) + PyJs_Object_3196_ = Js({u'startsExpr':var.get(u'true')}) + var.get(u'types').put(u'jsxTagStart', var.get(u'TokenType').create(Js(u'jsxTagStart'), PyJs_Object_3196_)) + var.get(u'types').put(u'jsxTagEnd', var.get(u'TokenType').create(Js(u'jsxTagEnd'))) + @Js + def PyJs_anonymous_3197_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").get(u'state').get(u'context').callprop(u'push', var.get(u'types$1').get(u'j_expr')) + var.get(u"this").get(u'state').get(u'context').callprop(u'push', var.get(u'types$1').get(u'j_oTag')) + var.get(u"this").get(u'state').put(u'exprAllowed', Js(False)) + PyJs_anonymous_3197_._set_name(u'anonymous') + var.get(u'types').get(u'jsxTagStart').put(u'updateContext', PyJs_anonymous_3197_) + @Js + def PyJs_anonymous_3198_(prevType, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'prevType':prevType}, var) + var.registers([u'prevType', u'out']) + var.put(u'out', var.get(u"this").get(u'state').get(u'context').callprop(u'pop')) + if ((PyJsStrictEq(var.get(u'out'),var.get(u'types$1').get(u'j_oTag')) and PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'slash'))) or PyJsStrictEq(var.get(u'out'),var.get(u'types$1').get(u'j_cTag'))): + var.get(u"this").get(u'state').get(u'context').callprop(u'pop') + var.get(u"this").get(u'state').put(u'exprAllowed', PyJsStrictEq(var.get(u"this").callprop(u'curContext'),var.get(u'types$1').get(u'j_expr'))) + else: + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'true')) + PyJs_anonymous_3198_._set_name(u'anonymous') + var.get(u'types').get(u'jsxTagEnd').put(u'updateContext', PyJs_anonymous_3198_) + var.put(u'pp$8', var.get(u'Parser').get(u'prototype')) + @Js + def PyJs_anonymous_3199_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'ch', u'chunkStart', u'out']) + var.put(u'out', Js(u'')) + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + #for JS loop + + while 1: + if (var.get(u"this").get(u'state').get(u'pos')>=var.get(u"this").get(u'input').get(u'length')): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'Unterminated JSX contents')) + var.put(u'ch', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + while 1: + SWITCHED = False + CONDITION = (var.get(u'ch')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(60.0)): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(123.0)): + SWITCHED = True + if PyJsStrictEq(var.get(u"this").get(u'state').get(u'pos'),var.get(u"this").get(u'state').get(u'start')): + if (PyJsStrictEq(var.get(u'ch'),Js(60.0)) and var.get(u"this").get(u'state').get(u'exprAllowed')): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'jsxTagStart')) + return var.get(u"this").callprop(u'getTokenFromCode', var.get(u'ch')) + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'jsxText'), var.get(u'out')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(38.0)): + SWITCHED = True + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + var.put(u'out', var.get(u"this").callprop(u'jsxReadEntity'), u'+') + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + break + if True: + SWITCHED = True + if var.get(u'isNewLine')(var.get(u'ch')): + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + var.put(u'out', var.get(u"this").callprop(u'jsxReadNewLine', var.get(u'true')), u'+') + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + else: + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + SWITCHED = True + break + + PyJs_anonymous_3199_._set_name(u'anonymous') + var.get(u'pp$8').put(u'jsxReadToken', PyJs_anonymous_3199_) + @Js + def PyJs_anonymous_3200_(normalizeCRLF, this, arguments, var=var): + var = Scope({u'this':this, u'normalizeCRLF':normalizeCRLF, u'arguments':arguments}, var) + var.registers([u'ch', u'normalizeCRLF', u'out']) + var.put(u'ch', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + var.put(u'out', PyJsComma(Js(0.0), Js(None))) + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + if (PyJsStrictEq(var.get(u'ch'),Js(13.0)) and PyJsStrictEq(var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos')),Js(10.0))): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + var.put(u'out', (Js(u'\n') if var.get(u'normalizeCRLF') else Js(u'\r\n'))) + else: + var.put(u'out', var.get(u'String').callprop(u'fromCharCode', var.get(u'ch'))) + var.get(u"this").get(u'state').put(u'curLine',Js(var.get(u"this").get(u'state').get(u'curLine').to_number())+Js(1)) + var.get(u"this").get(u'state').put(u'lineStart', var.get(u"this").get(u'state').get(u'pos')) + return var.get(u'out') + PyJs_anonymous_3200_._set_name(u'anonymous') + var.get(u'pp$8').put(u'jsxReadNewLine', PyJs_anonymous_3200_) + @Js + def PyJs_anonymous_3201_(quote, this, arguments, var=var): + var = Scope({u'this':this, u'quote':quote, u'arguments':arguments}, var) + var.registers([u'ch', u'quote', u'chunkStart', u'out']) + var.put(u'out', Js(u'')) + var.put(u'chunkStart', var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1))) + #for JS loop + + while 1: + if (var.get(u"this").get(u'state').get(u'pos')>=var.get(u"this").get(u'input').get(u'length')): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'Unterminated string constant')) + var.put(u'ch', var.get(u"this").get(u'input').callprop(u'charCodeAt', var.get(u"this").get(u'state').get(u'pos'))) + if PyJsStrictEq(var.get(u'ch'),var.get(u'quote')): + break + if PyJsStrictEq(var.get(u'ch'),Js(38.0)): + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + var.put(u'out', var.get(u"this").callprop(u'jsxReadEntity'), u'+') + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + else: + if var.get(u'isNewLine')(var.get(u'ch')): + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), var.get(u"this").get(u'state').get(u'pos')), u'+') + var.put(u'out', var.get(u"this").callprop(u'jsxReadNewLine', Js(False)), u'+') + var.put(u'chunkStart', var.get(u"this").get(u'state').get(u'pos')) + else: + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + + var.put(u'out', var.get(u"this").get(u'input').callprop(u'slice', var.get(u'chunkStart'), (var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1))-Js(1))), u'+') + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'string'), var.get(u'out')) + PyJs_anonymous_3201_._set_name(u'anonymous') + var.get(u'pp$8').put(u'jsxReadString', PyJs_anonymous_3201_) + @Js + def PyJs_anonymous_3202_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'count', u'startPos', u'ch', u'str', u'entity']) + var.put(u'str', Js(u'')) + var.put(u'count', Js(0.0)) + var.put(u'entity', PyJsComma(Js(0.0), Js(None))) + var.put(u'ch', var.get(u"this").get(u'input').get(var.get(u"this").get(u'state').get(u'pos'))) + var.put(u'startPos', var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1))) + while ((var.get(u"this").get(u'state').get(u'pos')'))) + var.get(u'node').put(u'openingElement', var.get(u'openingElement')) + var.get(u'node').put(u'closingElement', var.get(u'closingElement')) + var.get(u'node').put(u'children', var.get(u'children')) + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'relational')) and PyJsStrictEq(var.get(u"this").get(u'state').get(u'value'),Js(u'<'))): + var.get(u"this").callprop(u'raise', var.get(u"this").get(u'state').get(u'start'), Js(u'Adjacent JSX elements must be wrapped in an enclosing tag')) + return var.get(u"this").callprop(u'finishNode', var.get(u'node'), Js(u'JSXElement')) + PyJs_anonymous_3214_._set_name(u'anonymous') + var.get(u'pp$8').put(u'jsxParseElementAt', PyJs_anonymous_3214_) + @Js + def PyJs_anonymous_3215_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'startPos', u'startLoc']) + var.put(u'startPos', var.get(u"this").get(u'state').get(u'start')) + var.put(u'startLoc', var.get(u"this").get(u'state').get(u'startLoc')) + var.get(u"this").callprop(u'next') + return var.get(u"this").callprop(u'jsxParseElementAt', var.get(u'startPos'), var.get(u'startLoc')) + PyJs_anonymous_3215_._set_name(u'anonymous') + var.get(u'pp$8').put(u'jsxParseElement', PyJs_anonymous_3215_) + @Js + def PyJs_anonymous_3216_(instance, this, arguments, var=var): + var = Scope({u'this':this, u'instance':instance, u'arguments':arguments}, var) + var.registers([u'instance']) + @Js + def PyJs_anonymous_3217_(inner, this, arguments, var=var): + var = Scope({u'this':this, u'inner':inner, u'arguments':arguments}, var) + var.registers([u'inner']) + @Js + def PyJs_anonymous_3218_(refShortHandDefaultPos, this, arguments, var=var): + var = Scope({u'this':this, u'refShortHandDefaultPos':refShortHandDefaultPos, u'arguments':arguments}, var) + var.registers([u'node', u'refShortHandDefaultPos']) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'jsxText')): + var.put(u'node', var.get(u"this").callprop(u'parseLiteral', var.get(u"this").get(u'state').get(u'value'), Js(u'JSXText'))) + var.get(u'node').put(u'extra', var.get(u"null")) + return var.get(u'node') + else: + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'jsxTagStart')): + return var.get(u"this").callprop(u'jsxParseElement') + else: + return var.get(u'inner').callprop(u'call', var.get(u"this"), var.get(u'refShortHandDefaultPos')) + PyJs_anonymous_3218_._set_name(u'anonymous') + return PyJs_anonymous_3218_ + PyJs_anonymous_3217_._set_name(u'anonymous') + var.get(u'instance').callprop(u'extend', Js(u'parseExprAtom'), PyJs_anonymous_3217_) + @Js + def PyJs_anonymous_3219_(inner, this, arguments, var=var): + var = Scope({u'this':this, u'inner':inner, u'arguments':arguments}, var) + var.registers([u'inner']) + @Js + def PyJs_anonymous_3220_(code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'arguments':arguments}, var) + var.registers([u'code', u'context']) + var.put(u'context', var.get(u"this").callprop(u'curContext')) + if PyJsStrictEq(var.get(u'context'),var.get(u'types$1').get(u'j_expr')): + return var.get(u"this").callprop(u'jsxReadToken') + if (PyJsStrictEq(var.get(u'context'),var.get(u'types$1').get(u'j_oTag')) or PyJsStrictEq(var.get(u'context'),var.get(u'types$1').get(u'j_cTag'))): + if var.get(u'isIdentifierStart')(var.get(u'code')): + return var.get(u"this").callprop(u'jsxReadWord') + if PyJsStrictEq(var.get(u'code'),Js(62.0)): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'jsxTagEnd')) + if ((PyJsStrictEq(var.get(u'code'),Js(34.0)) or PyJsStrictEq(var.get(u'code'),Js(39.0))) and PyJsStrictEq(var.get(u'context'),var.get(u'types$1').get(u'j_oTag'))): + return var.get(u"this").callprop(u'jsxReadString', var.get(u'code')) + if (PyJsStrictEq(var.get(u'code'),Js(60.0)) and var.get(u"this").get(u'state').get(u'exprAllowed')): + var.get(u"this").get(u'state').put(u'pos',Js(var.get(u"this").get(u'state').get(u'pos').to_number())+Js(1)) + return var.get(u"this").callprop(u'finishToken', var.get(u'types').get(u'jsxTagStart')) + return var.get(u'inner').callprop(u'call', var.get(u"this"), var.get(u'code')) + PyJs_anonymous_3220_._set_name(u'anonymous') + return PyJs_anonymous_3220_ + PyJs_anonymous_3219_._set_name(u'anonymous') + var.get(u'instance').callprop(u'extend', Js(u'readToken'), PyJs_anonymous_3219_) + @Js + def PyJs_anonymous_3221_(inner, this, arguments, var=var): + var = Scope({u'this':this, u'inner':inner, u'arguments':arguments}, var) + var.registers([u'inner']) + @Js + def PyJs_anonymous_3222_(prevType, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'prevType':prevType}, var) + var.registers([u'curContext', u'prevType']) + if var.get(u"this").callprop(u'match', var.get(u'types').get(u'braceL')): + var.put(u'curContext', var.get(u"this").callprop(u'curContext')) + if PyJsStrictEq(var.get(u'curContext'),var.get(u'types$1').get(u'j_oTag')): + var.get(u"this").get(u'state').get(u'context').callprop(u'push', var.get(u'types$1').get(u'braceExpression')) + else: + if PyJsStrictEq(var.get(u'curContext'),var.get(u'types$1').get(u'j_expr')): + var.get(u"this").get(u'state').get(u'context').callprop(u'push', var.get(u'types$1').get(u'templateQuasi')) + else: + var.get(u'inner').callprop(u'call', var.get(u"this"), var.get(u'prevType')) + var.get(u"this").get(u'state').put(u'exprAllowed', var.get(u'true')) + else: + if (var.get(u"this").callprop(u'match', var.get(u'types').get(u'slash')) and PyJsStrictEq(var.get(u'prevType'),var.get(u'types').get(u'jsxTagStart'))): + var.get(u"this").get(u'state').get(u'context').put(u'length', Js(2.0), u'-') + var.get(u"this").get(u'state').get(u'context').callprop(u'push', var.get(u'types$1').get(u'j_cTag')) + var.get(u"this").get(u'state').put(u'exprAllowed', Js(False)) + else: + return var.get(u'inner').callprop(u'call', var.get(u"this"), var.get(u'prevType')) + PyJs_anonymous_3222_._set_name(u'anonymous') + return PyJs_anonymous_3222_ + PyJs_anonymous_3221_._set_name(u'anonymous') + var.get(u'instance').callprop(u'extend', Js(u'updateContext'), PyJs_anonymous_3221_) + PyJs_anonymous_3216_._set_name(u'anonymous') + var.put(u'jsxPlugin', PyJs_anonymous_3216_) + var.get(u'plugins').put(u'flow', var.get(u'flowPlugin')) + var.get(u'plugins').put(u'jsx', var.get(u'jsxPlugin')) + pass + var.get(u'exports').put(u'parse', var.get(u'parse$1')) + var.get(u'exports').put(u'tokTypes', var.get(u'types')) +PyJs_anonymous_2842_._set_name(u'anonymous') +PyJs_Object_3223_ = Js({}) +@Js +def PyJs_anonymous_3224_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'maybeMatch', u'require', u'module', u'range', u'balanced']) + @Js + def PyJsHoisted_balanced_(a, b, str, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'b':b, u'arguments':arguments, u'str':str}, var) + var.registers([u'a', u'r', u'b', u'str']) + if var.get(u'a').instanceof(var.get(u'RegExp')): + var.put(u'a', var.get(u'maybeMatch')(var.get(u'a'), var.get(u'str'))) + if var.get(u'b').instanceof(var.get(u'RegExp')): + var.put(u'b', var.get(u'maybeMatch')(var.get(u'b'), var.get(u'str'))) + var.put(u'r', var.get(u'range')(var.get(u'a'), var.get(u'b'), var.get(u'str'))) + PyJs_Object_3225_ = Js({u'start':var.get(u'r').get(u'0'),u'end':var.get(u'r').get(u'1'),u'pre':var.get(u'str').callprop(u'slice', Js(0.0), var.get(u'r').get(u'0')),u'body':var.get(u'str').callprop(u'slice', (var.get(u'r').get(u'0')+var.get(u'a').get(u'length')), var.get(u'r').get(u'1')),u'post':var.get(u'str').callprop(u'slice', (var.get(u'r').get(u'1')+var.get(u'b').get(u'length')))}) + return (var.get(u'r') and PyJs_Object_3225_) + PyJsHoisted_balanced_.func_name = u'balanced' + var.put(u'balanced', PyJsHoisted_balanced_) + @Js + def PyJsHoisted_range_(a, b, str, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'b':b, u'arguments':arguments, u'str':str}, var) + var.registers([u'a', u'right', u'ai', u'beg', u'bi', u'i', u'b', u'result', u'str', u'begs', u'left']) + pass + var.put(u'ai', var.get(u'str').callprop(u'indexOf', var.get(u'a'))) + var.put(u'bi', var.get(u'str').callprop(u'indexOf', var.get(u'b'), (var.get(u'ai')+Js(1.0)))) + var.put(u'i', var.get(u'ai')) + if ((var.get(u'ai')>=Js(0.0)) and (var.get(u'bi')>Js(0.0))): + var.put(u'begs', Js([])) + var.put(u'left', var.get(u'str').get(u'length')) + while ((var.get(u'i')>=Js(0.0)) and var.get(u'result').neg()): + if (var.get(u'i')==var.get(u'ai')): + var.get(u'begs').callprop(u'push', var.get(u'i')) + var.put(u'ai', var.get(u'str').callprop(u'indexOf', var.get(u'a'), (var.get(u'i')+Js(1.0)))) + else: + if (var.get(u'begs').get(u'length')==Js(1.0)): + var.put(u'result', Js([var.get(u'begs').callprop(u'pop'), var.get(u'bi')])) + else: + var.put(u'beg', var.get(u'begs').callprop(u'pop')) + if (var.get(u'beg')=Js(0.0))) else var.get(u'bi'))) + if var.get(u'begs').get(u'length'): + var.put(u'result', Js([var.get(u'left'), var.get(u'right')])) + return var.get(u'result') + PyJsHoisted_range_.func_name = u'range' + var.put(u'range', PyJsHoisted_range_) + @Js + def PyJsHoisted_maybeMatch_(reg, str, this, arguments, var=var): + var = Scope({u'this':this, u'reg':reg, u'str':str, u'arguments':arguments}, var) + var.registers([u'm', u'reg', u'str']) + var.put(u'm', var.get(u'str').callprop(u'match', var.get(u'reg'))) + return (var.get(u'm').get(u'0') if var.get(u'm') else var.get(u"null")) + PyJsHoisted_maybeMatch_.func_name = u'maybeMatch' + var.put(u'maybeMatch', PyJsHoisted_maybeMatch_) + var.get(u'module').put(u'exports', var.get(u'balanced')) + pass + pass + var.get(u'balanced').put(u'range', var.get(u'range')) + pass +PyJs_anonymous_3224_._set_name(u'anonymous') +PyJs_Object_3226_ = Js({}) +@Js +def PyJs_anonymous_3227_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'escComma', u'escapeBraces', u'exports', u'escOpen', u'escPeriod', u'module', u'expandTop', u'escClose', u'isPadded', u'numeric', u'lte', u'unescapeBraces', u'concatMap', u'embrace', u'expand', u'escSlash', u'balanced', u'parseCommaParts', u'require', u'identity', u'gte']) + @Js + def PyJsHoisted_escapeBraces_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + return var.get(u'str').callprop(u'split', Js(u'\\\\')).callprop(u'join', var.get(u'escSlash')).callprop(u'split', Js(u'\\{')).callprop(u'join', var.get(u'escOpen')).callprop(u'split', Js(u'\\}')).callprop(u'join', var.get(u'escClose')).callprop(u'split', Js(u'\\,')).callprop(u'join', var.get(u'escComma')).callprop(u'split', Js(u'\\.')).callprop(u'join', var.get(u'escPeriod')) + PyJsHoisted_escapeBraces_.func_name = u'escapeBraces' + var.put(u'escapeBraces', PyJsHoisted_escapeBraces_) + @Js + def PyJsHoisted_lte_(i, y, this, arguments, var=var): + var = Scope({u'i':i, u'y':y, u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'y']) + return (var.get(u'i')<=var.get(u'y')) + PyJsHoisted_lte_.func_name = u'lte' + var.put(u'lte', PyJsHoisted_lte_) + @Js + def PyJsHoisted_expandTop_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + if var.get(u'str').neg(): + return Js([]) + return var.get(u'expand')(var.get(u'escapeBraces')(var.get(u'str')), var.get(u'true')).callprop(u'map', var.get(u'unescapeBraces')) + PyJsHoisted_expandTop_.func_name = u'expandTop' + var.put(u'expandTop', PyJsHoisted_expandTop_) + @Js + def PyJsHoisted_numeric_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + return (var.get(u'parseInt')(var.get(u'str'), Js(10.0)) if (var.get(u'parseInt')(var.get(u'str'), Js(10.0))==var.get(u'str')) else var.get(u'str').callprop(u'charCodeAt', Js(0.0))) + PyJsHoisted_numeric_.func_name = u'numeric' + var.put(u'numeric', PyJsHoisted_numeric_) + @Js + def PyJsHoisted_unescapeBraces_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + return var.get(u'str').callprop(u'split', var.get(u'escSlash')).callprop(u'join', Js(u'\\')).callprop(u'split', var.get(u'escOpen')).callprop(u'join', Js(u'{')).callprop(u'split', var.get(u'escClose')).callprop(u'join', Js(u'}')).callprop(u'split', var.get(u'escComma')).callprop(u'join', Js(u',')).callprop(u'split', var.get(u'escPeriod')).callprop(u'join', Js(u'.')) + PyJsHoisted_unescapeBraces_.func_name = u'unescapeBraces' + var.put(u'unescapeBraces', PyJsHoisted_unescapeBraces_) + @Js + def PyJsHoisted_embrace_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + return ((Js(u'{')+var.get(u'str'))+Js(u'}')) + PyJsHoisted_embrace_.func_name = u'embrace' + var.put(u'embrace', PyJsHoisted_embrace_) + @Js + def PyJsHoisted_expand_(str, isTop, this, arguments, var=var): + var = Scope({u'this':this, u'isTop':isTop, u'arguments':arguments, u'str':str}, var) + var.registers([u'pre', u'm', u'isTop', u'need', u'incr', u'width', u'pad', u'test', u'isAlphaSequence', u'isSequence', u'expansion', u'N', u'post', u'c', u'isOptions', u'reverse', u'i', u'k', u'j', u'expansions', u'n', u'str', u'isNumericSequence', u'y', u'x', u'z']) + var.put(u'expansions', Js([])) + var.put(u'm', var.get(u'balanced')(Js(u'{'), Js(u'}'), var.get(u'str'))) + if (var.get(u'm').neg() or JsRegExp(u'/\\$$/').callprop(u'test', var.get(u'm').get(u'pre'))): + return Js([var.get(u'str')]) + var.put(u'isNumericSequence', JsRegExp(u'/^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/').callprop(u'test', var.get(u'm').get(u'body'))) + var.put(u'isAlphaSequence', JsRegExp(u'/^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/').callprop(u'test', var.get(u'm').get(u'body'))) + var.put(u'isSequence', (var.get(u'isNumericSequence') or var.get(u'isAlphaSequence'))) + var.put(u'isOptions', JsRegExp(u'/^(.*,)+(.+)?$/').callprop(u'test', var.get(u'm').get(u'body'))) + if (var.get(u'isSequence').neg() and var.get(u'isOptions').neg()): + if var.get(u'm').get(u'post').callprop(u'match', JsRegExp(u'/,.*\\}/')): + var.put(u'str', ((((var.get(u'm').get(u'pre')+Js(u'{'))+var.get(u'm').get(u'body'))+var.get(u'escClose'))+var.get(u'm').get(u'post'))) + return var.get(u'expand')(var.get(u'str')) + return Js([var.get(u'str')]) + pass + if var.get(u'isSequence'): + var.put(u'n', var.get(u'm').get(u'body').callprop(u'split', JsRegExp(u'/\\.\\./'))) + else: + var.put(u'n', var.get(u'parseCommaParts')(var.get(u'm').get(u'body'))) + if PyJsStrictEq(var.get(u'n').get(u'length'),Js(1.0)): + var.put(u'n', var.get(u'expand')(var.get(u'n').get(u'0'), Js(False)).callprop(u'map', var.get(u'embrace'))) + if PyJsStrictEq(var.get(u'n').get(u'length'),Js(1.0)): + var.put(u'post', (var.get(u'expand')(var.get(u'm').get(u'post'), Js(False)) if var.get(u'm').get(u'post').get(u'length') else Js([Js(u'')]))) + @Js + def PyJs_anonymous_3228_(p, this, arguments, var=var): + var = Scope({u'this':this, u'p':p, u'arguments':arguments}, var) + var.registers([u'p']) + return ((var.get(u'm').get(u'pre')+var.get(u'n').get(u'0'))+var.get(u'p')) + PyJs_anonymous_3228_._set_name(u'anonymous') + return var.get(u'post').callprop(u'map', PyJs_anonymous_3228_) + var.put(u'pre', var.get(u'm').get(u'pre')) + var.put(u'post', (var.get(u'expand')(var.get(u'm').get(u'post'), Js(False)) if var.get(u'm').get(u'post').get(u'length') else Js([Js(u'')]))) + pass + if var.get(u'isSequence'): + var.put(u'x', var.get(u'numeric')(var.get(u'n').get(u'0'))) + var.put(u'y', var.get(u'numeric')(var.get(u'n').get(u'1'))) + var.put(u'width', var.get(u'Math').callprop(u'max', var.get(u'n').get(u'0').get(u'length'), var.get(u'n').get(u'1').get(u'length'))) + var.put(u'incr', (var.get(u'Math').callprop(u'abs', var.get(u'numeric')(var.get(u'n').get(u'2'))) if (var.get(u'n').get(u'length')==Js(3.0)) else Js(1.0))) + var.put(u'test', var.get(u'lte')) + var.put(u'reverse', (var.get(u'y')Js(0.0)): + var.put(u'z', var.get(u'Array').create((var.get(u'need')+Js(1.0))).callprop(u'join', Js(u'0'))) + if (var.get(u'i')=var.get(u'y')) + PyJsHoisted_gte_.func_name = u'gte' + var.put(u'gte', PyJsHoisted_gte_) + var.put(u'concatMap', var.get(u'require')(Js(u'concat-map'))) + var.put(u'balanced', var.get(u'require')(Js(u'balanced-match'))) + var.get(u'module').put(u'exports', var.get(u'expandTop')) + var.put(u'escSlash', ((Js(u'\x00SLASH')+var.get(u'Math').callprop(u'random'))+Js(u'\x00'))) + var.put(u'escOpen', ((Js(u'\x00OPEN')+var.get(u'Math').callprop(u'random'))+Js(u'\x00'))) + var.put(u'escClose', ((Js(u'\x00CLOSE')+var.get(u'Math').callprop(u'random'))+Js(u'\x00'))) + var.put(u'escComma', ((Js(u'\x00COMMA')+var.get(u'Math').callprop(u'random'))+Js(u'\x00'))) + var.put(u'escPeriod', ((Js(u'\x00PERIOD')+var.get(u'Math').callprop(u'random'))+Js(u'\x00'))) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass +PyJs_anonymous_3227_._set_name(u'anonymous') +PyJs_Object_3230_ = Js({u'balanced-match':Js(263.0),u'concat-map':Js(266.0)}) +@Js +def PyJs_anonymous_3231_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_3232_(process, this, arguments, var=var): + var = Scope({u'process':process, u'this':this, u'arguments':arguments}, var) + var.registers([u'styles', u'escapeStringRegexp', u'proto', u'process', u'applyStyle', u'hasAnsi', u'isSimpleWindowsTerm', u'Chalk', u'init', u'build', u'stripAnsi', u'ansiStyles', u'supportsColor', u'defineProps']) + @Js + def PyJsHoisted_Chalk_(options, this, arguments, var=var): + var = Scope({u'this':this, u'options':options, u'arguments':arguments}, var) + var.registers([u'options']) + var.get(u"this").put(u'enabled', (var.get(u'supportsColor') if (var.get(u'options').neg() or PyJsStrictEq(var.get(u'options').get(u'enabled'),var.get(u'undefined'))) else var.get(u'options').get(u'enabled'))) + PyJsHoisted_Chalk_.func_name = u'Chalk' + var.put(u'Chalk', PyJsHoisted_Chalk_) + @Js + def PyJsHoisted_applyStyle_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'a', u'nestedStyles', u'i', u'args', u'originalDim', u'code', u'str', u'argsLen']) + var.put(u'args', var.get(u'arguments')) + var.put(u'argsLen', var.get(u'args').get(u'length')) + var.put(u'str', (PyJsStrictNeq(var.get(u'argsLen'),Js(0.0)) and var.get(u'String')(var.get(u'arguments').get(u'0')))) + if (var.get(u'argsLen')>Js(1.0)): + #for JS loop + var.put(u'a', Js(1.0)) + while (var.get(u'a')Js(0.0)): + try: + var.put(u'line', var.get(u'lines').get(var.get(u'i'))) + if (~var.get(u'line').callprop(u'indexOf', Js(u'sourceMappingURL=data:'))): + return var.get(u'exports').callprop(u'fromComment', var.get(u'line')) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + PyJsHoisted_convertFromLargeSource_.func_name = u'convertFromLargeSource' + var.put(u'convertFromLargeSource', PyJsHoisted_convertFromLargeSource_) + @Js + def PyJsHoisted_Converter_(sm, opts, this, arguments, var=var): + var = Scope({u'this':this, u'opts':opts, u'sm':sm, u'arguments':arguments}, var) + var.registers([u'opts', u'sm']) + PyJs_Object_3251_ = Js({}) + var.put(u'opts', (var.get(u'opts') or PyJs_Object_3251_)) + if var.get(u'opts').get(u'isFileComment'): + var.put(u'sm', var.get(u'readFromFileMap')(var.get(u'sm'), var.get(u'opts').get(u'commentFileDir'))) + if var.get(u'opts').get(u'hasComment'): + var.put(u'sm', var.get(u'stripComment')(var.get(u'sm'))) + if var.get(u'opts').get(u'isEncoded'): + var.put(u'sm', var.get(u'decodeBase64')(var.get(u'sm'))) + if (var.get(u'opts').get(u'isJSON') or var.get(u'opts').get(u'isEncoded')): + var.put(u'sm', var.get(u'JSON').callprop(u'parse', var.get(u'sm'))) + var.get(u"this").put(u'sourcemap', var.get(u'sm')) + PyJsHoisted_Converter_.func_name = u'Converter' + var.put(u'Converter', PyJsHoisted_Converter_) + Js(u'use strict') + var.put(u'fs', var.get(u'require')(Js(u'fs'))) + var.put(u'path', var.get(u'require')(Js(u'path'))) + var.put(u'commentRx', JsRegExp(u'/^\\s*\\/(?:\\/|\\*)[@#]\\s+sourceMappingURL=data:(?:application|text)\\/json;(?:charset[:=]\\S+;)?base64,(.*)$/mg')) + var.put(u'mapFileCommentRx', JsRegExp(u'/(?:\\/\\/[@#][ \\t]+sourceMappingURL=([^\\s\'"]+?)[ \\t]*$)|(?:\\/\\*[@#][ \\t]+sourceMappingURL=([^\\*]+?)[ \\t]*(?:\\*\\/){1}[ \\t]*$)/mg')) + pass + pass + pass + pass + pass + @Js + def PyJs_anonymous_3252_(space, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'space':space}, var) + var.registers([u'space']) + return var.get(u'JSON').callprop(u'stringify', var.get(u"this").get(u'sourcemap'), var.get(u"null"), var.get(u'space')) + PyJs_anonymous_3252_._set_name(u'anonymous') + var.get(u'Converter').get(u'prototype').put(u'toJSON', PyJs_anonymous_3252_) + @Js + def PyJs_anonymous_3253_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'json']) + var.put(u'json', var.get(u"this").callprop(u'toJSON')) + return var.get(u'Buffer').create(var.get(u'json')).callprop(u'toString', Js(u'base64')) + PyJs_anonymous_3253_._set_name(u'anonymous') + var.get(u'Converter').get(u'prototype').put(u'toBase64', PyJs_anonymous_3253_) + @Js + def PyJs_anonymous_3254_(options, this, arguments, var=var): + var = Scope({u'this':this, u'options':options, u'arguments':arguments}, var) + var.registers([u'base64', u'data', u'options']) + var.put(u'base64', var.get(u"this").callprop(u'toBase64')) + var.put(u'data', (Js(u'sourceMappingURL=data:application/json;base64,')+var.get(u'base64'))) + return (((Js(u'/*# ')+var.get(u'data'))+Js(u' */')) if (var.get(u'options') and var.get(u'options').get(u'multiline')) else (Js(u'//# ')+var.get(u'data'))) + PyJs_anonymous_3254_._set_name(u'anonymous') + var.get(u'Converter').get(u'prototype').put(u'toComment', PyJs_anonymous_3254_) + @Js + def PyJs_anonymous_3255_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'JSON').callprop(u'parse', var.get(u"this").callprop(u'toJSON')) + PyJs_anonymous_3255_._set_name(u'anonymous') + var.get(u'Converter').get(u'prototype').put(u'toObject', PyJs_anonymous_3255_) + @Js + def PyJs_anonymous_3256_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'value', u'key']) + if var.get(u"this").get(u'sourcemap').callprop(u'hasOwnProperty', var.get(u'key')): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'property %s already exists on the sourcemap, use set property instead'))) + raise PyJsTempException + return var.get(u"this").callprop(u'setProperty', var.get(u'key'), var.get(u'value')) + PyJs_anonymous_3256_._set_name(u'anonymous') + var.get(u'Converter').get(u'prototype').put(u'addProperty', PyJs_anonymous_3256_) + @Js + def PyJs_anonymous_3257_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'value', u'key']) + var.get(u"this").get(u'sourcemap').put(var.get(u'key'), var.get(u'value')) + return var.get(u"this") + PyJs_anonymous_3257_._set_name(u'anonymous') + var.get(u'Converter').get(u'prototype').put(u'setProperty', PyJs_anonymous_3257_) + @Js + def PyJs_anonymous_3258_(key, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'key':key}, var) + var.registers([u'key']) + return var.get(u"this").get(u'sourcemap').get(var.get(u'key')) + PyJs_anonymous_3258_._set_name(u'anonymous') + var.get(u'Converter').get(u'prototype').put(u'getProperty', PyJs_anonymous_3258_) + @Js + def PyJs_anonymous_3259_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + return var.get(u'Converter').create(var.get(u'obj')) + PyJs_anonymous_3259_._set_name(u'anonymous') + var.get(u'exports').put(u'fromObject', PyJs_anonymous_3259_) + @Js + def PyJs_anonymous_3260_(json, this, arguments, var=var): + var = Scope({u'this':this, u'json':json, u'arguments':arguments}, var) + var.registers([u'json']) + PyJs_Object_3261_ = Js({u'isJSON':var.get(u'true')}) + return var.get(u'Converter').create(var.get(u'json'), PyJs_Object_3261_) + PyJs_anonymous_3260_._set_name(u'anonymous') + var.get(u'exports').put(u'fromJSON', PyJs_anonymous_3260_) + @Js + def PyJs_anonymous_3262_(base64, this, arguments, var=var): + var = Scope({u'this':this, u'base64':base64, u'arguments':arguments}, var) + var.registers([u'base64']) + PyJs_Object_3263_ = Js({u'isEncoded':var.get(u'true')}) + return var.get(u'Converter').create(var.get(u'base64'), PyJs_Object_3263_) + PyJs_anonymous_3262_._set_name(u'anonymous') + var.get(u'exports').put(u'fromBase64', PyJs_anonymous_3262_) + @Js + def PyJs_anonymous_3264_(comment, this, arguments, var=var): + var = Scope({u'comment':comment, u'this':this, u'arguments':arguments}, var) + var.registers([u'comment']) + var.put(u'comment', var.get(u'comment').callprop(u'replace', JsRegExp(u'/^\\/\\*/g'), Js(u'//')).callprop(u'replace', JsRegExp(u'/\\*\\/$/g'), Js(u''))) + PyJs_Object_3265_ = Js({u'isEncoded':var.get(u'true'),u'hasComment':var.get(u'true')}) + return var.get(u'Converter').create(var.get(u'comment'), PyJs_Object_3265_) + PyJs_anonymous_3264_._set_name(u'anonymous') + var.get(u'exports').put(u'fromComment', PyJs_anonymous_3264_) + @Js + def PyJs_anonymous_3266_(comment, dir, this, arguments, var=var): + var = Scope({u'comment':comment, u'this':this, u'arguments':arguments, u'dir':dir}, var) + var.registers([u'comment', u'dir']) + PyJs_Object_3267_ = Js({u'commentFileDir':var.get(u'dir'),u'isFileComment':var.get(u'true'),u'isJSON':var.get(u'true')}) + return var.get(u'Converter').create(var.get(u'comment'), PyJs_Object_3267_) + PyJs_anonymous_3266_._set_name(u'anonymous') + var.get(u'exports').put(u'fromMapFileComment', PyJs_anonymous_3266_) + @Js + def PyJs_anonymous_3268_(content, largeSource, this, arguments, var=var): + var = Scope({u'content':content, u'this':this, u'largeSource':largeSource, u'arguments':arguments}, var) + var.registers([u'content', u'res', u'm', u'largeSource']) + if var.get(u'largeSource'): + var.put(u'res', var.get(u'convertFromLargeSource')(var.get(u'content'))) + return (var.get(u'res') if var.get(u'res') else var.get(u"null")) + var.put(u'm', var.get(u'content').callprop(u'match', var.get(u'commentRx'))) + var.get(u'commentRx').put(u'lastIndex', Js(0.0)) + return (var.get(u'exports').callprop(u'fromComment', var.get(u'm').callprop(u'pop')) if var.get(u'm') else var.get(u"null")) + PyJs_anonymous_3268_._set_name(u'anonymous') + var.get(u'exports').put(u'fromSource', PyJs_anonymous_3268_) + @Js + def PyJs_anonymous_3269_(content, dir, this, arguments, var=var): + var = Scope({u'content':content, u'this':this, u'arguments':arguments, u'dir':dir}, var) + var.registers([u'content', u'm', u'dir']) + var.put(u'm', var.get(u'content').callprop(u'match', var.get(u'mapFileCommentRx'))) + var.get(u'mapFileCommentRx').put(u'lastIndex', Js(0.0)) + return (var.get(u'exports').callprop(u'fromMapFileComment', var.get(u'm').callprop(u'pop'), var.get(u'dir')) if var.get(u'm') else var.get(u"null")) + PyJs_anonymous_3269_._set_name(u'anonymous') + var.get(u'exports').put(u'fromMapFileSource', PyJs_anonymous_3269_) + @Js + def PyJs_anonymous_3270_(src, this, arguments, var=var): + var = Scope({u'this':this, u'src':src, u'arguments':arguments}, var) + var.registers([u'src']) + var.get(u'commentRx').put(u'lastIndex', Js(0.0)) + return var.get(u'src').callprop(u'replace', var.get(u'commentRx'), Js(u'')) + PyJs_anonymous_3270_._set_name(u'anonymous') + var.get(u'exports').put(u'removeComments', PyJs_anonymous_3270_) + @Js + def PyJs_anonymous_3271_(src, this, arguments, var=var): + var = Scope({u'this':this, u'src':src, u'arguments':arguments}, var) + var.registers([u'src']) + var.get(u'mapFileCommentRx').put(u'lastIndex', Js(0.0)) + return var.get(u'src').callprop(u'replace', var.get(u'mapFileCommentRx'), Js(u'')) + PyJs_anonymous_3271_._set_name(u'anonymous') + var.get(u'exports').put(u'removeMapFileComments', PyJs_anonymous_3271_) + @Js + def PyJs_anonymous_3272_(file, options, this, arguments, var=var): + var = Scope({u'this':this, u'options':options, u'file':file, u'arguments':arguments}, var) + var.registers([u'data', u'options', u'file']) + var.put(u'data', (Js(u'sourceMappingURL=')+var.get(u'file'))) + return (((Js(u'/*# ')+var.get(u'data'))+Js(u' */')) if (var.get(u'options') and var.get(u'options').get(u'multiline')) else (Js(u'//# ')+var.get(u'data'))) + PyJs_anonymous_3272_._set_name(u'anonymous') + var.get(u'exports').put(u'generateMapFileComment', PyJs_anonymous_3272_) + @Js + def PyJs_getCommentRegex_3274_(this, arguments, var=var): + var = Scope({u'this':this, u'getCommentRegex':PyJs_getCommentRegex_3274_, u'arguments':arguments}, var) + var.registers([]) + var.get(u'commentRx').put(u'lastIndex', Js(0.0)) + return var.get(u'commentRx') + PyJs_getCommentRegex_3274_._set_name(u'getCommentRegex') + PyJs_Object_3273_ = Js({u'get':PyJs_getCommentRegex_3274_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'commentRegex'), PyJs_Object_3273_) + @Js + def PyJs_getMapFileCommentRegex_3276_(this, arguments, var=var): + var = Scope({u'this':this, u'getMapFileCommentRegex':PyJs_getMapFileCommentRegex_3276_, u'arguments':arguments}, var) + var.registers([]) + var.get(u'mapFileCommentRx').put(u'lastIndex', Js(0.0)) + return var.get(u'mapFileCommentRx') + PyJs_getMapFileCommentRegex_3276_._set_name(u'getMapFileCommentRegex') + PyJs_Object_3275_ = Js({u'get':PyJs_getMapFileCommentRegex_3276_}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'exports'), Js(u'mapFileCommentRegex'), PyJs_Object_3275_) + PyJs_anonymous_3250_._set_name(u'anonymous') + PyJs_anonymous_3250_.callprop(u'call', var.get(u"this"), var.get(u'require')(Js(u'buffer')).get(u'Buffer')) +PyJs_anonymous_3249_._set_name(u'anonymous') +PyJs_Object_3277_ = Js({u'buffer':Js(525.0),u'fs':Js(523.0),u'path':Js(530.0)}) +@Js +def PyJs_anonymous_3278_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'load', u'exports', u'log', u'formatArgs', u'require', u'module', u'localstorage', u'useColors', u'save']) + @Js + def PyJsHoisted_load_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'r']) + pass + try: + var.put(u'r', var.get(u'exports').get(u'storage').get(u'debug')) + except PyJsException as PyJsTempException: + PyJsHolder_65_27913289 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + pass + finally: + if PyJsHolder_65_27913289 is not None: + var.own[u'e'] = PyJsHolder_65_27913289 + else: + del var.own[u'e'] + del PyJsHolder_65_27913289 + return var.get(u'r') + PyJsHoisted_load_.func_name = u'load' + var.put(u'load', PyJsHoisted_load_) + @Js + def PyJsHoisted_log_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return ((PyJsStrictEq(Js(u'object'),var.get(u'console',throw=False).typeof()) and var.get(u'console').get(u'log')) and var.get(u'Function').get(u'prototype').get(u'apply').callprop(u'call', var.get(u'console').get(u'log'), var.get(u'console'), var.get(u'arguments'))) + PyJsHoisted_log_.func_name = u'log' + var.put(u'log', PyJsHoisted_log_) + @Js + def PyJsHoisted_formatArgs_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'useColors', u'index', u'c', u'args', u'lastC']) + var.put(u'args', var.get(u'arguments')) + var.put(u'useColors', var.get(u"this").get(u'useColors')) + var.get(u'args').put(u'0', (((((((Js(u'%c') if var.get(u'useColors') else Js(u''))+var.get(u"this").get(u'namespace'))+(Js(u' %c') if var.get(u'useColors') else Js(u' ')))+var.get(u'args').get(u'0'))+(Js(u'%c ') if var.get(u'useColors') else Js(u' ')))+Js(u'+'))+var.get(u'exports').callprop(u'humanize', var.get(u"this").get(u'diff')))) + if var.get(u'useColors').neg(): + return var.get(u'args') + var.put(u'c', (Js(u'color: ')+var.get(u"this").get(u'color'))) + var.put(u'args', Js([var.get(u'args').get(u'0'), var.get(u'c'), Js(u'color: inherit')]).callprop(u'concat', var.get(u'Array').get(u'prototype').get(u'slice').callprop(u'call', var.get(u'args'), Js(1.0)))) + var.put(u'index', Js(0.0)) + var.put(u'lastC', Js(0.0)) + @Js + def PyJs_anonymous_3281_(match, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'match':match}, var) + var.registers([u'match']) + if PyJsStrictEq(Js(u'%%'),var.get(u'match')): + return var.get('undefined') + (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))-Js(1)) + if PyJsStrictEq(Js(u'%c'),var.get(u'match')): + var.put(u'lastC', var.get(u'index')) + PyJs_anonymous_3281_._set_name(u'anonymous') + var.get(u'args').get(u'0').callprop(u'replace', JsRegExp(u'/%[a-z%]/g'), PyJs_anonymous_3281_) + var.get(u'args').callprop(u'splice', var.get(u'lastC'), Js(0.0), var.get(u'c')) + return var.get(u'args') + PyJsHoisted_formatArgs_.func_name = u'formatArgs' + var.put(u'formatArgs', PyJsHoisted_formatArgs_) + @Js + def PyJsHoisted_localstorage_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + try: + return var.get(u'window').get(u'localStorage') + except PyJsException as PyJsTempException: + PyJsHolder_65_8009014 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + pass + finally: + if PyJsHolder_65_8009014 is not None: + var.own[u'e'] = PyJsHolder_65_8009014 + else: + del var.own[u'e'] + del PyJsHolder_65_8009014 + PyJsHoisted_localstorage_.func_name = u'localstorage' + var.put(u'localstorage', PyJsHoisted_localstorage_) + @Js + def PyJsHoisted_useColors_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + def PyJs_LONG_3279_(var=var): + return ((var.get(u'document').get(u'documentElement').get(u'style').contains(Js(u'WebkitAppearance')) or (var.get(u'window').get(u'console') and (var.get(u'console').get(u'firebug') or (var.get(u'console').get(u'exception') and var.get(u'console').get(u'table'))))) or (var.get(u'navigator').get(u'userAgent').callprop(u'toLowerCase').callprop(u'match', JsRegExp(u'/firefox\\/(\\d+)/')) and (var.get(u'parseInt')(var.get(u'RegExp').get(u'$1'), Js(10.0))>=Js(31.0)))) + return PyJs_LONG_3279_() + PyJsHoisted_useColors_.func_name = u'useColors' + var.put(u'useColors', PyJsHoisted_useColors_) + @Js + def PyJsHoisted_save_(namespaces, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'namespaces':namespaces}, var) + var.registers([u'namespaces']) + try: + if (var.get(u"null")==var.get(u'namespaces')): + var.get(u'exports').get(u'storage').callprop(u'removeItem', Js(u'debug')) + else: + var.get(u'exports').get(u'storage').put(u'debug', var.get(u'namespaces')) + except PyJsException as PyJsTempException: + PyJsHolder_65_85910939 = var.own.get(u'e') + var.force_own_put(u'e', PyExceptionToJs(PyJsTempException)) + try: + pass + finally: + if PyJsHolder_65_85910939 is not None: + var.own[u'e'] = PyJsHolder_65_85910939 + else: + del var.own[u'e'] + del PyJsHolder_65_85910939 + PyJsHoisted_save_.func_name = u'save' + var.put(u'save', PyJsHoisted_save_) + var.put(u'exports', var.get(u'module').put(u'exports', var.get(u'require')(Js(u'./debug')))) + var.get(u'exports').put(u'log', var.get(u'log')) + var.get(u'exports').put(u'formatArgs', var.get(u'formatArgs')) + var.get(u'exports').put(u'save', var.get(u'save')) + var.get(u'exports').put(u'load', var.get(u'load')) + var.get(u'exports').put(u'useColors', var.get(u'useColors')) + var.get(u'exports').put(u'storage', (var.get(u'chrome').get(u'storage').get(u'local') if ((Js(u'undefined')!=var.get(u'chrome',throw=False).typeof()) and (Js(u'undefined')!=var.get(u'chrome').get(u'storage').typeof())) else var.get(u'localstorage')())) + var.get(u'exports').put(u'colors', Js([Js(u'lightseagreen'), Js(u'forestgreen'), Js(u'goldenrod'), Js(u'dodgerblue'), Js(u'darkorchid'), Js(u'crimson')])) + pass + @Js + def PyJs_anonymous_3280_(v, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'v':v}, var) + var.registers([u'v']) + return var.get(u'JSON').callprop(u'stringify', var.get(u'v')) + PyJs_anonymous_3280_._set_name(u'anonymous') + var.get(u'exports').get(u'formatters').put(u'j', PyJs_anonymous_3280_) + pass + pass + pass + pass + var.get(u'exports').callprop(u'enable', var.get(u'load')()) + pass +PyJs_anonymous_3278_._set_name(u'anonymous') +PyJs_Object_3282_ = Js({u'./debug':Js(269.0)}) +@Js +def PyJs_anonymous_3283_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'enable', u'require', u'enabled', u'selectColor', u'coerce', u'disable', u'module', u'debug', u'prevColor', u'prevTime']) + @Js + def PyJsHoisted_enable_(namespaces, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'namespaces':namespaces}, var) + var.registers([u'i', u'namespaces', u'split', u'len']) + var.get(u'exports').callprop(u'save', var.get(u'namespaces')) + var.put(u'split', (var.get(u'namespaces') or Js(u'')).callprop(u'split', JsRegExp(u'/[\\s,]+/'))) + var.put(u'len', var.get(u'split').get(u'length')) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')var.get(u'maxUsed')) or (PyJsStrictEq(var.get(u'u'),var.get(u'maxUsed')) and (var.get(u'w')>var.get(u'maxWeight')))): + var.put(u'maxUsed', var.get(u'u')) + var.put(u'maxWeight', var.get(u'w')) + var.put(u'result', var.get(u'Number')(var.get(u'n'))) + return var.get(u'result') + PyJsHoisted_getMostUsed_.func_name = u'getMostUsed' + var.put(u'getMostUsed', PyJsHoisted_getMostUsed_) + Js(u'use strict') + var.put(u'repeating', var.get(u'require')(Js(u'repeating'))) + var.put(u'INDENT_RE', JsRegExp(u'/^(?:( )+|\\t+)/')) + pass + @Js + def PyJs_anonymous_3297_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'actual', u'tabs', u'amount', u'isIndent', u'current', u'indents', u'spaces', u'str', u'prev', u'type']) + if PyJsStrictNeq(var.get(u'str',throw=False).typeof(),Js(u'string')): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Expected a string'))) + raise PyJsTempException + var.put(u'tabs', Js(0.0)) + var.put(u'spaces', Js(0.0)) + var.put(u'prev', Js(0.0)) + PyJs_Object_3298_ = Js({}) + var.put(u'indents', PyJs_Object_3298_) + pass + pass + @Js + def PyJs_anonymous_3299_(line, this, arguments, var=var): + var = Scope({u'this':this, u'line':line, u'arguments':arguments}, var) + var.registers([u'matches', u'diff', u'line', u'indent']) + if var.get(u'line').neg(): + return var.get('undefined') + pass + var.put(u'matches', var.get(u'line').callprop(u'match', var.get(u'INDENT_RE'))) + if var.get(u'matches').neg(): + var.put(u'indent', Js(0.0)) + else: + var.put(u'indent', var.get(u'matches').get(u'0').get(u'length')) + if var.get(u'matches').get(u'1'): + (var.put(u'spaces',Js(var.get(u'spaces').to_number())+Js(1))-Js(1)) + else: + (var.put(u'tabs',Js(var.get(u'tabs').to_number())+Js(1))-Js(1)) + var.put(u'diff', (var.get(u'indent')-var.get(u'prev'))) + var.put(u'prev', var.get(u'indent')) + if var.get(u'diff'): + var.put(u'isIndent', (var.get(u'diff')>Js(0.0))) + var.put(u'current', var.get(u'indents').get((var.get(u'diff') if var.get(u'isIndent') else (-var.get(u'diff'))))) + if var.get(u'current'): + (var.get(u'current').put(u'0',Js(var.get(u'current').get(u'0').to_number())+Js(1))-Js(1)) + else: + var.put(u'current', var.get(u'indents').put(var.get(u'diff'), Js([Js(1.0), Js(0.0)]))) + else: + if var.get(u'current'): + var.get(u'current').put(u'1', var.get(u'Number')(var.get(u'isIndent')), u'+') + PyJs_anonymous_3299_._set_name(u'anonymous') + var.get(u'str').callprop(u'split', JsRegExp(u'/\\n/g')).callprop(u'forEach', PyJs_anonymous_3299_) + var.put(u'amount', var.get(u'getMostUsed')(var.get(u'indents'))) + pass + pass + if var.get(u'amount').neg(): + var.put(u'type', var.get(u"null")) + var.put(u'actual', Js(u'')) + else: + if (var.get(u'spaces')>=var.get(u'tabs')): + var.put(u'type', Js(u'space')) + var.put(u'actual', var.get(u'repeating')(Js(u' '), var.get(u'amount'))) + else: + var.put(u'type', Js(u'tab')) + var.put(u'actual', var.get(u'repeating')(Js(u'\t'), var.get(u'amount'))) + PyJs_Object_3300_ = Js({u'amount':var.get(u'amount'),u'type':var.get(u'type'),u'indent':var.get(u'actual')}) + return PyJs_Object_3300_ + PyJs_anonymous_3297_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_3297_) +PyJs_anonymous_3296_._set_name(u'anonymous') +PyJs_Object_3301_ = Js({u'repeating':Js(507.0)}) +@Js +def PyJs_anonymous_3302_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'matchOperatorsRe', u'require', u'exports', u'module']) + Js(u'use strict') + var.put(u'matchOperatorsRe', JsRegExp(u'/[|\\\\{}()[\\]^$+*?.]/g')) + @Js + def PyJs_anonymous_3303_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + if PyJsStrictNeq(var.get(u'str',throw=False).typeof(),Js(u'string')): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Expected a string'))) + raise PyJsTempException + return var.get(u'str').callprop(u'replace', var.get(u'matchOperatorsRe'), Js(u'\\$&')) + PyJs_anonymous_3303_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_3303_) +PyJs_anonymous_3302_._set_name(u'anonymous') +PyJs_Object_3304_ = Js({}) +@Js +def PyJs_anonymous_3305_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_3306_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'isIterationStatement', u'isProblematicIfStatement', u'trailingStatement', u'isExpression', u'isSourceElement', u'isStatement']) + @Js + def PyJsHoisted_isIterationStatement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if (var.get(u'node')==var.get(u"null")): + return Js(False) + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'DoWhileStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ForInStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ForStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'WhileStatement')): + SWITCHED = True + return var.get(u'true') + SWITCHED = True + break + return Js(False) + PyJsHoisted_isIterationStatement_.func_name = u'isIterationStatement' + var.put(u'isIterationStatement', PyJsHoisted_isIterationStatement_) + @Js + def PyJsHoisted_isProblematicIfStatement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'current', u'node']) + pass + if PyJsStrictNeq(var.get(u'node').get(u'type'),Js(u'IfStatement')): + return Js(False) + if (var.get(u'node').get(u'alternate')==var.get(u"null")): + return Js(False) + var.put(u'current', var.get(u'node').get(u'consequent')) + while 1: + if PyJsStrictEq(var.get(u'current').get(u'type'),Js(u'IfStatement')): + if (var.get(u'current').get(u'alternate')==var.get(u"null")): + return var.get(u'true') + var.put(u'current', var.get(u'trailingStatement')(var.get(u'current'))) + if not var.get(u'current'): + break + return Js(False) + PyJsHoisted_isProblematicIfStatement_.func_name = u'isProblematicIfStatement' + var.put(u'isProblematicIfStatement', PyJsHoisted_isProblematicIfStatement_) + @Js + def PyJsHoisted_trailingStatement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'IfStatement')): + SWITCHED = True + if (var.get(u'node').get(u'alternate')!=var.get(u"null")): + return var.get(u'node').get(u'alternate') + return var.get(u'node').get(u'consequent') + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'LabeledStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ForStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ForInStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'WhileStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'WithStatement')): + SWITCHED = True + return var.get(u'node').get(u'body') + SWITCHED = True + break + return var.get(u"null") + PyJsHoisted_trailingStatement_.func_name = u'trailingStatement' + var.put(u'trailingStatement', PyJsHoisted_trailingStatement_) + @Js + def PyJsHoisted_isExpression_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if (var.get(u'node')==var.get(u"null")): + return Js(False) + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ArrayExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'AssignmentExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'BinaryExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'CallExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ConditionalExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'FunctionExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'Identifier')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'Literal')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'LogicalExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'MemberExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'NewExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ObjectExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'SequenceExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ThisExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'UnaryExpression')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'UpdateExpression')): + SWITCHED = True + return var.get(u'true') + SWITCHED = True + break + return Js(False) + PyJsHoisted_isExpression_.func_name = u'isExpression' + var.put(u'isExpression', PyJsHoisted_isExpression_) + @Js + def PyJsHoisted_isSourceElement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + return (var.get(u'isStatement')(var.get(u'node')) or ((var.get(u'node')!=var.get(u"null")) and PyJsStrictEq(var.get(u'node').get(u'type'),Js(u'FunctionDeclaration')))) + PyJsHoisted_isSourceElement_.func_name = u'isSourceElement' + var.put(u'isSourceElement', PyJsHoisted_isSourceElement_) + @Js + def PyJsHoisted_isStatement_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + if (var.get(u'node')==var.get(u"null")): + return Js(False) + while 1: + SWITCHED = False + CONDITION = (var.get(u'node').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'BlockStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'BreakStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ContinueStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'DebuggerStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'DoWhileStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'EmptyStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ExpressionStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ForInStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ForStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'IfStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'LabeledStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ReturnStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'SwitchStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ThrowStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'TryStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'VariableDeclaration')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'WhileStatement')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'WithStatement')): + SWITCHED = True + return var.get(u'true') + SWITCHED = True + break + return Js(False) + PyJsHoisted_isStatement_.func_name = u'isStatement' + var.put(u'isStatement', PyJsHoisted_isStatement_) + Js(u'use strict') + pass + pass + pass + pass + pass + pass + PyJs_Object_3307_ = Js({u'isExpression':var.get(u'isExpression'),u'isStatement':var.get(u'isStatement'),u'isIterationStatement':var.get(u'isIterationStatement'),u'isSourceElement':var.get(u'isSourceElement'),u'isProblematicIfStatement':var.get(u'isProblematicIfStatement'),u'trailingStatement':var.get(u'trailingStatement')}) + var.get(u'module').put(u'exports', PyJs_Object_3307_) + PyJs_anonymous_3306_._set_name(u'anonymous') + PyJs_anonymous_3306_() +PyJs_anonymous_3305_._set_name(u'anonymous') +PyJs_Object_3308_ = Js({}) +@Js +def PyJs_anonymous_3309_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_3310_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'isIdentifierPartES6', u'NON_ASCII_WHITESPACES', u'isIdentifierStartES5', u'fromCodePoint', u'IDENTIFIER_START', u'ES6Regex', u'ES5Regex', u'isHexDigit', u'ch', u'IDENTIFIER_PART', u'isLineTerminator', u'isDecimalDigit', u'isIdentifierStartES6', u'isIdentifierPartES5', u'isOctalDigit', u'isWhiteSpace']) + @Js + def PyJsHoisted_isIdentifierPartES6_(ch, this, arguments, var=var): + var = Scope({u'this':this, u'ch':ch, u'arguments':arguments}, var) + var.registers([u'ch']) + return (var.get(u'IDENTIFIER_PART').get(var.get(u'ch')) if (var.get(u'ch')=Js(48)) and (var.get(u'ch')<=Js(55))) + PyJsHoisted_isOctalDigit_.func_name = u'isOctalDigit' + var.put(u'isOctalDigit', PyJsHoisted_isOctalDigit_) + @Js + def PyJsHoisted_isLineTerminator_(ch, this, arguments, var=var): + var = Scope({u'this':this, u'ch':ch, u'arguments':arguments}, var) + var.registers([u'ch']) + return (((PyJsStrictEq(var.get(u'ch'),Js(10)) or PyJsStrictEq(var.get(u'ch'),Js(13))) or PyJsStrictEq(var.get(u'ch'),Js(8232))) or PyJsStrictEq(var.get(u'ch'),Js(8233))) + PyJsHoisted_isLineTerminator_.func_name = u'isLineTerminator' + var.put(u'isLineTerminator', PyJsHoisted_isLineTerminator_) + @Js + def PyJsHoisted_isDecimalDigit_(ch, this, arguments, var=var): + var = Scope({u'this':this, u'ch':ch, u'arguments':arguments}, var) + var.registers([u'ch']) + return ((Js(48)<=var.get(u'ch')) and (var.get(u'ch')<=Js(57))) + PyJsHoisted_isDecimalDigit_.func_name = u'isDecimalDigit' + var.put(u'isDecimalDigit', PyJsHoisted_isDecimalDigit_) + @Js + def PyJsHoisted_isIdentifierStartES6_(ch, this, arguments, var=var): + var = Scope({u'this':this, u'ch':ch, u'arguments':arguments}, var) + var.registers([u'ch']) + return (var.get(u'IDENTIFIER_START').get(var.get(u'ch')) if (var.get(u'ch')=Js(5760)) and (var.get(u'NON_ASCII_WHITESPACES').callprop(u'indexOf', var.get(u'ch'))>=Js(0.0)))) + PyJsHoisted_isWhiteSpace_.func_name = u'isWhiteSpace' + var.put(u'isWhiteSpace', PyJsHoisted_isWhiteSpace_) + Js(u'use strict') + pass + PyJs_Object_3311_ = Js({u'NonAsciiIdentifierStart':JsRegExp(u'/[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/'),u'NonAsciiIdentifierPart':JsRegExp(u'/[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/')}) + var.put(u'ES5Regex', PyJs_Object_3311_) + PyJs_Object_3312_ = Js({u'NonAsciiIdentifierStart':JsRegExp(u'/[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF98]|\\uD809[\\uDC00-\\uDC6E]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D]|\\uD87E[\\uDC00-\\uDE1D]/'),u'NonAsciiIdentifierPart':JsRegExp(u'/[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDD0-\\uDDDA\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF01-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF98]|\\uD809[\\uDC00-\\uDC6E]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/')}) + var.put(u'ES6Regex', PyJs_Object_3312_) + pass + pass + pass + var.put(u'NON_ASCII_WHITESPACES', Js([Js(5760), Js(6158), Js(8192), Js(8193), Js(8194), Js(8195), Js(8196), Js(8197), Js(8198), Js(8199), Js(8200), Js(8201), Js(8202), Js(8239), Js(8287), Js(12288), Js(65279)])) + pass + pass + pass + var.put(u'IDENTIFIER_START', var.get(u'Array').create(Js(128))) + #for JS loop + var.put(u'ch', Js(0.0)) + while (var.get(u'ch')=Js(97)) and (var.get(u'ch')<=Js(122))) or ((var.get(u'ch')>=Js(65)) and (var.get(u'ch')<=Js(90)))) or PyJsStrictEq(var.get(u'ch'),Js(36))) or PyJsStrictEq(var.get(u'ch'),Js(95)))) + finally: + var.put(u'ch',Js(var.get(u'ch').to_number())+Js(1)) + var.put(u'IDENTIFIER_PART', var.get(u'Array').create(Js(128))) + #for JS loop + var.put(u'ch', Js(0.0)) + while (var.get(u'ch')=Js(97)) and (var.get(u'ch')<=Js(122))) or ((var.get(u'ch')>=Js(65)) and (var.get(u'ch')<=Js(90)))) or ((var.get(u'ch')>=Js(48)) and (var.get(u'ch')<=Js(57)))) or PyJsStrictEq(var.get(u'ch'),Js(36))) or PyJsStrictEq(var.get(u'ch'),Js(95)))) + finally: + var.put(u'ch',Js(var.get(u'ch').to_number())+Js(1)) + pass + pass + pass + pass + PyJs_Object_3313_ = Js({u'isDecimalDigit':var.get(u'isDecimalDigit'),u'isHexDigit':var.get(u'isHexDigit'),u'isOctalDigit':var.get(u'isOctalDigit'),u'isWhiteSpace':var.get(u'isWhiteSpace'),u'isLineTerminator':var.get(u'isLineTerminator'),u'isIdentifierStartES5':var.get(u'isIdentifierStartES5'),u'isIdentifierPartES5':var.get(u'isIdentifierPartES5'),u'isIdentifierStartES6':var.get(u'isIdentifierStartES6'),u'isIdentifierPartES6':var.get(u'isIdentifierPartES6')}) + var.get(u'module').put(u'exports', PyJs_Object_3313_) + PyJs_anonymous_3310_._set_name(u'anonymous') + PyJs_anonymous_3310_() +PyJs_anonymous_3309_._set_name(u'anonymous') +PyJs_Object_3314_ = Js({}) +@Js +def PyJs_anonymous_3315_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_3316_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'isKeywordES6', u'isKeywordES5', u'code', u'isIdentifierNameES6', u'decodeUtf16', u'isIdentifierNameES5', u'isIdentifierES5', u'isIdentifierES6', u'isReservedWordES5', u'isReservedWordES6', u'isRestrictedWord', u'isStrictModeReservedWordES6']) + @Js + def PyJsHoisted_isKeywordES6_(id, strict, this, arguments, var=var): + var = Scope({u'this':this, u'strict':strict, u'id':id, u'arguments':arguments}, var) + var.registers([u'strict', u'id']) + if (var.get(u'strict') and var.get(u'isStrictModeReservedWordES6')(var.get(u'id'))): + return var.get(u'true') + while 1: + SWITCHED = False + CONDITION = (var.get(u'id').get(u'length')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(2.0)): + SWITCHED = True + return ((PyJsStrictEq(var.get(u'id'),Js(u'if')) or PyJsStrictEq(var.get(u'id'),Js(u'in'))) or PyJsStrictEq(var.get(u'id'),Js(u'do'))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(3.0)): + SWITCHED = True + return (((PyJsStrictEq(var.get(u'id'),Js(u'var')) or PyJsStrictEq(var.get(u'id'),Js(u'for'))) or PyJsStrictEq(var.get(u'id'),Js(u'new'))) or PyJsStrictEq(var.get(u'id'),Js(u'try'))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(4.0)): + SWITCHED = True + return (((((PyJsStrictEq(var.get(u'id'),Js(u'this')) or PyJsStrictEq(var.get(u'id'),Js(u'else'))) or PyJsStrictEq(var.get(u'id'),Js(u'case'))) or PyJsStrictEq(var.get(u'id'),Js(u'void'))) or PyJsStrictEq(var.get(u'id'),Js(u'with'))) or PyJsStrictEq(var.get(u'id'),Js(u'enum'))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(5.0)): + SWITCHED = True + return (((((((PyJsStrictEq(var.get(u'id'),Js(u'while')) or PyJsStrictEq(var.get(u'id'),Js(u'break'))) or PyJsStrictEq(var.get(u'id'),Js(u'catch'))) or PyJsStrictEq(var.get(u'id'),Js(u'throw'))) or PyJsStrictEq(var.get(u'id'),Js(u'const'))) or PyJsStrictEq(var.get(u'id'),Js(u'yield'))) or PyJsStrictEq(var.get(u'id'),Js(u'class'))) or PyJsStrictEq(var.get(u'id'),Js(u'super'))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(6.0)): + SWITCHED = True + return (((((PyJsStrictEq(var.get(u'id'),Js(u'return')) or PyJsStrictEq(var.get(u'id'),Js(u'typeof'))) or PyJsStrictEq(var.get(u'id'),Js(u'delete'))) or PyJsStrictEq(var.get(u'id'),Js(u'switch'))) or PyJsStrictEq(var.get(u'id'),Js(u'export'))) or PyJsStrictEq(var.get(u'id'),Js(u'import'))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(7.0)): + SWITCHED = True + return ((PyJsStrictEq(var.get(u'id'),Js(u'default')) or PyJsStrictEq(var.get(u'id'),Js(u'finally'))) or PyJsStrictEq(var.get(u'id'),Js(u'extends'))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(8.0)): + SWITCHED = True + return ((PyJsStrictEq(var.get(u'id'),Js(u'function')) or PyJsStrictEq(var.get(u'id'),Js(u'continue'))) or PyJsStrictEq(var.get(u'id'),Js(u'debugger'))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(10.0)): + SWITCHED = True + return PyJsStrictEq(var.get(u'id'),Js(u'instanceof')) + if True: + SWITCHED = True + return Js(False) + SWITCHED = True + break + PyJsHoisted_isKeywordES6_.func_name = u'isKeywordES6' + var.put(u'isKeywordES6', PyJsHoisted_isKeywordES6_) + @Js + def PyJsHoisted_isKeywordES5_(id, strict, this, arguments, var=var): + var = Scope({u'this':this, u'strict':strict, u'id':id, u'arguments':arguments}, var) + var.registers([u'strict', u'id']) + if (var.get(u'strict').neg() and PyJsStrictEq(var.get(u'id'),Js(u'yield'))): + return Js(False) + return var.get(u'isKeywordES6')(var.get(u'id'), var.get(u'strict')) + PyJsHoisted_isKeywordES5_.func_name = u'isKeywordES5' + var.put(u'isKeywordES5', PyJsHoisted_isKeywordES5_) + @Js + def PyJsHoisted_isIdentifierNameES6_(id, this, arguments, var=var): + var = Scope({u'this':this, u'id':id, u'arguments':arguments}, var) + var.registers([u'ch', u'i', u'lowCh', u'id', u'iz', u'check']) + pass + if PyJsStrictEq(var.get(u'id').get(u'length'),Js(0.0)): + return Js(False) + var.put(u'check', var.get(u'code').get(u'isIdentifierStartES6')) + #for JS loop + PyJsComma(var.put(u'i', Js(0.0)),var.put(u'iz', var.get(u'id').get(u'length'))) + while (var.get(u'i')=var.get(u'iz')): + return Js(False) + var.put(u'lowCh', var.get(u'id').callprop(u'charCodeAt', var.get(u'i'))) + if ((Js(56320)<=var.get(u'lowCh')) and (var.get(u'lowCh')<=Js(57343))).neg(): + return Js(False) + var.put(u'ch', var.get(u'decodeUtf16')(var.get(u'ch'), var.get(u'lowCh'))) + if var.get(u'check')(var.get(u'ch')).neg(): + return Js(False) + var.put(u'check', var.get(u'code').get(u'isIdentifierPartES6')) + finally: + var.put(u'i',Js(var.get(u'i').to_number())+Js(1)) + return var.get(u'true') + PyJsHoisted_isIdentifierNameES6_.func_name = u'isIdentifierNameES6' + var.put(u'isIdentifierNameES6', PyJsHoisted_isIdentifierNameES6_) + @Js + def PyJsHoisted_decodeUtf16_(lead, trail, this, arguments, var=var): + var = Scope({u'this':this, u'trail':trail, u'arguments':arguments, u'lead':lead}, var) + var.registers([u'trail', u'lead']) + return ((((var.get(u'lead')-Js(55296))*Js(1024))+(var.get(u'trail')-Js(56320)))+Js(65536)) + PyJsHoisted_decodeUtf16_.func_name = u'decodeUtf16' + var.put(u'decodeUtf16', PyJsHoisted_decodeUtf16_) + @Js + def PyJsHoisted_isIdentifierNameES5_(id, this, arguments, var=var): + var = Scope({u'this':this, u'id':id, u'arguments':arguments}, var) + var.registers([u'i', u'ch', u'iz', u'id']) + pass + if PyJsStrictEq(var.get(u'id').get(u'length'),Js(0.0)): + return Js(False) + var.put(u'ch', var.get(u'id').callprop(u'charCodeAt', Js(0.0))) + if var.get(u'code').callprop(u'isIdentifierStartES5', var.get(u'ch')).neg(): + return Js(False) + #for JS loop + PyJsComma(var.put(u'i', Js(1.0)),var.put(u'iz', var.get(u'id').get(u'length'))) + while (var.get(u'i')!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]{1,6}\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g')) + PyJs_LONG_3369_() + @Js + def PyJs_anonymous_3370_(match, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'match':match}, var) + var.registers([u'token', u'match']) + PyJs_Object_3371_ = Js({u'type':Js(u'invalid'),u'value':var.get(u'match').get(u'0')}) + var.put(u'token', PyJs_Object_3371_) + if var.get(u'match').get(u'1'): + PyJsComma(var.get(u'token').put(u'type', Js(u'string')),var.get(u'token').put(u'closed', (var.get(u'match').get(u'3') or var.get(u'match').get(u'4')).neg().neg())) + else: + if var.get(u'match').get(u'5'): + var.get(u'token').put(u'type', Js(u'comment')) + else: + if var.get(u'match').get(u'6'): + PyJsComma(var.get(u'token').put(u'type', Js(u'comment')),var.get(u'token').put(u'closed', var.get(u'match').get(u'7').neg().neg())) + else: + if var.get(u'match').get(u'8'): + var.get(u'token').put(u'type', Js(u'regex')) + else: + if var.get(u'match').get(u'9'): + var.get(u'token').put(u'type', Js(u'number')) + else: + if var.get(u'match').get(u'10'): + var.get(u'token').put(u'type', Js(u'name')) + else: + if var.get(u'match').get(u'11'): + var.get(u'token').put(u'type', Js(u'punctuator')) + else: + if var.get(u'match').get(u'12'): + var.get(u'token').put(u'type', Js(u'whitespace')) + return var.get(u'token') + PyJs_anonymous_3370_._set_name(u'anonymous') + var.get(u'module').get(u'exports').put(u'matchToToken', PyJs_anonymous_3370_) +PyJs_anonymous_3368_._set_name(u'anonymous') +PyJs_Object_3372_ = Js({}) +@Js +def PyJs_anonymous_3373_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_3374_ = Js({}) + @Js + def PyJs_anonymous_3375_(PyJsArg_676c6f62616c_, this, arguments, var=var): + var = Scope({u'this':this, u'global':PyJsArg_676c6f62616c_, u'arguments':arguments}, var) + var.registers([u'global']) + pass + @Js + def PyJs_anonymous_3376_(root, this, arguments, var=var): + var = Scope({u'this':this, u'root':root, u'arguments':arguments}, var) + var.registers([u'singleEscapes', u'freeModule', u'freeGlobal', u'freeExports', u'isFunction', u'forOwn', u'toString', u'regexSingleEscape', u'jsesc', u'isSet', u'isArray', u'extend', u'object', u'hasOwnProperty', u'isNumber', u'isObject', u'regexDigit', u'isString', u'isMap', u'root', u'regexWhitelist', u'forEach']) + var.put(u'freeExports', ((var.get(u'exports',throw=False).typeof()==Js(u'object')) and var.get(u'exports'))) + var.put(u'freeModule', ((((var.get(u'module',throw=False).typeof()==Js(u'object')) and var.get(u'module')) and (var.get(u'module').get(u'exports')==var.get(u'freeExports'))) and var.get(u'module'))) + var.put(u'freeGlobal', ((var.get(u'global',throw=False).typeof()==Js(u'object')) and var.get(u'global'))) + if (PyJsStrictEq(var.get(u'freeGlobal').get(u'global'),var.get(u'freeGlobal')) or PyJsStrictEq(var.get(u'freeGlobal').get(u'window'),var.get(u'freeGlobal'))): + var.put(u'root', var.get(u'freeGlobal')) + PyJs_Object_3377_ = Js({}) + var.put(u'object', PyJs_Object_3377_) + var.put(u'hasOwnProperty', var.get(u'object').get(u'hasOwnProperty')) + @Js + def PyJs_anonymous_3378_(object, callback, this, arguments, var=var): + var = Scope({u'this':this, u'callback':callback, u'object':object, u'arguments':arguments}, var) + var.registers([u'callback', u'object', u'key']) + pass + for PyJsTemp in var.get(u'object'): + var.put(u'key', PyJsTemp) + if var.get(u'hasOwnProperty').callprop(u'call', var.get(u'object'), var.get(u'key')): + var.get(u'callback')(var.get(u'key'), var.get(u'object').get(var.get(u'key'))) + PyJs_anonymous_3378_._set_name(u'anonymous') + var.put(u'forOwn', PyJs_anonymous_3378_) + @Js + def PyJs_anonymous_3379_(destination, source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'destination':destination, u'arguments':arguments}, var) + var.registers([u'source', u'destination']) + if var.get(u'source').neg(): + return var.get(u'destination') + @Js + def PyJs_anonymous_3380_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'value', u'key']) + var.get(u'destination').put(var.get(u'key'), var.get(u'value')) + PyJs_anonymous_3380_._set_name(u'anonymous') + var.get(u'forOwn')(var.get(u'source'), PyJs_anonymous_3380_) + return var.get(u'destination') + PyJs_anonymous_3379_._set_name(u'anonymous') + var.put(u'extend', PyJs_anonymous_3379_) + @Js + def PyJs_anonymous_3381_(array, callback, this, arguments, var=var): + var = Scope({u'this':this, u'callback':callback, u'array':array, u'arguments':arguments}, var) + var.registers([u'index', u'length', u'array', u'callback']) + var.put(u'length', var.get(u'array').get(u'length')) + var.put(u'index', (-Js(1.0))) + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))=Js(55296)) and (var.get(u'first')<=Js(56319))) and (var.get(u'length')>(var.get(u'index')+Js(1.0)))): + var.put(u'second', var.get(u'string').callprop(u'charCodeAt', (var.get(u'index')+Js(1.0)))) + if ((var.get(u'second')>=Js(56320)) and (var.get(u'second')<=Js(57343))): + var.put(u'codePoint', (((((var.get(u'first')-Js(55296))*Js(1024))+var.get(u'second'))-Js(56320))+Js(65536))) + var.put(u'hexadecimal', var.get(u'codePoint').callprop(u'toString', Js(16.0))) + if var.get(u'lowercaseHex').neg(): + var.put(u'hexadecimal', var.get(u'hexadecimal').callprop(u'toUpperCase')) + var.put(u'result', ((Js(u'\\u{')+var.get(u'hexadecimal'))+Js(u'}')), u'+') + (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))-Js(1)) + continue + if var.get(u'options').get(u'escapeEverything').neg(): + if var.get(u'regexWhitelist').callprop(u'test', var.get(u'character')): + var.put(u'result', var.get(u'character'), u'+') + continue + if (var.get(u'character')==Js(u'"')): + var.put(u'result', (Js(u'\\"') if (var.get(u'quote')==var.get(u'character')) else var.get(u'character')), u'+') + continue + if (var.get(u'character')==Js(u"'")): + var.put(u'result', (Js(u"\\'") if (var.get(u'quote')==var.get(u'character')) else var.get(u'character')), u'+') + continue + if (((var.get(u'character')==Js(u'\x00')) and var.get(u'json').neg()) and var.get(u'regexDigit').callprop(u'test', var.get(u'string').callprop(u'charAt', (var.get(u'index')+Js(1.0)))).neg()): + var.put(u'result', Js(u'\\0'), u'+') + continue + if var.get(u'regexSingleEscape').callprop(u'test', var.get(u'character')): + var.put(u'result', var.get(u'singleEscapes').get(var.get(u'character')), u'+') + continue + var.put(u'charCode', var.get(u'character').callprop(u'charCodeAt', Js(0.0))) + var.put(u'hexadecimal', var.get(u'charCode').callprop(u'toString', Js(16.0))) + if var.get(u'lowercaseHex').neg(): + var.put(u'hexadecimal', var.get(u'hexadecimal').callprop(u'toUpperCase')) + var.put(u'longhand', ((var.get(u'hexadecimal').get(u'length')>Js(2.0)) or var.get(u'json'))) + var.put(u'escaped', ((Js(u'\\')+(Js(u'u') if var.get(u'longhand') else Js(u'x')))+(Js(u'0000')+var.get(u'hexadecimal')).callprop(u'slice', ((-Js(4.0)) if var.get(u'longhand') else (-Js(2.0)))))) + var.put(u'result', var.get(u'escaped'), u'+') + continue + if var.get(u'options').get(u'wrap'): + var.put(u'result', ((var.get(u'quote')+var.get(u'result'))+var.get(u'quote'))) + if var.get(u'options').get(u'escapeEtago'): + return var.get(u'result').callprop(u'replace', JsRegExp(u'/<\\/(script|style)/gi'), Js(u'<\\/$1')) + return var.get(u'result') + PyJs_anonymous_3390_._set_name(u'anonymous') + var.put(u'jsesc', PyJs_anonymous_3390_) + var.get(u'jsesc').put(u'version', Js(u'1.3.0')) + if (((var.get(u'define',throw=False).typeof()==Js(u'function')) and (var.get(u'define').get(u'amd').typeof()==Js(u'object'))) and var.get(u'define').get(u'amd')): + @Js + def PyJs_anonymous_3394_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'jsesc') + PyJs_anonymous_3394_._set_name(u'anonymous') + var.get(u'define')(PyJs_anonymous_3394_) + else: + if (var.get(u'freeExports') and var.get(u'freeExports').get(u'nodeType').neg()): + if var.get(u'freeModule'): + var.get(u'freeModule').put(u'exports', var.get(u'jsesc')) + else: + var.get(u'freeExports').put(u'jsesc', var.get(u'jsesc')) + else: + var.get(u'root').put(u'jsesc', var.get(u'jsesc')) + PyJs_anonymous_3376_._set_name(u'anonymous') + PyJs_anonymous_3376_(var.get(u"this")) + PyJs_anonymous_3375_._set_name(u'anonymous') + PyJs_anonymous_3375_.callprop(u'call', var.get(u"this"), (var.get(u'global') if PyJsStrictNeq(var.get(u'global',throw=False).typeof(),Js(u'undefined')) else (var.get(u'self') if PyJsStrictNeq(var.get(u'self',throw=False).typeof(),Js(u'undefined')) else (var.get(u'window') if PyJsStrictNeq(var.get(u'window',throw=False).typeof(),Js(u'undefined')) else PyJs_Object_3374_)))) +PyJs_anonymous_3373_._set_name(u'anonymous') +PyJs_Object_3395_ = Js({}) +@Js +def PyJs_anonymous_3396_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'JSON5', u'exports', u'require', u'module']) + PyJs_Object_3397_ = Js({}) + var.put(u'JSON5', (var.get(u'exports') if PyJsStrictEq(var.get(u'exports',throw=False).typeof(),Js(u'object')) else PyJs_Object_3397_)) + @Js + def PyJs_anonymous_3398_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'comment', u'ch', u'text', u'number', u'escapee', u'at', u'array', u'inlineComment', u'next', u'white', u'peek', u'string', u'blockComment', u'object', u'ws', u'lineNumber', u'columnNumber', u'word', u'value', u'error', u'identifier', u'renderChar']) + Js(u'use strict') + PyJs_Object_3399_ = Js({u"'":Js(u"'"),u'"':Js(u'"'),u'\\':Js(u'\\'),u'/':Js(u'/'),u'\n':Js(u''),u'b':Js(u'\x08'),u'f':Js(u'\x0c'),u'n':Js(u'\n'),u'r':Js(u'\r'),u't':Js(u'\t')}) + var.put(u'escapee', PyJs_Object_3399_) + var.put(u'ws', Js([Js(u' '), Js(u'\t'), Js(u'\r'), Js(u'\n'), Js(u'\x0b'), Js(u'\x0c'), Js(u'\xa0'), Js(u'\ufeff')])) + @Js + def PyJs_anonymous_3400_(chr, this, arguments, var=var): + var = Scope({u'this':this, u'chr':chr, u'arguments':arguments}, var) + var.registers([u'chr']) + return (Js(u'EOF') if PyJsStrictEq(var.get(u'chr'),Js(u'')) else ((Js(u"'")+var.get(u'chr'))+Js(u"'"))) + PyJs_anonymous_3400_._set_name(u'anonymous') + var.put(u'renderChar', PyJs_anonymous_3400_) + @Js + def PyJs_anonymous_3401_(m, this, arguments, var=var): + var = Scope({u'this':this, u'm':m, u'arguments':arguments}, var) + var.registers([u'm', u'error']) + var.put(u'error', var.get(u'SyntaxError').create()) + var.get(u'error').put(u'message', ((((((var.get(u'm')+Js(u' at line '))+var.get(u'lineNumber'))+Js(u' column '))+var.get(u'columnNumber'))+Js(u' of the JSON5 data. Still to read: '))+var.get(u'JSON').callprop(u'stringify', var.get(u'text').callprop(u'substring', (var.get(u'at')-Js(1.0)), (var.get(u'at')+Js(19.0)))))) + var.get(u'error').put(u'at', var.get(u'at')) + var.get(u'error').put(u'lineNumber', var.get(u'lineNumber')) + var.get(u'error').put(u'columnNumber', var.get(u'columnNumber')) + PyJsTempException = JsToPyException(var.get(u'error')) + raise PyJsTempException + PyJs_anonymous_3401_._set_name(u'anonymous') + var.put(u'error', PyJs_anonymous_3401_) + @Js + def PyJs_anonymous_3402_(c, this, arguments, var=var): + var = Scope({u'this':this, u'c':c, u'arguments':arguments}, var) + var.registers([u'c']) + if (var.get(u'c') and PyJsStrictNeq(var.get(u'c'),var.get(u'ch'))): + var.get(u'error')((((Js(u'Expected ')+var.get(u'renderChar')(var.get(u'c')))+Js(u' instead of '))+var.get(u'renderChar')(var.get(u'ch')))) + var.put(u'ch', var.get(u'text').callprop(u'charAt', var.get(u'at'))) + (var.put(u'at',Js(var.get(u'at').to_number())+Js(1))-Js(1)) + (var.put(u'columnNumber',Js(var.get(u'columnNumber').to_number())+Js(1))-Js(1)) + if (PyJsStrictEq(var.get(u'ch'),Js(u'\n')) or (PyJsStrictEq(var.get(u'ch'),Js(u'\r')) and PyJsStrictNeq(var.get(u'peek')(),Js(u'\n')))): + (var.put(u'lineNumber',Js(var.get(u'lineNumber').to_number())+Js(1))-Js(1)) + var.put(u'columnNumber', Js(0.0)) + return var.get(u'ch') + PyJs_anonymous_3402_._set_name(u'anonymous') + var.put(u'next', PyJs_anonymous_3402_) + @Js + def PyJs_anonymous_3403_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'text').callprop(u'charAt', var.get(u'at')) + PyJs_anonymous_3403_._set_name(u'anonymous') + var.put(u'peek', PyJs_anonymous_3403_) + @Js + def PyJs_anonymous_3404_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'key']) + var.put(u'key', var.get(u'ch')) + if (((PyJsStrictNeq(var.get(u'ch'),Js(u'_')) and PyJsStrictNeq(var.get(u'ch'),Js(u'$'))) and ((var.get(u'ch')Js(u'z')))) and ((var.get(u'ch')Js(u'Z')))): + var.get(u'error')(Js(u'Bad identifier as unquoted key')) + while (var.get(u'next')() and ((((PyJsStrictEq(var.get(u'ch'),Js(u'_')) or PyJsStrictEq(var.get(u'ch'),Js(u'$'))) or ((var.get(u'ch')>=Js(u'a')) and (var.get(u'ch')<=Js(u'z')))) or ((var.get(u'ch')>=Js(u'A')) and (var.get(u'ch')<=Js(u'Z')))) or ((var.get(u'ch')>=Js(u'0')) and (var.get(u'ch')<=Js(u'9'))))): + var.put(u'key', var.get(u'ch'), u'+') + return var.get(u'key') + PyJs_anonymous_3404_._set_name(u'anonymous') + var.put(u'identifier', PyJs_anonymous_3404_) + @Js + def PyJs_anonymous_3405_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'base', u'number', u'string', u'sign']) + var.put(u'sign', Js(u'')) + var.put(u'string', Js(u'')) + var.put(u'base', Js(10.0)) + if (PyJsStrictEq(var.get(u'ch'),Js(u'-')) or PyJsStrictEq(var.get(u'ch'),Js(u'+'))): + var.put(u'sign', var.get(u'ch')) + var.get(u'next')(var.get(u'ch')) + if PyJsStrictEq(var.get(u'ch'),Js(u'I')): + var.put(u'number', var.get(u'word')()) + if (PyJsStrictNeq(var.get(u'number',throw=False).typeof(),Js(u'number')) or var.get(u'isNaN')(var.get(u'number'))): + var.get(u'error')(Js(u'Unexpected word for number')) + return ((-var.get(u'number')) if PyJsStrictEq(var.get(u'sign'),Js(u'-')) else var.get(u'number')) + if PyJsStrictEq(var.get(u'ch'),Js(u'N')): + var.put(u'number', var.get(u'word')()) + if var.get(u'isNaN')(var.get(u'number')).neg(): + var.get(u'error')(Js(u'expected word to be NaN')) + return var.get(u'number') + if PyJsStrictEq(var.get(u'ch'),Js(u'0')): + var.put(u'string', var.get(u'ch'), u'+') + var.get(u'next')() + if (PyJsStrictEq(var.get(u'ch'),Js(u'x')) or PyJsStrictEq(var.get(u'ch'),Js(u'X'))): + var.put(u'string', var.get(u'ch'), u'+') + var.get(u'next')() + var.put(u'base', Js(16.0)) + else: + if ((var.get(u'ch')>=Js(u'0')) and (var.get(u'ch')<=Js(u'9'))): + var.get(u'error')(Js(u'Octal literal')) + while 1: + SWITCHED = False + CONDITION = (var.get(u'base')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(10.0)): + SWITCHED = True + while ((var.get(u'ch')>=Js(u'0')) and (var.get(u'ch')<=Js(u'9'))): + var.put(u'string', var.get(u'ch'), u'+') + var.get(u'next')() + if PyJsStrictEq(var.get(u'ch'),Js(u'.')): + var.put(u'string', Js(u'.'), u'+') + while ((var.get(u'next')() and (var.get(u'ch')>=Js(u'0'))) and (var.get(u'ch')<=Js(u'9'))): + var.put(u'string', var.get(u'ch'), u'+') + if (PyJsStrictEq(var.get(u'ch'),Js(u'e')) or PyJsStrictEq(var.get(u'ch'),Js(u'E'))): + var.put(u'string', var.get(u'ch'), u'+') + var.get(u'next')() + if (PyJsStrictEq(var.get(u'ch'),Js(u'-')) or PyJsStrictEq(var.get(u'ch'),Js(u'+'))): + var.put(u'string', var.get(u'ch'), u'+') + var.get(u'next')() + while ((var.get(u'ch')>=Js(u'0')) and (var.get(u'ch')<=Js(u'9'))): + var.put(u'string', var.get(u'ch'), u'+') + var.get(u'next')() + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(16.0)): + SWITCHED = True + while ((((var.get(u'ch')>=Js(u'0')) and (var.get(u'ch')<=Js(u'9'))) or ((var.get(u'ch')>=Js(u'A')) and (var.get(u'ch')<=Js(u'F')))) or ((var.get(u'ch')>=Js(u'a')) and (var.get(u'ch')<=Js(u'f')))): + var.put(u'string', var.get(u'ch'), u'+') + var.get(u'next')() + break + SWITCHED = True + break + if PyJsStrictEq(var.get(u'sign'),Js(u'-')): + var.put(u'number', (-var.get(u'string'))) + else: + var.put(u'number', (+var.get(u'string'))) + if var.get(u'isFinite')(var.get(u'number')).neg(): + var.get(u'error')(Js(u'Bad number')) + else: + return var.get(u'number') + PyJs_anonymous_3405_._set_name(u'anonymous') + var.put(u'number', PyJs_anonymous_3405_) + @Js + def PyJs_anonymous_3406_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'delim', u'uffff', u'hex', u'string']) + var.put(u'string', Js(u'')) + if (PyJsStrictEq(var.get(u'ch'),Js(u'"')) or PyJsStrictEq(var.get(u'ch'),Js(u"'"))): + var.put(u'delim', var.get(u'ch')) + while var.get(u'next')(): + if PyJsStrictEq(var.get(u'ch'),var.get(u'delim')): + var.get(u'next')() + return var.get(u'string') + else: + if PyJsStrictEq(var.get(u'ch'),Js(u'\\')): + var.get(u'next')() + if PyJsStrictEq(var.get(u'ch'),Js(u'u')): + var.put(u'uffff', Js(0.0)) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(0.0)): + var.get(u'next')() + else: + return var.get('undefined') + PyJs_anonymous_3410_._set_name(u'anonymous') + var.put(u'white', PyJs_anonymous_3410_) + @Js + def PyJs_anonymous_3411_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + while 1: + SWITCHED = False + CONDITION = (var.get(u'ch')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u't')): + SWITCHED = True + var.get(u'next')(Js(u't')) + var.get(u'next')(Js(u'r')) + var.get(u'next')(Js(u'u')) + var.get(u'next')(Js(u'e')) + return var.get(u'true') + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'f')): + SWITCHED = True + var.get(u'next')(Js(u'f')) + var.get(u'next')(Js(u'a')) + var.get(u'next')(Js(u'l')) + var.get(u'next')(Js(u's')) + var.get(u'next')(Js(u'e')) + return Js(False) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'n')): + SWITCHED = True + var.get(u'next')(Js(u'n')) + var.get(u'next')(Js(u'u')) + var.get(u'next')(Js(u'l')) + var.get(u'next')(Js(u'l')) + return var.get(u"null") + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'I')): + SWITCHED = True + var.get(u'next')(Js(u'I')) + var.get(u'next')(Js(u'n')) + var.get(u'next')(Js(u'f')) + var.get(u'next')(Js(u'i')) + var.get(u'next')(Js(u'n')) + var.get(u'next')(Js(u'i')) + var.get(u'next')(Js(u't')) + var.get(u'next')(Js(u'y')) + return var.get(u'Infinity') + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'N')): + SWITCHED = True + var.get(u'next')(Js(u'N')) + var.get(u'next')(Js(u'a')) + var.get(u'next')(Js(u'N')) + return var.get(u'NaN') + SWITCHED = True + break + var.get(u'error')((Js(u'Unexpected ')+var.get(u'renderChar')(var.get(u'ch')))) + PyJs_anonymous_3411_._set_name(u'anonymous') + var.put(u'word', PyJs_anonymous_3411_) + @Js + def PyJs_anonymous_3412_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'array']) + var.put(u'array', Js([])) + if PyJsStrictEq(var.get(u'ch'),Js(u'[')): + var.get(u'next')(Js(u'[')) + var.get(u'white')() + while var.get(u'ch'): + if PyJsStrictEq(var.get(u'ch'),Js(u']')): + var.get(u'next')(Js(u']')) + return var.get(u'array') + if PyJsStrictEq(var.get(u'ch'),Js(u',')): + var.get(u'error')(Js(u'Missing array element')) + else: + var.get(u'array').callprop(u'push', var.get(u'value')()) + var.get(u'white')() + if PyJsStrictNeq(var.get(u'ch'),Js(u',')): + var.get(u'next')(Js(u']')) + return var.get(u'array') + var.get(u'next')(Js(u',')) + var.get(u'white')() + var.get(u'error')(Js(u'Bad array')) + PyJs_anonymous_3412_._set_name(u'anonymous') + var.put(u'array', PyJs_anonymous_3412_) + @Js + def PyJs_anonymous_3413_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'object', u'key']) + PyJs_Object_3414_ = Js({}) + var.put(u'object', PyJs_Object_3414_) + if PyJsStrictEq(var.get(u'ch'),Js(u'{')): + var.get(u'next')(Js(u'{')) + var.get(u'white')() + while var.get(u'ch'): + if PyJsStrictEq(var.get(u'ch'),Js(u'}')): + var.get(u'next')(Js(u'}')) + return var.get(u'object') + if (PyJsStrictEq(var.get(u'ch'),Js(u'"')) or PyJsStrictEq(var.get(u'ch'),Js(u"'"))): + var.put(u'key', var.get(u'string')()) + else: + var.put(u'key', var.get(u'identifier')()) + var.get(u'white')() + var.get(u'next')(Js(u':')) + var.get(u'object').put(var.get(u'key'), var.get(u'value')()) + var.get(u'white')() + if PyJsStrictNeq(var.get(u'ch'),Js(u',')): + var.get(u'next')(Js(u'}')) + return var.get(u'object') + var.get(u'next')(Js(u',')) + var.get(u'white')() + var.get(u'error')(Js(u'Bad object')) + PyJs_anonymous_3413_._set_name(u'anonymous') + var.put(u'object', PyJs_anonymous_3413_) + @Js + def PyJs_anonymous_3415_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u'white')() + while 1: + SWITCHED = False + CONDITION = (var.get(u'ch')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'{')): + SWITCHED = True + return var.get(u'object')() + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'[')): + SWITCHED = True + return var.get(u'array')() + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'"')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u"'")): + SWITCHED = True + return var.get(u'string')() + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'-')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'+')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'.')): + SWITCHED = True + return var.get(u'number')() + if True: + SWITCHED = True + return (var.get(u'number')() if ((var.get(u'ch')>=Js(u'0')) and (var.get(u'ch')<=Js(u'9'))) else var.get(u'word')()) + SWITCHED = True + break + PyJs_anonymous_3415_._set_name(u'anonymous') + var.put(u'value', PyJs_anonymous_3415_) + @Js + def PyJs_anonymous_3416_(source, reviver, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'reviver':reviver, u'arguments':arguments}, var) + var.registers([u'source', u'reviver', u'result']) + pass + var.put(u'text', var.get(u'String')(var.get(u'source'))) + var.put(u'at', Js(0.0)) + var.put(u'lineNumber', Js(1.0)) + var.put(u'columnNumber', Js(1.0)) + var.put(u'ch', Js(u' ')) + var.put(u'result', var.get(u'value')()) + var.get(u'white')() + if var.get(u'ch'): + var.get(u'error')(Js(u'Syntax error')) + PyJs_Object_3417_ = Js({u'':var.get(u'result')}) + @Js + def PyJs_walk_3418_(holder, key, this, arguments, var=var): + var = Scope({u'this':this, u'holder':holder, u'arguments':arguments, u'key':key, u'walk':PyJs_walk_3418_}, var) + var.registers([u'k', u'holder', u'key', u'value', u'v']) + var.put(u'value', var.get(u'holder').get(var.get(u'key'))) + if (var.get(u'value') and PyJsStrictEq(var.get(u'value',throw=False).typeof(),Js(u'object'))): + for PyJsTemp in var.get(u'value'): + var.put(u'k', PyJsTemp) + if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'value'), var.get(u'k')): + var.put(u'v', var.get(u'walk')(var.get(u'value'), var.get(u'k'))) + if PyJsStrictNeq(var.get(u'v'),var.get(u'undefined')): + var.get(u'value').put(var.get(u'k'), var.get(u'v')) + else: + var.get(u'value').delete(var.get(u'k')) + return var.get(u'reviver').callprop(u'call', var.get(u'holder'), var.get(u'key'), var.get(u'value')) + PyJs_walk_3418_._set_name(u'walk') + return (PyJs_walk_3418_(PyJs_Object_3417_, Js(u'')) if PyJsStrictEq(var.get(u'reviver',throw=False).typeof(),Js(u'function')) else var.get(u'result')) + PyJs_anonymous_3416_._set_name(u'anonymous') + return PyJs_anonymous_3416_ + PyJs_anonymous_3398_._set_name(u'anonymous') + var.get(u'JSON5').put(u'parse', PyJs_anonymous_3398_()) + @Js + def PyJs_anonymous_3419_(obj, replacer, space, this, arguments, var=var): + var = Scope({u'this':this, u'replacer':replacer, u'obj':obj, u'arguments':arguments, u'space':space}, var) + var.registers([u'isArray', u'topLevelHolder', u'isDate', u'escapeString', u'space', u'internalStringify', u'objStack', u'replacer', u'escapable', u'cx', u'meta', u'checkForCircular', u'isWordChar', u'isWordStart', u'obj', u'makeIndent', u'indentStr', u'isWord', u'getReplacedValueOrUndefined']) + @Js + def PyJsHoisted_isArray_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + if var.get(u'Array').get(u'isArray'): + return var.get(u'Array').callprop(u'isArray', var.get(u'obj')) + else: + return PyJsStrictEq(var.get(u'Object').get(u'prototype').get(u'toString').callprop(u'call', var.get(u'obj')),Js(u'[object Array]')) + PyJsHoisted_isArray_.func_name = u'isArray' + var.put(u'isArray', PyJsHoisted_isArray_) + @Js + def PyJsHoisted_isDate_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + return PyJsStrictEq(var.get(u'Object').get(u'prototype').get(u'toString').callprop(u'call', var.get(u'obj')),Js(u'[object Date]')) + PyJsHoisted_isDate_.func_name = u'isDate' + var.put(u'isDate', PyJsHoisted_isDate_) + @Js + def PyJsHoisted_escapeString_(string, this, arguments, var=var): + var = Scope({u'this':this, u'string':string, u'arguments':arguments}, var) + var.registers([u'string']) + var.get(u'escapable').put(u'lastIndex', Js(0.0)) + @Js + def PyJs_anonymous_3422_(a, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'arguments':arguments}, var) + var.registers([u'a', u'c']) + var.put(u'c', var.get(u'meta').get(var.get(u'a'))) + return (var.get(u'c') if PyJsStrictEq(var.get(u'c',throw=False).typeof(),Js(u'string')) else (Js(u'\\u')+(Js(u'0000')+var.get(u'a').callprop(u'charCodeAt', Js(0.0)).callprop(u'toString', Js(16.0))).callprop(u'slice', (-Js(4.0))))) + PyJs_anonymous_3422_._set_name(u'anonymous') + return (((Js(u'"')+var.get(u'string').callprop(u'replace', var.get(u'escapable'), PyJs_anonymous_3422_))+Js(u'"')) if var.get(u'escapable').callprop(u'test', var.get(u'string')) else ((Js(u'"')+var.get(u'string'))+Js(u'"'))) + PyJsHoisted_escapeString_.func_name = u'escapeString' + var.put(u'escapeString', PyJsHoisted_escapeString_) + @Js + def PyJsHoisted_internalStringify_(holder, key, isTopLevel, this, arguments, var=var): + var = Scope({u'this':this, u'isTopLevel':isTopLevel, u'holder':holder, u'arguments':arguments, u'key':key}, var) + var.registers([u'i', u'buffer', u'res', u'value', u'prop', u'nonEmpty', u'key', u'isTopLevel', u'holder', u'obj_part']) + pass + var.put(u'obj_part', var.get(u'getReplacedValueOrUndefined')(var.get(u'holder'), var.get(u'key'), var.get(u'isTopLevel'))) + if (var.get(u'obj_part') and var.get(u'isDate')(var.get(u'obj_part')).neg()): + var.put(u'obj_part', var.get(u'obj_part').callprop(u'valueOf')) + while 1: + SWITCHED = False + CONDITION = (var.get(u'obj_part',throw=False).typeof()) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'boolean')): + SWITCHED = True + return var.get(u'obj_part').callprop(u'toString') + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'number')): + SWITCHED = True + if (var.get(u'isNaN')(var.get(u'obj_part')) or var.get(u'isFinite')(var.get(u'obj_part')).neg()): + return Js(u'null') + return var.get(u'obj_part').callprop(u'toString') + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'string')): + SWITCHED = True + return var.get(u'escapeString')(var.get(u'obj_part').callprop(u'toString')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'object')): + SWITCHED = True + if PyJsStrictEq(var.get(u'obj_part'),var.get(u"null")): + return Js(u'null') + else: + if var.get(u'isArray')(var.get(u'obj_part')): + var.get(u'checkForCircular')(var.get(u'obj_part')) + var.put(u'buffer', Js(u'[')) + var.get(u'objStack').callprop(u'push', var.get(u'obj_part')) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(u'a')) and (var.get(u'c')<=Js(u'z'))) or ((var.get(u'c')>=Js(u'A')) and (var.get(u'c')<=Js(u'Z')))) or ((var.get(u'c')>=Js(u'0')) and (var.get(u'c')<=Js(u'9')))) or PyJsStrictEq(var.get(u'c'),Js(u'_'))) or PyJsStrictEq(var.get(u'c'),Js(u'$'))) + PyJsHoisted_isWordChar_.func_name = u'isWordChar' + var.put(u'isWordChar', PyJsHoisted_isWordChar_) + @Js + def PyJsHoisted_isWordStart_(c, this, arguments, var=var): + var = Scope({u'this':this, u'c':c, u'arguments':arguments}, var) + var.registers([u'c']) + return (((((var.get(u'c')>=Js(u'a')) and (var.get(u'c')<=Js(u'z'))) or ((var.get(u'c')>=Js(u'A')) and (var.get(u'c')<=Js(u'Z')))) or PyJsStrictEq(var.get(u'c'),Js(u'_'))) or PyJsStrictEq(var.get(u'c'),Js(u'$'))) + PyJsHoisted_isWordStart_.func_name = u'isWordStart' + var.put(u'isWordStart', PyJsHoisted_isWordStart_) + @Js + def PyJsHoisted_makeIndent_(str, num, noNewLine, this, arguments, var=var): + var = Scope({u'this':this, u'num':num, u'noNewLine':noNewLine, u'str':str, u'arguments':arguments}, var) + var.registers([u'i', u'num', u'indent', u'noNewLine', u'str']) + if var.get(u'str').neg(): + return Js(u'') + if (var.get(u'str').get(u'length')>Js(10.0)): + var.put(u'str', var.get(u'str').callprop(u'substring', Js(0.0), Js(10.0))) + var.put(u'indent', (Js(u'') if var.get(u'noNewLine') else Js(u'\n'))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(0.0))): + return var.get(u'value') + else: + return var.get(u'undefined') + else: + return var.get(u'value') + PyJs_anonymous_3420_._set_name(u'anonymous') + var.put(u'getReplacedValueOrUndefined', PyJs_anonymous_3420_) + pass + pass + pass + var.get(u'JSON5').put(u'isWord', var.get(u'isWord')) + pass + pass + var.put(u'objStack', Js([])) + pass + pass + pass + if var.get(u'space'): + if PyJsStrictEq(var.get(u'space',throw=False).typeof(),Js(u'string')): + var.put(u'indentStr', var.get(u'space')) + else: + if (PyJsStrictEq(var.get(u'space',throw=False).typeof(),Js(u'number')) and (var.get(u'space')>=Js(0.0))): + var.put(u'indentStr', var.get(u'makeIndent')(Js(u' '), var.get(u'space'), var.get(u'true'))) + else: + pass + var.put(u'cx', JsRegExp(u'/[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g')) + var.put(u'escapable', JsRegExp(u'/[\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g')) + PyJs_Object_3421_ = Js({u'\x08':Js(u'\\b'),u'\t':Js(u'\\t'),u'\n':Js(u'\\n'),u'\x0c':Js(u'\\f'),u'\r':Js(u'\\r'),u'"':Js(u'\\"'),u'\\':Js(u'\\\\')}) + var.put(u'meta', PyJs_Object_3421_) + pass + pass + PyJs_Object_3423_ = Js({u'':var.get(u'obj')}) + var.put(u'topLevelHolder', PyJs_Object_3423_) + if PyJsStrictEq(var.get(u'obj'),var.get(u'undefined')): + return var.get(u'getReplacedValueOrUndefined')(var.get(u'topLevelHolder'), Js(u''), var.get(u'true')) + return var.get(u'internalStringify')(var.get(u'topLevelHolder'), Js(u''), var.get(u'true')) + PyJs_anonymous_3419_._set_name(u'anonymous') + var.get(u'JSON5').put(u'stringify', PyJs_anonymous_3419_) +PyJs_anonymous_3396_._set_name(u'anonymous') +PyJs_Object_3424_ = Js({}) +@Js +def PyJs_anonymous_3425_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'DataView', u'module', u'getNative', u'root']) + var.put(u'getNative', var.get(u'require')(Js(u'./_getNative'))) + var.put(u'root', var.get(u'require')(Js(u'./_root'))) + var.put(u'DataView', var.get(u'getNative')(var.get(u'root'), Js(u'DataView'))) + var.get(u'module').put(u'exports', var.get(u'DataView')) +PyJs_anonymous_3425_._set_name(u'anonymous') +PyJs_Object_3426_ = Js({u'./_getNative':Js(382.0),u'./_root':Js(422.0)}) +@Js +def PyJs_anonymous_3427_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'hashGet', u'Hash', u'hashClear', u'hashSet', u'require', u'module', u'hashDelete', u'hashHas']) + @Js + def PyJsHoisted_Hash_(entries, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'entries':entries}, var) + var.registers([u'index', u'length', u'entries', u'entry']) + var.put(u'index', (-Js(1.0))) + var.put(u'length', (var.get(u'entries').get(u'length') if var.get(u'entries') else Js(0.0))) + var.get(u"this").callprop(u'clear') + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))(-Js(1.0)))) + PyJsHoisted_arrayIncludes_.func_name = u'arrayIncludes' + var.put(u'arrayIncludes', PyJsHoisted_arrayIncludes_) + var.put(u'baseIndexOf', var.get(u'require')(Js(u'./_baseIndexOf'))) + pass + var.get(u'module').put(u'exports', var.get(u'arrayIncludes')) +PyJs_anonymous_3459_._set_name(u'anonymous') +PyJs_Object_3460_ = Js({u'./_baseIndexOf':Js(325.0)}) +@Js +def PyJs_anonymous_3461_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'arrayIncludesWith', u'module']) + @Js + def PyJsHoisted_arrayIncludesWith_(array, value, comparator, this, arguments, var=var): + var = Scope({u'this':this, u'array':array, u'comparator':comparator, u'value':value, u'arguments':arguments}, var) + var.registers([u'index', u'length', u'array', u'value', u'comparator']) + var.put(u'index', (-Js(1.0))) + var.put(u'length', (var.get(u'array').get(u'length') if var.get(u'array') else Js(0.0))) + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))=var.get(u'lower')) else var.get(u'lower'))) + return var.get(u'number') + PyJsHoisted_baseClamp_.func_name = u'baseClamp' + var.put(u'baseClamp', PyJsHoisted_baseClamp_) + pass + var.get(u'module').put(u'exports', var.get(u'baseClamp')) +PyJs_anonymous_3481_._set_name(u'anonymous') +PyJs_Object_3482_ = Js({}) +@Js +def PyJs_anonymous_3483_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'genTag', u'arrayTag', u'initCloneObject', u'uint32Tag', u'arrayBufferTag', u'objectTag', u'dataViewTag', u'regexpTag', u'copyArray', u'int8Tag', u'uint16Tag', u'errorTag', u'float64Tag', u'isBuffer', u'baseClone', u'assignValue', u'mapTag', u'cloneableTags', u'boolTag', u'arrayEach', u'initCloneByTag', u'funcTag', u'getAllKeys', u'float32Tag', u'cloneBuffer', u'Stack', u'argsTag', u'isArray', u'exports', u'dateTag', u'int16Tag', u'copySymbols', u'keys', u'stringTag', u'numberTag', u'module', u'getTag', u'isObject', u'uint8Tag', u'initCloneArray', u'isHostObject', u'require', u'baseAssign', u'uint8ClampedTag', u'weakMapTag', u'setTag', u'int32Tag', u'symbolTag']) + @Js + def PyJsHoisted_baseClone_(value, isDeep, isFull, customizer, key, object, stack, this, arguments, var=var): + var = Scope({u'this':this, u'isFull':isFull, u'object':object, u'value':value, u'isDeep':isDeep, u'arguments':arguments, u'key':key, u'customizer':customizer, u'stack':stack}, var) + var.registers([u'stacked', u'isFull', u'object', u'isFunc', u'value', u'tag', u'isDeep', u'result', u'key', u'props', u'customizer', u'isArr', u'stack']) + pass + if var.get(u'customizer'): + var.put(u'result', (var.get(u'customizer')(var.get(u'value'), var.get(u'key'), var.get(u'object'), var.get(u'stack')) if var.get(u'object') else var.get(u'customizer')(var.get(u'value')))) + if PyJsStrictNeq(var.get(u'result'),var.get(u'undefined')): + return var.get(u'result') + if var.get(u'isObject')(var.get(u'value')).neg(): + return var.get(u'value') + var.put(u'isArr', var.get(u'isArray')(var.get(u'value'))) + if var.get(u'isArr'): + var.put(u'result', var.get(u'initCloneArray')(var.get(u'value'))) + if var.get(u'isDeep').neg(): + return var.get(u'copyArray')(var.get(u'value'), var.get(u'result')) + else: + var.put(u'tag', var.get(u'getTag')(var.get(u'value'))) + var.put(u'isFunc', ((var.get(u'tag')==var.get(u'funcTag')) or (var.get(u'tag')==var.get(u'genTag')))) + if var.get(u'isBuffer')(var.get(u'value')): + return var.get(u'cloneBuffer')(var.get(u'value'), var.get(u'isDeep')) + if (((var.get(u'tag')==var.get(u'objectTag')) or (var.get(u'tag')==var.get(u'argsTag'))) or (var.get(u'isFunc') and var.get(u'object').neg())): + if var.get(u'isHostObject')(var.get(u'value')): + PyJs_Object_3487_ = Js({}) + return (var.get(u'value') if var.get(u'object') else PyJs_Object_3487_) + PyJs_Object_3488_ = Js({}) + var.put(u'result', var.get(u'initCloneObject')((PyJs_Object_3488_ if var.get(u'isFunc') else var.get(u'value')))) + if var.get(u'isDeep').neg(): + return var.get(u'copySymbols')(var.get(u'value'), var.get(u'baseAssign')(var.get(u'result'), var.get(u'value'))) + else: + if var.get(u'cloneableTags').get(var.get(u'tag')).neg(): + PyJs_Object_3489_ = Js({}) + return (var.get(u'value') if var.get(u'object') else PyJs_Object_3489_) + var.put(u'result', var.get(u'initCloneByTag')(var.get(u'value'), var.get(u'tag'), var.get(u'baseClone'), var.get(u'isDeep'))) + (var.get(u'stack') or var.put(u'stack', var.get(u'Stack').create())) + var.put(u'stacked', var.get(u'stack').callprop(u'get', var.get(u'value'))) + if var.get(u'stacked'): + return var.get(u'stacked') + var.get(u'stack').callprop(u'set', var.get(u'value'), var.get(u'result')) + if var.get(u'isArr').neg(): + var.put(u'props', (var.get(u'getAllKeys')(var.get(u'value')) if var.get(u'isFull') else var.get(u'keys')(var.get(u'value')))) + @Js + def PyJs_anonymous_3490_(subValue, key, this, arguments, var=var): + var = Scope({u'this':this, u'subValue':subValue, u'arguments':arguments, u'key':key}, var) + var.registers([u'subValue', u'key']) + if var.get(u'props'): + var.put(u'key', var.get(u'subValue')) + var.put(u'subValue', var.get(u'value').get(var.get(u'key'))) + var.get(u'assignValue')(var.get(u'result'), var.get(u'key'), var.get(u'baseClone')(var.get(u'subValue'), var.get(u'isDeep'), var.get(u'isFull'), var.get(u'customizer'), var.get(u'key'), var.get(u'value'), var.get(u'stack'))) + PyJs_anonymous_3490_._set_name(u'anonymous') + var.get(u'arrayEach')((var.get(u'props') or var.get(u'value')), PyJs_anonymous_3490_) + return var.get(u'result') + PyJsHoisted_baseClone_.func_name = u'baseClone' + var.put(u'baseClone', PyJsHoisted_baseClone_) + var.put(u'Stack', var.get(u'require')(Js(u'./_Stack'))) + var.put(u'arrayEach', var.get(u'require')(Js(u'./_arrayEach'))) + var.put(u'assignValue', var.get(u'require')(Js(u'./_assignValue'))) + var.put(u'baseAssign', var.get(u'require')(Js(u'./_baseAssign'))) + var.put(u'cloneBuffer', var.get(u'require')(Js(u'./_cloneBuffer'))) + var.put(u'copyArray', var.get(u'require')(Js(u'./_copyArray'))) + var.put(u'copySymbols', var.get(u'require')(Js(u'./_copySymbols'))) + var.put(u'getAllKeys', var.get(u'require')(Js(u'./_getAllKeys'))) + var.put(u'getTag', var.get(u'require')(Js(u'./_getTag'))) + var.put(u'initCloneArray', var.get(u'require')(Js(u'./_initCloneArray'))) + var.put(u'initCloneByTag', var.get(u'require')(Js(u'./_initCloneByTag'))) + var.put(u'initCloneObject', var.get(u'require')(Js(u'./_initCloneObject'))) + var.put(u'isArray', var.get(u'require')(Js(u'./isArray'))) + var.put(u'isBuffer', var.get(u'require')(Js(u'./isBuffer'))) + var.put(u'isHostObject', var.get(u'require')(Js(u'./_isHostObject'))) + var.put(u'isObject', var.get(u'require')(Js(u'./isObject'))) + var.put(u'keys', var.get(u'require')(Js(u'./keys'))) + var.put(u'argsTag', Js(u'[object Arguments]')) + var.put(u'arrayTag', Js(u'[object Array]')) + var.put(u'boolTag', Js(u'[object Boolean]')) + var.put(u'dateTag', Js(u'[object Date]')) + var.put(u'errorTag', Js(u'[object Error]')) + var.put(u'funcTag', Js(u'[object Function]')) + var.put(u'genTag', Js(u'[object GeneratorFunction]')) + var.put(u'mapTag', Js(u'[object Map]')) + var.put(u'numberTag', Js(u'[object Number]')) + var.put(u'objectTag', Js(u'[object Object]')) + var.put(u'regexpTag', Js(u'[object RegExp]')) + var.put(u'setTag', Js(u'[object Set]')) + var.put(u'stringTag', Js(u'[object String]')) + var.put(u'symbolTag', Js(u'[object Symbol]')) + var.put(u'weakMapTag', Js(u'[object WeakMap]')) + var.put(u'arrayBufferTag', Js(u'[object ArrayBuffer]')) + var.put(u'dataViewTag', Js(u'[object DataView]')) + var.put(u'float32Tag', Js(u'[object Float32Array]')) + var.put(u'float64Tag', Js(u'[object Float64Array]')) + var.put(u'int8Tag', Js(u'[object Int8Array]')) + var.put(u'int16Tag', Js(u'[object Int16Array]')) + var.put(u'int32Tag', Js(u'[object Int32Array]')) + var.put(u'uint8Tag', Js(u'[object Uint8Array]')) + var.put(u'uint8ClampedTag', Js(u'[object Uint8ClampedArray]')) + var.put(u'uint16Tag', Js(u'[object Uint16Array]')) + var.put(u'uint32Tag', Js(u'[object Uint32Array]')) + PyJs_Object_3484_ = Js({}) + var.put(u'cloneableTags', PyJs_Object_3484_) + def PyJs_LONG_3486_(var=var): + def PyJs_LONG_3485_(var=var): + return var.get(u'cloneableTags').put(var.get(u'regexpTag'), var.get(u'cloneableTags').put(var.get(u'setTag'), var.get(u'cloneableTags').put(var.get(u'stringTag'), var.get(u'cloneableTags').put(var.get(u'symbolTag'), var.get(u'cloneableTags').put(var.get(u'uint8Tag'), var.get(u'cloneableTags').put(var.get(u'uint8ClampedTag'), var.get(u'cloneableTags').put(var.get(u'uint16Tag'), var.get(u'cloneableTags').put(var.get(u'uint32Tag'), var.get(u'true'))))))))) + return var.get(u'cloneableTags').put(var.get(u'float32Tag'), var.get(u'cloneableTags').put(var.get(u'float64Tag'), var.get(u'cloneableTags').put(var.get(u'int8Tag'), var.get(u'cloneableTags').put(var.get(u'int16Tag'), var.get(u'cloneableTags').put(var.get(u'int32Tag'), var.get(u'cloneableTags').put(var.get(u'mapTag'), var.get(u'cloneableTags').put(var.get(u'numberTag'), var.get(u'cloneableTags').put(var.get(u'objectTag'), PyJs_LONG_3485_())))))))) + var.get(u'cloneableTags').put(var.get(u'argsTag'), var.get(u'cloneableTags').put(var.get(u'arrayTag'), var.get(u'cloneableTags').put(var.get(u'arrayBufferTag'), var.get(u'cloneableTags').put(var.get(u'dataViewTag'), var.get(u'cloneableTags').put(var.get(u'boolTag'), var.get(u'cloneableTags').put(var.get(u'dateTag'), PyJs_LONG_3486_())))))) + var.get(u'cloneableTags').put(var.get(u'errorTag'), var.get(u'cloneableTags').put(var.get(u'funcTag'), var.get(u'cloneableTags').put(var.get(u'weakMapTag'), Js(False)))) + pass + var.get(u'module').put(u'exports', var.get(u'baseClone')) +PyJs_anonymous_3483_._set_name(u'anonymous') +PyJs_Object_3491_ = Js({u'./_Stack':Js(294.0),u'./_arrayEach':Js(301.0),u'./_assignValue':Js(310.0),u'./_baseAssign':Js(312.0),u'./_cloneBuffer':Js(357.0),u'./_copyArray':Js(366.0),u'./_copySymbols':Js(368.0),u'./_getAllKeys':Js(378.0),u'./_getTag':Js(385.0),u'./_initCloneArray':Js(395.0),u'./_initCloneByTag':Js(396.0),u'./_initCloneObject':Js(397.0),u'./_isHostObject':Js(400.0),u'./isArray':Js(458.0),u'./isBuffer':Js(462.0),u'./isObject':Js(467.0),u'./keys':Js(474.0)}) +@Js +def PyJs_anonymous_3492_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'objectCreate', u'require', u'module', u'baseCreate', u'isObject']) + @Js + def PyJsHoisted_baseCreate_(proto, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'proto':proto}, var) + var.registers([u'proto']) + PyJs_Object_3493_ = Js({}) + return (var.get(u'objectCreate')(var.get(u'proto')) if var.get(u'isObject')(var.get(u'proto')) else PyJs_Object_3493_) + PyJsHoisted_baseCreate_.func_name = u'baseCreate' + var.put(u'baseCreate', PyJsHoisted_baseCreate_) + var.put(u'isObject', var.get(u'require')(Js(u'./isObject'))) + var.put(u'objectCreate', var.get(u'Object').get(u'create')) + pass + var.get(u'module').put(u'exports', var.get(u'baseCreate')) +PyJs_anonymous_3492_._set_name(u'anonymous') +PyJs_Object_3494_ = Js({u'./isObject':Js(467.0)}) +@Js +def PyJs_anonymous_3495_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'baseEach', u'exports', u'baseForOwn', u'module', u'createBaseEach', u'require']) + var.put(u'baseForOwn', var.get(u'require')(Js(u'./_baseForOwn'))) + var.put(u'createBaseEach', var.get(u'require')(Js(u'./_createBaseEach'))) + var.put(u'baseEach', var.get(u'createBaseEach')(var.get(u'baseForOwn'))) + var.get(u'module').put(u'exports', var.get(u'baseEach')) +PyJs_anonymous_3495_._set_name(u'anonymous') +PyJs_Object_3496_ = Js({u'./_baseForOwn':Js(320.0),u'./_createBaseEach':Js(371.0)}) +@Js +def PyJs_anonymous_3497_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module', u'baseFindIndex']) + @Js + def PyJsHoisted_baseFindIndex_(array, predicate, fromIndex, fromRight, this, arguments, var=var): + var = Scope({u'predicate':predicate, u'arguments':arguments, u'this':this, u'array':array, u'fromIndex':fromIndex, u'fromRight':fromRight}, var) + var.registers([u'index', u'predicate', u'fromIndex', u'fromRight', u'length', u'array']) + var.put(u'length', var.get(u'array').get(u'length')) + var.put(u'index', (var.get(u'fromIndex')+(Js(1.0) if var.get(u'fromRight') else (-Js(1.0))))) + while ((var.put(u'index',Js(var.get(u'index').to_number())-Js(1))+Js(1)) if var.get(u'fromRight') else (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))Js(0.0)) and var.get(u'predicate')(var.get(u'value'))): + if (var.get(u'depth')>Js(1.0)): + var.get(u'baseFlatten')(var.get(u'value'), (var.get(u'depth')-Js(1.0)), var.get(u'predicate'), var.get(u'isStrict'), var.get(u'result')) + else: + var.get(u'arrayPush')(var.get(u'result'), var.get(u'value')) + else: + if var.get(u'isStrict').neg(): + var.get(u'result').put(var.get(u'result').get(u'length'), var.get(u'value')) + return var.get(u'result') + PyJsHoisted_baseFlatten_.func_name = u'baseFlatten' + var.put(u'baseFlatten', PyJsHoisted_baseFlatten_) + var.put(u'arrayPush', var.get(u'require')(Js(u'./_arrayPush'))) + var.put(u'isFlattenable', var.get(u'require')(Js(u'./_isFlattenable'))) + pass + var.get(u'module').put(u'exports', var.get(u'baseFlatten')) +PyJs_anonymous_3499_._set_name(u'anonymous') +PyJs_Object_3500_ = Js({u'./_arrayPush':Js(305.0),u'./_isFlattenable':Js(398.0)}) +@Js +def PyJs_anonymous_3501_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'createBaseFor', u'require', u'exports', u'module', u'baseFor']) + var.put(u'createBaseFor', var.get(u'require')(Js(u'./_createBaseFor'))) + var.put(u'baseFor', var.get(u'createBaseFor')()) + var.get(u'module').put(u'exports', var.get(u'baseFor')) +PyJs_anonymous_3501_._set_name(u'anonymous') +PyJs_Object_3502_ = Js({u'./_createBaseFor':Js(372.0)}) +@Js +def PyJs_anonymous_3503_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'baseFor', u'keys', u'baseForOwn', u'module', u'require']) + @Js + def PyJsHoisted_baseForOwn_(object, iteratee, this, arguments, var=var): + var = Scope({u'this':this, u'object':object, u'arguments':arguments, u'iteratee':iteratee}, var) + var.registers([u'object', u'iteratee']) + return (var.get(u'object') and var.get(u'baseFor')(var.get(u'object'), var.get(u'iteratee'), var.get(u'keys'))) + PyJsHoisted_baseForOwn_.func_name = u'baseForOwn' + var.put(u'baseForOwn', PyJsHoisted_baseForOwn_) + var.put(u'baseFor', var.get(u'require')(Js(u'./_baseFor'))) + var.put(u'keys', var.get(u'require')(Js(u'./keys'))) + pass + var.get(u'module').put(u'exports', var.get(u'baseForOwn')) +PyJs_anonymous_3503_._set_name(u'anonymous') +PyJs_Object_3504_ = Js({u'./_baseFor':Js(319.0),u'./keys':Js(474.0)}) +@Js +def PyJs_anonymous_3505_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'toKey', u'isKey', u'require', u'module', u'castPath', u'baseGet']) + @Js + def PyJsHoisted_baseGet_(object, path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'object':object, u'arguments':arguments}, var) + var.registers([u'index', u'length', u'object', u'path']) + var.put(u'path', (Js([var.get(u'path')]) if var.get(u'isKey')(var.get(u'path'), var.get(u'object')) else var.get(u'castPath')(var.get(u'path')))) + var.put(u'index', Js(0.0)) + var.put(u'length', var.get(u'path').get(u'length')) + while ((var.get(u'object')!=var.get(u"null")) and (var.get(u'index')(-Js(1.0))): + if PyJsStrictNeq(var.get(u'seen'),var.get(u'array')): + var.get(u'splice').callprop(u'call', var.get(u'seen'), var.get(u'fromIndex'), Js(1.0)) + var.get(u'splice').callprop(u'call', var.get(u'array'), var.get(u'fromIndex'), Js(1.0)) + return var.get(u'array') + PyJsHoisted_basePullAll_.func_name = u'basePullAll' + var.put(u'basePullAll', PyJsHoisted_basePullAll_) + var.put(u'arrayMap', var.get(u'require')(Js(u'./_arrayMap'))) + var.put(u'baseIndexOf', var.get(u'require')(Js(u'./_baseIndexOf'))) + var.put(u'baseIndexOfWith', var.get(u'require')(Js(u'./_baseIndexOfWith'))) + var.put(u'baseUnary', var.get(u'require')(Js(u'./_baseUnary'))) + var.put(u'copyArray', var.get(u'require')(Js(u'./_copyArray'))) + var.put(u'arrayProto', var.get(u'Array').get(u'prototype')) + var.put(u'splice', var.get(u'arrayProto').get(u'splice')) + pass + var.get(u'module').put(u'exports', var.get(u'basePullAll')) +PyJs_anonymous_3559_._set_name(u'anonymous') +PyJs_Object_3560_ = Js({u'./_arrayMap':Js(304.0),u'./_baseIndexOf':Js(325.0),u'./_baseIndexOfWith':Js(326.0),u'./_baseUnary':Js(348.0),u'./_copyArray':Js(366.0)}) +@Js +def PyJs_anonymous_3561_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'MAX_SAFE_INTEGER', u'exports', u'baseRepeat', u'require', u'module', u'nativeFloor']) + @Js + def PyJsHoisted_baseRepeat_(string, n, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'string':string, u'n':n}, var) + var.registers([u'n', u'result', u'string']) + var.put(u'result', Js(u'')) + if ((var.get(u'string').neg() or (var.get(u'n')var.get(u'MAX_SAFE_INTEGER'))): + return var.get(u'result') + while 1: + if (var.get(u'n')%Js(2.0)): + var.put(u'result', var.get(u'string'), u'+') + var.put(u'n', var.get(u'nativeFloor')((var.get(u'n')/Js(2.0)))) + if var.get(u'n'): + var.put(u'string', var.get(u'string'), u'+') + if not var.get(u'n'): + break + return var.get(u'result') + PyJsHoisted_baseRepeat_.func_name = u'baseRepeat' + var.put(u'baseRepeat', PyJsHoisted_baseRepeat_) + var.put(u'MAX_SAFE_INTEGER', Js(9007199254740991.0)) + var.put(u'nativeFloor', var.get(u'Math').get(u'floor')) + pass + var.get(u'module').put(u'exports', var.get(u'baseRepeat')) +PyJs_anonymous_3561_._set_name(u'anonymous') +PyJs_Object_3562_ = Js({}) +@Js +def PyJs_anonymous_3563_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'baseSlice', u'exports', u'require', u'module']) + @Js + def PyJsHoisted_baseSlice_(array, start, end, this, arguments, var=var): + var = Scope({u'this':this, u'start':start, u'array':array, u'end':end, u'arguments':arguments}, var) + var.registers([u'index', u'end', u'start', u'length', u'result', u'array']) + var.put(u'index', (-Js(1.0))) + var.put(u'length', var.get(u'array').get(u'length')) + if (var.get(u'start')var.get(u'length')) else (var.get(u'length')+var.get(u'start')))) + var.put(u'end', (var.get(u'length') if (var.get(u'end')>var.get(u'length')) else var.get(u'end'))) + if (var.get(u'end')var.get(u'end')) else PyJsBshift((var.get(u'end')-var.get(u'start')),Js(0.0)))) + var.put(u'start', Js(0.0), u'>>>') + var.put(u'result', var.get(u'Array')(var.get(u'length'))) + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))=var.get(u'LARGE_ARRAY_SIZE')): + var.put(u'set', (var.get(u"null") if var.get(u'iteratee') else var.get(u'createSet')(var.get(u'array')))) + if var.get(u'set'): + return var.get(u'setToArray')(var.get(u'set')) + var.put(u'isCommon', Js(False)) + var.put(u'includes', var.get(u'cacheHas')) + var.put(u'seen', var.get(u'SetCache').create()) + else: + var.put(u'seen', (Js([]) if var.get(u'iteratee') else var.get(u'result'))) + class JS_CONTINUE_LABEL_6f75746572(Exception): pass + class JS_BREAK_LABEL_6f75746572(Exception): pass + try: + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))=var.get(u'length'))) else var.get(u'baseSlice')(var.get(u'array'), var.get(u'start'), var.get(u'end'))) + PyJsHoisted_castSlice_.func_name = u'castSlice' + var.put(u'castSlice', PyJsHoisted_castSlice_) + var.put(u'baseSlice', var.get(u'require')(Js(u'./_baseSlice'))) + pass + var.get(u'module').put(u'exports', var.get(u'castSlice')) +PyJs_anonymous_3583_._set_name(u'anonymous') +PyJs_Object_3584_ = Js({u'./_baseSlice':Js(344.0)}) +@Js +def PyJs_anonymous_3585_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'baseIndexOf', u'require', u'exports', u'module', u'charsEndIndex']) + @Js + def PyJsHoisted_charsEndIndex_(strSymbols, chrSymbols, this, arguments, var=var): + var = Scope({u'this':this, u'chrSymbols':chrSymbols, u'arguments':arguments, u'strSymbols':strSymbols}, var) + var.registers([u'index', u'chrSymbols', u'strSymbols']) + var.put(u'index', var.get(u'strSymbols').get(u'length')) + while ((var.put(u'index',Js(var.get(u'index').to_number())-Js(1))+Js(1)) and (var.get(u'baseIndexOf')(var.get(u'chrSymbols'), var.get(u'strSymbols').get(var.get(u'index')), Js(0.0))>(-Js(1.0)))): + pass + return var.get(u'index') + PyJsHoisted_charsEndIndex_.func_name = u'charsEndIndex' + var.put(u'charsEndIndex', PyJsHoisted_charsEndIndex_) + var.put(u'baseIndexOf', var.get(u'require')(Js(u'./_baseIndexOf'))) + pass + var.get(u'module').put(u'exports', var.get(u'charsEndIndex')) +PyJs_anonymous_3585_._set_name(u'anonymous') +PyJs_Object_3586_ = Js({u'./_baseIndexOf':Js(325.0)}) +@Js +def PyJs_anonymous_3587_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module', u'checkGlobal']) + @Js + def PyJsHoisted_checkGlobal_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return (var.get(u'value') if (var.get(u'value') and PyJsStrictEq(var.get(u'value').get(u'Object'),var.get(u'Object'))) else var.get(u"null")) + PyJsHoisted_checkGlobal_.func_name = u'checkGlobal' + var.put(u'checkGlobal', PyJsHoisted_checkGlobal_) + pass + var.get(u'module').put(u'exports', var.get(u'checkGlobal')) +PyJs_anonymous_3587_._set_name(u'anonymous') +PyJs_Object_3588_ = Js({}) +@Js +def PyJs_anonymous_3589_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'cloneArrayBuffer', u'require', u'exports', u'Uint8Array', u'module']) + @Js + def PyJsHoisted_cloneArrayBuffer_(arrayBuffer, this, arguments, var=var): + var = Scope({u'this':this, u'arrayBuffer':arrayBuffer, u'arguments':arguments}, var) + var.registers([u'arrayBuffer', u'result']) + var.put(u'result', var.get(u'arrayBuffer').get(u'constructor').create(var.get(u'arrayBuffer').get(u'byteLength'))) + var.get(u'Uint8Array').create(var.get(u'result')).callprop(u'set', var.get(u'Uint8Array').create(var.get(u'arrayBuffer'))) + return var.get(u'result') + PyJsHoisted_cloneArrayBuffer_.func_name = u'cloneArrayBuffer' + var.put(u'cloneArrayBuffer', PyJsHoisted_cloneArrayBuffer_) + var.put(u'Uint8Array', var.get(u'require')(Js(u'./_Uint8Array'))) + pass + var.get(u'module').put(u'exports', var.get(u'cloneArrayBuffer')) +PyJs_anonymous_3589_._set_name(u'anonymous') +PyJs_Object_3590_ = Js({u'./_Uint8Array':Js(296.0)}) +@Js +def PyJs_anonymous_3591_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'cloneBuffer', u'exports', u'require', u'module']) + @Js + def PyJsHoisted_cloneBuffer_(buffer, isDeep, this, arguments, var=var): + var = Scope({u'buffer':buffer, u'this':this, u'isDeep':isDeep, u'arguments':arguments}, var) + var.registers([u'buffer', u'isDeep', u'result']) + if var.get(u'isDeep'): + return var.get(u'buffer').callprop(u'slice') + var.put(u'result', var.get(u'buffer').get(u'constructor').create(var.get(u'buffer').get(u'length'))) + var.get(u'buffer').callprop(u'copy', var.get(u'result')) + return var.get(u'result') + PyJsHoisted_cloneBuffer_.func_name = u'cloneBuffer' + var.put(u'cloneBuffer', PyJsHoisted_cloneBuffer_) + pass + var.get(u'module').put(u'exports', var.get(u'cloneBuffer')) +PyJs_anonymous_3591_._set_name(u'anonymous') +PyJs_Object_3592_ = Js({}) +@Js +def PyJs_anonymous_3593_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'cloneArrayBuffer', u'require', u'exports', u'cloneDataView', u'module']) + @Js + def PyJsHoisted_cloneDataView_(dataView, isDeep, this, arguments, var=var): + var = Scope({u'this':this, u'dataView':dataView, u'isDeep':isDeep, u'arguments':arguments}, var) + var.registers([u'buffer', u'dataView', u'isDeep']) + var.put(u'buffer', (var.get(u'cloneArrayBuffer')(var.get(u'dataView').get(u'buffer')) if var.get(u'isDeep') else var.get(u'dataView').get(u'buffer'))) + return var.get(u'dataView').get(u'constructor').create(var.get(u'buffer'), var.get(u'dataView').get(u'byteOffset'), var.get(u'dataView').get(u'byteLength')) + PyJsHoisted_cloneDataView_.func_name = u'cloneDataView' + var.put(u'cloneDataView', PyJsHoisted_cloneDataView_) + var.put(u'cloneArrayBuffer', var.get(u'require')(Js(u'./_cloneArrayBuffer'))) + pass + var.get(u'module').put(u'exports', var.get(u'cloneDataView')) +PyJs_anonymous_3593_._set_name(u'anonymous') +PyJs_Object_3594_ = Js({u'./_cloneArrayBuffer':Js(356.0)}) +@Js +def PyJs_anonymous_3595_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'addMapEntry', u'require', u'module', u'arrayReduce', u'mapToArray', u'cloneMap']) + @Js + def PyJsHoisted_cloneMap_(map, isDeep, cloneFunc, this, arguments, var=var): + var = Scope({u'this':this, u'map':map, u'isDeep':isDeep, u'arguments':arguments, u'cloneFunc':cloneFunc}, var) + var.registers([u'map', u'array', u'isDeep', u'cloneFunc']) + var.put(u'array', (var.get(u'cloneFunc')(var.get(u'mapToArray')(var.get(u'map')), var.get(u'true')) if var.get(u'isDeep') else var.get(u'mapToArray')(var.get(u'map')))) + return var.get(u'arrayReduce')(var.get(u'array'), var.get(u'addMapEntry'), var.get(u'map').get(u'constructor').create()) + PyJsHoisted_cloneMap_.func_name = u'cloneMap' + var.put(u'cloneMap', PyJsHoisted_cloneMap_) + var.put(u'addMapEntry', var.get(u'require')(Js(u'./_addMapEntry'))) + var.put(u'arrayReduce', var.get(u'require')(Js(u'./_arrayReduce'))) + var.put(u'mapToArray', var.get(u'require')(Js(u'./_mapToArray'))) + pass + var.get(u'module').put(u'exports', var.get(u'cloneMap')) +PyJs_anonymous_3595_._set_name(u'anonymous') +PyJs_Object_3596_ = Js({u'./_addMapEntry':Js(298.0),u'./_arrayReduce':Js(306.0),u'./_mapToArray':Js(419.0)}) +@Js +def PyJs_anonymous_3597_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'cloneRegExp', u'exports', u'module', u'reFlags']) + @Js + def PyJsHoisted_cloneRegExp_(regexp, this, arguments, var=var): + var = Scope({u'this':this, u'regexp':regexp, u'arguments':arguments}, var) + var.registers([u'regexp', u'result']) + var.put(u'result', var.get(u'regexp').get(u'constructor').create(var.get(u'regexp').get(u'source'), var.get(u'reFlags').callprop(u'exec', var.get(u'regexp')))) + var.get(u'result').put(u'lastIndex', var.get(u'regexp').get(u'lastIndex')) + return var.get(u'result') + PyJsHoisted_cloneRegExp_.func_name = u'cloneRegExp' + var.put(u'cloneRegExp', PyJsHoisted_cloneRegExp_) + var.put(u'reFlags', JsRegExp(u'/\\w*$/')) + pass + var.get(u'module').put(u'exports', var.get(u'cloneRegExp')) +PyJs_anonymous_3597_._set_name(u'anonymous') +PyJs_Object_3598_ = Js({}) +@Js +def PyJs_anonymous_3599_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'cloneSet', u'exports', u'require', u'setToArray', u'addSetEntry', u'module', u'arrayReduce']) + @Js + def PyJsHoisted_cloneSet_(set, isDeep, cloneFunc, this, arguments, var=var): + var = Scope({u'this':this, u'cloneFunc':cloneFunc, u'set':set, u'isDeep':isDeep, u'arguments':arguments}, var) + var.registers([u'cloneFunc', u'array', u'set', u'isDeep']) + var.put(u'array', (var.get(u'cloneFunc')(var.get(u'setToArray')(var.get(u'set')), var.get(u'true')) if var.get(u'isDeep') else var.get(u'setToArray')(var.get(u'set')))) + return var.get(u'arrayReduce')(var.get(u'array'), var.get(u'addSetEntry'), var.get(u'set').get(u'constructor').create()) + PyJsHoisted_cloneSet_.func_name = u'cloneSet' + var.put(u'cloneSet', PyJsHoisted_cloneSet_) + var.put(u'addSetEntry', var.get(u'require')(Js(u'./_addSetEntry'))) + var.put(u'arrayReduce', var.get(u'require')(Js(u'./_arrayReduce'))) + var.put(u'setToArray', var.get(u'require')(Js(u'./_setToArray'))) + pass + var.get(u'module').put(u'exports', var.get(u'cloneSet')) +PyJs_anonymous_3599_._set_name(u'anonymous') +PyJs_Object_3600_ = Js({u'./_addSetEntry':Js(299.0),u'./_arrayReduce':Js(306.0),u'./_setToArray':Js(425.0)}) +@Js +def PyJs_anonymous_3601_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'cloneSymbol', u'Symbol', u'symbolValueOf', u'module', u'symbolProto', u'require']) + @Js + def PyJsHoisted_cloneSymbol_(symbol, this, arguments, var=var): + var = Scope({u'this':this, u'symbol':symbol, u'arguments':arguments}, var) + var.registers([u'symbol']) + PyJs_Object_3602_ = Js({}) + return (var.get(u'Object')(var.get(u'symbolValueOf').callprop(u'call', var.get(u'symbol'))) if var.get(u'symbolValueOf') else PyJs_Object_3602_) + PyJsHoisted_cloneSymbol_.func_name = u'cloneSymbol' + var.put(u'cloneSymbol', PyJsHoisted_cloneSymbol_) + var.put(u'Symbol', var.get(u'require')(Js(u'./_Symbol'))) + var.put(u'symbolProto', (var.get(u'Symbol').get(u'prototype') if var.get(u'Symbol') else var.get(u'undefined'))) + var.put(u'symbolValueOf', (var.get(u'symbolProto').get(u'valueOf') if var.get(u'symbolProto') else var.get(u'undefined'))) + pass + var.get(u'module').put(u'exports', var.get(u'cloneSymbol')) +PyJs_anonymous_3601_._set_name(u'anonymous') +PyJs_Object_3603_ = Js({u'./_Symbol':Js(295.0)}) +@Js +def PyJs_anonymous_3604_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'cloneArrayBuffer', u'require', u'exports', u'module', u'cloneTypedArray']) + @Js + def PyJsHoisted_cloneTypedArray_(typedArray, isDeep, this, arguments, var=var): + var = Scope({u'this':this, u'typedArray':typedArray, u'isDeep':isDeep, u'arguments':arguments}, var) + var.registers([u'buffer', u'typedArray', u'isDeep']) + var.put(u'buffer', (var.get(u'cloneArrayBuffer')(var.get(u'typedArray').get(u'buffer')) if var.get(u'isDeep') else var.get(u'typedArray').get(u'buffer'))) + return var.get(u'typedArray').get(u'constructor').create(var.get(u'buffer'), var.get(u'typedArray').get(u'byteOffset'), var.get(u'typedArray').get(u'length')) + PyJsHoisted_cloneTypedArray_.func_name = u'cloneTypedArray' + var.put(u'cloneTypedArray', PyJsHoisted_cloneTypedArray_) + var.put(u'cloneArrayBuffer', var.get(u'require')(Js(u'./_cloneArrayBuffer'))) + pass + var.get(u'module').put(u'exports', var.get(u'cloneTypedArray')) +PyJs_anonymous_3604_._set_name(u'anonymous') +PyJs_Object_3605_ = Js({u'./_cloneArrayBuffer':Js(356.0)}) +@Js +def PyJs_anonymous_3606_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'compareAscending', u'require', u'isSymbol', u'exports', u'module']) + @Js + def PyJsHoisted_compareAscending_(value, other, this, arguments, var=var): + var = Scope({u'this':this, u'other':other, u'arguments':arguments, u'value':value}, var) + var.registers([u'valIsSymbol', u'valIsNull', u'value', u'valIsDefined', u'othIsNull', u'othIsReflexive', u'othIsSymbol', u'othIsDefined', u'other', u'valIsReflexive']) + if PyJsStrictNeq(var.get(u'value'),var.get(u'other')): + var.put(u'valIsDefined', PyJsStrictNeq(var.get(u'value'),var.get(u'undefined'))) + var.put(u'valIsNull', PyJsStrictEq(var.get(u'value'),var.get(u"null"))) + var.put(u'valIsReflexive', PyJsStrictEq(var.get(u'value'),var.get(u'value'))) + var.put(u'valIsSymbol', var.get(u'isSymbol')(var.get(u'value'))) + var.put(u'othIsDefined', PyJsStrictNeq(var.get(u'other'),var.get(u'undefined'))) + var.put(u'othIsNull', PyJsStrictEq(var.get(u'other'),var.get(u"null"))) + var.put(u'othIsReflexive', PyJsStrictEq(var.get(u'other'),var.get(u'other'))) + var.put(u'othIsSymbol', var.get(u'isSymbol')(var.get(u'other'))) + def PyJs_LONG_3607_(var=var): + return ((((((var.get(u'othIsNull').neg() and var.get(u'othIsSymbol').neg()) and var.get(u'valIsSymbol').neg()) and (var.get(u'value')>var.get(u'other'))) or ((((var.get(u'valIsSymbol') and var.get(u'othIsDefined')) and var.get(u'othIsReflexive')) and var.get(u'othIsNull').neg()) and var.get(u'othIsSymbol').neg())) or ((var.get(u'valIsNull') and var.get(u'othIsDefined')) and var.get(u'othIsReflexive'))) or (var.get(u'valIsDefined').neg() and var.get(u'othIsReflexive'))) + if (PyJs_LONG_3607_() or var.get(u'valIsReflexive').neg()): + return Js(1.0) + def PyJs_LONG_3608_(var=var): + return ((((((var.get(u'valIsNull').neg() and var.get(u'valIsSymbol').neg()) and var.get(u'othIsSymbol').neg()) and (var.get(u'value')=var.get(u'ordersLength')): + return var.get(u'result') + var.put(u'order', var.get(u'orders').get(var.get(u'index'))) + return (var.get(u'result')*((-Js(1.0)) if (var.get(u'order')==Js(u'desc')) else Js(1.0))) + return (var.get(u'object').get(u'index')-var.get(u'other').get(u'index')) + PyJsHoisted_compareMultiple_.func_name = u'compareMultiple' + var.put(u'compareMultiple', PyJsHoisted_compareMultiple_) + var.put(u'compareAscending', var.get(u'require')(Js(u'./_compareAscending'))) + pass + var.get(u'module').put(u'exports', var.get(u'compareMultiple')) +PyJs_anonymous_3610_._set_name(u'anonymous') +PyJs_Object_3611_ = Js({u'./_compareAscending':Js(364.0)}) +@Js +def PyJs_anonymous_3612_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'copyArray', u'exports', u'module']) + @Js + def PyJsHoisted_copyArray_(source, array, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'array':array, u'arguments':arguments}, var) + var.registers([u'index', u'length', u'array', u'source']) + var.put(u'index', (-Js(1.0))) + var.put(u'length', var.get(u'source').get(u'length')) + (var.get(u'array') or var.put(u'array', var.get(u'Array')(var.get(u'length')))) + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))Js(1.0)) else var.get(u'undefined'))) + var.put(u'guard', (var.get(u'sources').get(u'2') if (var.get(u'length')>Js(2.0)) else var.get(u'undefined'))) + var.put(u'customizer', (PyJsComma((var.put(u'length',Js(var.get(u'length').to_number())-Js(1))+Js(1)),var.get(u'customizer')) if ((var.get(u'assigner').get(u'length')>Js(3.0)) and (var.get(u'customizer',throw=False).typeof()==Js(u'function'))) else var.get(u'undefined'))) + if (var.get(u'guard') and var.get(u'isIterateeCall')(var.get(u'sources').get(u'0'), var.get(u'sources').get(u'1'), var.get(u'guard'))): + var.put(u'customizer', (var.get(u'undefined') if (var.get(u'length')(-Js(1.0))) else var.get(u'undefined')) + PyJs_anonymous_3631_._set_name(u'anonymous') + return PyJs_anonymous_3631_ + PyJsHoisted_createFind_.func_name = u'createFind' + var.put(u'createFind', PyJsHoisted_createFind_) + var.put(u'baseIteratee', var.get(u'require')(Js(u'./_baseIteratee'))) + var.put(u'isArrayLike', var.get(u'require')(Js(u'./isArrayLike'))) + var.put(u'keys', var.get(u'require')(Js(u'./keys'))) + pass + var.get(u'module').put(u'exports', var.get(u'createFind')) +PyJs_anonymous_3630_._set_name(u'anonymous') +PyJs_Object_3633_ = Js({u'./_baseIteratee':Js(331.0),u'./isArrayLike':Js(459.0),u'./keys':Js(474.0)}) +@Js +def PyJs_anonymous_3634_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'Set', u'INFINITY', u'require', u'setToArray', u'module', u'noop', u'createSet']) + var.put(u'Set', var.get(u'require')(Js(u'./_Set'))) + var.put(u'noop', var.get(u'require')(Js(u'./noop'))) + var.put(u'setToArray', var.get(u'require')(Js(u'./_setToArray'))) + var.put(u'INFINITY', (Js(1.0)/Js(0.0))) + @Js + def PyJs_anonymous_3635_(values, this, arguments, var=var): + var = Scope({u'this':this, u'values':values, u'arguments':arguments}, var) + var.registers([u'values']) + return var.get(u'Set').create(var.get(u'values')) + PyJs_anonymous_3635_._set_name(u'anonymous') + var.put(u'createSet', (var.get(u'noop') if (var.get(u'Set') and ((Js(1.0)/var.get(u'setToArray')(var.get(u'Set').create(Js([None, (-Js(0.0))]))).get(u'1'))==var.get(u'INFINITY'))).neg() else PyJs_anonymous_3635_)) + var.get(u'module').put(u'exports', var.get(u'createSet')) +PyJs_anonymous_3634_._set_name(u'anonymous') +PyJs_Object_3636_ = Js({u'./_Set':Js(292.0),u'./_setToArray':Js(425.0),u'./noop':Js(479.0)}) +@Js +def PyJs_anonymous_3637_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'PARTIAL_COMPARE_FLAG', u'exports', u'SetCache', u'arraySome', u'UNORDERED_COMPARE_FLAG', u'equalArrays', u'module', u'require']) + @Js + def PyJsHoisted_equalArrays_(array, other, equalFunc, customizer, bitmask, stack, this, arguments, var=var): + var = Scope({u'equalFunc':equalFunc, u'this':this, u'bitmask':bitmask, u'other':other, u'arguments':arguments, u'array':array, u'customizer':customizer, u'stack':stack}, var) + var.registers([u'index', u'compared', u'stacked', u'arrValue', u'equalFunc', u'othLength', u'stack', u'arrLength', u'isPartial', u'other', u'result', u'bitmask', u'seen', u'othValue', u'customizer', u'array']) + var.put(u'isPartial', (var.get(u'bitmask')&var.get(u'PARTIAL_COMPARE_FLAG'))) + var.put(u'arrLength', var.get(u'array').get(u'length')) + var.put(u'othLength', var.get(u'other').get(u'length')) + if ((var.get(u'arrLength')!=var.get(u'othLength')) and (var.get(u'isPartial') and (var.get(u'othLength')>var.get(u'arrLength'))).neg()): + return Js(False) + var.put(u'stacked', var.get(u'stack').callprop(u'get', var.get(u'array'))) + if var.get(u'stacked'): + return (var.get(u'stacked')==var.get(u'other')) + var.put(u'index', (-Js(1.0))) + var.put(u'result', var.get(u'true')) + var.put(u'seen', (var.get(u'SetCache').create() if (var.get(u'bitmask')&var.get(u'UNORDERED_COMPARE_FLAG')) else var.get(u'undefined'))) + var.get(u'stack').callprop(u'set', var.get(u'array'), var.get(u'other')) + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))(-Js(1.0))) and ((var.get(u'value')%Js(1.0))==Js(0.0))) and (var.get(u'value')(-Js(1.0))) + PyJsHoisted_listCacheHas_.func_name = u'listCacheHas' + var.put(u'listCacheHas', PyJsHoisted_listCacheHas_) + var.put(u'assocIndexOf', var.get(u'require')(Js(u'./_assocIndexOf'))) + pass + var.get(u'module').put(u'exports', var.get(u'listCacheHas')) +PyJs_anonymous_3718_._set_name(u'anonymous') +PyJs_Object_3719_ = Js({u'./_assocIndexOf':Js(311.0)}) +@Js +def PyJs_anonymous_3720_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'assocIndexOf', u'listCacheSet', u'exports', u'require', u'module']) + @Js + def PyJsHoisted_listCacheSet_(key, value, this, arguments, var=var): + var = Scope({u'this':this, u'value':value, u'key':key, u'arguments':arguments}, var) + var.registers([u'index', u'data', u'value', u'key']) + var.put(u'data', var.get(u"this").get(u'__data__')) + var.put(u'index', var.get(u'assocIndexOf')(var.get(u'data'), var.get(u'key'))) + if (var.get(u'index')(-Js(1.0)))) if var.get(u'isString')(var.get(u'collection')) else (var.get(u'length').neg().neg() and (var.get(u'baseIndexOf')(var.get(u'collection'), var.get(u'value'), var.get(u'fromIndex'))>(-Js(1.0))))) + PyJsHoisted_includes_.func_name = u'includes' + var.put(u'includes', PyJsHoisted_includes_) + var.put(u'baseIndexOf', var.get(u'require')(Js(u'./_baseIndexOf'))) + var.put(u'isArrayLike', var.get(u'require')(Js(u'./isArrayLike'))) + var.put(u'isString', var.get(u'require')(Js(u'./isString'))) + var.put(u'toInteger', var.get(u'require')(Js(u'./toInteger'))) + var.put(u'values', var.get(u'require')(Js(u'./values'))) + var.put(u'nativeMax', var.get(u'Math').get(u'max')) + pass + var.get(u'module').put(u'exports', var.get(u'includes')) +PyJs_anonymous_3820_._set_name(u'anonymous') +PyJs_Object_3821_ = Js({u'./_baseIndexOf':Js(325.0),u'./isArrayLike':Js(459.0),u'./isString':Js(471.0),u'./toInteger':Js(490.0),u'./values':Js(496.0)}) +@Js +def PyJs_anonymous_3822_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'propertyIsEnumerable', u'exports', u'objectToString', u'require', u'module', u'hasOwnProperty', u'isArrayLikeObject', u'objectProto', u'argsTag', u'isArguments']) + @Js + def PyJsHoisted_isArguments_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((var.get(u'isArrayLikeObject')(var.get(u'value')) and var.get(u'hasOwnProperty').callprop(u'call', var.get(u'value'), Js(u'callee'))) and (var.get(u'propertyIsEnumerable').callprop(u'call', var.get(u'value'), Js(u'callee')).neg() or (var.get(u'objectToString').callprop(u'call', var.get(u'value'))==var.get(u'argsTag')))) + PyJsHoisted_isArguments_.func_name = u'isArguments' + var.put(u'isArguments', PyJsHoisted_isArguments_) + var.put(u'isArrayLikeObject', var.get(u'require')(Js(u'./isArrayLikeObject'))) + var.put(u'argsTag', Js(u'[object Arguments]')) + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'hasOwnProperty', var.get(u'objectProto').get(u'hasOwnProperty')) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + var.put(u'propertyIsEnumerable', var.get(u'objectProto').get(u'propertyIsEnumerable')) + pass + var.get(u'module').put(u'exports', var.get(u'isArguments')) +PyJs_anonymous_3822_._set_name(u'anonymous') +PyJs_Object_3823_ = Js({u'./isArrayLikeObject':Js(460.0)}) +@Js +def PyJs_anonymous_3824_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'isArray', u'require', u'exports', u'module']) + var.put(u'isArray', var.get(u'Array').get(u'isArray')) + var.get(u'module').put(u'exports', var.get(u'isArray')) +PyJs_anonymous_3824_._set_name(u'anonymous') +PyJs_Object_3825_ = Js({}) +@Js +def PyJs_anonymous_3826_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'isLength', u'getLength', u'require', u'module', u'isArrayLike', u'isFunction']) + @Js + def PyJsHoisted_isArrayLike_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return (((var.get(u'value')!=var.get(u"null")) and var.get(u'isLength')(var.get(u'getLength')(var.get(u'value')))) and var.get(u'isFunction')(var.get(u'value')).neg()) + PyJsHoisted_isArrayLike_.func_name = u'isArrayLike' + var.put(u'isArrayLike', PyJsHoisted_isArrayLike_) + var.put(u'getLength', var.get(u'require')(Js(u'./_getLength'))) + var.put(u'isFunction', var.get(u'require')(Js(u'./isFunction'))) + var.put(u'isLength', var.get(u'require')(Js(u'./isLength'))) + pass + var.get(u'module').put(u'exports', var.get(u'isArrayLike')) +PyJs_anonymous_3826_._set_name(u'anonymous') +PyJs_Object_3827_ = Js({u'./_getLength':Js(379.0),u'./isFunction':Js(463.0),u'./isLength':Js(465.0)}) +@Js +def PyJs_anonymous_3828_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'isArrayLike', u'require', u'module', u'isArrayLikeObject', u'isObjectLike']) + @Js + def PyJsHoisted_isArrayLikeObject_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return (var.get(u'isObjectLike')(var.get(u'value')) and var.get(u'isArrayLike')(var.get(u'value'))) + PyJsHoisted_isArrayLikeObject_.func_name = u'isArrayLikeObject' + var.put(u'isArrayLikeObject', PyJsHoisted_isArrayLikeObject_) + var.put(u'isArrayLike', var.get(u'require')(Js(u'./isArrayLike'))) + var.put(u'isObjectLike', var.get(u'require')(Js(u'./isObjectLike'))) + pass + var.get(u'module').put(u'exports', var.get(u'isArrayLikeObject')) +PyJs_anonymous_3828_._set_name(u'anonymous') +PyJs_Object_3829_ = Js({u'./isArrayLike':Js(459.0),u'./isObjectLike':Js(468.0)}) +@Js +def PyJs_anonymous_3830_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'isBoolean', u'objectToString', u'require', u'boolTag', u'module', u'isObjectLike', u'objectProto']) + @Js + def PyJsHoisted_isBoolean_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((PyJsStrictEq(var.get(u'value'),var.get(u'true')) or PyJsStrictEq(var.get(u'value'),Js(False))) or (var.get(u'isObjectLike')(var.get(u'value')) and (var.get(u'objectToString').callprop(u'call', var.get(u'value'))==var.get(u'boolTag')))) + PyJsHoisted_isBoolean_.func_name = u'isBoolean' + var.put(u'isBoolean', PyJsHoisted_isBoolean_) + var.put(u'isObjectLike', var.get(u'require')(Js(u'./isObjectLike'))) + var.put(u'boolTag', Js(u'[object Boolean]')) + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + pass + var.get(u'module').put(u'exports', var.get(u'isBoolean')) +PyJs_anonymous_3830_._set_name(u'anonymous') +PyJs_Object_3831_ = Js({u'./isObjectLike':Js(468.0)}) +@Js +def PyJs_anonymous_3832_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'freeModule', u'Buffer', u'root', u'require', u'freeExports', u'module', u'moduleExports', u'stubFalse', u'isBuffer']) + var.put(u'root', var.get(u'require')(Js(u'./_root'))) + var.put(u'stubFalse', var.get(u'require')(Js(u'./stubFalse'))) + var.put(u'freeExports', ((var.get(u'exports',throw=False).typeof()==Js(u'object')) and var.get(u'exports'))) + var.put(u'freeModule', ((var.get(u'freeExports') and (var.get(u'module',throw=False).typeof()==Js(u'object'))) and var.get(u'module'))) + var.put(u'moduleExports', (var.get(u'freeModule') and PyJsStrictEq(var.get(u'freeModule').get(u'exports'),var.get(u'freeExports')))) + var.put(u'Buffer', (var.get(u'root').get(u'Buffer') if var.get(u'moduleExports') else var.get(u'undefined'))) + @Js + def PyJs_anonymous_3833_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return var.get(u'value').instanceof(var.get(u'Buffer')) + PyJs_anonymous_3833_._set_name(u'anonymous') + var.put(u'isBuffer', (var.get(u'stubFalse') if var.get(u'Buffer').neg() else PyJs_anonymous_3833_)) + var.get(u'module').put(u'exports', var.get(u'isBuffer')) +PyJs_anonymous_3832_._set_name(u'anonymous') +PyJs_Object_3834_ = Js({u'./_root':Js(422.0),u'./stubFalse':Js(488.0)}) +@Js +def PyJs_anonymous_3835_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'genTag', u'exports', u'module', u'objectToString', u'require', u'isFunction', u'funcTag', u'objectProto', u'isObject']) + @Js + def PyJsHoisted_isFunction_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'tag', u'value']) + var.put(u'tag', (var.get(u'objectToString').callprop(u'call', var.get(u'value')) if var.get(u'isObject')(var.get(u'value')) else Js(u''))) + return ((var.get(u'tag')==var.get(u'funcTag')) or (var.get(u'tag')==var.get(u'genTag'))) + PyJsHoisted_isFunction_.func_name = u'isFunction' + var.put(u'isFunction', PyJsHoisted_isFunction_) + var.put(u'isObject', var.get(u'require')(Js(u'./isObject'))) + var.put(u'funcTag', Js(u'[object Function]')) + var.put(u'genTag', Js(u'[object GeneratorFunction]')) + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + pass + var.get(u'module').put(u'exports', var.get(u'isFunction')) +PyJs_anonymous_3835_._set_name(u'anonymous') +PyJs_Object_3836_ = Js({u'./isObject':Js(467.0)}) +@Js +def PyJs_anonymous_3837_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'toInteger', u'exports', u'require', u'module', u'isInteger']) + @Js + def PyJsHoisted_isInteger_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((var.get(u'value',throw=False).typeof()==Js(u'number')) and (var.get(u'value')==var.get(u'toInteger')(var.get(u'value')))) + PyJsHoisted_isInteger_.func_name = u'isInteger' + var.put(u'isInteger', PyJsHoisted_isInteger_) + var.put(u'toInteger', var.get(u'require')(Js(u'./toInteger'))) + pass + var.get(u'module').put(u'exports', var.get(u'isInteger')) +PyJs_anonymous_3837_._set_name(u'anonymous') +PyJs_Object_3838_ = Js({u'./toInteger':Js(490.0)}) +@Js +def PyJs_anonymous_3839_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'MAX_SAFE_INTEGER', u'require', u'isLength', u'exports', u'module']) + @Js + def PyJsHoisted_isLength_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((((var.get(u'value',throw=False).typeof()==Js(u'number')) and (var.get(u'value')>(-Js(1.0)))) and ((var.get(u'value')%Js(1.0))==Js(0.0))) and (var.get(u'value')<=var.get(u'MAX_SAFE_INTEGER'))) + PyJsHoisted_isLength_.func_name = u'isLength' + var.put(u'isLength', PyJsHoisted_isLength_) + var.put(u'MAX_SAFE_INTEGER', Js(9007199254740991.0)) + pass + var.get(u'module').put(u'exports', var.get(u'isLength')) +PyJs_anonymous_3839_._set_name(u'anonymous') +PyJs_Object_3840_ = Js({}) +@Js +def PyJs_anonymous_3841_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'objectToString', u'require', u'module', u'numberTag', u'isObjectLike', u'objectProto', u'isNumber']) + @Js + def PyJsHoisted_isNumber_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((var.get(u'value',throw=False).typeof()==Js(u'number')) or (var.get(u'isObjectLike')(var.get(u'value')) and (var.get(u'objectToString').callprop(u'call', var.get(u'value'))==var.get(u'numberTag')))) + PyJsHoisted_isNumber_.func_name = u'isNumber' + var.put(u'isNumber', PyJsHoisted_isNumber_) + var.put(u'isObjectLike', var.get(u'require')(Js(u'./isObjectLike'))) + var.put(u'numberTag', Js(u'[object Number]')) + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + pass + var.get(u'module').put(u'exports', var.get(u'isNumber')) +PyJs_anonymous_3841_._set_name(u'anonymous') +PyJs_Object_3842_ = Js({u'./isObjectLike':Js(468.0)}) +@Js +def PyJs_anonymous_3843_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'isObject', u'module']) + @Js + def PyJsHoisted_isObject_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'type', u'value']) + var.put(u'type', var.get(u'value',throw=False).typeof()) + return (var.get(u'value').neg().neg() and ((var.get(u'type')==Js(u'object')) or (var.get(u'type')==Js(u'function')))) + PyJsHoisted_isObject_.func_name = u'isObject' + var.put(u'isObject', PyJsHoisted_isObject_) + pass + var.get(u'module').put(u'exports', var.get(u'isObject')) +PyJs_anonymous_3843_._set_name(u'anonymous') +PyJs_Object_3844_ = Js({}) +@Js +def PyJs_anonymous_3845_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'isObjectLike', u'require', u'exports', u'module']) + @Js + def PyJsHoisted_isObjectLike_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return (var.get(u'value').neg().neg() and (var.get(u'value',throw=False).typeof()==Js(u'object'))) + PyJsHoisted_isObjectLike_.func_name = u'isObjectLike' + var.put(u'isObjectLike', PyJsHoisted_isObjectLike_) + pass + var.get(u'module').put(u'exports', var.get(u'isObjectLike')) +PyJs_anonymous_3845_._set_name(u'anonymous') +PyJs_Object_3846_ = Js({}) +@Js +def PyJs_anonymous_3847_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'isPlainObject', u'objectTag', u'funcToString', u'isHostObject', u'objectCtorString', u'require', u'objectToString', u'module', u'hasOwnProperty', u'isObjectLike', u'getPrototype', u'objectProto']) + @Js + def PyJsHoisted_isPlainObject_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value', u'Ctor', u'proto']) + if ((var.get(u'isObjectLike')(var.get(u'value')).neg() or (var.get(u'objectToString').callprop(u'call', var.get(u'value'))!=var.get(u'objectTag'))) or var.get(u'isHostObject')(var.get(u'value'))): + return Js(False) + var.put(u'proto', var.get(u'getPrototype')(var.get(u'value'))) + if PyJsStrictEq(var.get(u'proto'),var.get(u"null")): + return var.get(u'true') + var.put(u'Ctor', (var.get(u'hasOwnProperty').callprop(u'call', var.get(u'proto'), Js(u'constructor')) and var.get(u'proto').get(u'constructor'))) + return (((var.get(u'Ctor',throw=False).typeof()==Js(u'function')) and var.get(u'Ctor').instanceof(var.get(u'Ctor'))) and (var.get(u'funcToString').callprop(u'call', var.get(u'Ctor'))==var.get(u'objectCtorString'))) + PyJsHoisted_isPlainObject_.func_name = u'isPlainObject' + var.put(u'isPlainObject', PyJsHoisted_isPlainObject_) + var.put(u'getPrototype', var.get(u'require')(Js(u'./_getPrototype'))) + var.put(u'isHostObject', var.get(u'require')(Js(u'./_isHostObject'))) + var.put(u'isObjectLike', var.get(u'require')(Js(u'./isObjectLike'))) + var.put(u'objectTag', Js(u'[object Object]')) + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'funcToString', var.get(u'Function').get(u'prototype').get(u'toString')) + var.put(u'hasOwnProperty', var.get(u'objectProto').get(u'hasOwnProperty')) + var.put(u'objectCtorString', var.get(u'funcToString').callprop(u'call', var.get(u'Object'))) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + pass + var.get(u'module').put(u'exports', var.get(u'isPlainObject')) +PyJs_anonymous_3847_._set_name(u'anonymous') +PyJs_Object_3848_ = Js({u'./_getPrototype':Js(383.0),u'./_isHostObject':Js(400.0),u'./isObjectLike':Js(468.0)}) +@Js +def PyJs_anonymous_3849_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'regexpTag', u'exports', u'objectToString', u'require', u'module', u'objectProto', u'isObject', u'isRegExp']) + @Js + def PyJsHoisted_isRegExp_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return (var.get(u'isObject')(var.get(u'value')) and (var.get(u'objectToString').callprop(u'call', var.get(u'value'))==var.get(u'regexpTag'))) + PyJsHoisted_isRegExp_.func_name = u'isRegExp' + var.put(u'isRegExp', PyJsHoisted_isRegExp_) + var.put(u'isObject', var.get(u'require')(Js(u'./isObject'))) + var.put(u'regexpTag', Js(u'[object RegExp]')) + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + pass + var.get(u'module').put(u'exports', var.get(u'isRegExp')) +PyJs_anonymous_3849_._set_name(u'anonymous') +PyJs_Object_3850_ = Js({u'./isObject':Js(467.0)}) +@Js +def PyJs_anonymous_3851_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'isArray', u'exports', u'isString', u'objectToString', u'require', u'stringTag', u'module', u'isObjectLike', u'objectProto']) + @Js + def PyJsHoisted_isString_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((var.get(u'value',throw=False).typeof()==Js(u'string')) or ((var.get(u'isArray')(var.get(u'value')).neg() and var.get(u'isObjectLike')(var.get(u'value'))) and (var.get(u'objectToString').callprop(u'call', var.get(u'value'))==var.get(u'stringTag')))) + PyJsHoisted_isString_.func_name = u'isString' + var.put(u'isString', PyJsHoisted_isString_) + var.put(u'isArray', var.get(u'require')(Js(u'./isArray'))) + var.put(u'isObjectLike', var.get(u'require')(Js(u'./isObjectLike'))) + var.put(u'stringTag', Js(u'[object String]')) + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + pass + var.get(u'module').put(u'exports', var.get(u'isString')) +PyJs_anonymous_3851_._set_name(u'anonymous') +PyJs_Object_3852_ = Js({u'./isArray':Js(458.0),u'./isObjectLike':Js(468.0)}) +@Js +def PyJs_anonymous_3853_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'objectToString', u'require', u'module', u'isObjectLike', u'objectProto', u'isSymbol', u'symbolTag']) + @Js + def PyJsHoisted_isSymbol_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((var.get(u'value',throw=False).typeof()==Js(u'symbol')) or (var.get(u'isObjectLike')(var.get(u'value')) and (var.get(u'objectToString').callprop(u'call', var.get(u'value'))==var.get(u'symbolTag')))) + PyJsHoisted_isSymbol_.func_name = u'isSymbol' + var.put(u'isSymbol', PyJsHoisted_isSymbol_) + var.put(u'isObjectLike', var.get(u'require')(Js(u'./isObjectLike'))) + var.put(u'symbolTag', Js(u'[object Symbol]')) + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + pass + var.get(u'module').put(u'exports', var.get(u'isSymbol')) +PyJs_anonymous_3853_._set_name(u'anonymous') +PyJs_Object_3854_ = Js({u'./isObjectLike':Js(468.0)}) +@Js +def PyJs_anonymous_3855_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'arrayTag', u'typedArrayTags', u'uint32Tag', u'arrayBufferTag', u'objectTag', u'dataViewTag', u'int8Tag', u'isObjectLike', u'errorTag', u'float64Tag', u'isLength', u'boolTag', u'funcTag', u'isTypedArray', u'float32Tag', u'argsTag', u'regexpTag', u'exports', u'dateTag', u'setTag', u'stringTag', u'int32Tag', u'module', u'mapTag', u'uint8Tag', u'require', u'objectToString', u'uint16Tag', u'weakMapTag', u'int16Tag', u'numberTag', u'objectProto', u'uint8ClampedTag']) + @Js + def PyJsHoisted_isTypedArray_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((var.get(u'isObjectLike')(var.get(u'value')) and var.get(u'isLength')(var.get(u'value').get(u'length'))) and var.get(u'typedArrayTags').get(var.get(u'objectToString').callprop(u'call', var.get(u'value'))).neg().neg()) + PyJsHoisted_isTypedArray_.func_name = u'isTypedArray' + var.put(u'isTypedArray', PyJsHoisted_isTypedArray_) + var.put(u'isLength', var.get(u'require')(Js(u'./isLength'))) + var.put(u'isObjectLike', var.get(u'require')(Js(u'./isObjectLike'))) + var.put(u'argsTag', Js(u'[object Arguments]')) + var.put(u'arrayTag', Js(u'[object Array]')) + var.put(u'boolTag', Js(u'[object Boolean]')) + var.put(u'dateTag', Js(u'[object Date]')) + var.put(u'errorTag', Js(u'[object Error]')) + var.put(u'funcTag', Js(u'[object Function]')) + var.put(u'mapTag', Js(u'[object Map]')) + var.put(u'numberTag', Js(u'[object Number]')) + var.put(u'objectTag', Js(u'[object Object]')) + var.put(u'regexpTag', Js(u'[object RegExp]')) + var.put(u'setTag', Js(u'[object Set]')) + var.put(u'stringTag', Js(u'[object String]')) + var.put(u'weakMapTag', Js(u'[object WeakMap]')) + var.put(u'arrayBufferTag', Js(u'[object ArrayBuffer]')) + var.put(u'dataViewTag', Js(u'[object DataView]')) + var.put(u'float32Tag', Js(u'[object Float32Array]')) + var.put(u'float64Tag', Js(u'[object Float64Array]')) + var.put(u'int8Tag', Js(u'[object Int8Array]')) + var.put(u'int16Tag', Js(u'[object Int16Array]')) + var.put(u'int32Tag', Js(u'[object Int32Array]')) + var.put(u'uint8Tag', Js(u'[object Uint8Array]')) + var.put(u'uint8ClampedTag', Js(u'[object Uint8ClampedArray]')) + var.put(u'uint16Tag', Js(u'[object Uint16Array]')) + var.put(u'uint32Tag', Js(u'[object Uint32Array]')) + PyJs_Object_3856_ = Js({}) + var.put(u'typedArrayTags', PyJs_Object_3856_) + def PyJs_LONG_3857_(var=var): + return var.get(u'typedArrayTags').put(var.get(u'int8Tag'), var.get(u'typedArrayTags').put(var.get(u'int16Tag'), var.get(u'typedArrayTags').put(var.get(u'int32Tag'), var.get(u'typedArrayTags').put(var.get(u'uint8Tag'), var.get(u'typedArrayTags').put(var.get(u'uint8ClampedTag'), var.get(u'typedArrayTags').put(var.get(u'uint16Tag'), var.get(u'typedArrayTags').put(var.get(u'uint32Tag'), var.get(u'true')))))))) + var.get(u'typedArrayTags').put(var.get(u'float32Tag'), var.get(u'typedArrayTags').put(var.get(u'float64Tag'), PyJs_LONG_3857_())) + def PyJs_LONG_3859_(var=var): + def PyJs_LONG_3858_(var=var): + return var.get(u'typedArrayTags').put(var.get(u'funcTag'), var.get(u'typedArrayTags').put(var.get(u'mapTag'), var.get(u'typedArrayTags').put(var.get(u'numberTag'), var.get(u'typedArrayTags').put(var.get(u'objectTag'), var.get(u'typedArrayTags').put(var.get(u'regexpTag'), var.get(u'typedArrayTags').put(var.get(u'setTag'), var.get(u'typedArrayTags').put(var.get(u'stringTag'), var.get(u'typedArrayTags').put(var.get(u'weakMapTag'), Js(False))))))))) + return var.get(u'typedArrayTags').put(var.get(u'argsTag'), var.get(u'typedArrayTags').put(var.get(u'arrayTag'), var.get(u'typedArrayTags').put(var.get(u'arrayBufferTag'), var.get(u'typedArrayTags').put(var.get(u'boolTag'), var.get(u'typedArrayTags').put(var.get(u'dataViewTag'), var.get(u'typedArrayTags').put(var.get(u'dateTag'), var.get(u'typedArrayTags').put(var.get(u'errorTag'), PyJs_LONG_3858_()))))))) + PyJs_LONG_3859_() + var.put(u'objectProto', var.get(u'Object').get(u'prototype')) + var.put(u'objectToString', var.get(u'objectProto').get(u'toString')) + pass + var.get(u'module').put(u'exports', var.get(u'isTypedArray')) +PyJs_anonymous_3855_._set_name(u'anonymous') +PyJs_Object_3860_ = Js({u'./isLength':Js(465.0),u'./isObjectLike':Js(468.0)}) +@Js +def PyJs_anonymous_3861_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'indexKeys', u'exports', u'baseHas', u'baseKeys', u'keys', u'isArrayLike', u'require', u'isIndex', u'module', u'isPrototype']) + @Js + def PyJsHoisted_keys_(object, this, arguments, var=var): + var = Scope({u'this':this, u'object':object, u'arguments':arguments}, var) + var.registers([u'skipIndexes', u'object', u'indexes', u'length', u'result', u'key', u'isProto']) + var.put(u'isProto', var.get(u'isPrototype')(var.get(u'object'))) + if (var.get(u'isProto') or var.get(u'isArrayLike')(var.get(u'object'))).neg(): + return var.get(u'baseKeys')(var.get(u'object')) + var.put(u'indexes', var.get(u'indexKeys')(var.get(u'object'))) + var.put(u'skipIndexes', var.get(u'indexes').neg().neg()) + var.put(u'result', (var.get(u'indexes') or Js([]))) + var.put(u'length', var.get(u'result').get(u'length')) + for PyJsTemp in var.get(u'object'): + var.put(u'key', PyJsTemp) + if ((var.get(u'baseHas')(var.get(u'object'), var.get(u'key')) and (var.get(u'skipIndexes') and ((var.get(u'key')==Js(u'length')) or var.get(u'isIndex')(var.get(u'key'), var.get(u'length')))).neg()) and (var.get(u'isProto') and (var.get(u'key')==Js(u'constructor'))).neg()): + var.get(u'result').callprop(u'push', var.get(u'key')) + return var.get(u'result') + PyJsHoisted_keys_.func_name = u'keys' + var.put(u'keys', PyJsHoisted_keys_) + var.put(u'baseHas', var.get(u'require')(Js(u'./_baseHas'))) + var.put(u'baseKeys', var.get(u'require')(Js(u'./_baseKeys'))) + var.put(u'indexKeys', var.get(u'require')(Js(u'./_indexKeys'))) + var.put(u'isArrayLike', var.get(u'require')(Js(u'./isArrayLike'))) + var.put(u'isIndex', var.get(u'require')(Js(u'./_isIndex'))) + var.put(u'isPrototype', var.get(u'require')(Js(u'./_isPrototype'))) + pass + var.get(u'module').put(u'exports', var.get(u'keys')) +PyJs_anonymous_3861_._set_name(u'anonymous') +PyJs_Object_3862_ = Js({u'./_baseHas':Js(323.0),u'./_baseKeys':Js(332.0),u'./_indexKeys':Js(393.0),u'./_isIndex':Js(401.0),u'./_isPrototype':Js(406.0),u'./isArrayLike':Js(459.0)}) +@Js +def PyJs_anonymous_3863_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'indexKeys', u'exports', u'baseKeysIn', u'require', u'isIndex', u'module', u'keysIn', u'isPrototype', u'hasOwnProperty', u'objectProto']) + @Js + def PyJsHoisted_keysIn_(object, this, arguments, var=var): + var = Scope({u'this':this, u'object':object, u'arguments':arguments}, var) + var.registers([u'skipIndexes', u'index', u'object', u'indexes', u'length', u'result', u'key', u'props', u'isProto', u'propsLength']) + var.put(u'index', (-Js(1.0))) + var.put(u'isProto', var.get(u'isPrototype')(var.get(u'object'))) + var.put(u'props', var.get(u'baseKeysIn')(var.get(u'object'))) + var.put(u'propsLength', var.get(u'props').get(u'length')) + var.put(u'indexes', var.get(u'indexKeys')(var.get(u'object'))) + var.put(u'skipIndexes', var.get(u'indexes').neg().neg()) + var.put(u'result', (var.get(u'indexes') or Js([]))) + var.put(u'length', var.get(u'result').get(u'length')) + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))Js(1.0)) and var.get(u'isIterateeCall')(var.get(u'collection'), var.get(u'iteratees').get(u'0'), var.get(u'iteratees').get(u'1'))): + var.put(u'iteratees', Js([])) + else: + if ((var.get(u'length')>Js(2.0)) and var.get(u'isIterateeCall')(var.get(u'iteratees').get(u'0'), var.get(u'iteratees').get(u'1'), var.get(u'iteratees').get(u'2'))): + var.put(u'iteratees', Js([var.get(u'iteratees').get(u'0')])) + var.put(u'iteratees', (var.get(u'iteratees').get(u'0') if ((var.get(u'iteratees').get(u'length')==Js(1.0)) and var.get(u'isArray')(var.get(u'iteratees').get(u'0'))) else var.get(u'baseFlatten')(var.get(u'iteratees'), Js(1.0), var.get(u'isFlattenableIteratee')))) + return var.get(u'baseOrderBy')(var.get(u'collection'), var.get(u'iteratees'), Js([])) + PyJs_anonymous_3887_._set_name(u'anonymous') + var.put(u'sortBy', var.get(u'rest')(PyJs_anonymous_3887_)) + var.get(u'module').put(u'exports', var.get(u'sortBy')) +PyJs_anonymous_3886_._set_name(u'anonymous') +PyJs_Object_3888_ = Js({u'./_baseFlatten':Js(318.0),u'./_baseOrderBy':Js(339.0),u'./_isFlattenableIteratee':Js(399.0),u'./_isIterateeCall':Js(402.0),u'./isArray':Js(458.0),u'./rest':Js(484.0)}) +@Js +def PyJs_anonymous_3889_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'startsWith', u'exports', u'toInteger', u'baseToString', u'baseClamp', u'module', u'toString', u'require']) + @Js + def PyJsHoisted_startsWith_(string, target, position, this, arguments, var=var): + var = Scope({u'this':this, u'position':position, u'string':string, u'arguments':arguments, u'target':target}, var) + var.registers([u'position', u'string', u'target']) + var.put(u'string', var.get(u'toString')(var.get(u'string'))) + var.put(u'position', var.get(u'baseClamp')(var.get(u'toInteger')(var.get(u'position')), Js(0.0), var.get(u'string').get(u'length'))) + return (var.get(u'string').callprop(u'lastIndexOf', var.get(u'baseToString')(var.get(u'target')), var.get(u'position'))==var.get(u'position')) + PyJsHoisted_startsWith_.func_name = u'startsWith' + var.put(u'startsWith', PyJsHoisted_startsWith_) + var.put(u'baseClamp', var.get(u'require')(Js(u'./_baseClamp'))) + var.put(u'baseToString', var.get(u'require')(Js(u'./_baseToString'))) + var.put(u'toInteger', var.get(u'require')(Js(u'./toInteger'))) + var.put(u'toString', var.get(u'require')(Js(u'./toString'))) + pass + var.get(u'module').put(u'exports', var.get(u'startsWith')) +PyJs_anonymous_3889_._set_name(u'anonymous') +PyJs_Object_3890_ = Js({u'./_baseClamp':Js(313.0),u'./_baseToString':Js(347.0),u'./toInteger':Js(490.0),u'./toString':Js(493.0)}) +@Js +def PyJs_anonymous_3891_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'stubArray', u'exports', u'require', u'module']) + @Js + def PyJsHoisted_stubArray_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return Js([]) + PyJsHoisted_stubArray_.func_name = u'stubArray' + var.put(u'stubArray', PyJsHoisted_stubArray_) + pass + var.get(u'module').put(u'exports', var.get(u'stubArray')) +PyJs_anonymous_3891_._set_name(u'anonymous') +PyJs_Object_3892_ = Js({}) +@Js +def PyJs_anonymous_3893_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'stubFalse', u'exports', u'module']) + @Js + def PyJsHoisted_stubFalse_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return Js(False) + PyJsHoisted_stubFalse_.func_name = u'stubFalse' + var.put(u'stubFalse', PyJsHoisted_stubFalse_) + pass + var.get(u'module').put(u'exports', var.get(u'stubFalse')) +PyJs_anonymous_3893_._set_name(u'anonymous') +PyJs_Object_3894_ = Js({}) +@Js +def PyJs_anonymous_3895_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'INFINITY', u'MAX_INTEGER', u'module', u'toNumber', u'toFinite', u'require']) + @Js + def PyJsHoisted_toFinite_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value', u'sign']) + if var.get(u'value').neg(): + return (var.get(u'value') if PyJsStrictEq(var.get(u'value'),Js(0.0)) else Js(0.0)) + var.put(u'value', var.get(u'toNumber')(var.get(u'value'))) + if (PyJsStrictEq(var.get(u'value'),var.get(u'INFINITY')) or PyJsStrictEq(var.get(u'value'),(-var.get(u'INFINITY')))): + var.put(u'sign', ((-Js(1.0)) if (var.get(u'value')Js(10000.0)): + return var.get('undefined') + var.put(u'match', JsRegExp(u'/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i').callprop(u'exec', var.get(u'str'))) + if var.get(u'match').neg(): + return var.get('undefined') + var.put(u'n', var.get(u'parseFloat')(var.get(u'match').get(u'1'))) + var.put(u'type', (var.get(u'match').get(u'2') or Js(u'ms')).callprop(u'toLowerCase')) + while 1: + SWITCHED = False + CONDITION = (var.get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'years')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'year')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'yrs')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'yr')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'y')): + SWITCHED = True + return (var.get(u'n')*var.get(u'y')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'days')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'day')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'd')): + SWITCHED = True + return (var.get(u'n')*var.get(u'd')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'hours')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'hour')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'hrs')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'hr')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'h')): + SWITCHED = True + return (var.get(u'n')*var.get(u'h')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'minutes')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'minute')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'mins')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'min')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'm')): + SWITCHED = True + return (var.get(u'n')*var.get(u'm')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'seconds')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'second')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'secs')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'sec')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u's')): + SWITCHED = True + return (var.get(u'n')*var.get(u's')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'milliseconds')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'millisecond')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'msecs')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'msec')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ms')): + SWITCHED = True + return var.get(u'n') + SWITCHED = True + break + PyJsHoisted_parse_.func_name = u'parse' + var.put(u'parse', PyJsHoisted_parse_) + @Js + def PyJsHoisted_short_(ms, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'ms':ms}, var) + var.registers([u'ms']) + if (var.get(u'ms')>=var.get(u'd')): + return (var.get(u'Math').callprop(u'round', (var.get(u'ms')/var.get(u'd')))+Js(u'd')) + if (var.get(u'ms')>=var.get(u'h')): + return (var.get(u'Math').callprop(u'round', (var.get(u'ms')/var.get(u'h')))+Js(u'h')) + if (var.get(u'ms')>=var.get(u'm')): + return (var.get(u'Math').callprop(u'round', (var.get(u'ms')/var.get(u'm')))+Js(u'm')) + if (var.get(u'ms')>=var.get(u's')): + return (var.get(u'Math').callprop(u'round', (var.get(u'ms')/var.get(u's')))+Js(u's')) + return (var.get(u'ms')+Js(u'ms')) + PyJsHoisted_short_.func_name = u'short' + var.put(u'short', PyJsHoisted_short_) + @Js + def PyJsHoisted_plural_(ms, n, name, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'name':name, u'ms':ms, u'n':n}, var) + var.registers([u'name', u'ms', u'n']) + if (var.get(u'ms')var.get(u'dst')): + var.get(u'names').put(var.get(u'dst'), var.get(u'names').get(var.get(u'src'))) + var.put(u'dst',Js(var.get(u'dst').to_number())+Js(1)) + finally: + var.put(u'src',Js(var.get(u'src').to_number())+Js(1)) + var.get(u'names').put(u'length', var.get(u'dst')) + return var.get(u'names') + PyJs_getOwnPropertyNames_3925_._set_name(u'getOwnPropertyNames') + var.get(u'Object').put(u'getOwnPropertyNames', PyJs_getOwnPropertyNames_3925_) + pass + pass + var.get(u'defProp')(var.get(u'exports'), Js(u'makeAccessor'), var.get(u'makeAccessor')) +PyJs_anonymous_3921_._set_name(u'anonymous') +PyJs_Object_3927_ = Js({}) +@Js +def PyJs_anonymous_3928_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_3929_ = Js({}) + @Js + def PyJs_anonymous_3930_(PyJsArg_676c6f62616c_, this, arguments, var=var): + var = Scope({u'this':this, u'global':PyJsArg_676c6f62616c_, u'arguments':arguments}, var) + var.registers([u'global']) + pass + @Js + def PyJs_anonymous_3931_(root, this, arguments, var=var): + var = Scope({u'this':this, u'root':root, u'arguments':arguments}, var) + var.registers([u'dataIsEmpty', u'zeroes', u'codePointToString', u'freeModule', u'HIGH_SURROGATE_MIN', u'dataRemove', u'freeExports', u'splitAtBMP', u'dataIntersection', u'lowSurrogate', u'dataContains', u'dataFromCodePoints', u'dataAddData', u'createBMPCharacterClasses', u'createSurrogateCharacterClasses', u'createUnicodeCharacterClasses', u'ERRORS', u'dataToArray', u'floor', u'regenerate', u'hex', u'surrogateSet', u'optimizeByLowSurrogates', u'stringFromCharCode', u'toString', u'dataRemoveData', u'freeGlobal', u'pad', u'LOW_SURROGATE_MAX', u'isArray', u'HIGH_SURROGATE_MAX', u'extend', u'symbolToCodePoint', u'object', u'createCharacterClassesFromData', u'LOW_SURROGATE_MIN', u'slice', u'hasOwnProperty', u'dataRemoveRange', u'isNumber', u'dataAdd', u'highSurrogate', u'codePointToStringUnicode', u'proto', u'dataAddRange', u'regexNull', u'dataIsSingleton', u'root', u'optimizeSurrogateMappings', u'forEach']) + var.put(u'freeExports', ((var.get(u'exports',throw=False).typeof()==Js(u'object')) and var.get(u'exports'))) + var.put(u'freeModule', ((((var.get(u'module',throw=False).typeof()==Js(u'object')) and var.get(u'module')) and (var.get(u'module').get(u'exports')==var.get(u'freeExports'))) and var.get(u'module'))) + var.put(u'freeGlobal', ((var.get(u'global',throw=False).typeof()==Js(u'object')) and var.get(u'global'))) + if (PyJsStrictEq(var.get(u'freeGlobal').get(u'global'),var.get(u'freeGlobal')) or PyJsStrictEq(var.get(u'freeGlobal').get(u'window'),var.get(u'freeGlobal'))): + var.put(u'root', var.get(u'freeGlobal')) + PyJs_Object_3932_ = Js({u'rangeOrder':(Js(u'A range\u2019s `stop` value must be greater than or equal ')+Js(u'to the `start` value.')),u'codePointRange':(Js(u'Invalid code point value. Code points range from ')+Js(u'U+000000 to U+10FFFF.'))}) + var.put(u'ERRORS', PyJs_Object_3932_) + var.put(u'HIGH_SURROGATE_MIN', Js(55296)) + var.put(u'HIGH_SURROGATE_MAX', Js(56319)) + var.put(u'LOW_SURROGATE_MIN', Js(56320)) + var.put(u'LOW_SURROGATE_MAX', Js(57343)) + var.put(u'regexNull', JsRegExp(u'/\\\\x00([^0123456789]|$)/g')) + PyJs_Object_3933_ = Js({}) + var.put(u'object', PyJs_Object_3933_) + var.put(u'hasOwnProperty', var.get(u'object').get(u'hasOwnProperty')) + @Js + def PyJs_anonymous_3934_(destination, source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'destination':destination, u'arguments':arguments}, var) + var.registers([u'source', u'destination', u'key']) + pass + for PyJsTemp in var.get(u'source'): + var.put(u'key', PyJsTemp) + if var.get(u'hasOwnProperty').callprop(u'call', var.get(u'source'), var.get(u'key')): + var.get(u'destination').put(var.get(u'key'), var.get(u'source').get(var.get(u'key'))) + return var.get(u'destination') + PyJs_anonymous_3934_._set_name(u'anonymous') + var.put(u'extend', PyJs_anonymous_3934_) + @Js + def PyJs_anonymous_3935_(array, callback, this, arguments, var=var): + var = Scope({u'this':this, u'callback':callback, u'array':array, u'arguments':arguments}, var) + var.registers([u'index', u'length', u'array', u'callback']) + var.put(u'index', (-Js(1.0))) + var.put(u'length', var.get(u'array').get(u'length')) + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))=var.get(u'start')) and (var.get(u'codePoint')var.get(u'rangeEnd')): + return var.get(u'data') + if ((var.get(u'rangeStart')<=var.get(u'start')) and (var.get(u'rangeEnd')>=var.get(u'end'))): + var.get(u'data').callprop(u'splice', var.get(u'index'), Js(2.0)) + continue + if ((var.get(u'rangeStart')>=var.get(u'start')) and (var.get(u'rangeEnd')=var.get(u'start')) and (var.get(u'rangeStart')<=var.get(u'end'))): + var.get(u'data').put((var.get(u'index')+Js(1.0)), var.get(u'rangeStart')) + else: + if ((var.get(u'rangeEnd')>=var.get(u'start')) and (var.get(u'rangeEnd')<=var.get(u'end'))): + var.get(u'data').put(var.get(u'index'), (var.get(u'rangeEnd')+Js(1.0))) + return var.get(u'data') + var.put(u'index', Js(2.0), u'+') + return var.get(u'data') + PyJs_anonymous_3942_._set_name(u'anonymous') + var.put(u'dataRemoveRange', PyJs_anonymous_3942_) + @Js + def PyJs_anonymous_3943_(data, codePoint, this, arguments, var=var): + var = Scope({u'this':this, u'codePoint':codePoint, u'data':data, u'arguments':arguments}, var) + var.registers([u'index', u'codePoint', u'end', u'lastIndex', u'start', u'length', u'data']) + var.put(u'index', Js(0.0)) + pass + pass + var.put(u'lastIndex', var.get(u"null")) + var.put(u'length', var.get(u'data').get(u'length')) + if ((var.get(u'codePoint')Js(1114111))): + PyJsTempException = JsToPyException(var.get(u'RangeError')(var.get(u'ERRORS').get(u'codePointRange'))) + raise PyJsTempException + while (var.get(u'index')=var.get(u'start')) and (var.get(u'codePoint')var.get(u'codePoint')): + var.get(u'data').callprop(u'splice', ((var.get(u'lastIndex')+Js(2.0)) if (var.get(u'lastIndex')!=var.get(u"null")) else Js(0.0)), Js(0.0), var.get(u'codePoint'), (var.get(u'codePoint')+Js(1.0))) + return var.get(u'data') + if (var.get(u'codePoint')==var.get(u'end')): + if ((var.get(u'codePoint')+Js(1.0))==var.get(u'data').get((var.get(u'index')+Js(2.0)))): + var.get(u'data').callprop(u'splice', var.get(u'index'), Js(4.0), var.get(u'start'), var.get(u'data').get((var.get(u'index')+Js(3.0)))) + return var.get(u'data') + var.get(u'data').put((var.get(u'index')+Js(1.0)), (var.get(u'codePoint')+Js(1.0))) + return var.get(u'data') + var.put(u'lastIndex', var.get(u'index')) + var.put(u'index', Js(2.0), u'+') + var.get(u'data').callprop(u'push', var.get(u'codePoint'), (var.get(u'codePoint')+Js(1.0))) + return var.get(u'data') + PyJs_anonymous_3943_._set_name(u'anonymous') + var.put(u'dataAdd', PyJs_anonymous_3943_) + @Js + def PyJs_anonymous_3944_(dataA, dataB, this, arguments, var=var): + var = Scope({u'this':this, u'dataA':dataA, u'arguments':arguments, u'dataB':dataB}, var) + var.registers([u'index', u'end', u'dataA', u'dataB', u'start', u'length', u'data']) + var.put(u'index', Js(0.0)) + pass + pass + var.put(u'data', var.get(u'dataA').callprop(u'slice')) + var.put(u'length', var.get(u'dataB').get(u'length')) + while (var.get(u'index')Js(1114111))) or (var.get(u'rangeEnd')Js(1114111))): + PyJsTempException = JsToPyException(var.get(u'RangeError')(var.get(u'ERRORS').get(u'codePointRange'))) + raise PyJsTempException + var.put(u'index', Js(0.0)) + pass + pass + var.put(u'added', Js(False)) + var.put(u'length', var.get(u'data').get(u'length')) + while (var.get(u'index')var.get(u'rangeEnd')): + return var.get(u'data') + if ((var.get(u'start')>=var.get(u'rangeStart')) and (var.get(u'start')<=var.get(u'rangeEnd'))): + if ((var.get(u'end')>var.get(u'rangeStart')) and ((var.get(u'end')-Js(1.0))<=var.get(u'rangeEnd'))): + var.get(u'data').callprop(u'splice', var.get(u'index'), Js(2.0)) + var.put(u'index', Js(2.0), u'-') + else: + var.get(u'data').callprop(u'splice', (var.get(u'index')-Js(1.0)), Js(2.0)) + var.put(u'index', Js(2.0), u'-') + else: + if (var.get(u'start')==(var.get(u'rangeEnd')+Js(1.0))): + var.get(u'data').put(var.get(u'index'), var.get(u'rangeStart')) + return var.get(u'data') + else: + if (var.get(u'start')>var.get(u'rangeEnd')): + var.get(u'data').callprop(u'splice', var.get(u'index'), Js(0.0), var.get(u'rangeStart'), (var.get(u'rangeEnd')+Js(1.0))) + return var.get(u'data') + else: + if (((var.get(u'rangeStart')>=var.get(u'start')) and (var.get(u'rangeStart')=var.get(u'start')) and (var.get(u'rangeStart')=var.get(u'end'))): + var.get(u'data').put(var.get(u'index'), var.get(u'rangeStart')) + var.get(u'data').put((var.get(u'index')+Js(1.0)), (var.get(u'rangeEnd')+Js(1.0))) + var.put(u'added', var.get(u'true')) + var.put(u'index', Js(2.0), u'+') + if var.get(u'added').neg(): + var.get(u'data').callprop(u'push', var.get(u'rangeStart'), (var.get(u'rangeEnd')+Js(1.0))) + return var.get(u'data') + PyJs_anonymous_3946_._set_name(u'anonymous') + var.put(u'dataAddRange', PyJs_anonymous_3946_) + @Js + def PyJs_anonymous_3947_(data, codePoint, this, arguments, var=var): + var = Scope({u'this':this, u'codePoint':codePoint, u'data':data, u'arguments':arguments}, var) + var.registers([u'index', u'codePoint', u'end', u'start', u'length', u'data']) + var.put(u'index', Js(0.0)) + var.put(u'length', var.get(u'data').get(u'length')) + var.put(u'start', var.get(u'data').get(var.get(u'index'))) + var.put(u'end', var.get(u'data').get((var.get(u'length')-Js(1.0)))) + if (var.get(u'length')>=Js(2.0)): + if ((var.get(u'codePoint')var.get(u'end'))): + return Js(False) + while (var.get(u'index')=var.get(u'start')) and (var.get(u'codePoint')=Js(40)) and (var.get(u'codePoint')<=Js(43)))) or (var.get(u'codePoint')==Js(45))) or (var.get(u'codePoint')==Js(46))) or (var.get(u'codePoint')==Js(63))) or ((var.get(u'codePoint')>=Js(91)) and (var.get(u'codePoint')<=Js(94)))) or ((var.get(u'codePoint')>=Js(123)) and (var.get(u'codePoint')<=Js(125)))): + var.put(u'string', (Js(u'\\')+var.get(u'stringFromCharCode')(var.get(u'codePoint')))) + else: + if ((var.get(u'codePoint')>=Js(32)) and (var.get(u'codePoint')<=Js(126))): + var.put(u'string', var.get(u'stringFromCharCode')(var.get(u'codePoint'))) + else: + if (var.get(u'codePoint')<=Js(255)): + var.put(u'string', (Js(u'\\x')+var.get(u'pad')(var.get(u'hex')(var.get(u'codePoint')), Js(2.0)))) + else: + var.put(u'string', (Js(u'\\u')+var.get(u'pad')(var.get(u'hex')(var.get(u'codePoint')), Js(4.0)))) + return var.get(u'string') + PyJs_anonymous_3954_._set_name(u'anonymous') + var.put(u'codePointToString', PyJs_anonymous_3954_) + @Js + def PyJs_anonymous_3955_(codePoint, this, arguments, var=var): + var = Scope({u'this':this, u'codePoint':codePoint, u'arguments':arguments}, var) + var.registers([u'codePoint']) + if (var.get(u'codePoint')<=Js(65535)): + return var.get(u'codePointToString')(var.get(u'codePoint')) + return ((Js(u'\\u{')+var.get(u'codePoint').callprop(u'toString', Js(16.0)).callprop(u'toUpperCase'))+Js(u'}')) + PyJs_anonymous_3955_._set_name(u'anonymous') + var.put(u'codePointToStringUnicode', PyJs_anonymous_3955_) + @Js + def PyJs_anonymous_3956_(symbol, this, arguments, var=var): + var = Scope({u'this':this, u'symbol':symbol, u'arguments':arguments}, var) + var.registers([u'symbol', u'length', u'second', u'first']) + var.put(u'length', var.get(u'symbol').get(u'length')) + var.put(u'first', var.get(u'symbol').callprop(u'charCodeAt', Js(0.0))) + pass + if (((var.get(u'first')>=var.get(u'HIGH_SURROGATE_MIN')) and (var.get(u'first')<=var.get(u'HIGH_SURROGATE_MAX'))) and (var.get(u'length')>Js(1.0))): + var.put(u'second', var.get(u'symbol').callprop(u'charCodeAt', Js(1.0))) + return (((((var.get(u'first')-var.get(u'HIGH_SURROGATE_MIN'))*Js(1024))+var.get(u'second'))-var.get(u'LOW_SURROGATE_MIN'))+Js(65536)) + return var.get(u'first') + PyJs_anonymous_3956_._set_name(u'anonymous') + var.put(u'symbolToCodePoint', PyJs_anonymous_3956_) + @Js + def PyJs_anonymous_3957_(data, this, arguments, var=var): + var = Scope({u'this':this, u'data':data, u'arguments':arguments}, var) + var.registers([u'index', u'end', u'start', u'length', u'result', u'data']) + var.put(u'result', Js(u'')) + var.put(u'index', Js(0.0)) + pass + pass + var.put(u'length', var.get(u'data').get(u'length')) + if var.get(u'dataIsSingleton')(var.get(u'data')): + return var.get(u'codePointToString')(var.get(u'data').get(u'0')) + while (var.get(u'index')=var.get(u'HIGH_SURROGATE_MIN')) and (var.get(u'end')<=var.get(u'HIGH_SURROGATE_MAX'))): + var.get(u'bmp').callprop(u'push', var.get(u'start'), var.get(u'HIGH_SURROGATE_MIN')) + var.get(u'loneHighSurrogates').callprop(u'push', var.get(u'HIGH_SURROGATE_MIN'), (var.get(u'end')+Js(1.0))) + if ((var.get(u'end')>=var.get(u'LOW_SURROGATE_MIN')) and (var.get(u'end')<=var.get(u'LOW_SURROGATE_MAX'))): + var.get(u'bmp').callprop(u'push', var.get(u'start'), var.get(u'HIGH_SURROGATE_MIN')) + var.get(u'loneHighSurrogates').callprop(u'push', var.get(u'HIGH_SURROGATE_MIN'), (var.get(u'HIGH_SURROGATE_MAX')+Js(1.0))) + var.get(u'loneLowSurrogates').callprop(u'push', var.get(u'LOW_SURROGATE_MIN'), (var.get(u'end')+Js(1.0))) + if (var.get(u'end')>var.get(u'LOW_SURROGATE_MAX')): + var.get(u'bmp').callprop(u'push', var.get(u'start'), var.get(u'HIGH_SURROGATE_MIN')) + var.get(u'loneHighSurrogates').callprop(u'push', var.get(u'HIGH_SURROGATE_MIN'), (var.get(u'HIGH_SURROGATE_MAX')+Js(1.0))) + var.get(u'loneLowSurrogates').callprop(u'push', var.get(u'LOW_SURROGATE_MIN'), (var.get(u'LOW_SURROGATE_MAX')+Js(1.0))) + if (var.get(u'end')<=Js(65535)): + var.get(u'bmp').callprop(u'push', (var.get(u'LOW_SURROGATE_MAX')+Js(1.0)), (var.get(u'end')+Js(1.0))) + else: + var.get(u'bmp').callprop(u'push', (var.get(u'LOW_SURROGATE_MAX')+Js(1.0)), (Js(65535)+Js(1.0))) + var.get(u'astral').callprop(u'push', (Js(65535)+Js(1.0)), (var.get(u'end')+Js(1.0))) + else: + if ((var.get(u'start')>=var.get(u'HIGH_SURROGATE_MIN')) and (var.get(u'start')<=var.get(u'HIGH_SURROGATE_MAX'))): + if ((var.get(u'end')>=var.get(u'HIGH_SURROGATE_MIN')) and (var.get(u'end')<=var.get(u'HIGH_SURROGATE_MAX'))): + var.get(u'loneHighSurrogates').callprop(u'push', var.get(u'start'), (var.get(u'end')+Js(1.0))) + if ((var.get(u'end')>=var.get(u'LOW_SURROGATE_MIN')) and (var.get(u'end')<=var.get(u'LOW_SURROGATE_MAX'))): + var.get(u'loneHighSurrogates').callprop(u'push', var.get(u'start'), (var.get(u'HIGH_SURROGATE_MAX')+Js(1.0))) + var.get(u'loneLowSurrogates').callprop(u'push', var.get(u'LOW_SURROGATE_MIN'), (var.get(u'end')+Js(1.0))) + if (var.get(u'end')>var.get(u'LOW_SURROGATE_MAX')): + var.get(u'loneHighSurrogates').callprop(u'push', var.get(u'start'), (var.get(u'HIGH_SURROGATE_MAX')+Js(1.0))) + var.get(u'loneLowSurrogates').callprop(u'push', var.get(u'LOW_SURROGATE_MIN'), (var.get(u'LOW_SURROGATE_MAX')+Js(1.0))) + if (var.get(u'end')<=Js(65535)): + var.get(u'bmp').callprop(u'push', (var.get(u'LOW_SURROGATE_MAX')+Js(1.0)), (var.get(u'end')+Js(1.0))) + else: + var.get(u'bmp').callprop(u'push', (var.get(u'LOW_SURROGATE_MAX')+Js(1.0)), (Js(65535)+Js(1.0))) + var.get(u'astral').callprop(u'push', (Js(65535)+Js(1.0)), (var.get(u'end')+Js(1.0))) + else: + if ((var.get(u'start')>=var.get(u'LOW_SURROGATE_MIN')) and (var.get(u'start')<=var.get(u'LOW_SURROGATE_MAX'))): + if ((var.get(u'end')>=var.get(u'LOW_SURROGATE_MIN')) and (var.get(u'end')<=var.get(u'LOW_SURROGATE_MAX'))): + var.get(u'loneLowSurrogates').callprop(u'push', var.get(u'start'), (var.get(u'end')+Js(1.0))) + if (var.get(u'end')>var.get(u'LOW_SURROGATE_MAX')): + var.get(u'loneLowSurrogates').callprop(u'push', var.get(u'start'), (var.get(u'LOW_SURROGATE_MAX')+Js(1.0))) + if (var.get(u'end')<=Js(65535)): + var.get(u'bmp').callprop(u'push', (var.get(u'LOW_SURROGATE_MAX')+Js(1.0)), (var.get(u'end')+Js(1.0))) + else: + var.get(u'bmp').callprop(u'push', (var.get(u'LOW_SURROGATE_MAX')+Js(1.0)), (Js(65535)+Js(1.0))) + var.get(u'astral').callprop(u'push', (Js(65535)+Js(1.0)), (var.get(u'end')+Js(1.0))) + else: + if ((var.get(u'start')>var.get(u'LOW_SURROGATE_MAX')) and (var.get(u'start')<=Js(65535))): + if (var.get(u'end')<=Js(65535)): + var.get(u'bmp').callprop(u'push', var.get(u'start'), (var.get(u'end')+Js(1.0))) + else: + var.get(u'bmp').callprop(u'push', var.get(u'start'), (Js(65535)+Js(1.0))) + var.get(u'astral').callprop(u'push', (Js(65535)+Js(1.0)), (var.get(u'end')+Js(1.0))) + else: + var.get(u'astral').callprop(u'push', var.get(u'start'), (var.get(u'end')+Js(1.0))) + var.put(u'index', Js(2.0), u'+') + PyJs_Object_3960_ = Js({u'loneHighSurrogates':var.get(u'loneHighSurrogates'),u'loneLowSurrogates':var.get(u'loneLowSurrogates'),u'bmp':var.get(u'bmp'),u'astral':var.get(u'astral')}) + return PyJs_Object_3960_ + PyJs_anonymous_3959_._set_name(u'anonymous') + var.put(u'splitAtBMP', PyJs_anonymous_3959_) + @Js + def PyJs_anonymous_3961_(surrogateMappings, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'surrogateMappings':surrogateMappings}, var) + var.registers([u'nextMapping', u'index', u'lowSurrogates', u'addLow', u'highSurrogates', u'mapping', u'tmpLow', u'length', u'result', u'nextLowSurrogates', u'nextHighSurrogates', u'surrogateMappings']) + var.put(u'result', Js([])) + var.put(u'tmpLow', Js([])) + var.put(u'addLow', Js(False)) + pass + pass + pass + pass + pass + pass + var.put(u'index', (-Js(1.0))) + var.put(u'length', var.get(u'surrogateMappings').get(u'length')) + while (var.put(u'index',Js(var.get(u'index').to_number())+Js(1))Js(1.0)): + var.put(u'value', var.get(u'slice').callprop(u'call', var.get(u'arguments'))) + if var.get(u"this").instanceof(var.get(u'regenerate')): + var.get(u"this").put(u'data', Js([])) + return (var.get(u"this").callprop(u'add', var.get(u'value')) if var.get(u'value') else var.get(u"this")) + return var.get(u'regenerate').create().callprop(u'add', var.get(u'value')) + PyJs_anonymous_3967_._set_name(u'anonymous') + var.put(u'regenerate', PyJs_anonymous_3967_) + var.get(u'regenerate').put(u'version', Js(u'1.3.2')) + var.put(u'proto', var.get(u'regenerate').get(u'prototype')) + @Js + def PyJs_anonymous_3969_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'$this', u'value']) + var.put(u'$this', var.get(u"this")) + if (var.get(u'value')==var.get(u"null")): + return var.get(u'$this') + if var.get(u'value').instanceof(var.get(u'regenerate')): + var.get(u'$this').put(u'data', var.get(u'dataAddData')(var.get(u'$this').get(u'data'), var.get(u'value').get(u'data'))) + return var.get(u'$this') + if (var.get(u'arguments').get(u'length')>Js(1.0)): + var.put(u'value', var.get(u'slice').callprop(u'call', var.get(u'arguments'))) + if var.get(u'isArray')(var.get(u'value')): + @Js + def PyJs_anonymous_3970_(item, this, arguments, var=var): + var = Scope({u'this':this, u'item':item, u'arguments':arguments}, var) + var.registers([u'item']) + var.get(u'$this').callprop(u'add', var.get(u'item')) + PyJs_anonymous_3970_._set_name(u'anonymous') + var.get(u'forEach')(var.get(u'value'), PyJs_anonymous_3970_) + return var.get(u'$this') + var.get(u'$this').put(u'data', var.get(u'dataAdd')(var.get(u'$this').get(u'data'), (var.get(u'value') if var.get(u'isNumber')(var.get(u'value')) else var.get(u'symbolToCodePoint')(var.get(u'value'))))) + return var.get(u'$this') + PyJs_anonymous_3969_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3971_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'$this', u'value']) + var.put(u'$this', var.get(u"this")) + if (var.get(u'value')==var.get(u"null")): + return var.get(u'$this') + if var.get(u'value').instanceof(var.get(u'regenerate')): + var.get(u'$this').put(u'data', var.get(u'dataRemoveData')(var.get(u'$this').get(u'data'), var.get(u'value').get(u'data'))) + return var.get(u'$this') + if (var.get(u'arguments').get(u'length')>Js(1.0)): + var.put(u'value', var.get(u'slice').callprop(u'call', var.get(u'arguments'))) + if var.get(u'isArray')(var.get(u'value')): + @Js + def PyJs_anonymous_3972_(item, this, arguments, var=var): + var = Scope({u'this':this, u'item':item, u'arguments':arguments}, var) + var.registers([u'item']) + var.get(u'$this').callprop(u'remove', var.get(u'item')) + PyJs_anonymous_3972_._set_name(u'anonymous') + var.get(u'forEach')(var.get(u'value'), PyJs_anonymous_3972_) + return var.get(u'$this') + var.get(u'$this').put(u'data', var.get(u'dataRemove')(var.get(u'$this').get(u'data'), (var.get(u'value') if var.get(u'isNumber')(var.get(u'value')) else var.get(u'symbolToCodePoint')(var.get(u'value'))))) + return var.get(u'$this') + PyJs_anonymous_3971_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3973_(start, end, this, arguments, var=var): + var = Scope({u'this':this, u'start':start, u'end':end, u'arguments':arguments}, var) + var.registers([u'start', u'end', u'$this']) + var.put(u'$this', var.get(u"this")) + var.get(u'$this').put(u'data', var.get(u'dataAddRange')(var.get(u'$this').get(u'data'), (var.get(u'start') if var.get(u'isNumber')(var.get(u'start')) else var.get(u'symbolToCodePoint')(var.get(u'start'))), (var.get(u'end') if var.get(u'isNumber')(var.get(u'end')) else var.get(u'symbolToCodePoint')(var.get(u'end'))))) + return var.get(u'$this') + PyJs_anonymous_3973_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3974_(start, end, this, arguments, var=var): + var = Scope({u'this':this, u'start':start, u'end':end, u'arguments':arguments}, var) + var.registers([u'startCodePoint', u'endCodePoint', u'end', u'$this', u'start']) + var.put(u'$this', var.get(u"this")) + var.put(u'startCodePoint', (var.get(u'start') if var.get(u'isNumber')(var.get(u'start')) else var.get(u'symbolToCodePoint')(var.get(u'start')))) + var.put(u'endCodePoint', (var.get(u'end') if var.get(u'isNumber')(var.get(u'end')) else var.get(u'symbolToCodePoint')(var.get(u'end')))) + var.get(u'$this').put(u'data', var.get(u'dataRemoveRange')(var.get(u'$this').get(u'data'), var.get(u'startCodePoint'), var.get(u'endCodePoint'))) + return var.get(u'$this') + PyJs_anonymous_3974_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3975_(argument, this, arguments, var=var): + var = Scope({u'this':this, u'argument':argument, u'arguments':arguments}, var) + var.registers([u'array', u'$this', u'argument']) + var.put(u'$this', var.get(u"this")) + var.put(u'array', (var.get(u'dataToArray')(var.get(u'argument').get(u'data')) if var.get(u'argument').instanceof(var.get(u'regenerate')) else var.get(u'argument'))) + var.get(u'$this').put(u'data', var.get(u'dataIntersection')(var.get(u'$this').get(u'data'), var.get(u'array'))) + return var.get(u'$this') + PyJs_anonymous_3975_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3976_(codePoint, this, arguments, var=var): + var = Scope({u'this':this, u'codePoint':codePoint, u'arguments':arguments}, var) + var.registers([u'codePoint']) + return var.get(u'dataContains')(var.get(u"this").get(u'data'), (var.get(u'codePoint') if var.get(u'isNumber')(var.get(u'codePoint')) else var.get(u'symbolToCodePoint')(var.get(u'codePoint')))) + PyJs_anonymous_3976_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3977_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'set']) + var.put(u'set', var.get(u'regenerate').create()) + var.get(u'set').put(u'data', var.get(u"this").get(u'data').callprop(u'slice', Js(0.0))) + return var.get(u'set') + PyJs_anonymous_3977_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3978_(options, this, arguments, var=var): + var = Scope({u'this':this, u'options':options, u'arguments':arguments}, var) + var.registers([u'result', u'options']) + var.put(u'result', var.get(u'createCharacterClassesFromData')(var.get(u"this").get(u'data'), (var.get(u'options').get(u'bmpOnly') if var.get(u'options') else Js(False)), (var.get(u'options').get(u'hasUnicodeFlag') if var.get(u'options') else Js(False)))) + if var.get(u'result').neg(): + return Js(u'[]') + return var.get(u'result').callprop(u'replace', var.get(u'regexNull'), Js(u'\\0$1')) + PyJs_anonymous_3978_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3979_(flags, this, arguments, var=var): + var = Scope({u'this':this, u'flags':flags, u'arguments':arguments}, var) + var.registers([u'pattern', u'flags']) + PyJs_Object_3980_ = Js({u'hasUnicodeFlag':var.get(u'true')}) + var.put(u'pattern', var.get(u"this").callprop(u'toString', (PyJs_Object_3980_ if (var.get(u'flags') and (var.get(u'flags').callprop(u'indexOf', Js(u'u'))!=(-Js(1.0)))) else var.get(u"null")))) + return var.get(u'RegExp')(var.get(u'pattern'), (var.get(u'flags') or Js(u''))) + PyJs_anonymous_3979_._set_name(u'anonymous') + @Js + def PyJs_anonymous_3981_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'dataToArray')(var.get(u"this").get(u'data')) + PyJs_anonymous_3981_._set_name(u'anonymous') + PyJs_Object_3968_ = Js({u'add':PyJs_anonymous_3969_,u'remove':PyJs_anonymous_3971_,u'addRange':PyJs_anonymous_3973_,u'removeRange':PyJs_anonymous_3974_,u'intersection':PyJs_anonymous_3975_,u'contains':PyJs_anonymous_3976_,u'clone':PyJs_anonymous_3977_,u'toString':PyJs_anonymous_3978_,u'toRegExp':PyJs_anonymous_3979_,u'valueOf':PyJs_anonymous_3981_}) + var.get(u'extend')(var.get(u'proto'), PyJs_Object_3968_) + var.get(u'proto').put(u'toArray', var.get(u'proto').get(u'valueOf')) + if (((var.get(u'define',throw=False).typeof()==Js(u'function')) and (var.get(u'define').get(u'amd').typeof()==Js(u'object'))) and var.get(u'define').get(u'amd')): + @Js + def PyJs_anonymous_3982_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'regenerate') + PyJs_anonymous_3982_._set_name(u'anonymous') + var.get(u'define')(PyJs_anonymous_3982_) + else: + if (var.get(u'freeExports') and var.get(u'freeExports').get(u'nodeType').neg()): + if var.get(u'freeModule'): + var.get(u'freeModule').put(u'exports', var.get(u'regenerate')) + else: + var.get(u'freeExports').put(u'regenerate', var.get(u'regenerate')) + else: + var.get(u'root').put(u'regenerate', var.get(u'regenerate')) + PyJs_anonymous_3931_._set_name(u'anonymous') + PyJs_anonymous_3931_(var.get(u"this")) + PyJs_anonymous_3930_._set_name(u'anonymous') + PyJs_anonymous_3930_.callprop(u'call', var.get(u"this"), (var.get(u'global') if PyJsStrictNeq(var.get(u'global',throw=False).typeof(),Js(u'undefined')) else (var.get(u'self') if PyJsStrictNeq(var.get(u'self',throw=False).typeof(),Js(u'undefined')) else (var.get(u'window') if PyJsStrictNeq(var.get(u'window',throw=False).typeof(),Js(u'undefined')) else PyJs_Object_3929_)))) +PyJs_anonymous_3928_._set_name(u'anonymous') +PyJs_Object_3983_ = Js({}) +@Js +def PyJs_anonymous_3984_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'regenerate', u'require', u'exports', u'module']) + var.put(u'regenerate', var.get(u'require')(Js(u'regenerate'))) + def PyJs_LONG_3986_(var=var): + return var.get(u'regenerate')().callprop(u'addRange', Js(0), Js(8)).callprop(u'addRange', Js(14), Js(31)).callprop(u'addRange', Js(33), Js(159)).callprop(u'addRange', Js(161), Js(5759)).callprop(u'addRange', Js(5761), Js(8191)).callprop(u'addRange', Js(8203), Js(8231)).callprop(u'addRange', Js(8234), Js(8238)).callprop(u'addRange', Js(8240), Js(8286)).callprop(u'addRange', Js(8288), Js(12287)).callprop(u'addRange', Js(12289), Js(65278)) + PyJs_Object_3985_ = Js({u'd':var.get(u'regenerate')().callprop(u'addRange', Js(48), Js(57)),u'D':var.get(u'regenerate')().callprop(u'addRange', Js(0), Js(47)).callprop(u'addRange', Js(58), Js(65535)),u's':var.get(u'regenerate')(Js(32), Js(160), Js(5760), Js(8239), Js(8287), Js(12288), Js(65279)).callprop(u'addRange', Js(9), Js(13)).callprop(u'addRange', Js(8192), Js(8202)).callprop(u'addRange', Js(8232), Js(8233)),u'S':PyJs_LONG_3986_().callprop(u'addRange', Js(65280), Js(65535)),u'w':var.get(u'regenerate')(Js(95)).callprop(u'addRange', Js(48), Js(57)).callprop(u'addRange', Js(65), Js(90)).callprop(u'addRange', Js(97), Js(122)),u'W':var.get(u'regenerate')(Js(96)).callprop(u'addRange', Js(0), Js(47)).callprop(u'addRange', Js(58), Js(64)).callprop(u'addRange', Js(91), Js(94)).callprop(u'addRange', Js(123), Js(65535))}) + var.get(u'exports').put(u'REGULAR', PyJs_Object_3985_) + def PyJs_LONG_3988_(var=var): + return var.get(u'regenerate')().callprop(u'addRange', Js(0), Js(8)).callprop(u'addRange', Js(14), Js(31)).callprop(u'addRange', Js(33), Js(159)).callprop(u'addRange', Js(161), Js(5759)).callprop(u'addRange', Js(5761), Js(8191)).callprop(u'addRange', Js(8203), Js(8231)).callprop(u'addRange', Js(8234), Js(8238)).callprop(u'addRange', Js(8240), Js(8286)).callprop(u'addRange', Js(8288), Js(12287)).callprop(u'addRange', Js(12289), Js(65278)) + PyJs_Object_3987_ = Js({u'd':var.get(u'regenerate')().callprop(u'addRange', Js(48), Js(57)),u'D':var.get(u'regenerate')().callprop(u'addRange', Js(0), Js(47)).callprop(u'addRange', Js(58), Js(1114111)),u's':var.get(u'regenerate')(Js(32), Js(160), Js(5760), Js(8239), Js(8287), Js(12288), Js(65279)).callprop(u'addRange', Js(9), Js(13)).callprop(u'addRange', Js(8192), Js(8202)).callprop(u'addRange', Js(8232), Js(8233)),u'S':PyJs_LONG_3988_().callprop(u'addRange', Js(65280), Js(1114111)),u'w':var.get(u'regenerate')(Js(95)).callprop(u'addRange', Js(48), Js(57)).callprop(u'addRange', Js(65), Js(90)).callprop(u'addRange', Js(97), Js(122)),u'W':var.get(u'regenerate')(Js(96)).callprop(u'addRange', Js(0), Js(47)).callprop(u'addRange', Js(58), Js(64)).callprop(u'addRange', Js(91), Js(94)).callprop(u'addRange', Js(123), Js(1114111))}) + var.get(u'exports').put(u'UNICODE', PyJs_Object_3987_) + def PyJs_LONG_3990_(var=var): + return var.get(u'regenerate')().callprop(u'addRange', Js(0), Js(8)).callprop(u'addRange', Js(14), Js(31)).callprop(u'addRange', Js(33), Js(159)).callprop(u'addRange', Js(161), Js(5759)).callprop(u'addRange', Js(5761), Js(8191)).callprop(u'addRange', Js(8203), Js(8231)).callprop(u'addRange', Js(8234), Js(8238)).callprop(u'addRange', Js(8240), Js(8286)).callprop(u'addRange', Js(8288), Js(12287)).callprop(u'addRange', Js(12289), Js(65278)) + PyJs_Object_3989_ = Js({u'd':var.get(u'regenerate')().callprop(u'addRange', Js(48), Js(57)),u'D':var.get(u'regenerate')().callprop(u'addRange', Js(0), Js(47)).callprop(u'addRange', Js(58), Js(1114111)),u's':var.get(u'regenerate')(Js(32), Js(160), Js(5760), Js(8239), Js(8287), Js(12288), Js(65279)).callprop(u'addRange', Js(9), Js(13)).callprop(u'addRange', Js(8192), Js(8202)).callprop(u'addRange', Js(8232), Js(8233)),u'S':PyJs_LONG_3990_().callprop(u'addRange', Js(65280), Js(1114111)),u'w':var.get(u'regenerate')(Js(95), Js(383), Js(8490)).callprop(u'addRange', Js(48), Js(57)).callprop(u'addRange', Js(65), Js(90)).callprop(u'addRange', Js(97), Js(122)),u'W':var.get(u'regenerate')(Js(75), Js(83), Js(96)).callprop(u'addRange', Js(0), Js(47)).callprop(u'addRange', Js(58), Js(64)).callprop(u'addRange', Js(91), Js(94)).callprop(u'addRange', Js(123), Js(1114111))}) + var.get(u'exports').put(u'UNICODE_IGNORE_CASE', PyJs_Object_3989_) +PyJs_anonymous_3984_._set_name(u'anonymous') +PyJs_Object_3991_ = Js({u'regenerate':Js(501.0)}) +@Js +def PyJs_anonymous_3992_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_3993_ = Js({u'75':Js(8490.0),u'83':Js(383.0),u'107':Js(8490.0),u'115':Js(383.0),u'181':Js(924.0),u'197':Js(8491.0),u'383':Js(83.0),u'452':Js(453.0),u'453':Js(452.0),u'455':Js(456.0),u'456':Js(455.0),u'458':Js(459.0),u'459':Js(458.0),u'497':Js(498.0),u'498':Js(497.0),u'837':Js(8126.0),u'914':Js(976.0),u'917':Js(1013.0),u'920':Js(1012.0),u'921':Js(8126.0),u'922':Js(1008.0),u'924':Js(181.0),u'928':Js(982.0),u'929':Js(1009.0),u'931':Js(962.0),u'934':Js(981.0),u'937':Js(8486.0),u'962':Js(931.0),u'976':Js(914.0),u'977':Js(1012.0),u'981':Js(934.0),u'982':Js(928.0),u'1008':Js(922.0),u'1009':Js(929.0),u'1012':Js([Js(920.0), Js(977.0)]),u'1013':Js(917.0),u'7776':Js(7835.0),u'7835':Js(7776.0),u'8126':Js([Js(837.0), Js(921.0)]),u'8486':Js(937.0),u'8490':Js(75.0),u'8491':Js(197.0),u'66560':Js(66600.0),u'66561':Js(66601.0),u'66562':Js(66602.0),u'66563':Js(66603.0),u'66564':Js(66604.0),u'66565':Js(66605.0),u'66566':Js(66606.0),u'66567':Js(66607.0),u'66568':Js(66608.0),u'66569':Js(66609.0),u'66570':Js(66610.0),u'66571':Js(66611.0),u'66572':Js(66612.0),u'66573':Js(66613.0),u'66574':Js(66614.0),u'66575':Js(66615.0),u'66576':Js(66616.0),u'66577':Js(66617.0),u'66578':Js(66618.0),u'66579':Js(66619.0),u'66580':Js(66620.0),u'66581':Js(66621.0),u'66582':Js(66622.0),u'66583':Js(66623.0),u'66584':Js(66624.0),u'66585':Js(66625.0),u'66586':Js(66626.0),u'66587':Js(66627.0),u'66588':Js(66628.0),u'66589':Js(66629.0),u'66590':Js(66630.0),u'66591':Js(66631.0),u'66592':Js(66632.0),u'66593':Js(66633.0),u'66594':Js(66634.0),u'66595':Js(66635.0),u'66596':Js(66636.0),u'66597':Js(66637.0),u'66598':Js(66638.0),u'66599':Js(66639.0),u'66600':Js(66560.0),u'66601':Js(66561.0),u'66602':Js(66562.0),u'66603':Js(66563.0),u'66604':Js(66564.0),u'66605':Js(66565.0),u'66606':Js(66566.0),u'66607':Js(66567.0),u'66608':Js(66568.0),u'66609':Js(66569.0),u'66610':Js(66570.0),u'66611':Js(66571.0),u'66612':Js(66572.0),u'66613':Js(66573.0),u'66614':Js(66574.0),u'66615':Js(66575.0),u'66616':Js(66576.0),u'66617':Js(66577.0),u'66618':Js(66578.0),u'66619':Js(66579.0),u'66620':Js(66580.0),u'66621':Js(66581.0),u'66622':Js(66582.0),u'66623':Js(66583.0),u'66624':Js(66584.0),u'66625':Js(66585.0),u'66626':Js(66586.0),u'66627':Js(66587.0),u'66628':Js(66588.0),u'66629':Js(66589.0),u'66630':Js(66590.0),u'66631':Js(66591.0),u'66632':Js(66592.0),u'66633':Js(66593.0),u'66634':Js(66594.0),u'66635':Js(66595.0),u'66636':Js(66596.0),u'66637':Js(66597.0),u'66638':Js(66598.0),u'66639':Js(66599.0),u'68736':Js(68800.0),u'68737':Js(68801.0),u'68738':Js(68802.0),u'68739':Js(68803.0),u'68740':Js(68804.0),u'68741':Js(68805.0),u'68742':Js(68806.0),u'68743':Js(68807.0),u'68744':Js(68808.0),u'68745':Js(68809.0),u'68746':Js(68810.0),u'68747':Js(68811.0),u'68748':Js(68812.0),u'68749':Js(68813.0),u'68750':Js(68814.0),u'68751':Js(68815.0),u'68752':Js(68816.0),u'68753':Js(68817.0),u'68754':Js(68818.0),u'68755':Js(68819.0),u'68756':Js(68820.0),u'68757':Js(68821.0),u'68758':Js(68822.0),u'68759':Js(68823.0),u'68760':Js(68824.0),u'68761':Js(68825.0),u'68762':Js(68826.0),u'68763':Js(68827.0),u'68764':Js(68828.0),u'68765':Js(68829.0),u'68766':Js(68830.0),u'68767':Js(68831.0),u'68768':Js(68832.0),u'68769':Js(68833.0),u'68770':Js(68834.0),u'68771':Js(68835.0),u'68772':Js(68836.0),u'68773':Js(68837.0),u'68774':Js(68838.0),u'68775':Js(68839.0),u'68776':Js(68840.0),u'68777':Js(68841.0),u'68778':Js(68842.0),u'68779':Js(68843.0),u'68780':Js(68844.0),u'68781':Js(68845.0),u'68782':Js(68846.0),u'68783':Js(68847.0),u'68784':Js(68848.0),u'68785':Js(68849.0),u'68786':Js(68850.0),u'68800':Js(68736.0),u'68801':Js(68737.0),u'68802':Js(68738.0),u'68803':Js(68739.0),u'68804':Js(68740.0),u'68805':Js(68741.0),u'68806':Js(68742.0),u'68807':Js(68743.0),u'68808':Js(68744.0),u'68809':Js(68745.0),u'68810':Js(68746.0),u'68811':Js(68747.0),u'68812':Js(68748.0),u'68813':Js(68749.0),u'68814':Js(68750.0),u'68815':Js(68751.0),u'68816':Js(68752.0),u'68817':Js(68753.0),u'68818':Js(68754.0),u'68819':Js(68755.0),u'68820':Js(68756.0),u'68821':Js(68757.0),u'68822':Js(68758.0),u'68823':Js(68759.0),u'68824':Js(68760.0),u'68825':Js(68761.0),u'68826':Js(68762.0),u'68827':Js(68763.0),u'68828':Js(68764.0),u'68829':Js(68765.0),u'68830':Js(68766.0),u'68831':Js(68767.0),u'68832':Js(68768.0),u'68833':Js(68769.0),u'68834':Js(68770.0),u'68835':Js(68771.0),u'68836':Js(68772.0),u'68837':Js(68773.0),u'68838':Js(68774.0),u'68839':Js(68775.0),u'68840':Js(68776.0),u'68841':Js(68777.0),u'68842':Js(68778.0),u'68843':Js(68779.0),u'68844':Js(68780.0),u'68845':Js(68781.0),u'68846':Js(68782.0),u'68847':Js(68783.0),u'68848':Js(68784.0),u'68849':Js(68785.0),u'68850':Js(68786.0),u'71840':Js(71872.0),u'71841':Js(71873.0),u'71842':Js(71874.0),u'71843':Js(71875.0),u'71844':Js(71876.0),u'71845':Js(71877.0),u'71846':Js(71878.0),u'71847':Js(71879.0),u'71848':Js(71880.0),u'71849':Js(71881.0),u'71850':Js(71882.0),u'71851':Js(71883.0),u'71852':Js(71884.0),u'71853':Js(71885.0),u'71854':Js(71886.0),u'71855':Js(71887.0),u'71856':Js(71888.0),u'71857':Js(71889.0),u'71858':Js(71890.0),u'71859':Js(71891.0),u'71860':Js(71892.0),u'71861':Js(71893.0),u'71862':Js(71894.0),u'71863':Js(71895.0),u'71864':Js(71896.0),u'71865':Js(71897.0),u'71866':Js(71898.0),u'71867':Js(71899.0),u'71868':Js(71900.0),u'71869':Js(71901.0),u'71870':Js(71902.0),u'71871':Js(71903.0),u'71872':Js(71840.0),u'71873':Js(71841.0),u'71874':Js(71842.0),u'71875':Js(71843.0),u'71876':Js(71844.0),u'71877':Js(71845.0),u'71878':Js(71846.0),u'71879':Js(71847.0),u'71880':Js(71848.0),u'71881':Js(71849.0),u'71882':Js(71850.0),u'71883':Js(71851.0),u'71884':Js(71852.0),u'71885':Js(71853.0),u'71886':Js(71854.0),u'71887':Js(71855.0),u'71888':Js(71856.0),u'71889':Js(71857.0),u'71890':Js(71858.0),u'71891':Js(71859.0),u'71892':Js(71860.0),u'71893':Js(71861.0),u'71894':Js(71862.0),u'71895':Js(71863.0),u'71896':Js(71864.0),u'71897':Js(71865.0),u'71898':Js(71866.0),u'71899':Js(71867.0),u'71900':Js(71868.0),u'71901':Js(71869.0),u'71902':Js(71870.0),u'71903':Js(71871.0)}) + var.get(u'module').put(u'exports', PyJs_Object_3993_) +PyJs_anonymous_3992_._set_name(u'anonymous') +PyJs_Object_3994_ = Js({}) +@Js +def PyJs_anonymous_3995_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'iuMappings', u'module', u'parse', u'unicode', u'wrap', u'hasOwnProperty', u'regenerate', u'ignoreCase', u'caseFold', u'has', u'DOT_SET', u'getCharacterClassEscapeSet', u'exports', u'object', u'update', u'processCharacterClass', u'generate', u'ESCAPE_SETS', u'require', u'processTerm', u'BMP_SET', u'UNICODE_SET', u'assign', u'DOT_SET_UNICODE']) + @Js + def PyJsHoisted_getCharacterClassEscapeSet_(character, this, arguments, var=var): + var = Scope({u'this':this, u'character':character, u'arguments':arguments}, var) + var.registers([u'character']) + if var.get(u'unicode'): + if var.get(u'ignoreCase'): + return var.get(u'ESCAPE_SETS').get(u'UNICODE_IGNORE_CASE').get(var.get(u'character')) + return var.get(u'ESCAPE_SETS').get(u'UNICODE').get(var.get(u'character')) + return var.get(u'ESCAPE_SETS').get(u'REGULAR').get(var.get(u'character')) + PyJsHoisted_getCharacterClassEscapeSet_.func_name = u'getCharacterClassEscapeSet' + var.put(u'getCharacterClassEscapeSet', PyJsHoisted_getCharacterClassEscapeSet_) + @Js + def PyJsHoisted_update_(item, pattern, this, arguments, var=var): + var = Scope({u'this':this, u'item':item, u'arguments':arguments, u'pattern':pattern}, var) + var.registers([u'item', u'tree', u'pattern']) + if var.get(u'pattern').neg(): + return var.get('undefined') + var.put(u'tree', var.get(u'parse')(var.get(u'pattern'), Js(u''))) + while 1: + SWITCHED = False + CONDITION = (var.get(u'tree').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'characterClass')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'group')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'value')): + SWITCHED = True + break + if True: + SWITCHED = True + var.put(u'tree', var.get(u'wrap')(var.get(u'tree'), var.get(u'pattern'))) + SWITCHED = True + break + var.get(u'assign')(var.get(u'item'), var.get(u'tree')) + PyJsHoisted_update_.func_name = u'update' + var.put(u'update', PyJsHoisted_update_) + @Js + def PyJsHoisted_processTerm_(item, this, arguments, var=var): + var = Scope({u'this':this, u'item':item, u'arguments':arguments}, var) + var.registers([u'item', u'codePoint', u'set', u'folded']) + while 1: + SWITCHED = False + CONDITION = (var.get(u'item').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'dot')): + SWITCHED = True + var.get(u'update')(var.get(u'item'), (var.get(u'DOT_SET_UNICODE') if var.get(u'unicode') else var.get(u'DOT_SET')).callprop(u'toString')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'characterClass')): + SWITCHED = True + var.put(u'item', var.get(u'processCharacterClass')(var.get(u'item'))) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'characterClassEscape')): + SWITCHED = True + var.get(u'update')(var.get(u'item'), var.get(u'getCharacterClassEscapeSet')(var.get(u'item').get(u'value')).callprop(u'toString')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'alternative')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'disjunction')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'group')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'quantifier')): + SWITCHED = True + var.get(u'item').put(u'body', var.get(u'item').get(u'body').callprop(u'map', var.get(u'processTerm'))) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'value')): + SWITCHED = True + var.put(u'codePoint', var.get(u'item').get(u'codePoint')) + var.put(u'set', var.get(u'regenerate')(var.get(u'codePoint'))) + if (var.get(u'ignoreCase') and var.get(u'unicode')): + var.put(u'folded', var.get(u'caseFold')(var.get(u'codePoint'))) + if var.get(u'folded'): + var.get(u'set').callprop(u'add', var.get(u'folded')) + var.get(u'update')(var.get(u'item'), var.get(u'set').callprop(u'toString')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'anchor')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'empty')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'group')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'reference')): + SWITCHED = True + break + if True: + SWITCHED = True + PyJsTempException = JsToPyException(var.get(u'Error')((Js(u'Unknown term type: ')+var.get(u'item').get(u'type')))) + raise PyJsTempException + SWITCHED = True + break + return var.get(u'item') + PyJsHoisted_processTerm_.func_name = u'processTerm' + var.put(u'processTerm', PyJsHoisted_processTerm_) + @Js + def PyJsHoisted_caseFold_(codePoint, this, arguments, var=var): + var = Scope({u'this':this, u'codePoint':codePoint, u'arguments':arguments}, var) + var.registers([u'codePoint']) + return (var.get(u'iuMappings').get(var.get(u'codePoint')) if var.get(u'has')(var.get(u'iuMappings'), var.get(u'codePoint')) else Js(False)) + PyJsHoisted_caseFold_.func_name = u'caseFold' + var.put(u'caseFold', PyJsHoisted_caseFold_) + @Js + def PyJsHoisted_processCharacterClass_(characterClassItem, this, arguments, var=var): + var = Scope({u'this':this, u'characterClassItem':characterClassItem, u'arguments':arguments}, var) + var.registers([u'body', u'set', u'characterClassItem']) + var.put(u'set', var.get(u'regenerate')()) + @Js + def PyJs_anonymous_3999_(item, this, arguments, var=var): + var = Scope({u'this':this, u'item':item, u'arguments':arguments}, var) + var.registers([u'max', u'folded', u'item', u'min']) + while 1: + SWITCHED = False + CONDITION = (var.get(u'item').get(u'type')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'value')): + SWITCHED = True + var.get(u'set').callprop(u'add', var.get(u'item').get(u'codePoint')) + if (var.get(u'ignoreCase') and var.get(u'unicode')): + var.put(u'folded', var.get(u'caseFold')(var.get(u'item').get(u'codePoint'))) + if var.get(u'folded'): + var.get(u'set').callprop(u'add', var.get(u'folded')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'characterClassRange')): + SWITCHED = True + var.put(u'min', var.get(u'item').get(u'min').get(u'codePoint')) + var.put(u'max', var.get(u'item').get(u'max').get(u'codePoint')) + var.get(u'set').callprop(u'addRange', var.get(u'min'), var.get(u'max')) + if (var.get(u'ignoreCase') and var.get(u'unicode')): + var.get(u'set').callprop(u'iuAddRange', var.get(u'min'), var.get(u'max')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'characterClassEscape')): + SWITCHED = True + var.get(u'set').callprop(u'add', var.get(u'getCharacterClassEscapeSet')(var.get(u'item').get(u'value'))) + break + if True: + SWITCHED = True + PyJsTempException = JsToPyException(var.get(u'Error')((Js(u'Unknown term type: ')+var.get(u'item').get(u'type')))) + raise PyJsTempException + SWITCHED = True + break + PyJs_anonymous_3999_._set_name(u'anonymous') + var.put(u'body', var.get(u'characterClassItem').get(u'body').callprop(u'forEach', PyJs_anonymous_3999_)) + if var.get(u'characterClassItem').get(u'negative'): + var.put(u'set', (var.get(u'UNICODE_SET') if var.get(u'unicode') else var.get(u'BMP_SET')).callprop(u'clone').callprop(u'remove', var.get(u'set'))) + var.get(u'update')(var.get(u'characterClassItem'), var.get(u'set').callprop(u'toString')) + return var.get(u'characterClassItem') + PyJsHoisted_processCharacterClass_.func_name = u'processCharacterClass' + var.put(u'processCharacterClass', PyJsHoisted_processCharacterClass_) + @Js + def PyJsHoisted_wrap_(tree, pattern, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'tree':tree, u'arguments':arguments}, var) + var.registers([u'pattern', u'tree']) + PyJs_Object_3998_ = Js({u'type':Js(u'group'),u'behavior':Js(u'ignore'),u'body':Js([var.get(u'tree')]),u'raw':((Js(u'(?:')+var.get(u'pattern'))+Js(u')'))}) + return PyJs_Object_3998_ + PyJsHoisted_wrap_.func_name = u'wrap' + var.put(u'wrap', PyJsHoisted_wrap_) + @Js + def PyJsHoisted_has_(object, property, this, arguments, var=var): + var = Scope({u'this':this, u'property':property, u'object':object, u'arguments':arguments}, var) + var.registers([u'property', u'object']) + return var.get(u'hasOwnProperty').callprop(u'call', var.get(u'object'), var.get(u'property')) + PyJsHoisted_has_.func_name = u'has' + var.put(u'has', PyJsHoisted_has_) + @Js + def PyJsHoisted_assign_(target, source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'target':target, u'arguments':arguments}, var) + var.registers([u'source', u'target', u'key']) + for PyJsTemp in var.get(u'source'): + var.put(u'key', PyJsTemp) + var.get(u'target').put(var.get(u'key'), var.get(u'source').get(var.get(u'key'))) + PyJsHoisted_assign_.func_name = u'assign' + var.put(u'assign', PyJsHoisted_assign_) + var.put(u'generate', var.get(u'require')(Js(u'regjsgen')).get(u'generate')) + var.put(u'parse', var.get(u'require')(Js(u'regjsparser')).get(u'parse')) + var.put(u'regenerate', var.get(u'require')(Js(u'regenerate'))) + var.put(u'iuMappings', var.get(u'require')(Js(u'./data/iu-mappings.json'))) + var.put(u'ESCAPE_SETS', var.get(u'require')(Js(u'./data/character-class-escape-sets.js'))) + pass + PyJs_Object_3996_ = Js({}) + var.put(u'object', PyJs_Object_3996_) + var.put(u'hasOwnProperty', var.get(u'object').get(u'hasOwnProperty')) + pass + var.put(u'UNICODE_SET', var.get(u'regenerate')().callprop(u'addRange', Js(0), Js(1114111))) + var.put(u'BMP_SET', var.get(u'regenerate')().callprop(u'addRange', Js(0), Js(65535))) + var.put(u'DOT_SET_UNICODE', var.get(u'UNICODE_SET').callprop(u'clone').callprop(u'remove', Js(10), Js(13), Js(8232), Js(8233))) + var.put(u'DOT_SET', var.get(u'DOT_SET_UNICODE').callprop(u'clone').callprop(u'intersection', var.get(u'BMP_SET'))) + @Js + def PyJs_anonymous_3997_(min, max, this, arguments, var=var): + var = Scope({u'this':this, u'max':max, u'arguments':arguments, u'min':min}, var) + var.registers([u'max', u'folded', u'$this', u'min']) + var.put(u'$this', var.get(u"this")) + while 1: + var.put(u'folded', var.get(u'caseFold')(var.get(u'min'))) + if var.get(u'folded'): + var.get(u'$this').callprop(u'add', var.get(u'folded')) + if not (var.put(u'min',Js(var.get(u'min').to_number())+Js(1))<=var.get(u'max')): + break + return var.get(u'$this') + PyJs_anonymous_3997_._set_name(u'anonymous') + var.get(u'regenerate').get(u'prototype').put(u'iuAddRange', PyJs_anonymous_3997_) + pass + pass + pass + pass + var.put(u'ignoreCase', Js(False)) + var.put(u'unicode', Js(False)) + pass + pass + pass + @Js + def PyJs_anonymous_4000_(pattern, flags, this, arguments, var=var): + var = Scope({u'this':this, u'pattern':pattern, u'flags':flags, u'arguments':arguments}, var) + var.registers([u'pattern', u'tree', u'flags']) + var.put(u'tree', var.get(u'parse')(var.get(u'pattern'), var.get(u'flags'))) + var.put(u'ignoreCase', ((var.get(u'flags').callprop(u'indexOf', Js(u'i'))>(-Js(1.0))) if var.get(u'flags') else Js(False))) + var.put(u'unicode', ((var.get(u'flags').callprop(u'indexOf', Js(u'u'))>(-Js(1.0))) if var.get(u'flags') else Js(False))) + var.get(u'assign')(var.get(u'tree'), var.get(u'processTerm')(var.get(u'tree'))) + return var.get(u'generate')(var.get(u'tree')) + PyJs_anonymous_4000_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_4000_) +PyJs_anonymous_3995_._set_name(u'anonymous') +PyJs_Object_4001_ = Js({u'./data/character-class-escape-sets.js':Js(502.0),u'./data/iu-mappings.json':Js(503.0),u'regenerate':Js(501.0),u'regjsgen':Js(505.0),u'regjsparser':Js(506.0)}) +@Js +def PyJs_anonymous_4002_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_4003_ = Js({}) + @Js + def PyJs_anonymous_4004_(PyJsArg_676c6f62616c_, this, arguments, var=var): + var = Scope({u'this':this, u'global':PyJsArg_676c6f62616c_, u'arguments':arguments}, var) + var.registers([u'global']) + pass + @Js + def PyJs_anonymous_4005_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'freeModule', u'objectTypes', u'freeGlobal', u'generateCharacterClassRange', u'freeExports', u'generateCharacterClassEscape', u'assertType', u'generateReference', u'generateCharacterClass', u'generateAlternative', u'generateClassAtom', u'floor', u'generateDisjunction', u'stringFromCharCode', u'generate', u'generateQuantifier', u'generateDot', u'fromCodePoint', u'generateValue', u'generateAnchor', u'generateAtom', u'oldRoot', u'generateTerm', u'root', u'generateGroup']) + @Js + def PyJsHoisted_generateQuantifier_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'max', u'quantifier', u'min']) + var.get(u'assertType')(var.get(u'node').get(u'type'), Js(u'quantifier')) + var.put(u'quantifier', Js(u'')) + var.put(u'min', var.get(u'node').get(u'min')) + var.put(u'max', var.get(u'node').get(u'max')) + while 1: + SWITCHED = False + CONDITION = (var.get(u'max')) + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u'undefined')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, var.get(u"null")): + SWITCHED = True + while 1: + SWITCHED = False + CONDITION = (var.get(u'min')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(0.0)): + SWITCHED = True + var.put(u'quantifier', Js(u'*')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(1.0)): + SWITCHED = True + var.put(u'quantifier', Js(u'+')) + break + if True: + SWITCHED = True + var.put(u'quantifier', ((Js(u'{')+var.get(u'min'))+Js(u',}'))) + break + SWITCHED = True + break + break + if True: + SWITCHED = True + if (var.get(u'min')==var.get(u'max')): + var.put(u'quantifier', ((Js(u'{')+var.get(u'min'))+Js(u'}'))) + else: + if ((var.get(u'min')==Js(0.0)) and (var.get(u'max')==Js(1.0))): + var.put(u'quantifier', Js(u'?')) + else: + var.put(u'quantifier', ((((Js(u'{')+var.get(u'min'))+Js(u','))+var.get(u'max'))+Js(u'}'))) + break + SWITCHED = True + break + if var.get(u'node').get(u'greedy').neg(): + var.put(u'quantifier', Js(u'?'), u'+') + return (var.get(u'generateAtom')(var.get(u'node').get(u'body').get(u'0'))+var.get(u'quantifier')) + PyJsHoisted_generateQuantifier_.func_name = u'generateQuantifier' + var.put(u'generateQuantifier', PyJsHoisted_generateQuantifier_) + @Js + def PyJsHoisted_generateTerm_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u'assertType')(var.get(u'node').get(u'type'), Js(u'anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|value')) + return var.get(u'generate')(var.get(u'node')) + PyJsHoisted_generateTerm_.func_name = u'generateTerm' + var.put(u'generateTerm', PyJsHoisted_generateTerm_) + @Js + def PyJsHoisted_generateCharacterClass_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'node', u'length', u'classRanges', u'result']) + var.get(u'assertType')(var.get(u'node').get(u'type'), Js(u'characterClass')) + var.put(u'classRanges', var.get(u'node').get(u'body')) + var.put(u'length', (var.get(u'classRanges').get(u'length') if var.get(u'classRanges') else Js(0.0))) + var.put(u'i', (-Js(1.0))) + var.put(u'result', Js(u'[')) + if var.get(u'node').get(u'negative'): + var.put(u'result', Js(u'^'), u'+') + while (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))Js(1114111))) or (var.get(u'floor')(var.get(u'codePoint'))!=var.get(u'codePoint'))): + PyJsTempException = JsToPyException(var.get(u'RangeError')((Js(u'Invalid code point: ')+var.get(u'codePoint')))) + raise PyJsTempException + if (var.get(u'codePoint')<=Js(65535)): + var.get(u'codeUnits').callprop(u'push', var.get(u'codePoint')) + else: + var.put(u'codePoint', Js(65536), u'-') + var.put(u'highSurrogate', ((var.get(u'codePoint')>>Js(10.0))+Js(55296))) + var.put(u'lowSurrogate', ((var.get(u'codePoint')%Js(1024))+Js(56320))) + var.get(u'codeUnits').callprop(u'push', var.get(u'highSurrogate'), var.get(u'lowSurrogate')) + if (((var.get(u'index')+Js(1.0))==var.get(u'length')) or (var.get(u'codeUnits').get(u'length')>var.get(u'MAX_SIZE'))): + var.put(u'result', var.get(u'stringFromCharCode').callprop(u'apply', var.get(u"null"), var.get(u'codeUnits')), u'+') + var.get(u'codeUnits').put(u'length', Js(0.0)) + return var.get(u'result') + PyJsHoisted_fromCodePoint_.func_name = u'fromCodePoint' + var.put(u'fromCodePoint', PyJsHoisted_fromCodePoint_) + @Js + def PyJsHoisted_generateDisjunction_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'body', u'i', u'length', u'node', u'result']) + var.get(u'assertType')(var.get(u'node').get(u'type'), Js(u'disjunction')) + var.put(u'body', var.get(u'node').get(u'body')) + var.put(u'length', (var.get(u'body').get(u'length') if var.get(u'body') else Js(0.0))) + if (var.get(u'length')==Js(0.0)): + PyJsTempException = JsToPyException(var.get(u'Error')(Js(u'No body'))) + raise PyJsTempException + else: + if (var.get(u'length')==Js(1.0)): + return var.get(u'generate')(var.get(u'body').get(u'0')) + else: + var.put(u'i', (-Js(1.0))) + var.put(u'result', Js(u'')) + while (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))var.get(u'max')): + var.get(u'bail')(Js(u'numbers out of order in {} quantifier'), Js(u''), var.get(u'from'), var.get(u'pos')) + var.put(u'quantifier', var.get(u'createQuantifier')(var.get(u'min'), var.get(u'max'), var.get(u'res').get(u'range').get(u'0'), var.get(u'res').get(u'range').get(u'1'))) + if var.get(u'quantifier'): + if var.get(u'match')(Js(u'?')): + var.get(u'quantifier').put(u'greedy', Js(False)) + var.get(u'quantifier').get(u'range').put(u'1', Js(1.0), u'+') + return var.get(u'quantifier') + PyJsHoisted_parseQuantifier_.func_name = u'parseQuantifier' + var.put(u'parseQuantifier', PyJsHoisted_parseQuantifier_) + @Js + def PyJsHoisted_parseDisjunction_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res', u'from']) + var.put(u'res', Js([])) + var.put(u'from', var.get(u'pos')) + var.get(u'res').callprop(u'push', var.get(u'parseAlternative')()) + while var.get(u'match')(Js(u'|')): + var.get(u'res').callprop(u'push', var.get(u'parseAlternative')()) + if PyJsStrictEq(var.get(u'res').get(u'length'),Js(1.0)): + return var.get(u'res').get(u'0') + return var.get(u'createDisjunction')(var.get(u'res'), var.get(u'from'), var.get(u'pos')) + PyJsHoisted_parseDisjunction_.func_name = u'parseDisjunction' + var.put(u'parseDisjunction', PyJsHoisted_parseDisjunction_) + @Js + def PyJsHoisted_flattenBody_(body, this, arguments, var=var): + var = Scope({u'body':body, u'this':this, u'arguments':arguments}, var) + var.registers([u'body']) + if PyJsStrictEq(var.get(u'body').get(u'type'),Js(u'alternative')): + return var.get(u'body').get(u'body') + else: + return Js([var.get(u'body')]) + PyJsHoisted_flattenBody_.func_name = u'flattenBody' + var.put(u'flattenBody', PyJsHoisted_flattenBody_) + @Js + def PyJsHoisted_skip_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + if var.get(u'match')(var.get(u'value')).neg(): + var.get(u'bail')(Js(u'character'), var.get(u'value')) + PyJsHoisted_skip_.func_name = u'skip' + var.put(u'skip', PyJsHoisted_skip_) + @Js + def PyJsHoisted_matchReg_(regExp, this, arguments, var=var): + var = Scope({u'this':this, u'regExp':regExp, u'arguments':arguments}, var) + var.registers([u'subStr', u'regExp', u'res']) + var.put(u'subStr', var.get(u'str').callprop(u'substring', var.get(u'pos'))) + var.put(u'res', var.get(u'subStr').callprop(u'match', var.get(u'regExp'))) + if var.get(u'res'): + var.get(u'res').put(u'range', Js([])) + var.get(u'res').get(u'range').put(u'0', var.get(u'pos')) + var.get(u'incr')(var.get(u'res').get(u'0').get(u'length')) + var.get(u'res').get(u'range').put(u'1', var.get(u'pos')) + return var.get(u'res') + PyJsHoisted_matchReg_.func_name = u'matchReg' + var.put(u'matchReg', PyJsHoisted_matchReg_) + @Js + def PyJsHoisted_addRaw_(node, this, arguments, var=var): + var = Scope({u'node':node, u'this':this, u'arguments':arguments}, var) + var.registers([u'node']) + var.get(u'node').put(u'raw', var.get(u'str').callprop(u'substring', var.get(u'node').get(u'range').get(u'0'), var.get(u'node').get(u'range').get(u'1'))) + return var.get(u'node') + PyJsHoisted_addRaw_.func_name = u'addRaw' + var.put(u'addRaw', PyJsHoisted_addRaw_) + @Js + def PyJsHoisted_parseNonemptyClassRanges_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'atom']) + var.put(u'atom', var.get(u'parseClassAtom')()) + if var.get(u'atom').neg(): + var.get(u'bail')(Js(u'classAtom')) + if var.get(u'current')(Js(u']')): + return Js([var.get(u'atom')]) + return var.get(u'parseHelperClassRanges')(var.get(u'atom')) + PyJsHoisted_parseNonemptyClassRanges_.func_name = u'parseNonemptyClassRanges' + var.put(u'parseNonemptyClassRanges', PyJsHoisted_parseNonemptyClassRanges_) + @Js + def PyJsHoisted_parseHelperClassRanges_(atom, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'atom':atom}, var) + var.registers([u'to', u'atom', u'from', u'classRanges', u'res']) + pass + if (var.get(u'current')(Js(u'-')) and var.get(u'next')(Js(u']')).neg()): + var.get(u'skip')(Js(u'-')) + var.put(u'res', var.get(u'parseClassAtom')()) + if var.get(u'res').neg(): + var.get(u'bail')(Js(u'classAtom')) + var.put(u'to', var.get(u'pos')) + var.put(u'classRanges', var.get(u'parseClassRanges')()) + if var.get(u'classRanges').neg(): + var.get(u'bail')(Js(u'classRanges')) + var.put(u'from', var.get(u'atom').get(u'range').get(u'0')) + if PyJsStrictEq(var.get(u'classRanges').get(u'type'),Js(u'empty')): + return Js([var.get(u'createClassRange')(var.get(u'atom'), var.get(u'res'), var.get(u'from'), var.get(u'to'))]) + return Js([var.get(u'createClassRange')(var.get(u'atom'), var.get(u'res'), var.get(u'from'), var.get(u'to'))]).callprop(u'concat', var.get(u'classRanges')) + var.put(u'res', var.get(u'parseNonemptyClassRangesNoDash')()) + if var.get(u'res').neg(): + var.get(u'bail')(Js(u'nonEmptyClassRangesNoDash')) + return Js([var.get(u'atom')]).callprop(u'concat', var.get(u'res')) + PyJsHoisted_parseHelperClassRanges_.func_name = u'parseHelperClassRanges' + var.put(u'parseHelperClassRanges', PyJsHoisted_parseHelperClassRanges_) + @Js + def PyJsHoisted_bail_(message, details, PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'to':to, u'from':PyJsArg_66726f6d_, u'details':details, u'this':this, u'message':message, u'arguments':arguments}, var) + var.registers([u'from', u'contextEnd', u'to', u'details', u'context', u'contextStart', u'message', u'pointer']) + var.put(u'from', (var.get(u'pos') if (var.get(u'from')==var.get(u"null")) else var.get(u'from'))) + var.put(u'to', (var.get(u'from') if (var.get(u'to')==var.get(u"null")) else var.get(u'to'))) + var.put(u'contextStart', var.get(u'Math').callprop(u'max', Js(0.0), (var.get(u'from')-Js(10.0)))) + var.put(u'contextEnd', var.get(u'Math').callprop(u'min', (var.get(u'to')+Js(10.0)), var.get(u'str').get(u'length'))) + var.put(u'context', (Js(u' ')+var.get(u'str').callprop(u'substring', var.get(u'contextStart'), var.get(u'contextEnd')))) + var.put(u'pointer', ((Js(u' ')+var.get(u'Array').create(((var.get(u'from')-var.get(u'contextStart'))+Js(1.0))).callprop(u'join', Js(u' ')))+Js(u'^'))) + PyJsTempException = JsToPyException(var.get(u'SyntaxError')((((((((var.get(u'message')+Js(u' at position '))+var.get(u'from'))+((Js(u': ')+var.get(u'details')) if var.get(u'details') else Js(u'')))+Js(u'\n'))+var.get(u'context'))+Js(u'\n'))+var.get(u'pointer')))) + raise PyJsTempException + PyJsHoisted_bail_.func_name = u'bail' + var.put(u'bail', PyJsHoisted_bail_) + @Js + def PyJsHoisted_parseIdentityEscape_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'tmp', u'ZWNJ', u'ZWJ']) + var.put(u'ZWJ', Js(u'\u200c')) + var.put(u'ZWNJ', Js(u'\u200d')) + pass + if var.get(u'isIdentifierPart')(var.get(u'lookahead')()).neg(): + var.put(u'tmp', var.get(u'incr')()) + return var.get(u'createEscaped')(Js(u'identifier'), var.get(u'tmp').callprop(u'charCodeAt', Js(0.0)), var.get(u'tmp'), Js(1.0)) + if var.get(u'match')(var.get(u'ZWJ')): + return var.get(u'createEscaped')(Js(u'identifier'), Js(8204), var.get(u'ZWJ')) + else: + if var.get(u'match')(var.get(u'ZWNJ')): + return var.get(u'createEscaped')(Js(u'identifier'), Js(8205), var.get(u'ZWNJ')) + return var.get(u"null") + PyJsHoisted_parseIdentityEscape_.func_name = u'parseIdentityEscape' + var.put(u'parseIdentityEscape', PyJsHoisted_parseIdentityEscape_) + @Js + def PyJsHoisted_createDot_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + PyJs_Object_4016_ = Js({u'type':Js(u'dot'),u'range':Js([(var.get(u'pos')-Js(1.0)), var.get(u'pos')])}) + return var.get(u'addRaw')(PyJs_Object_4016_) + PyJsHoisted_createDot_.func_name = u'createDot' + var.put(u'createDot', PyJsHoisted_createDot_) + @Js + def PyJsHoisted_incr_(amount, this, arguments, var=var): + var = Scope({u'this':this, u'amount':amount, u'arguments':arguments}, var) + var.registers([u'res', u'amount']) + var.put(u'amount', (var.get(u'amount') or Js(1.0))) + var.put(u'res', var.get(u'str').callprop(u'substring', var.get(u'pos'), (var.get(u'pos')+var.get(u'amount')))) + var.put(u'pos', (var.get(u'amount') or Js(1.0)), u'+') + return var.get(u'res') + PyJsHoisted_incr_.func_name = u'incr' + var.put(u'incr', PyJsHoisted_incr_) + @Js + def PyJsHoisted_parseAnchor_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res', u'from']) + var.put(u'from', var.get(u'pos')) + if var.get(u'match')(Js(u'^')): + return var.get(u'createAnchor')(Js(u'start'), Js(1.0)) + else: + if var.get(u'match')(Js(u'$')): + return var.get(u'createAnchor')(Js(u'end'), Js(1.0)) + else: + if var.get(u'match')(Js(u'\\b')): + return var.get(u'createAnchor')(Js(u'boundary'), Js(2.0)) + else: + if var.get(u'match')(Js(u'\\B')): + return var.get(u'createAnchor')(Js(u'not-boundary'), Js(2.0)) + else: + return var.get(u'parseGroup')(Js(u'(?='), Js(u'lookahead'), Js(u'(?!'), Js(u'negativeLookahead')) + PyJsHoisted_parseAnchor_.func_name = u'parseAnchor' + var.put(u'parseAnchor', PyJsHoisted_parseAnchor_) + @Js + def PyJsHoisted_parseAtom_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res']) + pass + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^[^^$\\\\.*+?(){[|]/'))): + return var.get(u'createCharacter')(var.get(u'res')) + else: + if var.get(u'match')(Js(u'.')): + return var.get(u'createDot')() + else: + if var.get(u'match')(Js(u'\\')): + var.put(u'res', var.get(u'parseAtomEscape')()) + if var.get(u'res').neg(): + var.get(u'bail')(Js(u'atomEscape')) + return var.get(u'res') + else: + if var.put(u'res', var.get(u'parseCharacterClass')()): + return var.get(u'res') + else: + return var.get(u'parseGroup')(Js(u'(?:'), Js(u'ignore'), Js(u'('), Js(u'normal')) + PyJsHoisted_parseAtom_.func_name = u'parseAtom' + var.put(u'parseAtom', PyJsHoisted_parseAtom_) + @Js + def PyJsHoisted_parseAtomEscape_(insideCharacterClass, this, arguments, var=var): + var = Scope({u'this':this, u'insideCharacterClass':insideCharacterClass, u'arguments':arguments}, var) + var.registers([u'res', u'insideCharacterClass', u'from']) + var.put(u'from', var.get(u'pos')) + var.put(u'res', var.get(u'parseDecimalEscape')()) + if var.get(u'res'): + return var.get(u'res') + if var.get(u'insideCharacterClass'): + if var.get(u'match')(Js(u'b')): + return var.get(u'createEscaped')(Js(u'singleEscape'), Js(8), Js(u'\\b')) + else: + if var.get(u'match')(Js(u'B')): + var.get(u'bail')(Js(u'\\B not possible inside of CharacterClass'), Js(u''), var.get(u'from')) + var.put(u'res', var.get(u'parseCharacterEscape')()) + return var.get(u'res') + PyJsHoisted_parseAtomEscape_.func_name = u'parseAtomEscape' + var.put(u'parseAtomEscape', PyJsHoisted_parseAtomEscape_) + @Js + def PyJsHoisted_next_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return PyJsStrictEq(var.get(u'str').get((var.get(u'pos')+Js(1.0))),var.get(u'value')) + PyJsHoisted_next_.func_name = u'next' + var.put(u'next', PyJsHoisted_next_) + @Js + def PyJsHoisted_current_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return PyJsStrictEq(var.get(u'str').callprop(u'indexOf', var.get(u'value'), var.get(u'pos')),var.get(u'pos')) + PyJsHoisted_current_.func_name = u'current' + var.put(u'current', PyJsHoisted_current_) + @Js + def PyJsHoisted_updateRawStart_(node, start, this, arguments, var=var): + var = Scope({u'node':node, u'start':start, u'this':this, u'arguments':arguments}, var) + var.registers([u'node', u'start']) + var.get(u'node').get(u'range').put(u'0', var.get(u'start')) + return var.get(u'addRaw')(var.get(u'node')) + PyJsHoisted_updateRawStart_.func_name = u'updateRawStart' + var.put(u'updateRawStart', PyJsHoisted_updateRawStart_) + @Js + def PyJsHoisted_isEmpty_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'obj']) + return PyJsStrictEq(var.get(u'obj').get(u'type'),Js(u'empty')) + PyJsHoisted_isEmpty_.func_name = u'isEmpty' + var.put(u'isEmpty', PyJsHoisted_isEmpty_) + @Js + def PyJsHoisted_createDisjunction_(alternatives, PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'this':this, u'from':PyJsArg_66726f6d_, u'alternatives':alternatives, u'arguments':arguments, u'to':to}, var) + var.registers([u'from', u'alternatives', u'to']) + PyJs_Object_4015_ = Js({u'type':Js(u'disjunction'),u'body':var.get(u'alternatives'),u'range':Js([var.get(u'from'), var.get(u'to')])}) + return var.get(u'addRaw')(PyJs_Object_4015_) + PyJsHoisted_createDisjunction_.func_name = u'createDisjunction' + var.put(u'createDisjunction', PyJsHoisted_createDisjunction_) + @Js + def PyJsHoisted_parseClassEscape_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'parseAtomEscape')(var.get(u'true')) + PyJsHoisted_parseClassEscape_.func_name = u'parseClassEscape' + var.put(u'parseClassEscape', PyJsHoisted_parseClassEscape_) + @Js + def PyJsHoisted_parseCharacterEscape_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res', u'codePoint']) + pass + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^[fnrtv]/'))): + var.put(u'codePoint', Js(0.0)) + while 1: + SWITCHED = False + CONDITION = (var.get(u'res').get(u'0')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u't')): + SWITCHED = True + var.put(u'codePoint', Js(9)) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'n')): + SWITCHED = True + var.put(u'codePoint', Js(10)) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'v')): + SWITCHED = True + var.put(u'codePoint', Js(11)) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'f')): + SWITCHED = True + var.put(u'codePoint', Js(12)) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'r')): + SWITCHED = True + var.put(u'codePoint', Js(13)) + break + SWITCHED = True + break + return var.get(u'createEscaped')(Js(u'singleEscape'), var.get(u'codePoint'), (Js(u'\\')+var.get(u'res').get(u'0'))) + else: + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^c([a-zA-Z])/'))): + return var.get(u'createEscaped')(Js(u'controlLetter'), (var.get(u'res').get(u'1').callprop(u'charCodeAt', Js(0.0))%Js(32.0)), var.get(u'res').get(u'1'), Js(2.0)) + else: + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^x([0-9a-fA-F]{2})/'))): + return var.get(u'createEscaped')(Js(u'hexadecimalEscape'), var.get(u'parseInt')(var.get(u'res').get(u'1'), Js(16.0)), var.get(u'res').get(u'1'), Js(2.0)) + else: + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^u([0-9a-fA-F]{4})/'))): + return var.get(u'parseUnicodeSurrogatePairEscape')(var.get(u'createEscaped')(Js(u'unicodeEscape'), var.get(u'parseInt')(var.get(u'res').get(u'1'), Js(16.0)), var.get(u'res').get(u'1'), Js(2.0))) + else: + if (var.get(u'hasUnicodeFlag') and var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^u\\{([0-9a-fA-F]+)\\}/')))): + return var.get(u'createEscaped')(Js(u'unicodeCodePointEscape'), var.get(u'parseInt')(var.get(u'res').get(u'1'), Js(16.0)), var.get(u'res').get(u'1'), Js(4.0)) + else: + return var.get(u'parseIdentityEscape')() + PyJsHoisted_parseCharacterEscape_.func_name = u'parseCharacterEscape' + var.put(u'parseCharacterEscape', PyJsHoisted_parseCharacterEscape_) + @Js + def PyJsHoisted_parseGroup_(matchA, typeA, matchB, typeB, this, arguments, var=var): + var = Scope({u'matchB':matchB, u'matchA':matchA, u'this':this, u'arguments':arguments, u'typeA':typeA, u'typeB':typeB}, var) + var.registers([u'body', u'from', u'typeA', u'typeB', u'matchB', u'matchA', u'group', u'type']) + var.put(u'type', var.get(u"null")) + var.put(u'from', var.get(u'pos')) + if var.get(u'match')(var.get(u'matchA')): + var.put(u'type', var.get(u'typeA')) + else: + if var.get(u'match')(var.get(u'matchB')): + var.put(u'type', var.get(u'typeB')) + else: + return Js(False) + var.put(u'body', var.get(u'parseDisjunction')()) + if var.get(u'body').neg(): + var.get(u'bail')(Js(u'Expected disjunction')) + var.get(u'skip')(Js(u')')) + var.put(u'group', var.get(u'createGroup')(var.get(u'type'), var.get(u'flattenBody')(var.get(u'body')), var.get(u'from'), var.get(u'pos'))) + if (var.get(u'type')==Js(u'normal')): + if var.get(u'firstIteration'): + (var.put(u'closedCaptureCounter',Js(var.get(u'closedCaptureCounter').to_number())+Js(1))-Js(1)) + return var.get(u'group') + PyJsHoisted_parseGroup_.func_name = u'parseGroup' + var.put(u'parseGroup', PyJsHoisted_parseGroup_) + @Js + def PyJsHoisted_parseClassAtomNoDash_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res']) + pass + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^[^\\\\\\]-]/'))): + return var.get(u'createCharacter')(var.get(u'res').get(u'0')) + else: + if var.get(u'match')(Js(u'\\')): + var.put(u'res', var.get(u'parseClassEscape')()) + if var.get(u'res').neg(): + var.get(u'bail')(Js(u'classEscape')) + return var.get(u'parseUnicodeSurrogatePairEscape')(var.get(u'res')) + PyJsHoisted_parseClassAtomNoDash_.func_name = u'parseClassAtomNoDash' + var.put(u'parseClassAtomNoDash', PyJsHoisted_parseClassAtomNoDash_) + @Js + def PyJsHoisted_createAnchor_(kind, rawLength, this, arguments, var=var): + var = Scope({u'this':this, u'kind':kind, u'arguments':arguments, u'rawLength':rawLength}, var) + var.registers([u'kind', u'rawLength']) + PyJs_Object_4013_ = Js({u'type':Js(u'anchor'),u'kind':var.get(u'kind'),u'range':Js([(var.get(u'pos')-var.get(u'rawLength')), var.get(u'pos')])}) + return var.get(u'addRaw')(PyJs_Object_4013_) + PyJsHoisted_createAnchor_.func_name = u'createAnchor' + var.put(u'createAnchor', PyJsHoisted_createAnchor_) + @Js + def PyJsHoisted_match_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + if PyJsStrictEq(var.get(u'str').callprop(u'indexOf', var.get(u'value'), var.get(u'pos')),var.get(u'pos')): + return var.get(u'incr')(var.get(u'value').get(u'length')) + PyJsHoisted_match_.func_name = u'match' + var.put(u'match', PyJsHoisted_match_) + @Js + def PyJsHoisted_parseCharacterClass_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res', u'from']) + var.put(u'from', var.get(u'pos')) + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^\\[\\^/'))): + var.put(u'res', var.get(u'parseClassRanges')()) + var.get(u'skip')(Js(u']')) + return var.get(u'createCharacterClass')(var.get(u'res'), var.get(u'true'), var.get(u'from'), var.get(u'pos')) + else: + if var.get(u'match')(Js(u'[')): + var.put(u'res', var.get(u'parseClassRanges')()) + var.get(u'skip')(Js(u']')) + return var.get(u'createCharacterClass')(var.get(u'res'), Js(False), var.get(u'from'), var.get(u'pos')) + return var.get(u"null") + PyJsHoisted_parseCharacterClass_.func_name = u'parseCharacterClass' + var.put(u'parseCharacterClass', PyJsHoisted_parseCharacterClass_) + @Js + def PyJsHoisted_createValue_(kind, codePoint, PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'to':to, u'kind':kind, u'from':PyJsArg_66726f6d_, u'arguments':arguments, u'this':this, u'codePoint':codePoint}, var) + var.registers([u'to', u'kind', u'from', u'codePoint']) + PyJs_Object_4014_ = Js({u'type':Js(u'value'),u'kind':var.get(u'kind'),u'codePoint':var.get(u'codePoint'),u'range':Js([var.get(u'from'), var.get(u'to')])}) + return var.get(u'addRaw')(PyJs_Object_4014_) + PyJsHoisted_createValue_.func_name = u'createValue' + var.put(u'createValue', PyJsHoisted_createValue_) + @Js + def PyJsHoisted_createReference_(matchIndex, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'matchIndex':matchIndex}, var) + var.registers([u'matchIndex']) + PyJs_Object_4018_ = Js({u'type':Js(u'reference'),u'matchIndex':var.get(u'parseInt')(var.get(u'matchIndex'), Js(10.0)),u'range':Js([((var.get(u'pos')-Js(1.0))-var.get(u'matchIndex').get(u'length')), var.get(u'pos')])}) + return var.get(u'addRaw')(PyJs_Object_4018_) + PyJsHoisted_createReference_.func_name = u'createReference' + var.put(u'createReference', PyJsHoisted_createReference_) + @Js + def PyJsHoisted_parseNonemptyClassRangesNoDash_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res']) + var.put(u'res', var.get(u'parseClassAtom')()) + if var.get(u'res').neg(): + var.get(u'bail')(Js(u'classAtom')) + if var.get(u'current')(Js(u']')): + return var.get(u'res') + return var.get(u'parseHelperClassRanges')(var.get(u'res')) + PyJsHoisted_parseNonemptyClassRangesNoDash_.func_name = u'parseNonemptyClassRangesNoDash' + var.put(u'parseNonemptyClassRangesNoDash', PyJsHoisted_parseNonemptyClassRangesNoDash_) + @Js + def PyJsHoisted_createCharacterClassEscape_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + PyJs_Object_4017_ = Js({u'type':Js(u'characterClassEscape'),u'value':var.get(u'value'),u'range':Js([(var.get(u'pos')-Js(2.0)), var.get(u'pos')])}) + return var.get(u'addRaw')(PyJs_Object_4017_) + PyJsHoisted_createCharacterClassEscape_.func_name = u'createCharacterClassEscape' + var.put(u'createCharacterClassEscape', PyJsHoisted_createCharacterClassEscape_) + @Js + def PyJsHoisted_parseAlternative_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res', u'term', u'from']) + var.put(u'res', Js([])) + var.put(u'from', var.get(u'pos')) + pass + while var.put(u'term', var.get(u'parseTerm')()): + var.get(u'res').callprop(u'push', var.get(u'term')) + if PyJsStrictEq(var.get(u'res').get(u'length'),Js(1.0)): + return var.get(u'res').get(u'0') + return var.get(u'createAlternative')(var.get(u'res'), var.get(u'from'), var.get(u'pos')) + PyJsHoisted_parseAlternative_.func_name = u'parseAlternative' + var.put(u'parseAlternative', PyJsHoisted_parseAlternative_) + @Js + def PyJsHoisted_isIdentifierPart_(ch, this, arguments, var=var): + var = Scope({u'this':this, u'ch':ch, u'arguments':arguments}, var) + var.registers([u'ch', u'NonAsciiIdentifierPart']) + def PyJs_LONG_4024_(var=var): + return var.get(u'RegExp').create(Js(u'[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0-\u08b2\u08e4-\u0963\u0966-\u096f\u0971-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1ab0-\u1abd\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1cf8\u1cf9\u1d00-\u1df5\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua69d\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua7ad\ua7b0\ua7b1\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\ua9e0-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab5f\uab64\uab65\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2d\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]')) + var.put(u'NonAsciiIdentifierPart', PyJs_LONG_4024_()) + def PyJs_LONG_4025_(var=var): + return ((((((PyJsStrictEq(var.get(u'ch'),Js(36.0)) or PyJsStrictEq(var.get(u'ch'),Js(95.0))) or ((var.get(u'ch')>=Js(65.0)) and (var.get(u'ch')<=Js(90.0)))) or ((var.get(u'ch')>=Js(97.0)) and (var.get(u'ch')<=Js(122.0)))) or ((var.get(u'ch')>=Js(48.0)) and (var.get(u'ch')<=Js(57.0)))) or PyJsStrictEq(var.get(u'ch'),Js(92.0))) or ((var.get(u'ch')>=Js(128)) and var.get(u'NonAsciiIdentifierPart').callprop(u'test', var.get(u'String').callprop(u'fromCharCode', var.get(u'ch'))))) + return PyJs_LONG_4025_() + PyJsHoisted_isIdentifierPart_.func_name = u'isIdentifierPart' + var.put(u'isIdentifierPart', PyJsHoisted_isIdentifierPart_) + @Js + def PyJsHoisted_createQuantifier_(min, max, PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'to':to, u'from':PyJsArg_66726f6d_, u'arguments':arguments, u'min':min, u'this':this, u'max':max}, var) + var.registers([u'max', u'from', u'to', u'min']) + if (var.get(u'to')==var.get(u"null")): + var.put(u'from', (var.get(u'pos')-Js(1.0))) + var.put(u'to', var.get(u'pos')) + PyJs_Object_4020_ = Js({u'type':Js(u'quantifier'),u'min':var.get(u'min'),u'max':var.get(u'max'),u'greedy':var.get(u'true'),u'body':var.get(u"null"),u'range':Js([var.get(u'from'), var.get(u'to')])}) + return var.get(u'addRaw')(PyJs_Object_4020_) + PyJsHoisted_createQuantifier_.func_name = u'createQuantifier' + var.put(u'createQuantifier', PyJsHoisted_createQuantifier_) + @Js + def PyJsHoisted_createCharacter_(matches, this, arguments, var=var): + var = Scope({u'matches':matches, u'this':this, u'arguments':arguments}, var) + var.registers([u'matches', u'_char', u'second', u'first']) + var.put(u'_char', var.get(u'matches').get(u'0')) + var.put(u'first', var.get(u'_char').callprop(u'charCodeAt', Js(0.0))) + if var.get(u'hasUnicodeFlag'): + pass + if ((PyJsStrictEq(var.get(u'_char').get(u'length'),Js(1.0)) and (var.get(u'first')>=Js(55296))) and (var.get(u'first')<=Js(56319))): + var.put(u'second', var.get(u'lookahead')().callprop(u'charCodeAt', Js(0.0))) + if ((var.get(u'second')>=Js(56320)) and (var.get(u'second')<=Js(57343))): + (var.put(u'pos',Js(var.get(u'pos').to_number())+Js(1))-Js(1)) + return var.get(u'createValue')(Js(u'symbol'), (((((var.get(u'first')-Js(55296))*Js(1024))+var.get(u'second'))-Js(56320))+Js(65536)), (var.get(u'pos')-Js(2.0)), var.get(u'pos')) + return var.get(u'createValue')(Js(u'symbol'), var.get(u'first'), (var.get(u'pos')-Js(1.0)), var.get(u'pos')) + PyJsHoisted_createCharacter_.func_name = u'createCharacter' + var.put(u'createCharacter', PyJsHoisted_createCharacter_) + @Js + def PyJsHoisted_lookahead_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + return var.get(u'str').get(var.get(u'pos')) + PyJsHoisted_lookahead_.func_name = u'lookahead' + var.put(u'lookahead', PyJsHoisted_lookahead_) + @Js + def PyJsHoisted_createClassRange_(min, max, PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'to':to, u'from':PyJsArg_66726f6d_, u'arguments':arguments, u'min':min, u'this':this, u'max':max}, var) + var.registers([u'max', u'from', u'to', u'min']) + if (var.get(u'min').get(u'codePoint')>var.get(u'max').get(u'codePoint')): + var.get(u'bail')(Js(u'invalid range in character class'), ((var.get(u'min').get(u'raw')+Js(u'-'))+var.get(u'max').get(u'raw')), var.get(u'from'), var.get(u'to')) + PyJs_Object_4023_ = Js({u'type':Js(u'characterClassRange'),u'min':var.get(u'min'),u'max':var.get(u'max'),u'range':Js([var.get(u'from'), var.get(u'to')])}) + return var.get(u'addRaw')(PyJs_Object_4023_) + PyJsHoisted_createClassRange_.func_name = u'createClassRange' + var.put(u'createClassRange', PyJsHoisted_createClassRange_) + @Js + def PyJsHoisted_createAlternative_(terms, PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'this':this, u'from':PyJsArg_66726f6d_, u'terms':terms, u'arguments':arguments, u'to':to}, var) + var.registers([u'from', u'terms', u'to']) + PyJs_Object_4021_ = Js({u'type':Js(u'alternative'),u'body':var.get(u'terms'),u'range':Js([var.get(u'from'), var.get(u'to')])}) + return var.get(u'addRaw')(PyJs_Object_4021_) + PyJsHoisted_createAlternative_.func_name = u'createAlternative' + var.put(u'createAlternative', PyJsHoisted_createAlternative_) + @Js + def PyJsHoisted_parseClassRanges_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res']) + pass + if var.get(u'current')(Js(u']')): + return Js([]) + else: + var.put(u'res', var.get(u'parseNonemptyClassRanges')()) + if var.get(u'res').neg(): + var.get(u'bail')(Js(u'nonEmptyClassRanges')) + return var.get(u'res') + PyJsHoisted_parseClassRanges_.func_name = u'parseClassRanges' + var.put(u'parseClassRanges', PyJsHoisted_parseClassRanges_) + @Js + def PyJsHoisted_createEscaped_(kind, codePoint, value, fromOffset, this, arguments, var=var): + var = Scope({u'kind':kind, u'arguments':arguments, u'this':this, u'fromOffset':fromOffset, u'codePoint':codePoint, u'value':value}, var) + var.registers([u'kind', u'fromOffset', u'codePoint', u'value']) + var.put(u'fromOffset', (var.get(u'fromOffset') or Js(0.0))) + return var.get(u'createValue')(var.get(u'kind'), var.get(u'codePoint'), (var.get(u'pos')-(var.get(u'value').get(u'length')+var.get(u'fromOffset'))), var.get(u'pos')) + PyJsHoisted_createEscaped_.func_name = u'createEscaped' + var.put(u'createEscaped', PyJsHoisted_createEscaped_) + @Js + def PyJsHoisted_parseUnicodeSurrogatePairEscape_(firstEscape, this, arguments, var=var): + var = Scope({u'firstEscape':firstEscape, u'this':this, u'arguments':arguments}, var) + var.registers([u'firstEscape', u'secondEscape', u'second', u'prevPos', u'first']) + if var.get(u'hasUnicodeFlag'): + pass + if (((((var.get(u'firstEscape').get(u'kind')==Js(u'unicodeEscape')) and (var.put(u'first', var.get(u'firstEscape').get(u'codePoint'))>=Js(55296))) and (var.get(u'first')<=Js(56319))) and var.get(u'current')(Js(u'\\'))) and var.get(u'next')(Js(u'u'))): + var.put(u'prevPos', var.get(u'pos')) + (var.put(u'pos',Js(var.get(u'pos').to_number())+Js(1))-Js(1)) + var.put(u'secondEscape', var.get(u'parseClassEscape')()) + if (((var.get(u'secondEscape').get(u'kind')==Js(u'unicodeEscape')) and (var.put(u'second', var.get(u'secondEscape').get(u'codePoint'))>=Js(56320))) and (var.get(u'second')<=Js(57343))): + var.get(u'firstEscape').get(u'range').put(u'1', var.get(u'secondEscape').get(u'range').get(u'1')) + var.get(u'firstEscape').put(u'codePoint', (((((var.get(u'first')-Js(55296))*Js(1024))+var.get(u'second'))-Js(56320))+Js(65536))) + var.get(u'firstEscape').put(u'type', Js(u'value')) + var.get(u'firstEscape').put(u'kind', Js(u'unicodeCodePointEscape')) + var.get(u'addRaw')(var.get(u'firstEscape')) + else: + var.put(u'pos', var.get(u'prevPos')) + return var.get(u'firstEscape') + PyJsHoisted_parseUnicodeSurrogatePairEscape_.func_name = u'parseUnicodeSurrogatePairEscape' + var.put(u'parseUnicodeSurrogatePairEscape', PyJsHoisted_parseUnicodeSurrogatePairEscape_) + @Js + def PyJsHoisted_parseTerm_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'quantifier', u'anchor', u'atom']) + if (((var.get(u'pos')>=var.get(u'str').get(u'length')) or var.get(u'current')(Js(u'|'))) or var.get(u'current')(Js(u')'))): + return var.get(u"null") + var.put(u'anchor', var.get(u'parseAnchor')()) + if var.get(u'anchor'): + return var.get(u'anchor') + var.put(u'atom', var.get(u'parseAtom')()) + if var.get(u'atom').neg(): + var.get(u'bail')(Js(u'Expected atom')) + var.put(u'quantifier', (var.get(u'parseQuantifier')() or Js(False))) + if var.get(u'quantifier'): + var.get(u'quantifier').put(u'body', var.get(u'flattenBody')(var.get(u'atom'))) + var.get(u'updateRawStart')(var.get(u'quantifier'), var.get(u'atom').get(u'range').get(u'0')) + return var.get(u'quantifier') + return var.get(u'atom') + PyJsHoisted_parseTerm_.func_name = u'parseTerm' + var.put(u'parseTerm', PyJsHoisted_parseTerm_) + @Js + def PyJsHoisted_createGroup_(behavior, disjunction, PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'to':to, u'from':PyJsArg_66726f6d_, u'arguments':arguments, u'behavior':behavior, u'this':this, u'disjunction':disjunction}, var) + var.registers([u'to', u'disjunction', u'from', u'behavior']) + PyJs_Object_4019_ = Js({u'type':Js(u'group'),u'behavior':var.get(u'behavior'),u'body':var.get(u'disjunction'),u'range':Js([var.get(u'from'), var.get(u'to')])}) + return var.get(u'addRaw')(PyJs_Object_4019_) + PyJsHoisted_createGroup_.func_name = u'createGroup' + var.put(u'createGroup', PyJsHoisted_createGroup_) + @Js + def PyJsHoisted_parseDecimalEscape_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'res', u'refIdx', u'match']) + pass + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^(?!0)\\d+/'))): + var.put(u'match', var.get(u'res').get(u'0')) + var.put(u'refIdx', var.get(u'parseInt')(var.get(u'res').get(u'0'), Js(10.0))) + if (var.get(u'refIdx')<=var.get(u'closedCaptureCounter')): + return var.get(u'createReference')(var.get(u'res').get(u'0')) + else: + var.get(u'backrefDenied').callprop(u'push', var.get(u'refIdx')) + var.get(u'incr')((-var.get(u'res').get(u'0').get(u'length'))) + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^[0-7]{1,3}/'))): + return var.get(u'createEscaped')(Js(u'octal'), var.get(u'parseInt')(var.get(u'res').get(u'0'), Js(8.0)), var.get(u'res').get(u'0'), Js(1.0)) + else: + var.put(u'res', var.get(u'createCharacter')(var.get(u'matchReg')(JsRegExp(u'/^[89]/')))) + return var.get(u'updateRawStart')(var.get(u'res'), (var.get(u'res').get(u'range').get(u'0')-Js(1.0))) + else: + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^[0-7]{1,3}/'))): + var.put(u'match', var.get(u'res').get(u'0')) + if JsRegExp(u'/^0{1,3}$/').callprop(u'test', var.get(u'match')): + return var.get(u'createEscaped')(Js(u'null'), Js(0), Js(u'0'), (var.get(u'match').get(u'length')+Js(1.0))) + else: + return var.get(u'createEscaped')(Js(u'octal'), var.get(u'parseInt')(var.get(u'match'), Js(8.0)), var.get(u'match'), Js(1.0)) + else: + if var.put(u'res', var.get(u'matchReg')(JsRegExp(u'/^[dDsSwW]/'))): + return var.get(u'createCharacterClassEscape')(var.get(u'res').get(u'0')) + return Js(False) + PyJsHoisted_parseDecimalEscape_.func_name = u'parseDecimalEscape' + var.put(u'parseDecimalEscape', PyJsHoisted_parseDecimalEscape_) + @Js + def PyJsHoisted_parseClassAtom_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + if var.get(u'match')(Js(u'-')): + return var.get(u'createCharacter')(Js(u'-')) + else: + return var.get(u'parseClassAtomNoDash')() + PyJsHoisted_parseClassAtom_.func_name = u'parseClassAtom' + var.put(u'parseClassAtom', PyJsHoisted_parseClassAtom_) + @Js + def PyJsHoisted_createCharacterClass_(classRanges, negative, PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'to':to, u'from':PyJsArg_66726f6d_, u'classRanges':classRanges, u'this':this, u'negative':negative, u'arguments':arguments}, var) + var.registers([u'to', u'from', u'classRanges', u'negative']) + PyJs_Object_4022_ = Js({u'type':Js(u'characterClass'),u'body':var.get(u'classRanges'),u'negative':var.get(u'negative'),u'range':Js([var.get(u'from'), var.get(u'to')])}) + return var.get(u'addRaw')(PyJs_Object_4022_) + PyJsHoisted_createCharacterClass_.func_name = u'createCharacterClass' + var.put(u'createCharacterClass', PyJsHoisted_createCharacterClass_) + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + pass + var.put(u'backrefDenied', Js([])) + var.put(u'closedCaptureCounter', Js(0.0)) + var.put(u'firstIteration', var.get(u'true')) + var.put(u'hasUnicodeFlag', PyJsStrictNeq((var.get(u'flags') or Js(u'')).callprop(u'indexOf', Js(u'u')),(-Js(1.0)))) + var.put(u'pos', Js(0.0)) + var.put(u'str', var.get(u'String')(var.get(u'str'))) + if PyJsStrictEq(var.get(u'str'),Js(u'')): + var.put(u'str', Js(u'(?:)')) + var.put(u'result', var.get(u'parseDisjunction')()) + if PyJsStrictNeq(var.get(u'result').get(u'range').get(u'1'),var.get(u'str').get(u'length')): + var.get(u'bail')(Js(u'Could not parse entire input - got stuck'), Js(u''), var.get(u'result').get(u'range').get(u'1')) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')>'): + break + return var.get(u'ret') + PyJs_anonymous_4029_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_4029_) +PyJs_anonymous_4028_._set_name(u'anonymous') +PyJs_Object_4030_ = Js({u'is-finite':Js(281.0)}) +@Js +def PyJs_anonymous_4031_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + Js(u'use strict') + @Js + def PyJs_anonymous_4032_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'isExtendedLengthPath', u'hasNonAscii', u'str']) + var.put(u'isExtendedLengthPath', JsRegExp(u'/^\\\\\\\\\\?\\\\/').callprop(u'test', var.get(u'str'))) + var.put(u'hasNonAscii', JsRegExp(u'/[^\\x00-\\x80]+/').callprop(u'test', var.get(u'str'))) + if (var.get(u'isExtendedLengthPath') or var.get(u'hasNonAscii')): + return var.get(u'str') + return var.get(u'str').callprop(u'replace', JsRegExp(u'/\\\\/g'), Js(u'/')) + PyJs_anonymous_4032_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_4032_) +PyJs_anonymous_4031_._set_name(u'anonymous') +PyJs_Object_4033_ = Js({}) +@Js +def PyJs_anonymous_4034_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'require', u'module', u'util', u'ArraySet', u'has']) + @Js + def PyJsHoisted_ArraySet_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'_array', Js([])) + var.get(u"this").put(u'_set', var.get(u'Object').callprop(u'create', var.get(u"null"))) + PyJsHoisted_ArraySet_.func_name = u'ArraySet' + var.put(u'ArraySet', PyJsHoisted_ArraySet_) + var.put(u'util', var.get(u'require')(Js(u'./util'))) + var.put(u'has', var.get(u'Object').get(u'prototype').get(u'hasOwnProperty')) + pass + @Js + def PyJs_ArraySet_fromArray_4035_(aArray, aAllowDuplicates, this, arguments, var=var): + var = Scope({u'this':this, u'ArraySet_fromArray':PyJs_ArraySet_fromArray_4035_, u'aAllowDuplicates':aAllowDuplicates, u'aArray':aArray, u'arguments':arguments}, var) + var.registers([u'i', u'aAllowDuplicates', u'set', u'aArray', u'len']) + var.put(u'set', var.get(u'ArraySet').create()) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'len', var.get(u'aArray').get(u'length')) + while (var.get(u'i')=Js(0.0)) and (var.get(u'aIdx')>Js(1.0))) + return ((-var.get(u'shifted')) if var.get(u'isNegative') else var.get(u'shifted')) + PyJsHoisted_fromVLQSigned_.func_name = u'fromVLQSigned' + var.put(u'fromVLQSigned', PyJsHoisted_fromVLQSigned_) + var.put(u'base64', var.get(u'require')(Js(u'./base64'))) + var.put(u'VLQ_BASE_SHIFT', Js(5.0)) + var.put(u'VLQ_BASE', (Js(1.0)<>>') + if (var.get(u'vlq')>Js(0.0)): + var.put(u'digit', var.get(u'VLQ_CONTINUATION_BIT'), u'|') + var.put(u'encoded', var.get(u'base64').callprop(u'encode', var.get(u'digit')), u'+') + if not (var.get(u'vlq')>Js(0.0)): + break + return var.get(u'encoded') + PyJs_base64VLQ_encode_4044_._set_name(u'base64VLQ_encode') + var.get(u'exports').put(u'encode', PyJs_base64VLQ_encode_4044_) + @Js + def PyJs_base64VLQ_decode_4045_(aStr, aIndex, aOutParam, this, arguments, var=var): + var = Scope({u'base64VLQ_decode':PyJs_base64VLQ_decode_4045_, u'this':this, u'arguments':arguments, u'aStr':aStr, u'aOutParam':aOutParam, u'aIndex':aIndex}, var) + var.registers([u'digit', u'shift', u'result', u'continuation', u'aStr', u'aOutParam', u'strLen', u'aIndex']) + var.put(u'strLen', var.get(u'aStr').get(u'length')) + var.put(u'result', Js(0.0)) + var.put(u'shift', Js(0.0)) + pass + while 1: + if (var.get(u'aIndex')>=var.get(u'strLen')): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'Expected more digits in base 64 VLQ value.'))) + raise PyJsTempException + var.put(u'digit', var.get(u'base64').callprop(u'decode', var.get(u'aStr').callprop(u'charCodeAt', (var.put(u'aIndex',Js(var.get(u'aIndex').to_number())+Js(1))-Js(1))))) + if PyJsStrictEq(var.get(u'digit'),(-Js(1.0))): + PyJsTempException = JsToPyException(var.get(u'Error').create((Js(u'Invalid base64 digit: ')+var.get(u'aStr').callprop(u'charAt', (var.get(u'aIndex')-Js(1.0)))))) + raise PyJsTempException + var.put(u'continuation', (var.get(u'digit')&var.get(u'VLQ_CONTINUATION_BIT')).neg().neg()) + var.put(u'digit', var.get(u'VLQ_BASE_MASK'), u'&') + var.put(u'result', (var.get(u'result')+(var.get(u'digit')<Js(0.0)): + if ((var.get(u'aHigh')-var.get(u'mid'))>Js(1.0)): + return var.get(u'recursiveSearch')(var.get(u'mid'), var.get(u'aHigh'), var.get(u'aNeedle'), var.get(u'aHaystack'), var.get(u'aCompare'), var.get(u'aBias')) + if (var.get(u'aBias')==var.get(u'exports').get(u'LEAST_UPPER_BOUND')): + return (var.get(u'aHigh') if (var.get(u'aHigh')Js(1.0)): + return var.get(u'recursiveSearch')(var.get(u'aLow'), var.get(u'mid'), var.get(u'aNeedle'), var.get(u'aHaystack'), var.get(u'aCompare'), var.get(u'aBias')) + if (var.get(u'aBias')==var.get(u'exports').get(u'LEAST_UPPER_BOUND')): + return var.get(u'mid') + else: + return ((-Js(1.0)) if (var.get(u'aLow')=Js(0.0)): + if PyJsStrictNeq(var.get(u'aCompare')(var.get(u'aHaystack').get(var.get(u'index')), var.get(u'aHaystack').get((var.get(u'index')-Js(1.0))), var.get(u'true')),Js(0.0)): + break + var.put(u'index',Js(var.get(u'index').to_number())-Js(1)) + return var.get(u'index') + PyJs_search_4052_._set_name(u'search') + var.get(u'exports').put(u'search', PyJs_search_4052_) +PyJs_anonymous_4051_._set_name(u'anonymous') +PyJs_Object_4053_ = Js({}) +@Js +def PyJs_anonymous_4054_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'generatedPositionAfter', u'require', u'exports', u'module', u'util', u'MappingList']) + @Js + def PyJsHoisted_generatedPositionAfter_(mappingA, mappingB, this, arguments, var=var): + var = Scope({u'this':this, u'mappingB':mappingB, u'arguments':arguments, u'mappingA':mappingA}, var) + var.registers([u'columnA', u'columnB', u'mappingB', u'mappingA', u'lineB', u'lineA']) + var.put(u'lineA', var.get(u'mappingA').get(u'generatedLine')) + var.put(u'lineB', var.get(u'mappingB').get(u'generatedLine')) + var.put(u'columnA', var.get(u'mappingA').get(u'generatedColumn')) + var.put(u'columnB', var.get(u'mappingB').get(u'generatedColumn')) + return (((var.get(u'lineB')>var.get(u'lineA')) or ((var.get(u'lineB')==var.get(u'lineA')) and (var.get(u'columnB')>=var.get(u'columnA')))) or (var.get(u'util').callprop(u'compareByGeneratedPositionsInflated', var.get(u'mappingA'), var.get(u'mappingB'))<=Js(0.0))) + PyJsHoisted_generatedPositionAfter_.func_name = u'generatedPositionAfter' + var.put(u'generatedPositionAfter', PyJsHoisted_generatedPositionAfter_) + @Js + def PyJsHoisted_MappingList_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + var.get(u"this").put(u'_array', Js([])) + var.get(u"this").put(u'_sorted', var.get(u'true')) + PyJs_Object_4055_ = Js({u'generatedLine':(-Js(1.0)),u'generatedColumn':Js(0.0)}) + var.get(u"this").put(u'_last', PyJs_Object_4055_) + PyJsHoisted_MappingList_.func_name = u'MappingList' + var.put(u'MappingList', PyJsHoisted_MappingList_) + var.put(u'util', var.get(u'require')(Js(u'./util'))) + pass + pass + @Js + def PyJs_MappingList_forEach_4056_(aCallback, aThisArg, this, arguments, var=var): + var = Scope({u'this':this, u'aThisArg':aThisArg, u'aCallback':aCallback, u'MappingList_forEach':PyJs_MappingList_forEach_4056_, u'arguments':arguments}, var) + var.registers([u'aThisArg', u'aCallback']) + var.get(u"this").get(u'_array').callprop(u'forEach', var.get(u'aCallback'), var.get(u'aThisArg')) + PyJs_MappingList_forEach_4056_._set_name(u'MappingList_forEach') + var.get(u'MappingList').get(u'prototype').put(u'unsortedForEach', PyJs_MappingList_forEach_4056_) + @Js + def PyJs_MappingList_add_4057_(aMapping, this, arguments, var=var): + var = Scope({u'this':this, u'MappingList_add':PyJs_MappingList_add_4057_, u'aMapping':aMapping, u'arguments':arguments}, var) + var.registers([u'aMapping']) + if var.get(u'generatedPositionAfter')(var.get(u"this").get(u'_last'), var.get(u'aMapping')): + var.get(u"this").put(u'_last', var.get(u'aMapping')) + var.get(u"this").get(u'_array').callprop(u'push', var.get(u'aMapping')) + else: + var.get(u"this").put(u'_sorted', Js(False)) + var.get(u"this").get(u'_array').callprop(u'push', var.get(u'aMapping')) + PyJs_MappingList_add_4057_._set_name(u'MappingList_add') + var.get(u'MappingList').get(u'prototype').put(u'add', PyJs_MappingList_add_4057_) + @Js + def PyJs_MappingList_toArray_4058_(this, arguments, var=var): + var = Scope({u'this':this, u'MappingList_toArray':PyJs_MappingList_toArray_4058_, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").get(u'_sorted').neg(): + var.get(u"this").get(u'_array').callprop(u'sort', var.get(u'util').get(u'compareByGeneratedPositionsInflated')) + var.get(u"this").put(u'_sorted', var.get(u'true')) + return var.get(u"this").get(u'_array') + PyJs_MappingList_toArray_4058_._set_name(u'MappingList_toArray') + var.get(u'MappingList').get(u'prototype').put(u'toArray', PyJs_MappingList_toArray_4058_) + var.get(u'exports').put(u'MappingList', var.get(u'MappingList')) +PyJs_anonymous_4054_._set_name(u'anonymous') +PyJs_Object_4059_ = Js({u'./util':Js(518.0)}) +@Js +def PyJs_anonymous_4060_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'exports', u'randomIntInRange', u'require', u'module', u'doQuickSort', u'swap']) + @Js + def PyJsHoisted_randomIntInRange_(low, high, this, arguments, var=var): + var = Scope({u'high':high, u'this':this, u'low':low, u'arguments':arguments}, var) + var.registers([u'high', u'low']) + return var.get(u'Math').callprop(u'round', (var.get(u'low')+(var.get(u'Math').callprop(u'random')*(var.get(u'high')-var.get(u'low'))))) + PyJsHoisted_randomIntInRange_.func_name = u'randomIntInRange' + var.put(u'randomIntInRange', PyJsHoisted_randomIntInRange_) + @Js + def PyJsHoisted_swap_(ary, x, y, this, arguments, var=var): + var = Scope({u'y':y, u'ary':ary, u'this':this, u'arguments':arguments, u'x':x}, var) + var.registers([u'y', u'ary', u'temp', u'x']) + var.put(u'temp', var.get(u'ary').get(var.get(u'x'))) + var.get(u'ary').put(var.get(u'x'), var.get(u'ary').get(var.get(u'y'))) + var.get(u'ary').put(var.get(u'y'), var.get(u'temp')) + PyJsHoisted_swap_.func_name = u'swap' + var.put(u'swap', PyJsHoisted_swap_) + @Js + def PyJsHoisted_doQuickSort_(ary, comparator, p, r, this, arguments, var=var): + var = Scope({u'p':p, u'r':r, u'arguments':arguments, u'comparator':comparator, u'this':this, u'ary':ary}, var) + var.registers([u'comparator', u'i', u'ary', u'pivotIndex', u'j', u'q', u'p', u'r', u'pivot']) + if (var.get(u'p')=Js(0.0)): + var.put(u'mapping', var.get(u"this").get(u'_originalMappings').get(var.get(u'index'))) + if PyJsStrictEq(var.get(u'aArgs').get(u'column'),var.get(u'undefined')): + var.put(u'originalLine', var.get(u'mapping').get(u'originalLine')) + while (var.get(u'mapping') and PyJsStrictEq(var.get(u'mapping').get(u'originalLine'),var.get(u'originalLine'))): + PyJs_Object_4076_ = Js({u'line':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'generatedLine'), var.get(u"null")),u'column':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'generatedColumn'), var.get(u"null")),u'lastColumn':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'lastGeneratedColumn'), var.get(u"null"))}) + var.get(u'mappings').callprop(u'push', PyJs_Object_4076_) + var.put(u'mapping', var.get(u"this").get(u'_originalMappings').get(var.put(u'index',Js(var.get(u'index').to_number())+Js(1)))) + else: + var.put(u'originalColumn', var.get(u'mapping').get(u'originalColumn')) + while ((var.get(u'mapping') and PyJsStrictEq(var.get(u'mapping').get(u'originalLine'),var.get(u'line'))) and (var.get(u'mapping').get(u'originalColumn')==var.get(u'originalColumn'))): + PyJs_Object_4077_ = Js({u'line':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'generatedLine'), var.get(u"null")),u'column':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'generatedColumn'), var.get(u"null")),u'lastColumn':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'lastGeneratedColumn'), var.get(u"null"))}) + var.get(u'mappings').callprop(u'push', PyJs_Object_4077_) + var.put(u'mapping', var.get(u"this").get(u'_originalMappings').get(var.put(u'index',Js(var.get(u'index').to_number())+Js(1)))) + return var.get(u'mappings') + PyJs_SourceMapConsumer_allGeneratedPositionsFor_4074_._set_name(u'SourceMapConsumer_allGeneratedPositionsFor') + var.get(u'SourceMapConsumer').get(u'prototype').put(u'allGeneratedPositionsFor', PyJs_SourceMapConsumer_allGeneratedPositionsFor_4074_) + var.get(u'exports').put(u'SourceMapConsumer', var.get(u'SourceMapConsumer')) + pass + var.get(u'BasicSourceMapConsumer').put(u'prototype', var.get(u'Object').callprop(u'create', var.get(u'SourceMapConsumer').get(u'prototype'))) + var.get(u'BasicSourceMapConsumer').get(u'prototype').put(u'consumer', var.get(u'SourceMapConsumer')) + @Js + def PyJs_SourceMapConsumer_fromSourceMap_4079_(aSourceMap, this, arguments, var=var): + var = Scope({u'this':this, u'aSourceMap':aSourceMap, u'SourceMapConsumer_fromSourceMap':PyJs_SourceMapConsumer_fromSourceMap_4079_, u'arguments':arguments}, var) + var.registers([u'i', u'aSourceMap', u'srcMapping', u'destGeneratedMappings', u'destMapping', u'destOriginalMappings', u'sources', u'length', u'generatedMappings', u'names', u'smc']) + var.put(u'smc', var.get(u'Object').callprop(u'create', var.get(u'BasicSourceMapConsumer').get(u'prototype'))) + var.put(u'names', var.get(u'smc').put(u'_names', var.get(u'ArraySet').callprop(u'fromArray', var.get(u'aSourceMap').get(u'_names').callprop(u'toArray'), var.get(u'true')))) + var.put(u'sources', var.get(u'smc').put(u'_sources', var.get(u'ArraySet').callprop(u'fromArray', var.get(u'aSourceMap').get(u'_sources').callprop(u'toArray'), var.get(u'true')))) + var.get(u'smc').put(u'sourceRoot', var.get(u'aSourceMap').get(u'_sourceRoot')) + var.get(u'smc').put(u'sourcesContent', var.get(u'aSourceMap').callprop(u'_generateSourcesContent', var.get(u'smc').get(u'_sources').callprop(u'toArray'), var.get(u'smc').get(u'sourceRoot'))) + var.get(u'smc').put(u'file', var.get(u'aSourceMap').get(u'_file')) + var.put(u'generatedMappings', var.get(u'aSourceMap').get(u'_mappings').callprop(u'toArray').callprop(u'slice')) + var.put(u'destGeneratedMappings', var.get(u'smc').put(u'__generatedMappings', Js([]))) + var.put(u'destOriginalMappings', var.get(u'smc').put(u'__originalMappings', Js([]))) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'length', var.get(u'generatedMappings').get(u'length')) + while (var.get(u'i')Js(1.0)): + var.get(u'mapping').put(u'source', (var.get(u'previousSource')+var.get(u'segment').get(u'1'))) + var.put(u'previousSource', var.get(u'segment').get(u'1'), u'+') + var.get(u'mapping').put(u'originalLine', (var.get(u'previousOriginalLine')+var.get(u'segment').get(u'2'))) + var.put(u'previousOriginalLine', var.get(u'mapping').get(u'originalLine')) + var.get(u'mapping').put(u'originalLine', Js(1.0), u'+') + var.get(u'mapping').put(u'originalColumn', (var.get(u'previousOriginalColumn')+var.get(u'segment').get(u'3'))) + var.put(u'previousOriginalColumn', var.get(u'mapping').get(u'originalColumn')) + if (var.get(u'segment').get(u'length')>Js(4.0)): + var.get(u'mapping').put(u'name', (var.get(u'previousName')+var.get(u'segment').get(u'4'))) + var.put(u'previousName', var.get(u'segment').get(u'4'), u'+') + var.get(u'generatedMappings').callprop(u'push', var.get(u'mapping')) + if PyJsStrictEq(var.get(u'mapping').get(u'originalLine').typeof(),Js(u'number')): + var.get(u'originalMappings').callprop(u'push', var.get(u'mapping')) + var.get(u'quickSort')(var.get(u'generatedMappings'), var.get(u'util').get(u'compareByGeneratedPositionsDeflated')) + var.get(u"this").put(u'__generatedMappings', var.get(u'generatedMappings')) + var.get(u'quickSort')(var.get(u'originalMappings'), var.get(u'util').get(u'compareByOriginalPositions')) + var.get(u"this").put(u'__originalMappings', var.get(u'originalMappings')) + PyJs_SourceMapConsumer_parseMappings_4083_._set_name(u'SourceMapConsumer_parseMappings') + var.get(u'BasicSourceMapConsumer').get(u'prototype').put(u'_parseMappings', PyJs_SourceMapConsumer_parseMappings_4083_) + @Js + def PyJs_SourceMapConsumer_findMapping_4086_(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias, this, arguments, var=var): + var = Scope({u'aNeedle':aNeedle, u'SourceMapConsumer_findMapping':PyJs_SourceMapConsumer_findMapping_4086_, u'this':this, u'aBias':aBias, u'aColumnName':aColumnName, u'aComparator':aComparator, u'arguments':arguments, u'aMappings':aMappings, u'aLineName':aLineName}, var) + var.registers([u'aNeedle', u'aBias', u'aColumnName', u'aComparator', u'aMappings', u'aLineName']) + if (var.get(u'aNeedle').get(var.get(u'aLineName'))<=Js(0.0)): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Line must be greater than or equal to 1, got ')+var.get(u'aNeedle').get(var.get(u'aLineName'))))) + raise PyJsTempException + if (var.get(u'aNeedle').get(var.get(u'aColumnName'))=Js(0.0)): + var.put(u'mapping', var.get(u"this").get(u'_generatedMappings').get(var.get(u'index'))) + if PyJsStrictEq(var.get(u'mapping').get(u'generatedLine'),var.get(u'needle').get(u'generatedLine')): + var.put(u'source', var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'source'), var.get(u"null"))) + if PyJsStrictNeq(var.get(u'source'),var.get(u"null")): + var.put(u'source', var.get(u"this").get(u'_sources').callprop(u'at', var.get(u'source'))) + if (var.get(u"this").get(u'sourceRoot')!=var.get(u"null")): + var.put(u'source', var.get(u'util').callprop(u'join', var.get(u"this").get(u'sourceRoot'), var.get(u'source'))) + var.put(u'name', var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'name'), var.get(u"null"))) + if PyJsStrictNeq(var.get(u'name'),var.get(u"null")): + var.put(u'name', var.get(u"this").get(u'_names').callprop(u'at', var.get(u'name'))) + PyJs_Object_4090_ = Js({u'source':var.get(u'source'),u'line':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'originalLine'), var.get(u"null")),u'column':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'originalColumn'), var.get(u"null")),u'name':var.get(u'name')}) + return PyJs_Object_4090_ + PyJs_Object_4091_ = Js({u'source':var.get(u"null"),u'line':var.get(u"null"),u'column':var.get(u"null"),u'name':var.get(u"null")}) + return PyJs_Object_4091_ + PyJs_SourceMapConsumer_originalPositionFor_4088_._set_name(u'SourceMapConsumer_originalPositionFor') + var.get(u'BasicSourceMapConsumer').get(u'prototype').put(u'originalPositionFor', PyJs_SourceMapConsumer_originalPositionFor_4088_) + @Js + def PyJs_BasicSourceMapConsumer_hasContentsOfAllSources_4092_(this, arguments, var=var): + var = Scope({u'this':this, u'BasicSourceMapConsumer_hasContentsOfAllSources':PyJs_BasicSourceMapConsumer_hasContentsOfAllSources_4092_, u'arguments':arguments}, var) + var.registers([]) + if var.get(u"this").get(u'sourcesContent').neg(): + return Js(False) + @Js + def PyJs_anonymous_4093_(sc, this, arguments, var=var): + var = Scope({u'sc':sc, u'this':this, u'arguments':arguments}, var) + var.registers([u'sc']) + return (var.get(u'sc')==var.get(u"null")) + PyJs_anonymous_4093_._set_name(u'anonymous') + return ((var.get(u"this").get(u'sourcesContent').get(u'length')>=var.get(u"this").get(u'_sources').callprop(u'size')) and var.get(u"this").get(u'sourcesContent').callprop(u'some', PyJs_anonymous_4093_).neg()) + PyJs_BasicSourceMapConsumer_hasContentsOfAllSources_4092_._set_name(u'BasicSourceMapConsumer_hasContentsOfAllSources') + var.get(u'BasicSourceMapConsumer').get(u'prototype').put(u'hasContentsOfAllSources', PyJs_BasicSourceMapConsumer_hasContentsOfAllSources_4092_) + @Js + def PyJs_SourceMapConsumer_sourceContentFor_4094_(aSource, nullOnMissing, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'SourceMapConsumer_sourceContentFor':PyJs_SourceMapConsumer_sourceContentFor_4094_, u'aSource':aSource, u'nullOnMissing':nullOnMissing}, var) + var.registers([u'url', u'fileUriAbsPath', u'aSource', u'nullOnMissing']) + if var.get(u"this").get(u'sourcesContent').neg(): + return var.get(u"null") + if (var.get(u"this").get(u'sourceRoot')!=var.get(u"null")): + var.put(u'aSource', var.get(u'util').callprop(u'relative', var.get(u"this").get(u'sourceRoot'), var.get(u'aSource'))) + if var.get(u"this").get(u'_sources').callprop(u'has', var.get(u'aSource')): + return var.get(u"this").get(u'sourcesContent').get(var.get(u"this").get(u'_sources').callprop(u'indexOf', var.get(u'aSource'))) + pass + if ((var.get(u"this").get(u'sourceRoot')!=var.get(u"null")) and var.put(u'url', var.get(u'util').callprop(u'urlParse', var.get(u"this").get(u'sourceRoot')))): + var.put(u'fileUriAbsPath', var.get(u'aSource').callprop(u'replace', JsRegExp(u'/^file:\\/\\//'), Js(u''))) + if ((var.get(u'url').get(u'scheme')==Js(u'file')) and var.get(u"this").get(u'_sources').callprop(u'has', var.get(u'fileUriAbsPath'))): + return var.get(u"this").get(u'sourcesContent').get(var.get(u"this").get(u'_sources').callprop(u'indexOf', var.get(u'fileUriAbsPath'))) + if ((var.get(u'url').get(u'path').neg() or (var.get(u'url').get(u'path')==Js(u'/'))) and var.get(u"this").get(u'_sources').callprop(u'has', (Js(u'/')+var.get(u'aSource')))): + return var.get(u"this").get(u'sourcesContent').get(var.get(u"this").get(u'_sources').callprop(u'indexOf', (Js(u'/')+var.get(u'aSource')))) + if var.get(u'nullOnMissing'): + return var.get(u"null") + else: + PyJsTempException = JsToPyException(var.get(u'Error').create(((Js(u'"')+var.get(u'aSource'))+Js(u'" is not in the SourceMap.')))) + raise PyJsTempException + PyJs_SourceMapConsumer_sourceContentFor_4094_._set_name(u'SourceMapConsumer_sourceContentFor') + var.get(u'BasicSourceMapConsumer').get(u'prototype').put(u'sourceContentFor', PyJs_SourceMapConsumer_sourceContentFor_4094_) + @Js + def PyJs_SourceMapConsumer_generatedPositionFor_4095_(aArgs, this, arguments, var=var): + var = Scope({u'this':this, u'SourceMapConsumer_generatedPositionFor':PyJs_SourceMapConsumer_generatedPositionFor_4095_, u'arguments':arguments, u'aArgs':aArgs}, var) + var.registers([u'aArgs', u'source', u'needle', u'mapping', u'index']) + var.put(u'source', var.get(u'util').callprop(u'getArg', var.get(u'aArgs'), Js(u'source'))) + if (var.get(u"this").get(u'sourceRoot')!=var.get(u"null")): + var.put(u'source', var.get(u'util').callprop(u'relative', var.get(u"this").get(u'sourceRoot'), var.get(u'source'))) + if var.get(u"this").get(u'_sources').callprop(u'has', var.get(u'source')).neg(): + PyJs_Object_4096_ = Js({u'line':var.get(u"null"),u'column':var.get(u"null"),u'lastColumn':var.get(u"null")}) + return PyJs_Object_4096_ + var.put(u'source', var.get(u"this").get(u'_sources').callprop(u'indexOf', var.get(u'source'))) + PyJs_Object_4097_ = Js({u'source':var.get(u'source'),u'originalLine':var.get(u'util').callprop(u'getArg', var.get(u'aArgs'), Js(u'line')),u'originalColumn':var.get(u'util').callprop(u'getArg', var.get(u'aArgs'), Js(u'column'))}) + var.put(u'needle', PyJs_Object_4097_) + var.put(u'index', var.get(u"this").callprop(u'_findMapping', var.get(u'needle'), var.get(u"this").get(u'_originalMappings'), Js(u'originalLine'), Js(u'originalColumn'), var.get(u'util').get(u'compareByOriginalPositions'), var.get(u'util').callprop(u'getArg', var.get(u'aArgs'), Js(u'bias'), var.get(u'SourceMapConsumer').get(u'GREATEST_LOWER_BOUND')))) + if (var.get(u'index')>=Js(0.0)): + var.put(u'mapping', var.get(u"this").get(u'_originalMappings').get(var.get(u'index'))) + if PyJsStrictEq(var.get(u'mapping').get(u'source'),var.get(u'needle').get(u'source')): + PyJs_Object_4098_ = Js({u'line':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'generatedLine'), var.get(u"null")),u'column':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'generatedColumn'), var.get(u"null")),u'lastColumn':var.get(u'util').callprop(u'getArg', var.get(u'mapping'), Js(u'lastGeneratedColumn'), var.get(u"null"))}) + return PyJs_Object_4098_ + PyJs_Object_4099_ = Js({u'line':var.get(u"null"),u'column':var.get(u"null"),u'lastColumn':var.get(u"null")}) + return PyJs_Object_4099_ + PyJs_SourceMapConsumer_generatedPositionFor_4095_._set_name(u'SourceMapConsumer_generatedPositionFor') + var.get(u'BasicSourceMapConsumer').get(u'prototype').put(u'generatedPositionFor', PyJs_SourceMapConsumer_generatedPositionFor_4095_) + var.get(u'exports').put(u'BasicSourceMapConsumer', var.get(u'BasicSourceMapConsumer')) + pass + var.get(u'IndexedSourceMapConsumer').put(u'prototype', var.get(u'Object').callprop(u'create', var.get(u'SourceMapConsumer').get(u'prototype'))) + var.get(u'IndexedSourceMapConsumer').get(u'prototype').put(u'constructor', var.get(u'SourceMapConsumer')) + var.get(u'IndexedSourceMapConsumer').get(u'prototype').put(u'_version', Js(3.0)) + @Js + def PyJs_anonymous_4105_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'sources', u'j']) + var.put(u'sources', Js([])) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(0.0))) and (var.get(u'aGenerated').get(u'column')>=Js(0.0))) and var.get(u'aOriginal').neg()) and var.get(u'aSource').neg()) and var.get(u'aName').neg()): + return var.get('undefined') + else: + def PyJs_LONG_4137_(var=var): + return ((((((((var.get(u'aGenerated') and var.get(u'aGenerated').contains(Js(u'line'))) and var.get(u'aGenerated').contains(Js(u'column'))) and var.get(u'aOriginal')) and var.get(u'aOriginal').contains(Js(u'line'))) and var.get(u'aOriginal').contains(Js(u'column'))) and (var.get(u'aGenerated').get(u'line')>Js(0.0))) and (var.get(u'aGenerated').get(u'column')>=Js(0.0))) and (var.get(u'aOriginal').get(u'line')>Js(0.0))) + if ((PyJs_LONG_4137_() and (var.get(u'aOriginal').get(u'column')>=Js(0.0))) and var.get(u'aSource')): + return var.get('undefined') + else: + PyJs_Object_4138_ = Js({u'generated':var.get(u'aGenerated'),u'source':var.get(u'aSource'),u'original':var.get(u'aOriginal'),u'name':var.get(u'aName')}) + PyJsTempException = JsToPyException(var.get(u'Error').create((Js(u'Invalid mapping: ')+var.get(u'JSON').callprop(u'stringify', PyJs_Object_4138_)))) + raise PyJsTempException + PyJs_SourceMapGenerator_validateMapping_4136_._set_name(u'SourceMapGenerator_validateMapping') + var.get(u'SourceMapGenerator').get(u'prototype').put(u'_validateMapping', PyJs_SourceMapGenerator_validateMapping_4136_) + @Js + def PyJs_SourceMapGenerator_serializeMappings_4139_(this, arguments, var=var): + var = Scope({u'this':this, u'SourceMapGenerator_serializeMappings':PyJs_SourceMapGenerator_serializeMappings_4139_, u'arguments':arguments}, var) + var.registers([u'previousOriginalColumn', u'previousOriginalLine', u'previousGeneratedLine', u'previousSource', u'previousGeneratedColumn', u'i', u'mapping', u'previousName', u'next', u'len', u'nameIdx', u'sourceIdx', u'result', u'mappings']) + var.put(u'previousGeneratedColumn', Js(0.0)) + var.put(u'previousGeneratedLine', Js(1.0)) + var.put(u'previousOriginalColumn', Js(0.0)) + var.put(u'previousOriginalLine', Js(0.0)) + var.put(u'previousName', Js(0.0)) + var.put(u'previousSource', Js(0.0)) + var.put(u'result', Js(u'')) + pass + pass + pass + pass + var.put(u'mappings', var.get(u"this").get(u'_mappings').callprop(u'toArray')) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'len', var.get(u'mappings').get(u'length')) + while (var.get(u'i')Js(0.0)): + if var.get(u'util').callprop(u'compareByGeneratedPositionsInflated', var.get(u'mapping'), var.get(u'mappings').get((var.get(u'i')-Js(1.0)))).neg(): + continue + var.put(u'next', Js(u','), u'+') + var.put(u'next', var.get(u'base64VLQ').callprop(u'encode', (var.get(u'mapping').get(u'generatedColumn')-var.get(u'previousGeneratedColumn'))), u'+') + var.put(u'previousGeneratedColumn', var.get(u'mapping').get(u'generatedColumn')) + if (var.get(u'mapping').get(u'source')!=var.get(u"null")): + var.put(u'sourceIdx', var.get(u"this").get(u'_sources').callprop(u'indexOf', var.get(u'mapping').get(u'source'))) + var.put(u'next', var.get(u'base64VLQ').callprop(u'encode', (var.get(u'sourceIdx')-var.get(u'previousSource'))), u'+') + var.put(u'previousSource', var.get(u'sourceIdx')) + var.put(u'next', var.get(u'base64VLQ').callprop(u'encode', ((var.get(u'mapping').get(u'originalLine')-Js(1.0))-var.get(u'previousOriginalLine'))), u'+') + var.put(u'previousOriginalLine', (var.get(u'mapping').get(u'originalLine')-Js(1.0))) + var.put(u'next', var.get(u'base64VLQ').callprop(u'encode', (var.get(u'mapping').get(u'originalColumn')-var.get(u'previousOriginalColumn'))), u'+') + var.put(u'previousOriginalColumn', var.get(u'mapping').get(u'originalColumn')) + if (var.get(u'mapping').get(u'name')!=var.get(u"null")): + var.put(u'nameIdx', var.get(u"this").get(u'_names').callprop(u'indexOf', var.get(u'mapping').get(u'name'))) + var.put(u'next', var.get(u'base64VLQ').callprop(u'encode', (var.get(u'nameIdx')-var.get(u'previousName'))), u'+') + var.put(u'previousName', var.get(u'nameIdx')) + var.put(u'result', var.get(u'next'), u'+') + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + return var.get(u'result') + PyJs_SourceMapGenerator_serializeMappings_4139_._set_name(u'SourceMapGenerator_serializeMappings') + var.get(u'SourceMapGenerator').get(u'prototype').put(u'_serializeMappings', PyJs_SourceMapGenerator_serializeMappings_4139_) + @Js + def PyJs_SourceMapGenerator_generateSourcesContent_4140_(aSources, aSourceRoot, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'SourceMapGenerator_generateSourcesContent':PyJs_SourceMapGenerator_generateSourcesContent_4140_, u'aSources':aSources, u'aSourceRoot':aSourceRoot}, var) + var.registers([u'aSources', u'aSourceRoot']) + @Js + def PyJs_anonymous_4141_(source, this, arguments, var=var): + var = Scope({u'this':this, u'source':source, u'arguments':arguments}, var) + var.registers([u'source', u'key']) + if var.get(u"this").get(u'_sourcesContents').neg(): + return var.get(u"null") + if (var.get(u'aSourceRoot')!=var.get(u"null")): + var.put(u'source', var.get(u'util').callprop(u'relative', var.get(u'aSourceRoot'), var.get(u'source'))) + var.put(u'key', var.get(u'util').callprop(u'toSetString', var.get(u'source'))) + return (var.get(u"this").get(u'_sourcesContents').get(var.get(u'key')) if var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u"this").get(u'_sourcesContents'), var.get(u'key')) else var.get(u"null")) + PyJs_anonymous_4141_._set_name(u'anonymous') + return var.get(u'aSources').callprop(u'map', PyJs_anonymous_4141_, var.get(u"this")) + PyJs_SourceMapGenerator_generateSourcesContent_4140_._set_name(u'SourceMapGenerator_generateSourcesContent') + var.get(u'SourceMapGenerator').get(u'prototype').put(u'_generateSourcesContent', PyJs_SourceMapGenerator_generateSourcesContent_4140_) + @Js + def PyJs_SourceMapGenerator_toJSON_4142_(this, arguments, var=var): + var = Scope({u'this':this, u'SourceMapGenerator_toJSON':PyJs_SourceMapGenerator_toJSON_4142_, u'arguments':arguments}, var) + var.registers([u'map']) + PyJs_Object_4143_ = Js({u'version':var.get(u"this").get(u'_version'),u'sources':var.get(u"this").get(u'_sources').callprop(u'toArray'),u'names':var.get(u"this").get(u'_names').callprop(u'toArray'),u'mappings':var.get(u"this").callprop(u'_serializeMappings')}) + var.put(u'map', PyJs_Object_4143_) + if (var.get(u"this").get(u'_file')!=var.get(u"null")): + var.get(u'map').put(u'file', var.get(u"this").get(u'_file')) + if (var.get(u"this").get(u'_sourceRoot')!=var.get(u"null")): + var.get(u'map').put(u'sourceRoot', var.get(u"this").get(u'_sourceRoot')) + if var.get(u"this").get(u'_sourcesContents'): + var.get(u'map').put(u'sourcesContent', var.get(u"this").callprop(u'_generateSourcesContent', var.get(u'map').get(u'sources'), var.get(u'map').get(u'sourceRoot'))) + return var.get(u'map') + PyJs_SourceMapGenerator_toJSON_4142_._set_name(u'SourceMapGenerator_toJSON') + var.get(u'SourceMapGenerator').get(u'prototype').put(u'toJSON', PyJs_SourceMapGenerator_toJSON_4142_) + @Js + def PyJs_SourceMapGenerator_toString_4144_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'SourceMapGenerator_toString':PyJs_SourceMapGenerator_toString_4144_}, var) + var.registers([]) + return var.get(u'JSON').callprop(u'stringify', var.get(u"this").callprop(u'toJSON')) + PyJs_SourceMapGenerator_toString_4144_._set_name(u'SourceMapGenerator_toString') + var.get(u'SourceMapGenerator').get(u'prototype').put(u'toString', PyJs_SourceMapGenerator_toString_4144_) + var.get(u'exports').put(u'SourceMapGenerator', var.get(u'SourceMapGenerator')) +PyJs_anonymous_4120_._set_name(u'anonymous') +PyJs_Object_4145_ = Js({u'./array-set':Js(509.0),u'./base64-vlq':Js(510.0),u'./mapping-list':Js(513.0),u'./util':Js(518.0)}) +@Js +def PyJs_anonymous_4146_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'util', u'exports', u'NEWLINE_CODE', u'SourceNode', u'require', u'isSourceNode', u'module', u'SourceMapGenerator', u'REGEX_NEWLINE']) + @Js + def PyJsHoisted_SourceNode_(aLine, aColumn, aSource, aChunks, aName, this, arguments, var=var): + var = Scope({u'aChunks':aChunks, u'aSource':aSource, u'aLine':aLine, u'this':this, u'aColumn':aColumn, u'aName':aName, u'arguments':arguments}, var) + var.registers([u'aChunks', u'aColumn', u'aSource', u'aLine', u'aName']) + var.get(u"this").put(u'children', Js([])) + PyJs_Object_4147_ = Js({}) + var.get(u"this").put(u'sourceContents', PyJs_Object_4147_) + var.get(u"this").put(u'line', (var.get(u"null") if (var.get(u'aLine')==var.get(u"null")) else var.get(u'aLine'))) + var.get(u"this").put(u'column', (var.get(u"null") if (var.get(u'aColumn')==var.get(u"null")) else var.get(u'aColumn'))) + var.get(u"this").put(u'source', (var.get(u"null") if (var.get(u'aSource')==var.get(u"null")) else var.get(u'aSource'))) + var.get(u"this").put(u'name', (var.get(u"null") if (var.get(u'aName')==var.get(u"null")) else var.get(u'aName'))) + var.get(u"this").put(var.get(u'isSourceNode'), var.get(u'true')) + if (var.get(u'aChunks')!=var.get(u"null")): + var.get(u"this").callprop(u'add', var.get(u'aChunks')) + PyJsHoisted_SourceNode_.func_name = u'SourceNode' + var.put(u'SourceNode', PyJsHoisted_SourceNode_) + var.put(u'SourceMapGenerator', var.get(u'require')(Js(u'./source-map-generator')).get(u'SourceMapGenerator')) + var.put(u'util', var.get(u'require')(Js(u'./util'))) + var.put(u'REGEX_NEWLINE', JsRegExp(u'/(\\r?\\n)/')) + var.put(u'NEWLINE_CODE', Js(10.0)) + var.put(u'isSourceNode', Js(u'$$$isSourceNode$$$')) + pass + @Js + def PyJs_SourceNode_fromStringWithSourceMap_4148_(aGeneratedCode, aSourceMapConsumer, aRelativePath, this, arguments, var=var): + var = Scope({u'aSourceMapConsumer':aSourceMapConsumer, u'this':this, u'aRelativePath':aRelativePath, u'aGeneratedCode':aGeneratedCode, u'SourceNode_fromStringWithSourceMap':PyJs_SourceNode_fromStringWithSourceMap_4148_, u'arguments':arguments}, var) + var.registers([u'node', u'lastMapping', u'remainingLines', u'aSourceMapConsumer', u'aGeneratedCode', u'lastGeneratedLine', u'aRelativePath', u'addMappingWithCode', u'shiftNextLine', u'lastGeneratedColumn']) + @Js + def PyJsHoisted_addMappingWithCode_(mapping, code, this, arguments, var=var): + var = Scope({u'this':this, u'code':code, u'mapping':mapping, u'arguments':arguments}, var) + var.registers([u'source', u'code', u'mapping']) + if (PyJsStrictEq(var.get(u'mapping'),var.get(u"null")) or PyJsStrictEq(var.get(u'mapping').get(u'source'),var.get(u'undefined'))): + var.get(u'node').callprop(u'add', var.get(u'code')) + else: + var.put(u'source', (var.get(u'util').callprop(u'join', var.get(u'aRelativePath'), var.get(u'mapping').get(u'source')) if var.get(u'aRelativePath') else var.get(u'mapping').get(u'source'))) + var.get(u'node').callprop(u'add', var.get(u'SourceNode').create(var.get(u'mapping').get(u'originalLine'), var.get(u'mapping').get(u'originalColumn'), var.get(u'source'), var.get(u'code'), var.get(u'mapping').get(u'name'))) + PyJsHoisted_addMappingWithCode_.func_name = u'addMappingWithCode' + var.put(u'addMappingWithCode', PyJsHoisted_addMappingWithCode_) + var.put(u'node', var.get(u'SourceNode').create()) + var.put(u'remainingLines', var.get(u'aGeneratedCode').callprop(u'split', var.get(u'REGEX_NEWLINE'))) + @Js + def PyJs_anonymous_4149_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'newLine', u'lineContents']) + var.put(u'lineContents', var.get(u'remainingLines').callprop(u'shift')) + var.put(u'newLine', (var.get(u'remainingLines').callprop(u'shift') or Js(u''))) + return (var.get(u'lineContents')+var.get(u'newLine')) + PyJs_anonymous_4149_._set_name(u'anonymous') + var.put(u'shiftNextLine', PyJs_anonymous_4149_) + var.put(u'lastGeneratedLine', Js(1.0)) + var.put(u'lastGeneratedColumn', Js(0.0)) + var.put(u'lastMapping', var.get(u"null")) + @Js + def PyJs_anonymous_4150_(mapping, this, arguments, var=var): + var = Scope({u'this':this, u'mapping':mapping, u'arguments':arguments}, var) + var.registers([u'nextLine', u'code', u'mapping']) + if PyJsStrictNeq(var.get(u'lastMapping'),var.get(u"null")): + if (var.get(u'lastGeneratedLine')Js(0.0)): + if var.get(u'lastMapping'): + var.get(u'addMappingWithCode')(var.get(u'lastMapping'), var.get(u'shiftNextLine')()) + var.get(u'node').callprop(u'add', var.get(u'remainingLines').callprop(u'join', Js(u''))) + @Js + def PyJs_anonymous_4151_(sourceFile, this, arguments, var=var): + var = Scope({u'this':this, u'sourceFile':sourceFile, u'arguments':arguments}, var) + var.registers([u'content', u'sourceFile']) + var.put(u'content', var.get(u'aSourceMapConsumer').callprop(u'sourceContentFor', var.get(u'sourceFile'))) + if (var.get(u'content')!=var.get(u"null")): + if (var.get(u'aRelativePath')!=var.get(u"null")): + var.put(u'sourceFile', var.get(u'util').callprop(u'join', var.get(u'aRelativePath'), var.get(u'sourceFile'))) + var.get(u'node').callprop(u'setSourceContent', var.get(u'sourceFile'), var.get(u'content')) + PyJs_anonymous_4151_._set_name(u'anonymous') + var.get(u'aSourceMapConsumer').get(u'sources').callprop(u'forEach', PyJs_anonymous_4151_) + return var.get(u'node') + pass + PyJs_SourceNode_fromStringWithSourceMap_4148_._set_name(u'SourceNode_fromStringWithSourceMap') + var.get(u'SourceNode').put(u'fromStringWithSourceMap', PyJs_SourceNode_fromStringWithSourceMap_4148_) + @Js + def PyJs_SourceNode_add_4152_(aChunk, this, arguments, var=var): + var = Scope({u'this':this, u'SourceNode_add':PyJs_SourceNode_add_4152_, u'arguments':arguments, u'aChunk':aChunk}, var) + var.registers([u'aChunk']) + if var.get(u'Array').callprop(u'isArray', var.get(u'aChunk')): + @Js + def PyJs_anonymous_4153_(chunk, this, arguments, var=var): + var = Scope({u'this':this, u'chunk':chunk, u'arguments':arguments}, var) + var.registers([u'chunk']) + var.get(u"this").callprop(u'add', var.get(u'chunk')) + PyJs_anonymous_4153_._set_name(u'anonymous') + var.get(u'aChunk').callprop(u'forEach', PyJs_anonymous_4153_, var.get(u"this")) + else: + if (var.get(u'aChunk').get(var.get(u'isSourceNode')) or PyJsStrictEq(var.get(u'aChunk',throw=False).typeof(),Js(u'string'))): + if var.get(u'aChunk'): + var.get(u"this").get(u'children').callprop(u'push', var.get(u'aChunk')) + else: + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Expected a SourceNode, string, or an array of SourceNodes and strings. Got ')+var.get(u'aChunk')))) + raise PyJsTempException + return var.get(u"this") + PyJs_SourceNode_add_4152_._set_name(u'SourceNode_add') + var.get(u'SourceNode').get(u'prototype').put(u'add', PyJs_SourceNode_add_4152_) + @Js + def PyJs_SourceNode_prepend_4154_(aChunk, this, arguments, var=var): + var = Scope({u'this':this, u'SourceNode_prepend':PyJs_SourceNode_prepend_4154_, u'arguments':arguments, u'aChunk':aChunk}, var) + var.registers([u'i', u'aChunk']) + if var.get(u'Array').callprop(u'isArray', var.get(u'aChunk')): + #for JS loop + var.put(u'i', (var.get(u'aChunk').get(u'length')-Js(1.0))) + while (var.get(u'i')>=Js(0.0)): + try: + var.get(u"this").callprop(u'prepend', var.get(u'aChunk').get(var.get(u'i'))) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + else: + if (var.get(u'aChunk').get(var.get(u'isSourceNode')) or PyJsStrictEq(var.get(u'aChunk',throw=False).typeof(),Js(u'string'))): + var.get(u"this").get(u'children').callprop(u'unshift', var.get(u'aChunk')) + else: + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Expected a SourceNode, string, or an array of SourceNodes and strings. Got ')+var.get(u'aChunk')))) + raise PyJsTempException + return var.get(u"this") + PyJs_SourceNode_prepend_4154_._set_name(u'SourceNode_prepend') + var.get(u'SourceNode').get(u'prototype').put(u'prepend', PyJs_SourceNode_prepend_4154_) + @Js + def PyJs_SourceNode_walk_4155_(aFn, this, arguments, var=var): + var = Scope({u'this':this, u'aFn':aFn, u'arguments':arguments, u'SourceNode_walk':PyJs_SourceNode_walk_4155_}, var) + var.registers([u'i', u'chunk', u'aFn', u'len']) + pass + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'len', var.get(u"this").get(u'children').get(u'length')) + while (var.get(u'i')Js(0.0)): + var.put(u'newChildren', Js([])) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')<(var.get(u'len')-Js(1.0))): + try: + var.get(u'newChildren').callprop(u'push', var.get(u"this").get(u'children').get(var.get(u'i'))) + var.get(u'newChildren').callprop(u'push', var.get(u'aSep')) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + var.get(u'newChildren').callprop(u'push', var.get(u"this").get(u'children').get(var.get(u'i'))) + var.get(u"this").put(u'children', var.get(u'newChildren')) + return var.get(u"this") + PyJs_SourceNode_join_4157_._set_name(u'SourceNode_join') + var.get(u'SourceNode').get(u'prototype').put(u'join', PyJs_SourceNode_join_4157_) + @Js + def PyJs_SourceNode_replaceRight_4158_(aPattern, aReplacement, this, arguments, var=var): + var = Scope({u'this':this, u'aPattern':aPattern, u'aReplacement':aReplacement, u'arguments':arguments, u'SourceNode_replaceRight':PyJs_SourceNode_replaceRight_4158_}, var) + var.registers([u'aPattern', u'lastChild', u'aReplacement']) + var.put(u'lastChild', var.get(u"this").get(u'children').get((var.get(u"this").get(u'children').get(u'length')-Js(1.0)))) + if var.get(u'lastChild').get(var.get(u'isSourceNode')): + var.get(u'lastChild').callprop(u'replaceRight', var.get(u'aPattern'), var.get(u'aReplacement')) + else: + if PyJsStrictEq(var.get(u'lastChild',throw=False).typeof(),Js(u'string')): + var.get(u"this").get(u'children').put((var.get(u"this").get(u'children').get(u'length')-Js(1.0)), var.get(u'lastChild').callprop(u'replace', var.get(u'aPattern'), var.get(u'aReplacement'))) + else: + var.get(u"this").get(u'children').callprop(u'push', Js(u'').callprop(u'replace', var.get(u'aPattern'), var.get(u'aReplacement'))) + return var.get(u"this") + PyJs_SourceNode_replaceRight_4158_._set_name(u'SourceNode_replaceRight') + var.get(u'SourceNode').get(u'prototype').put(u'replaceRight', PyJs_SourceNode_replaceRight_4158_) + @Js + def PyJs_SourceNode_setSourceContent_4159_(aSourceFile, aSourceContent, this, arguments, var=var): + var = Scope({u'this':this, u'aSourceContent':aSourceContent, u'aSourceFile':aSourceFile, u'arguments':arguments, u'SourceNode_setSourceContent':PyJs_SourceNode_setSourceContent_4159_}, var) + var.registers([u'aSourceContent', u'aSourceFile']) + var.get(u"this").get(u'sourceContents').put(var.get(u'util').callprop(u'toSetString', var.get(u'aSourceFile')), var.get(u'aSourceContent')) + PyJs_SourceNode_setSourceContent_4159_._set_name(u'SourceNode_setSourceContent') + var.get(u'SourceNode').get(u'prototype').put(u'setSourceContent', PyJs_SourceNode_setSourceContent_4159_) + @Js + def PyJs_SourceNode_walkSourceContents_4160_(aFn, this, arguments, var=var): + var = Scope({u'this':this, u'aFn':aFn, u'arguments':arguments, u'SourceNode_walkSourceContents':PyJs_SourceNode_walkSourceContents_4160_}, var) + var.registers([u'i', u'sources', u'aFn', u'len']) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'len', var.get(u"this").get(u'children').get(u'length')) + while (var.get(u'i')=Js(0.0)): + try: + var.put(u'part', var.get(u'parts').get(var.get(u'i'))) + if PyJsStrictEq(var.get(u'part'),Js(u'.')): + var.get(u'parts').callprop(u'splice', var.get(u'i'), Js(1.0)) + else: + if PyJsStrictEq(var.get(u'part'),Js(u'..')): + (var.put(u'up',Js(var.get(u'up').to_number())+Js(1))-Js(1)) + else: + if (var.get(u'up')>Js(0.0)): + if PyJsStrictEq(var.get(u'part'),Js(u'')): + var.get(u'parts').callprop(u'splice', (var.get(u'i')+Js(1.0)), var.get(u'up')) + var.put(u'up', Js(0.0)) + else: + var.get(u'parts').callprop(u'splice', var.get(u'i'), Js(2.0)) + (var.put(u'up',Js(var.get(u'up').to_number())-Js(1))+Js(1)) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + var.put(u'path', var.get(u'parts').callprop(u'join', Js(u'/'))) + if PyJsStrictEq(var.get(u'path'),Js(u'')): + var.put(u'path', (Js(u'/') if var.get(u'isAbsolute') else Js(u'.'))) + if var.get(u'url'): + var.get(u'url').put(u'path', var.get(u'path')) + return var.get(u'urlGenerate')(var.get(u'url')) + return var.get(u'path') + PyJsHoisted_normalize_.func_name = u'normalize' + var.put(u'normalize', PyJsHoisted_normalize_) + @Js + def PyJsHoisted_urlGenerate_(aParsedUrl, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'aParsedUrl':aParsedUrl}, var) + var.registers([u'url', u'aParsedUrl']) + var.put(u'url', Js(u'')) + if var.get(u'aParsedUrl').get(u'scheme'): + var.put(u'url', (var.get(u'aParsedUrl').get(u'scheme')+Js(u':')), u'+') + var.put(u'url', Js(u'//'), u'+') + if var.get(u'aParsedUrl').get(u'auth'): + var.put(u'url', (var.get(u'aParsedUrl').get(u'auth')+Js(u'@')), u'+') + if var.get(u'aParsedUrl').get(u'host'): + var.put(u'url', var.get(u'aParsedUrl').get(u'host'), u'+') + if var.get(u'aParsedUrl').get(u'port'): + var.put(u'url', (Js(u':')+var.get(u'aParsedUrl').get(u'port')), u'+') + if var.get(u'aParsedUrl').get(u'path'): + var.put(u'url', var.get(u'aParsedUrl').get(u'path'), u'+') + return var.get(u'url') + PyJsHoisted_urlGenerate_.func_name = u'urlGenerate' + var.put(u'urlGenerate', PyJsHoisted_urlGenerate_) + @Js + def PyJsHoisted_compareByGeneratedPositionsDeflated_(mappingA, mappingB, onlyCompareGenerated, this, arguments, var=var): + var = Scope({u'this':this, u'mappingB':mappingB, u'arguments':arguments, u'onlyCompareGenerated':onlyCompareGenerated, u'mappingA':mappingA}, var) + var.registers([u'mappingA', u'mappingB', u'onlyCompareGenerated', u'cmp']) + var.put(u'cmp', (var.get(u'mappingA').get(u'generatedLine')-var.get(u'mappingB').get(u'generatedLine'))) + if PyJsStrictNeq(var.get(u'cmp'),Js(0.0)): + return var.get(u'cmp') + var.put(u'cmp', (var.get(u'mappingA').get(u'generatedColumn')-var.get(u'mappingB').get(u'generatedColumn'))) + if (PyJsStrictNeq(var.get(u'cmp'),Js(0.0)) or var.get(u'onlyCompareGenerated')): + return var.get(u'cmp') + var.put(u'cmp', (var.get(u'mappingA').get(u'source')-var.get(u'mappingB').get(u'source'))) + if PyJsStrictNeq(var.get(u'cmp'),Js(0.0)): + return var.get(u'cmp') + var.put(u'cmp', (var.get(u'mappingA').get(u'originalLine')-var.get(u'mappingB').get(u'originalLine'))) + if PyJsStrictNeq(var.get(u'cmp'),Js(0.0)): + return var.get(u'cmp') + var.put(u'cmp', (var.get(u'mappingA').get(u'originalColumn')-var.get(u'mappingB').get(u'originalColumn'))) + if PyJsStrictNeq(var.get(u'cmp'),Js(0.0)): + return var.get(u'cmp') + return (var.get(u'mappingA').get(u'name')-var.get(u'mappingB').get(u'name')) + PyJsHoisted_compareByGeneratedPositionsDeflated_.func_name = u'compareByGeneratedPositionsDeflated' + var.put(u'compareByGeneratedPositionsDeflated', PyJsHoisted_compareByGeneratedPositionsDeflated_) + @Js + def PyJsHoisted_join_(aRoot, aPath, this, arguments, var=var): + var = Scope({u'aRoot':aRoot, u'aPath':aPath, u'this':this, u'arguments':arguments}, var) + var.registers([u'aRootUrl', u'aRoot', u'aPath', u'joined', u'aPathUrl']) + if PyJsStrictEq(var.get(u'aRoot'),Js(u'')): + var.put(u'aRoot', Js(u'.')) + if PyJsStrictEq(var.get(u'aPath'),Js(u'')): + var.put(u'aPath', Js(u'.')) + var.put(u'aPathUrl', var.get(u'urlParse')(var.get(u'aPath'))) + var.put(u'aRootUrl', var.get(u'urlParse')(var.get(u'aRoot'))) + if var.get(u'aRootUrl'): + var.put(u'aRoot', (var.get(u'aRootUrl').get(u'path') or Js(u'/'))) + if (var.get(u'aPathUrl') and var.get(u'aPathUrl').get(u'scheme').neg()): + if var.get(u'aRootUrl'): + var.get(u'aPathUrl').put(u'scheme', var.get(u'aRootUrl').get(u'scheme')) + return var.get(u'urlGenerate')(var.get(u'aPathUrl')) + if (var.get(u'aPathUrl') or var.get(u'aPath').callprop(u'match', var.get(u'dataUrlRegexp'))): + return var.get(u'aPath') + if ((var.get(u'aRootUrl') and var.get(u'aRootUrl').get(u'host').neg()) and var.get(u'aRootUrl').get(u'path').neg()): + var.get(u'aRootUrl').put(u'host', var.get(u'aPath')) + return var.get(u'urlGenerate')(var.get(u'aRootUrl')) + var.put(u'joined', (var.get(u'aPath') if PyJsStrictEq(var.get(u'aPath').callprop(u'charAt', Js(0.0)),Js(u'/')) else var.get(u'normalize')(((var.get(u'aRoot').callprop(u'replace', JsRegExp(u'/\\/+$/'), Js(u''))+Js(u'/'))+var.get(u'aPath'))))) + if var.get(u'aRootUrl'): + var.get(u'aRootUrl').put(u'path', var.get(u'joined')) + return var.get(u'urlGenerate')(var.get(u'aRootUrl')) + return var.get(u'joined') + PyJsHoisted_join_.func_name = u'join' + var.put(u'join', PyJsHoisted_join_) + @Js + def PyJsHoisted_relative_(aRoot, aPath, this, arguments, var=var): + var = Scope({u'aRoot':aRoot, u'aPath':aPath, u'this':this, u'arguments':arguments}, var) + var.registers([u'aRoot', u'index', u'aPath', u'level']) + if PyJsStrictEq(var.get(u'aRoot'),Js(u'')): + var.put(u'aRoot', Js(u'.')) + var.put(u'aRoot', var.get(u'aRoot').callprop(u'replace', JsRegExp(u'/\\/$/'), Js(u''))) + var.put(u'level', Js(0.0)) + while PyJsStrictNeq(var.get(u'aPath').callprop(u'indexOf', (var.get(u'aRoot')+Js(u'/'))),Js(0.0)): + var.put(u'index', var.get(u'aRoot').callprop(u'lastIndexOf', Js(u'/'))) + if (var.get(u'index')=Js(0.0)): + try: + if PyJsStrictNeq(var.get(u's').callprop(u'charCodeAt', var.get(u'i')),Js(36.0)): + return Js(False) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + return var.get(u'true') + PyJsHoisted_isProtoString_.func_name = u'isProtoString' + var.put(u'isProtoString', PyJsHoisted_isProtoString_) + @Js + def PyJsHoisted_compareByOriginalPositions_(mappingA, mappingB, onlyCompareOriginal, this, arguments, var=var): + var = Scope({u'this':this, u'onlyCompareOriginal':onlyCompareOriginal, u'mappingB':mappingB, u'arguments':arguments, u'mappingA':mappingA}, var) + var.registers([u'onlyCompareOriginal', u'mappingA', u'mappingB', u'cmp']) + var.put(u'cmp', (var.get(u'mappingA').get(u'source')-var.get(u'mappingB').get(u'source'))) + if PyJsStrictNeq(var.get(u'cmp'),Js(0.0)): + return var.get(u'cmp') + var.put(u'cmp', (var.get(u'mappingA').get(u'originalLine')-var.get(u'mappingB').get(u'originalLine'))) + if PyJsStrictNeq(var.get(u'cmp'),Js(0.0)): + return var.get(u'cmp') + var.put(u'cmp', (var.get(u'mappingA').get(u'originalColumn')-var.get(u'mappingB').get(u'originalColumn'))) + if (PyJsStrictNeq(var.get(u'cmp'),Js(0.0)) or var.get(u'onlyCompareOriginal')): + return var.get(u'cmp') + var.put(u'cmp', (var.get(u'mappingA').get(u'generatedColumn')-var.get(u'mappingB').get(u'generatedColumn'))) + if PyJsStrictNeq(var.get(u'cmp'),Js(0.0)): + return var.get(u'cmp') + var.put(u'cmp', (var.get(u'mappingA').get(u'generatedLine')-var.get(u'mappingB').get(u'generatedLine'))) + if PyJsStrictNeq(var.get(u'cmp'),Js(0.0)): + return var.get(u'cmp') + return (var.get(u'mappingA').get(u'name')-var.get(u'mappingB').get(u'name')) + PyJsHoisted_compareByOriginalPositions_.func_name = u'compareByOriginalPositions' + var.put(u'compareByOriginalPositions', PyJsHoisted_compareByOriginalPositions_) + @Js + def PyJsHoisted_strcmp_(aStr1, aStr2, this, arguments, var=var): + var = Scope({u'this':this, u'aStr2':aStr2, u'aStr1':aStr1, u'arguments':arguments}, var) + var.registers([u'aStr2', u'aStr1']) + if PyJsStrictEq(var.get(u'aStr1'),var.get(u'aStr2')): + return Js(0.0) + if (var.get(u'aStr1')>var.get(u'aStr2')): + return Js(1.0) + return (-Js(1.0)) + PyJsHoisted_strcmp_.func_name = u'strcmp' + var.put(u'strcmp', PyJsHoisted_strcmp_) + @Js + def PyJsHoisted_getArg_(aArgs, aName, aDefaultValue, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'aDefaultValue':aDefaultValue, u'aName':aName, u'aArgs':aArgs}, var) + var.registers([u'aDefaultValue', u'aName', u'aArgs']) + if var.get(u'aArgs').contains(var.get(u'aName')): + return var.get(u'aArgs').get(var.get(u'aName')) + else: + if PyJsStrictEq(var.get(u'arguments').get(u'length'),Js(3.0)): + return var.get(u'aDefaultValue') + else: + PyJsTempException = JsToPyException(var.get(u'Error').create(((Js(u'"')+var.get(u'aName'))+Js(u'" is a required argument.')))) + raise PyJsTempException + PyJsHoisted_getArg_.func_name = u'getArg' + var.put(u'getArg', PyJsHoisted_getArg_) + @Js + def PyJsHoisted_toSetString_(aStr, this, arguments, var=var): + var = Scope({u'this':this, u'aStr':aStr, u'arguments':arguments}, var) + var.registers([u'aStr']) + if var.get(u'isProtoString')(var.get(u'aStr')): + return (Js(u'$')+var.get(u'aStr')) + return var.get(u'aStr') + PyJsHoisted_toSetString_.func_name = u'toSetString' + var.put(u'toSetString', PyJsHoisted_toSetString_) + pass + var.get(u'exports').put(u'getArg', var.get(u'getArg')) + var.put(u'urlRegexp', JsRegExp(u'/^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/')) + var.put(u'dataUrlRegexp', JsRegExp(u'/^data:.+\\,.+$/')) + pass + var.get(u'exports').put(u'urlParse', var.get(u'urlParse')) + pass + var.get(u'exports').put(u'urlGenerate', var.get(u'urlGenerate')) + pass + var.get(u'exports').put(u'normalize', var.get(u'normalize')) + pass + var.get(u'exports').put(u'join', var.get(u'join')) + @Js + def PyJs_anonymous_4179_(aPath, this, arguments, var=var): + var = Scope({u'this':this, u'aPath':aPath, u'arguments':arguments}, var) + var.registers([u'aPath']) + return (PyJsStrictEq(var.get(u'aPath').callprop(u'charAt', Js(0.0)),Js(u'/')) or var.get(u'aPath').callprop(u'match', var.get(u'urlRegexp')).neg().neg()) + PyJs_anonymous_4179_._set_name(u'anonymous') + var.get(u'exports').put(u'isAbsolute', PyJs_anonymous_4179_) + pass + var.get(u'exports').put(u'relative', var.get(u'relative')) + @Js + def PyJs_anonymous_4180_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'obj']) + var.put(u'obj', var.get(u'Object').callprop(u'create', var.get(u"null"))) + return var.get(u'obj').contains(Js(u'__proto__')).neg() + PyJs_anonymous_4180_._set_name(u'anonymous') + var.put(u'supportsNullProto', PyJs_anonymous_4180_()) + pass + pass + var.get(u'exports').put(u'toSetString', (var.get(u'identity') if var.get(u'supportsNullProto') else var.get(u'toSetString'))) + pass + var.get(u'exports').put(u'fromSetString', (var.get(u'identity') if var.get(u'supportsNullProto') else var.get(u'fromSetString'))) + pass + pass + var.get(u'exports').put(u'compareByOriginalPositions', var.get(u'compareByOriginalPositions')) + pass + var.get(u'exports').put(u'compareByGeneratedPositionsDeflated', var.get(u'compareByGeneratedPositionsDeflated')) + pass + pass + var.get(u'exports').put(u'compareByGeneratedPositionsInflated', var.get(u'compareByGeneratedPositionsInflated')) +PyJs_anonymous_4177_._set_name(u'anonymous') +PyJs_Object_4183_ = Js({}) +@Js +def PyJs_anonymous_4184_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + var.get(u'exports').put(u'SourceMapGenerator', var.get(u'require')(Js(u'./lib/source-map-generator')).get(u'SourceMapGenerator')) + var.get(u'exports').put(u'SourceMapConsumer', var.get(u'require')(Js(u'./lib/source-map-consumer')).get(u'SourceMapConsumer')) + var.get(u'exports').put(u'SourceNode', var.get(u'require')(Js(u'./lib/source-node')).get(u'SourceNode')) +PyJs_anonymous_4184_._set_name(u'anonymous') +PyJs_Object_4185_ = Js({u'./lib/source-map-consumer':Js(515.0),u'./lib/source-map-generator':Js(516.0),u'./lib/source-node':Js(517.0)}) +@Js +def PyJs_anonymous_4186_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'ansiRegex', u'exports', u'module']) + Js(u'use strict') + var.put(u'ansiRegex', var.get(u'require')(Js(u'ansi-regex'))()) + @Js + def PyJs_anonymous_4187_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + return (var.get(u'str').callprop(u'replace', var.get(u'ansiRegex'), Js(u'')) if PyJsStrictEq(var.get(u'str',throw=False).typeof(),Js(u'string')) else var.get(u'str')) + PyJs_anonymous_4187_._set_name(u'anonymous') + var.get(u'module').put(u'exports', PyJs_anonymous_4187_) +PyJs_anonymous_4186_._set_name(u'anonymous') +PyJs_Object_4188_ = Js({u'ansi-regex':Js(2.0)}) +@Js +def PyJs_anonymous_4189_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_4190_(process, this, arguments, var=var): + var = Scope({u'process':process, u'this':this, u'arguments':arguments}, var) + var.registers([u'process', u'hasFlag', u'terminator', u'argv']) + Js(u'use strict') + var.put(u'argv', var.get(u'process').get(u'argv')) + var.put(u'terminator', var.get(u'argv').callprop(u'indexOf', Js(u'--'))) + @Js + def PyJs_anonymous_4191_(flag, this, arguments, var=var): + var = Scope({u'this':this, u'flag':flag, u'arguments':arguments}, var) + var.registers([u'flag', u'pos']) + var.put(u'flag', (Js(u'--')+var.get(u'flag'))) + var.put(u'pos', var.get(u'argv').callprop(u'indexOf', var.get(u'flag'))) + return (PyJsStrictNeq(var.get(u'pos'),(-Js(1.0))) and ((var.get(u'pos')=Js(0.0)): + try: + if (var.get(u'ka').get(var.get(u'i'))!=var.get(u'kb').get(var.get(u'i'))): + return Js(False) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + #for JS loop + var.put(u'i', (var.get(u'ka').get(u'length')-Js(1.0))) + while (var.get(u'i')>=Js(0.0)): + try: + var.put(u'key', var.get(u'ka').get(var.get(u'i'))) + if var.get(u'_deepEqual')(var.get(u'a').get(var.get(u'key')), var.get(u'b').get(var.get(u'key'))).neg(): + return Js(False) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + return var.get(u'true') + PyJsHoisted_objEquiv_.func_name = u'objEquiv' + var.put(u'objEquiv', PyJsHoisted_objEquiv_) + @Js + def PyJsHoisted_isArguments_(object, this, arguments, var=var): + var = Scope({u'this':this, u'object':object, u'arguments':arguments}, var) + var.registers([u'object']) + return (var.get(u'Object').get(u'prototype').get(u'toString').callprop(u'call', var.get(u'object'))==Js(u'[object Arguments]')) + PyJsHoisted_isArguments_.func_name = u'isArguments' + var.put(u'isArguments', PyJsHoisted_isArguments_) + var.put(u'util', var.get(u'require')(Js(u'util/'))) + var.put(u'pSlice', var.get(u'Array').get(u'prototype').get(u'slice')) + var.put(u'hasOwn', var.get(u'Object').get(u'prototype').get(u'hasOwnProperty')) + var.put(u'assert', var.get(u'module').put(u'exports', var.get(u'ok'))) + @Js + def PyJs_AssertionError_4200_(options, this, arguments, var=var): + var = Scope({u'this':this, u'AssertionError':PyJs_AssertionError_4200_, u'options':options, u'arguments':arguments}, var) + var.registers([u'next_line', u'err', u'idx', u'stackStartFunction', u'fn_name', u'options', u'out']) + var.get(u"this").put(u'name', Js(u'AssertionError')) + var.get(u"this").put(u'actual', var.get(u'options').get(u'actual')) + var.get(u"this").put(u'expected', var.get(u'options').get(u'expected')) + var.get(u"this").put(u'operator', var.get(u'options').get(u'operator')) + if var.get(u'options').get(u'message'): + var.get(u"this").put(u'message', var.get(u'options').get(u'message')) + var.get(u"this").put(u'generatedMessage', Js(False)) + else: + var.get(u"this").put(u'message', var.get(u'getMessage')(var.get(u"this"))) + var.get(u"this").put(u'generatedMessage', var.get(u'true')) + var.put(u'stackStartFunction', (var.get(u'options').get(u'stackStartFunction') or var.get(u'fail'))) + if var.get(u'Error').get(u'captureStackTrace'): + var.get(u'Error').callprop(u'captureStackTrace', var.get(u"this"), var.get(u'stackStartFunction')) + else: + var.put(u'err', var.get(u'Error').create()) + if var.get(u'err').get(u'stack'): + var.put(u'out', var.get(u'err').get(u'stack')) + var.put(u'fn_name', var.get(u'stackStartFunction').get(u'name')) + var.put(u'idx', var.get(u'out').callprop(u'indexOf', (Js(u'\n')+var.get(u'fn_name')))) + if (var.get(u'idx')>=Js(0.0)): + var.put(u'next_line', var.get(u'out').callprop(u'indexOf', Js(u'\n'), (var.get(u'idx')+Js(1.0)))) + var.put(u'out', var.get(u'out').callprop(u'substring', (var.get(u'next_line')+Js(1.0)))) + var.get(u"this").put(u'stack', var.get(u'out')) + PyJs_AssertionError_4200_._set_name(u'AssertionError') + var.get(u'assert').put(u'AssertionError', PyJs_AssertionError_4200_) + var.get(u'util').callprop(u'inherits', var.get(u'assert').get(u'AssertionError'), var.get(u'Error')) + pass + pass + pass + pass + var.get(u'assert').put(u'fail', var.get(u'fail')) + pass + var.get(u'assert').put(u'ok', var.get(u'ok')) + @Js + def PyJs_equal_4202_(actual, expected, message, this, arguments, var=var): + var = Scope({u'actual':actual, u'this':this, u'equal':PyJs_equal_4202_, u'arguments':arguments, u'expected':expected, u'message':message}, var) + var.registers([u'expected', u'message', u'actual']) + if (var.get(u'actual')!=var.get(u'expected')): + var.get(u'fail')(var.get(u'actual'), var.get(u'expected'), var.get(u'message'), Js(u'=='), var.get(u'assert').get(u'equal')) + PyJs_equal_4202_._set_name(u'equal') + var.get(u'assert').put(u'equal', PyJs_equal_4202_) + @Js + def PyJs_notEqual_4203_(actual, expected, message, this, arguments, var=var): + var = Scope({u'notEqual':PyJs_notEqual_4203_, u'actual':actual, u'this':this, u'arguments':arguments, u'expected':expected, u'message':message}, var) + var.registers([u'expected', u'message', u'actual']) + if (var.get(u'actual')==var.get(u'expected')): + var.get(u'fail')(var.get(u'actual'), var.get(u'expected'), var.get(u'message'), Js(u'!='), var.get(u'assert').get(u'notEqual')) + PyJs_notEqual_4203_._set_name(u'notEqual') + var.get(u'assert').put(u'notEqual', PyJs_notEqual_4203_) + @Js + def PyJs_deepEqual_4204_(actual, expected, message, this, arguments, var=var): + var = Scope({u'actual':actual, u'this':this, u'arguments':arguments, u'expected':expected, u'message':message, u'deepEqual':PyJs_deepEqual_4204_}, var) + var.registers([u'expected', u'message', u'actual']) + if var.get(u'_deepEqual')(var.get(u'actual'), var.get(u'expected')).neg(): + var.get(u'fail')(var.get(u'actual'), var.get(u'expected'), var.get(u'message'), Js(u'deepEqual'), var.get(u'assert').get(u'deepEqual')) + PyJs_deepEqual_4204_._set_name(u'deepEqual') + var.get(u'assert').put(u'deepEqual', PyJs_deepEqual_4204_) + pass + pass + pass + @Js + def PyJs_notDeepEqual_4206_(actual, expected, message, this, arguments, var=var): + var = Scope({u'actual':actual, u'this':this, u'notDeepEqual':PyJs_notDeepEqual_4206_, u'arguments':arguments, u'expected':expected, u'message':message}, var) + var.registers([u'expected', u'message', u'actual']) + if var.get(u'_deepEqual')(var.get(u'actual'), var.get(u'expected')): + var.get(u'fail')(var.get(u'actual'), var.get(u'expected'), var.get(u'message'), Js(u'notDeepEqual'), var.get(u'assert').get(u'notDeepEqual')) + PyJs_notDeepEqual_4206_._set_name(u'notDeepEqual') + var.get(u'assert').put(u'notDeepEqual', PyJs_notDeepEqual_4206_) + @Js + def PyJs_strictEqual_4207_(actual, expected, message, this, arguments, var=var): + var = Scope({u'actual':actual, u'this':this, u'arguments':arguments, u'expected':expected, u'message':message, u'strictEqual':PyJs_strictEqual_4207_}, var) + var.registers([u'expected', u'message', u'actual']) + if PyJsStrictNeq(var.get(u'actual'),var.get(u'expected')): + var.get(u'fail')(var.get(u'actual'), var.get(u'expected'), var.get(u'message'), Js(u'==='), var.get(u'assert').get(u'strictEqual')) + PyJs_strictEqual_4207_._set_name(u'strictEqual') + var.get(u'assert').put(u'strictEqual', PyJs_strictEqual_4207_) + @Js + def PyJs_notStrictEqual_4208_(actual, expected, message, this, arguments, var=var): + var = Scope({u'actual':actual, u'this':this, u'arguments':arguments, u'notStrictEqual':PyJs_notStrictEqual_4208_, u'expected':expected, u'message':message}, var) + var.registers([u'expected', u'message', u'actual']) + if PyJsStrictEq(var.get(u'actual'),var.get(u'expected')): + var.get(u'fail')(var.get(u'actual'), var.get(u'expected'), var.get(u'message'), Js(u'!=='), var.get(u'assert').get(u'notStrictEqual')) + PyJs_notStrictEqual_4208_._set_name(u'notStrictEqual') + var.get(u'assert').put(u'notStrictEqual', PyJs_notStrictEqual_4208_) + pass + pass + @Js + def PyJs_anonymous_4210_(block, error, message, this, arguments, var=var): + var = Scope({u'this':this, u'message':message, u'arguments':arguments, u'block':block, u'error':error}, var) + var.registers([u'message', u'block', u'error']) + var.get(u'_throws').callprop(u'apply', var.get(u"this"), Js([var.get(u'true')]).callprop(u'concat', var.get(u'pSlice').callprop(u'call', var.get(u'arguments')))) + PyJs_anonymous_4210_._set_name(u'anonymous') + var.get(u'assert').put(u'throws', PyJs_anonymous_4210_) + @Js + def PyJs_anonymous_4211_(block, message, this, arguments, var=var): + var = Scope({u'this':this, u'message':message, u'arguments':arguments, u'block':block}, var) + var.registers([u'message', u'block']) + var.get(u'_throws').callprop(u'apply', var.get(u"this"), Js([Js(False)]).callprop(u'concat', var.get(u'pSlice').callprop(u'call', var.get(u'arguments')))) + PyJs_anonymous_4211_._set_name(u'anonymous') + var.get(u'assert').put(u'doesNotThrow', PyJs_anonymous_4211_) + @Js + def PyJs_anonymous_4212_(err, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'err':err}, var) + var.registers([u'err']) + if var.get(u'err'): + PyJsTempException = JsToPyException(var.get(u'err')) + raise PyJsTempException + PyJs_anonymous_4212_._set_name(u'anonymous') + var.get(u'assert').put(u'ifError', PyJs_anonymous_4212_) + @Js + def PyJs_anonymous_4213_(obj, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments}, var) + var.registers([u'keys', u'obj', u'key']) + var.put(u'keys', Js([])) + for PyJsTemp in var.get(u'obj'): + var.put(u'key', PyJsTemp) + if var.get(u'hasOwn').callprop(u'call', var.get(u'obj'), var.get(u'key')): + var.get(u'keys').callprop(u'push', var.get(u'key')) + return var.get(u'keys') + PyJs_anonymous_4213_._set_name(u'anonymous') + var.put(u'objectKeys', (var.get(u'Object').get(u'keys') or PyJs_anonymous_4213_)) +PyJs_anonymous_4199_._set_name(u'anonymous') +PyJs_Object_4214_ = Js({u'util/':Js(534.0)}) +@Js +def PyJs_anonymous_4215_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + PyJs_Object_4216_ = Js({}) + @Js + def PyJs_anonymous_4217_(PyJsArg_676c6f62616c_, this, arguments, var=var): + var = Scope({u'this':this, u'global':PyJsArg_676c6f62616c_, u'arguments':arguments}, var) + var.registers([u'binarySlice', u'asciiWrite', u'objectWriteUInt16', u'ieee754', u'fromBuffer', u'base64Write', u'fromObject', u'fromString', u'global', u'fromArrayBuffer', u'fromJsonObject', u'asciiToBytes', u'hexSlice', u'slowToString', u'byteLength', u'checked', u'Buffer', u'base64', u'base64ToBytes', u'kMaxLength', u'writeFloat', u'utf8Slice', u'allocate', u'checkInt', u'objectWriteUInt32', u'INVALID_BASE64_RE', u'toHex', u'isArray', u'fromNumber', u'SlowBuffer', u'hexWrite', u'fromArrayLike', u'checkIEEE754', u'utf16leToBytes', u'ucs2Write', u'base64clean', u'asciiSlice', u'checkOffset', u'decodeCodePointsArray', u'fromArray', u'binaryWrite', u'fromTypedArray', u'rootParent', u'utf16leSlice', u'typedArraySupport', u'utf8Write', u'utf8ToBytes', u'writeDouble', u'MAX_ARGUMENTS_LENGTH', u'blitBuffer', u'base64Slice', u'stringtrim']) + @Js + def PyJsHoisted_binarySlice_(buf, start, end, this, arguments, var=var): + var = Scope({u'this':this, u'start':start, u'end':end, u'buf':buf, u'arguments':arguments}, var) + var.registers([u'i', u'start', u'end', u'buf', u'ret']) + var.put(u'ret', Js(u'')) + var.put(u'end', var.get(u'Math').callprop(u'min', var.get(u'buf').get(u'length'), var.get(u'end'))) + #for JS loop + var.put(u'i', var.get(u'start')) + while (var.get(u'i')var.get(u'len'))): + var.put(u'end', var.get(u'len')) + var.put(u'out', Js(u'')) + #for JS loop + var.put(u'i', var.get(u'start')) + while (var.get(u'i')var.get(u"this").get(u'length')): + var.put(u'end', var.get(u"this").get(u'length')) + if (var.get(u'end')<=var.get(u'start')): + return Js(u'') + while var.get(u'true'): + while 1: + SWITCHED = False + CONDITION = (var.get(u'encoding')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'hex')): + SWITCHED = True + return var.get(u'hexSlice')(var.get(u"this"), var.get(u'start'), var.get(u'end')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf8')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf-8')): + SWITCHED = True + return var.get(u'utf8Slice')(var.get(u"this"), var.get(u'start'), var.get(u'end')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ascii')): + SWITCHED = True + return var.get(u'asciiSlice')(var.get(u"this"), var.get(u'start'), var.get(u'end')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'binary')): + SWITCHED = True + return var.get(u'binarySlice')(var.get(u"this"), var.get(u'start'), var.get(u'end')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'base64')): + SWITCHED = True + return var.get(u'base64Slice')(var.get(u"this"), var.get(u'start'), var.get(u'end')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ucs2')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ucs-2')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf16le')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf-16le')): + SWITCHED = True + return var.get(u'utf16leSlice')(var.get(u"this"), var.get(u'start'), var.get(u'end')) + if True: + SWITCHED = True + if var.get(u'loweredCase'): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Unknown encoding: ')+var.get(u'encoding')))) + raise PyJsTempException + var.put(u'encoding', (var.get(u'encoding')+Js(u'')).callprop(u'toLowerCase')) + var.put(u'loweredCase', var.get(u'true')) + SWITCHED = True + break + PyJsHoisted_slowToString_.func_name = u'slowToString' + var.put(u'slowToString', PyJsHoisted_slowToString_) + @Js + def PyJsHoisted_byteLength_(string, encoding, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'string':string, u'encoding':encoding}, var) + var.registers([u'loweredCase', u'string', u'len', u'encoding']) + if PyJsStrictNeq(var.get(u'string',throw=False).typeof(),Js(u'string')): + var.put(u'string', (Js(u'')+var.get(u'string'))) + var.put(u'len', var.get(u'string').get(u'length')) + if PyJsStrictEq(var.get(u'len'),Js(0.0)): + return Js(0.0) + var.put(u'loweredCase', Js(False)) + #for JS loop + + while 1: + while 1: + SWITCHED = False + CONDITION = (var.get(u'encoding')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ascii')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'binary')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'raw')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'raws')): + SWITCHED = True + return var.get(u'len') + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf8')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf-8')): + SWITCHED = True + return var.get(u'utf8ToBytes')(var.get(u'string')).get(u'length') + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ucs2')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ucs-2')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf16le')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf-16le')): + SWITCHED = True + return (var.get(u'len')*Js(2.0)) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'hex')): + SWITCHED = True + return PyJsBshift(var.get(u'len'),Js(1.0)) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'base64')): + SWITCHED = True + return var.get(u'base64ToBytes')(var.get(u'string')).get(u'length') + if True: + SWITCHED = True + if var.get(u'loweredCase'): + return var.get(u'utf8ToBytes')(var.get(u'string')).get(u'length') + var.put(u'encoding', (Js(u'')+var.get(u'encoding')).callprop(u'toLowerCase')) + var.put(u'loweredCase', var.get(u'true')) + SWITCHED = True + break + + PyJsHoisted_byteLength_.func_name = u'byteLength' + var.put(u'byteLength', PyJsHoisted_byteLength_) + @Js + def PyJsHoisted_checked_(length, this, arguments, var=var): + var = Scope({u'this':this, u'length':length, u'arguments':arguments}, var) + var.registers([u'length']) + if (var.get(u'length')>=var.get(u'kMaxLength')()): + PyJsTempException = JsToPyException(var.get(u'RangeError').create((((Js(u'Attempt to allocate Buffer larger than maximum ')+Js(u'size: 0x'))+var.get(u'kMaxLength')().callprop(u'toString', Js(16.0)))+Js(u' bytes')))) + raise PyJsTempException + return (var.get(u'length')|Js(0.0)) + PyJsHoisted_checked_.func_name = u'checked' + var.put(u'checked', PyJsHoisted_checked_) + @Js + def PyJsHoisted_Buffer_(arg, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'arg':arg}, var) + var.registers([u'arg']) + if var.get(u"this").instanceof(var.get(u'Buffer')).neg(): + if (var.get(u'arguments').get(u'length')>Js(1.0)): + return var.get(u'Buffer').create(var.get(u'arg'), var.get(u'arguments').get(u'1')) + return var.get(u'Buffer').create(var.get(u'arg')) + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT').neg(): + var.get(u"this").put(u'length', Js(0.0)) + var.get(u"this").put(u'parent', var.get(u'undefined')) + if PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'number')): + return var.get(u'fromNumber')(var.get(u"this"), var.get(u'arg')) + if PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'string')): + return var.get(u'fromString')(var.get(u"this"), var.get(u'arg'), (var.get(u'arguments').get(u'1') if (var.get(u'arguments').get(u'length')>Js(1.0)) else Js(u'utf8'))) + return var.get(u'fromObject')(var.get(u"this"), var.get(u'arg')) + PyJsHoisted_Buffer_.func_name = u'Buffer' + var.put(u'Buffer', PyJsHoisted_Buffer_) + @Js + def PyJsHoisted_asciiSlice_(buf, start, end, this, arguments, var=var): + var = Scope({u'this':this, u'start':start, u'end':end, u'buf':buf, u'arguments':arguments}, var) + var.registers([u'i', u'start', u'end', u'buf', u'ret']) + var.put(u'ret', Js(u'')) + var.put(u'end', var.get(u'Math').callprop(u'min', var.get(u'buf').get(u'length'), var.get(u'end'))) + #for JS loop + var.put(u'i', var.get(u'start')) + while (var.get(u'i')Js(239)) else (Js(3.0) if (var.get(u'firstByte')>Js(223)) else (Js(2.0) if (var.get(u'firstByte')>Js(191)) else Js(1.0))))) + if ((var.get(u'i')+var.get(u'bytesPerSequence'))<=var.get(u'end')): + pass + while 1: + SWITCHED = False + CONDITION = (var.get(u'bytesPerSequence')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(1.0)): + SWITCHED = True + if (var.get(u'firstByte')Js(127)): + var.put(u'codePoint', var.get(u'tempCodePoint')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(3.0)): + SWITCHED = True + var.put(u'secondByte', var.get(u'buf').get((var.get(u'i')+Js(1.0)))) + var.put(u'thirdByte', var.get(u'buf').get((var.get(u'i')+Js(2.0)))) + if (PyJsStrictEq((var.get(u'secondByte')&Js(192)),Js(128)) and PyJsStrictEq((var.get(u'thirdByte')&Js(192)),Js(128))): + var.put(u'tempCodePoint', ((((var.get(u'firstByte')&Js(15))<Js(2047)) and ((var.get(u'tempCodePoint')Js(57343)))): + var.put(u'codePoint', var.get(u'tempCodePoint')) + break + if SWITCHED or PyJsStrictEq(CONDITION, Js(4.0)): + SWITCHED = True + var.put(u'secondByte', var.get(u'buf').get((var.get(u'i')+Js(1.0)))) + var.put(u'thirdByte', var.get(u'buf').get((var.get(u'i')+Js(2.0)))) + var.put(u'fourthByte', var.get(u'buf').get((var.get(u'i')+Js(3.0)))) + if ((PyJsStrictEq((var.get(u'secondByte')&Js(192)),Js(128)) and PyJsStrictEq((var.get(u'thirdByte')&Js(192)),Js(128))) and PyJsStrictEq((var.get(u'fourthByte')&Js(192)),Js(128))): + var.put(u'tempCodePoint', (((((var.get(u'firstByte')&Js(15))<Js(65535)) and (var.get(u'tempCodePoint')Js(65535)): + var.put(u'codePoint', Js(65536), u'-') + var.get(u'res').callprop(u'push', ((PyJsBshift(var.get(u'codePoint'),Js(10.0))&Js(1023))|Js(55296))) + var.put(u'codePoint', (Js(56320)|(var.get(u'codePoint')&Js(1023)))) + var.get(u'res').callprop(u'push', var.get(u'codePoint')) + var.put(u'i', var.get(u'bytesPerSequence'), u'+') + return var.get(u'decodeCodePointsArray')(var.get(u'res')) + PyJsHoisted_utf8Slice_.func_name = u'utf8Slice' + var.put(u'utf8Slice', PyJsHoisted_utf8Slice_) + @Js + def PyJsHoisted_allocate_(that, length, this, arguments, var=var): + var = Scope({u'this':this, u'length':length, u'arguments':arguments, u'that':that}, var) + var.registers([u'fromPool', u'length', u'that']) + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT'): + var.put(u'that', var.get(u'Uint8Array').create(var.get(u'length'))) + var.get(u'that').put(u'__proto__', var.get(u'Buffer').get(u'prototype')) + else: + var.get(u'that').put(u'length', var.get(u'length')) + var.put(u'fromPool', (PyJsStrictNeq(var.get(u'length'),Js(0.0)) and (var.get(u'length')<=PyJsBshift(var.get(u'Buffer').get(u'poolSize'),Js(1.0))))) + if var.get(u'fromPool'): + var.get(u'that').put(u'parent', var.get(u'rootParent')) + return var.get(u'that') + PyJsHoisted_allocate_.func_name = u'allocate' + var.put(u'allocate', PyJsHoisted_allocate_) + @Js + def PyJsHoisted_checkInt_(buf, value, offset, ext, max, min, this, arguments, var=var): + var = Scope({u'min':min, u'this':this, u'max':max, u'value':value, u'ext':ext, u'arguments':arguments, u'offset':offset, u'buf':buf}, var) + var.registers([u'min', u'max', u'value', u'ext', u'offset', u'buf']) + if var.get(u'Buffer').callprop(u'isBuffer', var.get(u'buf')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'buffer must be a Buffer instance'))) + raise PyJsTempException + if ((var.get(u'value')>var.get(u'max')) or (var.get(u'value')var.get(u'buf').get(u'length')): + PyJsTempException = JsToPyException(var.get(u'RangeError').create(Js(u'index out of range'))) + raise PyJsTempException + PyJsHoisted_checkInt_.func_name = u'checkInt' + var.put(u'checkInt', PyJsHoisted_checkInt_) + @Js + def PyJsHoisted_objectWriteUInt32_(buf, value, offset, littleEndian, this, arguments, var=var): + var = Scope({u'arguments':arguments, u'offset':offset, u'this':this, u'littleEndian':littleEndian, u'buf':buf, u'value':value}, var) + var.registers([u'i', u'j', u'value', u'offset', u'littleEndian', u'buf']) + if (var.get(u'value')var.get(u'remaining')): + var.put(u'length', var.get(u'remaining')) + var.put(u'strLen', var.get(u'string').get(u'length')) + if PyJsStrictNeq((var.get(u'strLen')%Js(2.0)),Js(0.0)): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'Invalid hex string'))) + raise PyJsTempException + if (var.get(u'length')>(var.get(u'strLen')/Js(2.0))): + var.put(u'length', (var.get(u'strLen')/Js(2.0))) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')var.get(u'buf').get(u'length')): + PyJsTempException = JsToPyException(var.get(u'RangeError').create(Js(u'index out of range'))) + raise PyJsTempException + if (var.get(u'offset')>Js(8.0))) + var.put(u'lo', (var.get(u'c')%Js(256.0))) + var.get(u'byteArray').callprop(u'push', var.get(u'lo')) + var.get(u'byteArray').callprop(u'push', var.get(u'hi')) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + return var.get(u'byteArray') + PyJsHoisted_utf16leToBytes_.func_name = u'utf16leToBytes' + var.put(u'utf16leToBytes', PyJsHoisted_utf16leToBytes_) + @Js + def PyJsHoisted_ucs2Write_(buf, string, offset, length, this, arguments, var=var): + var = Scope({u'length':length, u'string':string, u'offset':offset, u'this':this, u'buf':buf, u'arguments':arguments}, var) + var.registers([u'length', u'buf', u'string', u'offset']) + return var.get(u'blitBuffer')(var.get(u'utf16leToBytes')(var.get(u'string'), (var.get(u'buf').get(u'length')-var.get(u'offset'))), var.get(u'buf'), var.get(u'offset'), var.get(u'length')) + PyJsHoisted_ucs2Write_.func_name = u'ucs2Write' + var.put(u'ucs2Write', PyJsHoisted_ucs2Write_) + @Js + def PyJsHoisted_base64clean_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + var.put(u'str', var.get(u'stringtrim')(var.get(u'str')).callprop(u'replace', var.get(u'INVALID_BASE64_RE'), Js(u''))) + if (var.get(u'str').get(u'length')var.get(u'length')): + PyJsTempException = JsToPyException(var.get(u'RangeError').create(Js(u'Trying to access beyond buffer length'))) + raise PyJsTempException + PyJsHoisted_checkOffset_.func_name = u'checkOffset' + var.put(u'checkOffset', PyJsHoisted_checkOffset_) + @Js + def PyJsHoisted_decodeCodePointsArray_(codePoints, this, arguments, var=var): + var = Scope({u'codePoints':codePoints, u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'res', u'len', u'codePoints']) + var.put(u'len', var.get(u'codePoints').get(u'length')) + if (var.get(u'len')<=var.get(u'MAX_ARGUMENTS_LENGTH')): + return var.get(u'String').get(u'fromCharCode').callprop(u'apply', var.get(u'String'), var.get(u'codePoints')) + var.put(u'res', Js(u'')) + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(55295)) and (var.get(u'codePoint')Js(56319)): + if (var.put(u'units', Js(3.0), u'-')>(-Js(1.0))): + var.get(u'bytes').callprop(u'push', Js(239), Js(191), Js(189)) + continue + else: + if PyJsStrictEq((var.get(u'i')+Js(1.0)),var.get(u'length')): + if (var.put(u'units', Js(3.0), u'-')>(-Js(1.0))): + var.get(u'bytes').callprop(u'push', Js(239), Js(191), Js(189)) + continue + var.put(u'leadSurrogate', var.get(u'codePoint')) + continue + if (var.get(u'codePoint')(-Js(1.0))): + var.get(u'bytes').callprop(u'push', Js(239), Js(191), Js(189)) + var.put(u'leadSurrogate', var.get(u'codePoint')) + continue + var.put(u'codePoint', ((((var.get(u'leadSurrogate')-Js(55296))<(-Js(1.0))): + var.get(u'bytes').callprop(u'push', Js(239), Js(191), Js(189)) + var.put(u'leadSurrogate', var.get(u"null")) + if (var.get(u'codePoint')>Js(6))|Js(192)), ((var.get(u'codePoint')&Js(63))|Js(128))) + else: + if (var.get(u'codePoint')>Js(12))|Js(224)), (((var.get(u'codePoint')>>Js(6))&Js(63))|Js(128)), ((var.get(u'codePoint')&Js(63))|Js(128))) + else: + if (var.get(u'codePoint')>Js(18))|Js(240)), (((var.get(u'codePoint')>>Js(12))&Js(63))|Js(128)), (((var.get(u'codePoint')>>Js(6))&Js(63))|Js(128)), ((var.get(u'codePoint')&Js(63))|Js(128))) + else: + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'Invalid code point'))) + raise PyJsTempException + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + return var.get(u'bytes') + PyJsHoisted_utf8ToBytes_.func_name = u'utf8ToBytes' + var.put(u'utf8ToBytes', PyJsHoisted_utf8ToBytes_) + @Js + def PyJsHoisted_writeDouble_(buf, value, offset, littleEndian, noAssert, this, arguments, var=var): + var = Scope({u'noAssert':noAssert, u'arguments':arguments, u'offset':offset, u'this':this, u'littleEndian':littleEndian, u'buf':buf, u'value':value}, var) + var.registers([u'littleEndian', u'noAssert', u'buf', u'value', u'offset']) + if var.get(u'noAssert').neg(): + var.get(u'checkIEEE754')(var.get(u'buf'), var.get(u'value'), var.get(u'offset'), Js(8.0), Js(1.7976931348623157e+308), (-Js(1.7976931348623157e+308))) + var.get(u'ieee754').callprop(u'write', var.get(u'buf'), var.get(u'value'), var.get(u'offset'), var.get(u'littleEndian'), Js(52.0), Js(8.0)) + return (var.get(u'offset')+Js(8.0)) + PyJsHoisted_writeDouble_.func_name = u'writeDouble' + var.put(u'writeDouble', PyJsHoisted_writeDouble_) + @Js + def PyJsHoisted_blitBuffer_(src, dst, offset, length, this, arguments, var=var): + var = Scope({u'src':src, u'length':length, u'arguments':arguments, u'offset':offset, u'this':this, u'dst':dst}, var) + var.registers([u'i', u'src', u'dst', u'length', u'offset']) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=var.get(u'dst').get(u'length')) or (var.get(u'i')>=var.get(u'src').get(u'length'))): + break + var.get(u'dst').put((var.get(u'i')+var.get(u'offset')), var.get(u'src').get(var.get(u'i'))) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)) + return var.get(u'i') + PyJsHoisted_blitBuffer_.func_name = u'blitBuffer' + var.put(u'blitBuffer', PyJsHoisted_blitBuffer_) + @Js + def PyJsHoisted_base64Slice_(buf, start, end, this, arguments, var=var): + var = Scope({u'this':this, u'start':start, u'end':end, u'buf':buf, u'arguments':arguments}, var) + var.registers([u'start', u'end', u'buf']) + if (PyJsStrictEq(var.get(u'start'),Js(0.0)) and PyJsStrictEq(var.get(u'end'),var.get(u'buf').get(u'length'))): + return var.get(u'base64').callprop(u'fromByteArray', var.get(u'buf')) + else: + return var.get(u'base64').callprop(u'fromByteArray', var.get(u'buf').callprop(u'slice', var.get(u'start'), var.get(u'end'))) + PyJsHoisted_base64Slice_.func_name = u'base64Slice' + var.put(u'base64Slice', PyJsHoisted_base64Slice_) + @Js + def PyJsHoisted_stringtrim_(str, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'str':str}, var) + var.registers([u'str']) + if var.get(u'str').get(u'trim'): + return var.get(u'str').callprop(u'trim') + return var.get(u'str').callprop(u'replace', JsRegExp(u'/^\\s+|\\s+$/g'), Js(u'')) + PyJsHoisted_stringtrim_.func_name = u'stringtrim' + var.put(u'stringtrim', PyJsHoisted_stringtrim_) + Js(u'use strict') + var.put(u'base64', var.get(u'require')(Js(u'base64-js'))) + var.put(u'ieee754', var.get(u'require')(Js(u'ieee754'))) + var.put(u'isArray', var.get(u'require')(Js(u'isarray'))) + var.get(u'exports').put(u'Buffer', var.get(u'Buffer')) + var.get(u'exports').put(u'SlowBuffer', var.get(u'SlowBuffer')) + var.get(u'exports').put(u'INSPECT_MAX_BYTES', Js(50.0)) + var.get(u'Buffer').put(u'poolSize', Js(8192.0)) + PyJs_Object_4218_ = Js({}) + var.put(u'rootParent', PyJs_Object_4218_) + var.get(u'Buffer').put(u'TYPED_ARRAY_SUPPORT', (var.get(u'global').get(u'TYPED_ARRAY_SUPPORT') if PyJsStrictNeq(var.get(u'global').get(u'TYPED_ARRAY_SUPPORT'),var.get(u'undefined')) else var.get(u'typedArraySupport')())) + pass + pass + pass + @Js + def PyJs_anonymous_4220_(arr, this, arguments, var=var): + var = Scope({u'this':this, u'arr':arr, u'arguments':arguments}, var) + var.registers([u'arr']) + var.get(u'arr').put(u'__proto__', var.get(u'Buffer').get(u'prototype')) + return var.get(u'arr') + PyJs_anonymous_4220_._set_name(u'anonymous') + var.get(u'Buffer').put(u'_augment', PyJs_anonymous_4220_) + pass + pass + pass + pass + pass + pass + pass + pass + pass + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT'): + var.get(u'Buffer').get(u'prototype').put(u'__proto__', var.get(u'Uint8Array').get(u'prototype')) + var.get(u'Buffer').put(u'__proto__', var.get(u'Uint8Array')) + if ((PyJsStrictNeq(var.get(u'Symbol',throw=False).typeof(),Js(u'undefined')) and var.get(u'Symbol').get(u'species')) and PyJsStrictEq(var.get(u'Buffer').get(var.get(u'Symbol').get(u'species')),var.get(u'Buffer'))): + PyJs_Object_4221_ = Js({u'value':var.get(u"null"),u'configurable':var.get(u'true')}) + var.get(u'Object').callprop(u'defineProperty', var.get(u'Buffer'), var.get(u'Symbol').get(u'species'), PyJs_Object_4221_) + else: + var.get(u'Buffer').get(u'prototype').put(u'length', var.get(u'undefined')) + var.get(u'Buffer').get(u'prototype').put(u'parent', var.get(u'undefined')) + pass + pass + pass + @Js + def PyJs_isBuffer_4222_(b, this, arguments, var=var): + var = Scope({u'this':this, u'b':b, u'arguments':arguments, u'isBuffer':PyJs_isBuffer_4222_}, var) + var.registers([u'b']) + return ((var.get(u'b')!=var.get(u"null")) and var.get(u'b').get(u'_isBuffer')).neg().neg() + PyJs_isBuffer_4222_._set_name(u'isBuffer') + var.get(u'Buffer').put(u'isBuffer', PyJs_isBuffer_4222_) + @Js + def PyJs_compare_4223_(a, b, this, arguments, var=var): + var = Scope({u'a':a, u'this':this, u'compare':PyJs_compare_4223_, u'b':b, u'arguments':arguments}, var) + var.registers([u'a', u'b', u'i', u'len', u'y', u'x']) + if (var.get(u'Buffer').callprop(u'isBuffer', var.get(u'a')).neg() or var.get(u'Buffer').callprop(u'isBuffer', var.get(u'b')).neg()): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Arguments must be Buffers'))) + raise PyJsTempException + if PyJsStrictEq(var.get(u'a'),var.get(u'b')): + return Js(0.0) + var.put(u'x', var.get(u'a').get(u'length')) + var.put(u'y', var.get(u'b').get(u'length')) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'len', var.get(u'Math').callprop(u'min', var.get(u'x'), var.get(u'y'))) + while (var.get(u'i')Js(0.0)): + var.put(u'str', var.get(u"this").callprop(u'toString', Js(u'hex'), Js(0.0), var.get(u'max')).callprop(u'match', JsRegExp(u'/.{2}/g')).callprop(u'join', Js(u' '))) + if (var.get(u"this").get(u'length')>var.get(u'max')): + var.put(u'str', Js(u' ... '), u'+') + return ((Js(u'')) + PyJs_inspect_4228_._set_name(u'inspect') + var.get(u'Buffer').get(u'prototype').put(u'inspect', PyJs_inspect_4228_) + @Js + def PyJs_compare_4229_(b, this, arguments, var=var): + var = Scope({u'this':this, u'compare':PyJs_compare_4229_, u'b':b, u'arguments':arguments}, var) + var.registers([u'b']) + if var.get(u'Buffer').callprop(u'isBuffer', var.get(u'b')).neg(): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Argument must be a Buffer'))) + raise PyJsTempException + return var.get(u'Buffer').callprop(u'compare', var.get(u"this"), var.get(u'b')) + PyJs_compare_4229_._set_name(u'compare') + var.get(u'Buffer').get(u'prototype').put(u'compare', PyJs_compare_4229_) + @Js + def PyJs_indexOf_4230_(val, byteOffset, this, arguments, var=var): + var = Scope({u'this':this, u'indexOf':PyJs_indexOf_4230_, u'byteOffset':byteOffset, u'val':val, u'arguments':arguments}, var) + var.registers([u'val', u'arrayIndexOf', u'byteOffset']) + @Js + def PyJsHoisted_arrayIndexOf_(arr, val, byteOffset, this, arguments, var=var): + var = Scope({u'this':this, u'arr':arr, u'byteOffset':byteOffset, u'val':val, u'arguments':arguments}, var) + var.registers([u'i', u'foundIndex', u'arr', u'val', u'byteOffset']) + var.put(u'foundIndex', (-Js(1.0))) + #for JS loop + var.put(u'i', Js(0.0)) + while ((var.get(u'byteOffset')+var.get(u'i'))Js(2147483647)): + var.put(u'byteOffset', Js(2147483647)) + else: + if (var.get(u'byteOffset')<(-Js(2147483648))): + var.put(u'byteOffset', (-Js(2147483648))) + var.put(u'byteOffset', Js(0.0), u'>>') + if PyJsStrictEq(var.get(u"this").get(u'length'),Js(0.0)): + return (-Js(1.0)) + if (var.get(u'byteOffset')>=var.get(u"this").get(u'length')): + return (-Js(1.0)) + if (var.get(u'byteOffset')var.get(u'remaining'))): + var.put(u'length', var.get(u'remaining')) + if (((var.get(u'string').get(u'length')>Js(0.0)) and ((var.get(u'length')var.get(u"this").get(u'length'))): + PyJsTempException = JsToPyException(var.get(u'RangeError').create(Js(u'attempt to write outside buffer bounds'))) + raise PyJsTempException + if var.get(u'encoding').neg(): + var.put(u'encoding', Js(u'utf8')) + var.put(u'loweredCase', Js(False)) + #for JS loop + + while 1: + while 1: + SWITCHED = False + CONDITION = (var.get(u'encoding')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'hex')): + SWITCHED = True + return var.get(u'hexWrite')(var.get(u"this"), var.get(u'string'), var.get(u'offset'), var.get(u'length')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf8')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf-8')): + SWITCHED = True + return var.get(u'utf8Write')(var.get(u"this"), var.get(u'string'), var.get(u'offset'), var.get(u'length')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ascii')): + SWITCHED = True + return var.get(u'asciiWrite')(var.get(u"this"), var.get(u'string'), var.get(u'offset'), var.get(u'length')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'binary')): + SWITCHED = True + return var.get(u'binaryWrite')(var.get(u"this"), var.get(u'string'), var.get(u'offset'), var.get(u'length')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'base64')): + SWITCHED = True + return var.get(u'base64Write')(var.get(u"this"), var.get(u'string'), var.get(u'offset'), var.get(u'length')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ucs2')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'ucs-2')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf16le')): + SWITCHED = True + pass + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'utf-16le')): + SWITCHED = True + return var.get(u'ucs2Write')(var.get(u"this"), var.get(u'string'), var.get(u'offset'), var.get(u'length')) + if True: + SWITCHED = True + if var.get(u'loweredCase'): + PyJsTempException = JsToPyException(var.get(u'TypeError').create((Js(u'Unknown encoding: ')+var.get(u'encoding')))) + raise PyJsTempException + var.put(u'encoding', (Js(u'')+var.get(u'encoding')).callprop(u'toLowerCase')) + var.put(u'loweredCase', var.get(u'true')) + SWITCHED = True + break + + PyJs_write_4231_._set_name(u'write') + var.get(u'Buffer').get(u'prototype').put(u'write', PyJs_write_4231_) + @Js + def PyJs_toJSON_4232_(this, arguments, var=var): + var = Scope({u'this':this, u'toJSON':PyJs_toJSON_4232_, u'arguments':arguments}, var) + var.registers([]) + PyJs_Object_4233_ = Js({u'type':Js(u'Buffer'),u'data':var.get(u'Array').get(u'prototype').get(u'slice').callprop(u'call', (var.get(u"this").get(u'_arr') or var.get(u"this")), Js(0.0))}) + return PyJs_Object_4233_ + PyJs_toJSON_4232_._set_name(u'toJSON') + var.get(u'Buffer').get(u'prototype').put(u'toJSON', PyJs_toJSON_4232_) + pass + pass + var.put(u'MAX_ARGUMENTS_LENGTH', Js(4096)) + pass + pass + pass + pass + pass + @Js + def PyJs_slice_4234_(start, end, this, arguments, var=var): + var = Scope({u'this':this, u'start':start, u'slice':PyJs_slice_4234_, u'end':end, u'arguments':arguments}, var) + var.registers([u'end', u'i', u'len', u'start', u'newBuf', u'sliceLen']) + var.put(u'len', var.get(u"this").get(u'length')) + var.put(u'start', (~(~var.get(u'start')))) + var.put(u'end', (var.get(u'len') if PyJsStrictEq(var.get(u'end'),var.get(u'undefined')) else (~(~var.get(u'end'))))) + if (var.get(u'start')var.get(u'len')): + var.put(u'start', var.get(u'len')) + if (var.get(u'end')var.get(u'len')): + var.put(u'end', var.get(u'len')) + if (var.get(u'end')Js(0.0)) and var.put(u'mul', Js(256), u'*')): + var.put(u'val', (var.get(u"this").get((var.get(u'offset')+var.put(u'byteLength',Js(var.get(u'byteLength').to_number())-Js(1))))*var.get(u'mul')), u'+') + return var.get(u'val') + PyJs_readUIntBE_4236_._set_name(u'readUIntBE') + var.get(u'Buffer').get(u'prototype').put(u'readUIntBE', PyJs_readUIntBE_4236_) + @Js + def PyJs_readUInt8_4237_(offset, noAssert, this, arguments, var=var): + var = Scope({u'this':this, u'noAssert':noAssert, u'arguments':arguments, u'readUInt8':PyJs_readUInt8_4237_, u'offset':offset}, var) + var.registers([u'noAssert', u'offset']) + if var.get(u'noAssert').neg(): + var.get(u'checkOffset')(var.get(u'offset'), Js(1.0), var.get(u"this").get(u'length')) + return var.get(u"this").get(var.get(u'offset')) + PyJs_readUInt8_4237_._set_name(u'readUInt8') + var.get(u'Buffer').get(u'prototype').put(u'readUInt8', PyJs_readUInt8_4237_) + @Js + def PyJs_readUInt16LE_4238_(offset, noAssert, this, arguments, var=var): + var = Scope({u'this':this, u'noAssert':noAssert, u'readUInt16LE':PyJs_readUInt16LE_4238_, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'offset']) + if var.get(u'noAssert').neg(): + var.get(u'checkOffset')(var.get(u'offset'), Js(2.0), var.get(u"this").get(u'length')) + return (var.get(u"this").get(var.get(u'offset'))|(var.get(u"this").get((var.get(u'offset')+Js(1.0)))<=var.get(u'mul')): + var.put(u'val', var.get(u'Math').callprop(u'pow', Js(2.0), (Js(8.0)*var.get(u'byteLength'))), u'-') + return var.get(u'val') + PyJs_readIntLE_4242_._set_name(u'readIntLE') + var.get(u'Buffer').get(u'prototype').put(u'readIntLE', PyJs_readIntLE_4242_) + @Js + def PyJs_readIntBE_4243_(offset, byteLength, noAssert, this, arguments, var=var): + var = Scope({u'byteLength':byteLength, u'readIntBE':PyJs_readIntBE_4243_, u'noAssert':noAssert, u'this':this, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'byteLength', u'noAssert', u'val', u'i', u'offset', u'mul']) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + var.put(u'byteLength', (var.get(u'byteLength')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.get(u'checkOffset')(var.get(u'offset'), var.get(u'byteLength'), var.get(u"this").get(u'length')) + var.put(u'i', var.get(u'byteLength')) + var.put(u'mul', Js(1.0)) + var.put(u'val', var.get(u"this").get((var.get(u'offset')+var.put(u'i',Js(var.get(u'i').to_number())-Js(1))))) + while ((var.get(u'i')>Js(0.0)) and var.put(u'mul', Js(256), u'*')): + var.put(u'val', (var.get(u"this").get((var.get(u'offset')+var.put(u'i',Js(var.get(u'i').to_number())-Js(1))))*var.get(u'mul')), u'+') + var.put(u'mul', Js(128), u'*') + if (var.get(u'val')>=var.get(u'mul')): + var.put(u'val', var.get(u'Math').callprop(u'pow', Js(2.0), (Js(8.0)*var.get(u'byteLength'))), u'-') + return var.get(u'val') + PyJs_readIntBE_4243_._set_name(u'readIntBE') + var.get(u'Buffer').get(u'prototype').put(u'readIntBE', PyJs_readIntBE_4243_) + @Js + def PyJs_readInt8_4244_(offset, noAssert, this, arguments, var=var): + var = Scope({u'this':this, u'noAssert':noAssert, u'readInt8':PyJs_readInt8_4244_, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'offset']) + if var.get(u'noAssert').neg(): + var.get(u'checkOffset')(var.get(u'offset'), Js(1.0), var.get(u"this").get(u'length')) + if (var.get(u"this").get(var.get(u'offset'))&Js(128)).neg(): + return var.get(u"this").get(var.get(u'offset')) + return (((Js(255)-var.get(u"this").get(var.get(u'offset')))+Js(1.0))*(-Js(1.0))) + PyJs_readInt8_4244_._set_name(u'readInt8') + var.get(u'Buffer').get(u'prototype').put(u'readInt8', PyJs_readInt8_4244_) + @Js + def PyJs_readInt16LE_4245_(offset, noAssert, this, arguments, var=var): + var = Scope({u'this':this, u'readInt16LE':PyJs_readInt16LE_4245_, u'noAssert':noAssert, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'val', u'offset']) + if var.get(u'noAssert').neg(): + var.get(u'checkOffset')(var.get(u'offset'), Js(2.0), var.get(u"this").get(u'length')) + var.put(u'val', (var.get(u"this").get(var.get(u'offset'))|(var.get(u"this").get((var.get(u'offset')+Js(1.0)))<=Js(0.0)) and var.put(u'mul', Js(256), u'*')): + var.get(u"this").put((var.get(u'offset')+var.get(u'i')), ((var.get(u'value')/var.get(u'mul'))&Js(255))) + return (var.get(u'offset')+var.get(u'byteLength')) + PyJs_writeUIntBE_4254_._set_name(u'writeUIntBE') + var.get(u'Buffer').get(u'prototype').put(u'writeUIntBE', PyJs_writeUIntBE_4254_) + @Js + def PyJs_writeUInt8_4255_(value, offset, noAssert, this, arguments, var=var): + var = Scope({u'noAssert':noAssert, u'this':this, u'writeUInt8':PyJs_writeUInt8_4255_, u'value':value, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'value', u'offset']) + var.put(u'value', (+var.get(u'value'))) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.get(u'checkInt')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), Js(1.0), Js(255), Js(0.0)) + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT').neg(): + var.put(u'value', var.get(u'Math').callprop(u'floor', var.get(u'value'))) + var.get(u"this").put(var.get(u'offset'), (var.get(u'value')&Js(255))) + return (var.get(u'offset')+Js(1.0)) + PyJs_writeUInt8_4255_._set_name(u'writeUInt8') + var.get(u'Buffer').get(u'prototype').put(u'writeUInt8', PyJs_writeUInt8_4255_) + pass + @Js + def PyJs_writeUInt16LE_4256_(value, offset, noAssert, this, arguments, var=var): + var = Scope({u'writeUInt16LE':PyJs_writeUInt16LE_4256_, u'noAssert':noAssert, u'this':this, u'value':value, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'value', u'offset']) + var.put(u'value', (+var.get(u'value'))) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.get(u'checkInt')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), Js(2.0), Js(65535), Js(0.0)) + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT'): + var.get(u"this").put(var.get(u'offset'), (var.get(u'value')&Js(255))) + var.get(u"this").put((var.get(u'offset')+Js(1.0)), PyJsBshift(var.get(u'value'),Js(8.0))) + else: + var.get(u'objectWriteUInt16')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), var.get(u'true')) + return (var.get(u'offset')+Js(2.0)) + PyJs_writeUInt16LE_4256_._set_name(u'writeUInt16LE') + var.get(u'Buffer').get(u'prototype').put(u'writeUInt16LE', PyJs_writeUInt16LE_4256_) + @Js + def PyJs_writeUInt16BE_4257_(value, offset, noAssert, this, arguments, var=var): + var = Scope({u'noAssert':noAssert, u'this':this, u'writeUInt16BE':PyJs_writeUInt16BE_4257_, u'value':value, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'value', u'offset']) + var.put(u'value', (+var.get(u'value'))) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.get(u'checkInt')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), Js(2.0), Js(65535), Js(0.0)) + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT'): + var.get(u"this").put(var.get(u'offset'), PyJsBshift(var.get(u'value'),Js(8.0))) + var.get(u"this").put((var.get(u'offset')+Js(1.0)), (var.get(u'value')&Js(255))) + else: + var.get(u'objectWriteUInt16')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), Js(False)) + return (var.get(u'offset')+Js(2.0)) + PyJs_writeUInt16BE_4257_._set_name(u'writeUInt16BE') + var.get(u'Buffer').get(u'prototype').put(u'writeUInt16BE', PyJs_writeUInt16BE_4257_) + pass + @Js + def PyJs_writeUInt32LE_4258_(value, offset, noAssert, this, arguments, var=var): + var = Scope({u'writeUInt32LE':PyJs_writeUInt32LE_4258_, u'noAssert':noAssert, u'this':this, u'value':value, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'value', u'offset']) + var.put(u'value', (+var.get(u'value'))) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.get(u'checkInt')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), Js(4.0), Js(4294967295), Js(0.0)) + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT'): + var.get(u"this").put((var.get(u'offset')+Js(3.0)), PyJsBshift(var.get(u'value'),Js(24.0))) + var.get(u"this").put((var.get(u'offset')+Js(2.0)), PyJsBshift(var.get(u'value'),Js(16.0))) + var.get(u"this").put((var.get(u'offset')+Js(1.0)), PyJsBshift(var.get(u'value'),Js(8.0))) + var.get(u"this").put(var.get(u'offset'), (var.get(u'value')&Js(255))) + else: + var.get(u'objectWriteUInt32')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), var.get(u'true')) + return (var.get(u'offset')+Js(4.0)) + PyJs_writeUInt32LE_4258_._set_name(u'writeUInt32LE') + var.get(u'Buffer').get(u'prototype').put(u'writeUInt32LE', PyJs_writeUInt32LE_4258_) + @Js + def PyJs_writeUInt32BE_4259_(value, offset, noAssert, this, arguments, var=var): + var = Scope({u'noAssert':noAssert, u'this':this, u'value':value, u'writeUInt32BE':PyJs_writeUInt32BE_4259_, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'value', u'offset']) + var.put(u'value', (+var.get(u'value'))) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.get(u'checkInt')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), Js(4.0), Js(4294967295), Js(0.0)) + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT'): + var.get(u"this").put(var.get(u'offset'), PyJsBshift(var.get(u'value'),Js(24.0))) + var.get(u"this").put((var.get(u'offset')+Js(1.0)), PyJsBshift(var.get(u'value'),Js(16.0))) + var.get(u"this").put((var.get(u'offset')+Js(2.0)), PyJsBshift(var.get(u'value'),Js(8.0))) + var.get(u"this").put((var.get(u'offset')+Js(3.0)), (var.get(u'value')&Js(255))) + else: + var.get(u'objectWriteUInt32')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), Js(False)) + return (var.get(u'offset')+Js(4.0)) + PyJs_writeUInt32BE_4259_._set_name(u'writeUInt32BE') + var.get(u'Buffer').get(u'prototype').put(u'writeUInt32BE', PyJs_writeUInt32BE_4259_) + @Js + def PyJs_writeIntLE_4260_(value, offset, byteLength, noAssert, this, arguments, var=var): + var = Scope({u'byteLength':byteLength, u'noAssert':noAssert, u'arguments':arguments, u'offset':offset, u'this':this, u'writeIntLE':PyJs_writeIntLE_4260_, u'value':value}, var) + var.registers([u'byteLength', u'noAssert', u'sub', u'i', u'value', u'limit', u'offset', u'mul']) + var.put(u'value', (+var.get(u'value'))) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.put(u'limit', var.get(u'Math').callprop(u'pow', Js(2.0), ((Js(8.0)*var.get(u'byteLength'))-Js(1.0)))) + var.get(u'checkInt')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), var.get(u'byteLength'), (var.get(u'limit')-Js(1.0)), (-var.get(u'limit'))) + var.put(u'i', Js(0.0)) + var.put(u'mul', Js(1.0)) + var.put(u'sub', (Js(1.0) if (var.get(u'value')>Js(0.0))-var.get(u'sub'))&Js(255))) + return (var.get(u'offset')+var.get(u'byteLength')) + PyJs_writeIntLE_4260_._set_name(u'writeIntLE') + var.get(u'Buffer').get(u'prototype').put(u'writeIntLE', PyJs_writeIntLE_4260_) + @Js + def PyJs_writeIntBE_4261_(value, offset, byteLength, noAssert, this, arguments, var=var): + var = Scope({u'byteLength':byteLength, u'noAssert':noAssert, u'arguments':arguments, u'offset':offset, u'this':this, u'writeIntBE':PyJs_writeIntBE_4261_, u'value':value}, var) + var.registers([u'byteLength', u'noAssert', u'sub', u'i', u'value', u'limit', u'offset', u'mul']) + var.put(u'value', (+var.get(u'value'))) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.put(u'limit', var.get(u'Math').callprop(u'pow', Js(2.0), ((Js(8.0)*var.get(u'byteLength'))-Js(1.0)))) + var.get(u'checkInt')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), var.get(u'byteLength'), (var.get(u'limit')-Js(1.0)), (-var.get(u'limit'))) + var.put(u'i', (var.get(u'byteLength')-Js(1.0))) + var.put(u'mul', Js(1.0)) + var.put(u'sub', (Js(1.0) if (var.get(u'value')=Js(0.0)) and var.put(u'mul', Js(256), u'*')): + var.get(u"this").put((var.get(u'offset')+var.get(u'i')), ((((var.get(u'value')/var.get(u'mul'))>>Js(0.0))-var.get(u'sub'))&Js(255))) + return (var.get(u'offset')+var.get(u'byteLength')) + PyJs_writeIntBE_4261_._set_name(u'writeIntBE') + var.get(u'Buffer').get(u'prototype').put(u'writeIntBE', PyJs_writeIntBE_4261_) + @Js + def PyJs_writeInt8_4262_(value, offset, noAssert, this, arguments, var=var): + var = Scope({u'writeInt8':PyJs_writeInt8_4262_, u'noAssert':noAssert, u'this':this, u'value':value, u'arguments':arguments, u'offset':offset}, var) + var.registers([u'noAssert', u'value', u'offset']) + var.put(u'value', (+var.get(u'value'))) + var.put(u'offset', (var.get(u'offset')|Js(0.0))) + if var.get(u'noAssert').neg(): + var.get(u'checkInt')(var.get(u"this"), var.get(u'value'), var.get(u'offset'), Js(1.0), Js(127), (-Js(128))) + if var.get(u'Buffer').get(u'TYPED_ARRAY_SUPPORT').neg(): + var.put(u'value', var.get(u'Math').callprop(u'floor', var.get(u'value'))) + if (var.get(u'value')=var.get(u'target').get(u'length')): + var.put(u'targetStart', var.get(u'target').get(u'length')) + if var.get(u'targetStart').neg(): + var.put(u'targetStart', Js(0.0)) + if ((var.get(u'end')>Js(0.0)) and (var.get(u'end')=var.get(u"this").get(u'length'))): + PyJsTempException = JsToPyException(var.get(u'RangeError').create(Js(u'sourceStart out of bounds'))) + raise PyJsTempException + if (var.get(u'end')var.get(u"this").get(u'length')): + var.put(u'end', var.get(u"this").get(u'length')) + if ((var.get(u'target').get(u'length')-var.get(u'targetStart'))<(var.get(u'end')-var.get(u'start'))): + var.put(u'end', ((var.get(u'target').get(u'length')-var.get(u'targetStart'))+var.get(u'start'))) + var.put(u'len', (var.get(u'end')-var.get(u'start'))) + pass + if ((PyJsStrictEq(var.get(u"this"),var.get(u'target')) and (var.get(u'start')=Js(0.0)): + try: + var.get(u'target').put((var.get(u'i')+var.get(u'targetStart')), var.get(u"this").get((var.get(u'i')+var.get(u'start')))) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + else: + if ((var.get(u'len')=var.get(u"this").get(u'length'))): + PyJsTempException = JsToPyException(var.get(u'RangeError').create(Js(u'start out of bounds'))) + raise PyJsTempException + if ((var.get(u'end')var.get(u"this").get(u'length'))): + PyJsTempException = JsToPyException(var.get(u'RangeError').create(Js(u'end out of bounds'))) + raise PyJsTempException + pass + if PyJsStrictEq(var.get(u'value',throw=False).typeof(),Js(u'number')): + #for JS loop + var.put(u'i', var.get(u'start')) + while (var.get(u'i')>Js(18.0))&Js(63)))+var.get(u'lookup').get(((var.get(u'num')>>Js(12.0))&Js(63))))+var.get(u'lookup').get(((var.get(u'num')>>Js(6.0))&Js(63))))+var.get(u'lookup').get((var.get(u'num')&Js(63)))) + PyJsHoisted_tripletToBase64_.func_name = u'tripletToBase64' + var.put(u'tripletToBase64', PyJsHoisted_tripletToBase64_) + @Js + def PyJsHoisted_init_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'code', u'len']) + var.put(u'code', Js(u'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'len', var.get(u'code').get(u'length')) + while (var.get(u'i')Js(0.0)): + PyJsTempException = JsToPyException(var.get(u'Error').create(Js(u'Invalid string. Length must be a multiple of 4'))) + raise PyJsTempException + var.put(u'placeHolders', (Js(2.0) if PyJsStrictEq(var.get(u'b64').get((var.get(u'len')-Js(2.0))),Js(u'=')) else (Js(1.0) if PyJsStrictEq(var.get(u'b64').get((var.get(u'len')-Js(1.0))),Js(u'=')) else Js(0.0)))) + var.put(u'arr', var.get(u'Arr').create((((var.get(u'len')*Js(3.0))/Js(4.0))-var.get(u'placeHolders')))) + var.put(u'l', ((var.get(u'len')-Js(4.0)) if (var.get(u'placeHolders')>Js(0.0)) else var.get(u'len'))) + var.put(u'L', Js(0.0)) + #for JS loop + PyJsComma(var.put(u'i', Js(0.0)),var.put(u'j', Js(0.0))) + while (var.get(u'i')>Js(16.0))&Js(255))) + var.get(u'arr').put((var.put(u'L',Js(var.get(u'L').to_number())+Js(1))-Js(1)), ((var.get(u'tmp')>>Js(8.0))&Js(255))) + var.get(u'arr').put((var.put(u'L',Js(var.get(u'L').to_number())+Js(1))-Js(1)), (var.get(u'tmp')&Js(255))) + finally: + PyJsComma(var.put(u'i', Js(4.0), u'+'),var.put(u'j', Js(3.0), u'+')) + if PyJsStrictEq(var.get(u'placeHolders'),Js(2.0)): + var.put(u'tmp', ((var.get(u'revLookup').get(var.get(u'b64').callprop(u'charCodeAt', var.get(u'i')))<>Js(4.0)))) + var.get(u'arr').put((var.put(u'L',Js(var.get(u'L').to_number())+Js(1))-Js(1)), (var.get(u'tmp')&Js(255))) + else: + if PyJsStrictEq(var.get(u'placeHolders'),Js(1.0)): + var.put(u'tmp', (((var.get(u'revLookup').get(var.get(u'b64').callprop(u'charCodeAt', var.get(u'i')))<>Js(2.0)))) + var.get(u'arr').put((var.put(u'L',Js(var.get(u'L').to_number())+Js(1))-Js(1)), ((var.get(u'tmp')>>Js(8.0))&Js(255))) + var.get(u'arr').put((var.put(u'L',Js(var.get(u'L').to_number())+Js(1))-Js(1)), (var.get(u'tmp')&Js(255))) + return var.get(u'arr') + PyJsHoisted_toByteArray_.func_name = u'toByteArray' + var.put(u'toByteArray', PyJsHoisted_toByteArray_) + @Js + def PyJsHoisted_fromByteArray_(uint8, this, arguments, var=var): + var = Scope({u'this':this, u'uint8':uint8, u'arguments':arguments}, var) + var.registers([u'tmp', u'i', u'uint8', u'len', u'len2', u'parts', u'extraBytes', u'output', u'maxChunkLength']) + pass + var.put(u'len', var.get(u'uint8').get(u'length')) + var.put(u'extraBytes', (var.get(u'len')%Js(3.0))) + var.put(u'output', Js(u'')) + var.put(u'parts', Js([])) + var.put(u'maxChunkLength', Js(16383.0)) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'len2', (var.get(u'len')-var.get(u'extraBytes'))) + while (var.get(u'i')var.get(u'len2')) else (var.get(u'i')+var.get(u'maxChunkLength'))))) + finally: + var.put(u'i', var.get(u'maxChunkLength'), u'+') + if PyJsStrictEq(var.get(u'extraBytes'),Js(1.0)): + var.put(u'tmp', var.get(u'uint8').get((var.get(u'len')-Js(1.0)))) + var.put(u'output', var.get(u'lookup').get((var.get(u'tmp')>>Js(2.0))), u'+') + var.put(u'output', var.get(u'lookup').get(((var.get(u'tmp')<>Js(10.0))), u'+') + var.put(u'output', var.get(u'lookup').get(((var.get(u'tmp')>>Js(4.0))&Js(63))), u'+') + var.put(u'output', var.get(u'lookup').get(((var.get(u'tmp')<>Js(1.0))) + var.put(u'nBits', (-Js(7.0))) + var.put(u'i', ((var.get(u'nBytes')-Js(1.0)) if var.get(u'isLE') else Js(0.0))) + var.put(u'd', ((-Js(1.0)) if var.get(u'isLE') else Js(1.0))) + var.put(u's', var.get(u'buffer').get((var.get(u'offset')+var.get(u'i')))) + var.put(u'i', var.get(u'd'), u'+') + var.put(u'e', (var.get(u's')&((Js(1.0)<<(-var.get(u'nBits')))-Js(1.0)))) + var.put(u's', (-var.get(u'nBits')), u'>>') + var.put(u'nBits', var.get(u'eLen'), u'+') + #for JS loop + + while (var.get(u'nBits')>Js(0.0)): + try: + pass + finally: + PyJsComma(PyJsComma(var.put(u'e', ((var.get(u'e')*Js(256.0))+var.get(u'buffer').get((var.get(u'offset')+var.get(u'i'))))),var.put(u'i', var.get(u'd'), u'+')),var.put(u'nBits', Js(8.0), u'-')) + var.put(u'm', (var.get(u'e')&((Js(1.0)<<(-var.get(u'nBits')))-Js(1.0)))) + var.put(u'e', (-var.get(u'nBits')), u'>>') + var.put(u'nBits', var.get(u'mLen'), u'+') + #for JS loop + + while (var.get(u'nBits')>Js(0.0)): + try: + pass + finally: + PyJsComma(PyJsComma(var.put(u'm', ((var.get(u'm')*Js(256.0))+var.get(u'buffer').get((var.get(u'offset')+var.get(u'i'))))),var.put(u'i', var.get(u'd'), u'+')),var.put(u'nBits', Js(8.0), u'-')) + if PyJsStrictEq(var.get(u'e'),Js(0.0)): + var.put(u'e', (Js(1.0)-var.get(u'eBias'))) + else: + if PyJsStrictEq(var.get(u'e'),var.get(u'eMax')): + return (var.get(u'NaN') if var.get(u'm') else (((-Js(1.0)) if var.get(u's') else Js(1.0))*var.get(u'Infinity'))) + else: + var.put(u'm', (var.get(u'm')+var.get(u'Math').callprop(u'pow', Js(2.0), var.get(u'mLen')))) + var.put(u'e', (var.get(u'e')-var.get(u'eBias'))) + return ((((-Js(1.0)) if var.get(u's') else Js(1.0))*var.get(u'm'))*var.get(u'Math').callprop(u'pow', Js(2.0), (var.get(u'e')-var.get(u'mLen')))) + PyJs_anonymous_4278_._set_name(u'anonymous') + var.get(u'exports').put(u'read', PyJs_anonymous_4278_) + @Js + def PyJs_anonymous_4279_(buffer, value, offset, isLE, mLen, nBytes, this, arguments, var=var): + var = Scope({u'mLen':mLen, u'buffer':buffer, u'value':value, u'this':this, u'nBytes':nBytes, u'offset':offset, u'isLE':isLE, u'arguments':arguments}, var) + var.registers([u'rt', u'c', u'e', u'd', u'mLen', u'i', u'eMax', u'offset', u'm', u'eLen', u'buffer', u's', u'value', u'eBias', u'isLE', u'nBytes']) + pass + var.put(u'eLen', (((var.get(u'nBytes')*Js(8.0))-var.get(u'mLen'))-Js(1.0))) + var.put(u'eMax', ((Js(1.0)<>Js(1.0))) + var.put(u'rt', ((var.get(u'Math').callprop(u'pow', Js(2.0), (-Js(24.0)))-var.get(u'Math').callprop(u'pow', Js(2.0), (-Js(77.0)))) if PyJsStrictEq(var.get(u'mLen'),Js(23.0)) else Js(0.0))) + var.put(u'i', (Js(0.0) if var.get(u'isLE') else (var.get(u'nBytes')-Js(1.0)))) + var.put(u'd', (Js(1.0) if var.get(u'isLE') else (-Js(1.0)))) + var.put(u's', (Js(1.0) if ((var.get(u'value')=Js(1.0)): + var.put(u'value', (var.get(u'rt')/var.get(u'c')), u'+') + else: + var.put(u'value', (var.get(u'rt')*var.get(u'Math').callprop(u'pow', Js(2.0), (Js(1.0)-var.get(u'eBias')))), u'+') + if ((var.get(u'value')*var.get(u'c'))>=Js(2.0)): + (var.put(u'e',Js(var.get(u'e').to_number())+Js(1))-Js(1)) + var.put(u'c', Js(2.0), u'/') + if ((var.get(u'e')+var.get(u'eBias'))>=var.get(u'eMax')): + var.put(u'm', Js(0.0)) + var.put(u'e', var.get(u'eMax')) + else: + if ((var.get(u'e')+var.get(u'eBias'))>=Js(1.0)): + var.put(u'm', (((var.get(u'value')*var.get(u'c'))-Js(1.0))*var.get(u'Math').callprop(u'pow', Js(2.0), var.get(u'mLen')))) + var.put(u'e', (var.get(u'e')+var.get(u'eBias'))) + else: + var.put(u'm', ((var.get(u'value')*var.get(u'Math').callprop(u'pow', Js(2.0), (var.get(u'eBias')-Js(1.0))))*var.get(u'Math').callprop(u'pow', Js(2.0), var.get(u'mLen')))) + var.put(u'e', Js(0.0)) + #for JS loop + + while (var.get(u'mLen')>=Js(8.0)): + try: + pass + finally: + PyJsComma(PyJsComma(PyJsComma(var.get(u'buffer').put((var.get(u'offset')+var.get(u'i')), (var.get(u'm')&Js(255))),var.put(u'i', var.get(u'd'), u'+')),var.put(u'm', Js(256.0), u'/')),var.put(u'mLen', Js(8.0), u'-')) + var.put(u'e', ((var.get(u'e')<Js(0.0)): + try: + pass + finally: + PyJsComma(PyJsComma(PyJsComma(var.get(u'buffer').put((var.get(u'offset')+var.get(u'i')), (var.get(u'e')&Js(255))),var.put(u'i', var.get(u'd'), u'+')),var.put(u'e', Js(256.0), u'/')),var.put(u'eLen', Js(8.0), u'-')) + var.get(u'buffer').put(((var.get(u'offset')+var.get(u'i'))-var.get(u'd')), (var.get(u's')*Js(128.0)), u'|') + PyJs_anonymous_4279_._set_name(u'anonymous') + var.get(u'exports').put(u'write', PyJs_anonymous_4279_) +PyJs_anonymous_4277_._set_name(u'anonymous') +PyJs_Object_4280_ = Js({}) +@Js +def PyJs_anonymous_4281_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'toString', u'exports', u'module']) + PyJs_Object_4282_ = Js({}) + var.put(u'toString', PyJs_Object_4282_.get(u'toString')) + @Js + def PyJs_anonymous_4283_(arr, this, arguments, var=var): + var = Scope({u'this':this, u'arr':arr, u'arguments':arguments}, var) + var.registers([u'arr']) + return (var.get(u'toString').callprop(u'call', var.get(u'arr'))==Js(u'[object Array]')) + PyJs_anonymous_4283_._set_name(u'anonymous') + var.get(u'module').put(u'exports', (var.get(u'Array').get(u'isArray') or PyJs_anonymous_4283_)) +PyJs_anonymous_4281_._set_name(u'anonymous') +PyJs_Object_4284_ = Js({}) +@Js +def PyJs_anonymous_4285_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + if PyJsStrictEq(var.get(u'Object').get(u'create').typeof(),Js(u'function')): + @Js + def PyJs_inherits_4286_(ctor, superCtor, this, arguments, var=var): + var = Scope({u'this':this, u'inherits':PyJs_inherits_4286_, u'superCtor':superCtor, u'arguments':arguments, u'ctor':ctor}, var) + var.registers([u'superCtor', u'ctor']) + var.get(u'ctor').put(u'super_', var.get(u'superCtor')) + PyJs_Object_4288_ = Js({u'value':var.get(u'ctor'),u'enumerable':Js(False),u'writable':var.get(u'true'),u'configurable':var.get(u'true')}) + PyJs_Object_4287_ = Js({u'constructor':PyJs_Object_4288_}) + var.get(u'ctor').put(u'prototype', var.get(u'Object').callprop(u'create', var.get(u'superCtor').get(u'prototype'), PyJs_Object_4287_)) + PyJs_inherits_4286_._set_name(u'inherits') + var.get(u'module').put(u'exports', PyJs_inherits_4286_) + else: + @Js + def PyJs_inherits_4289_(ctor, superCtor, this, arguments, var=var): + var = Scope({u'this':this, u'inherits':PyJs_inherits_4289_, u'superCtor':superCtor, u'arguments':arguments, u'ctor':ctor}, var) + var.registers([u'TempCtor', u'superCtor', u'ctor']) + var.get(u'ctor').put(u'super_', var.get(u'superCtor')) + @Js + def PyJs_anonymous_4290_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([]) + pass + PyJs_anonymous_4290_._set_name(u'anonymous') + var.put(u'TempCtor', PyJs_anonymous_4290_) + var.get(u'TempCtor').put(u'prototype', var.get(u'superCtor').get(u'prototype')) + var.get(u'ctor').put(u'prototype', var.get(u'TempCtor').create()) + var.get(u'ctor').get(u'prototype').put(u'constructor', var.get(u'ctor')) + PyJs_inherits_4289_._set_name(u'inherits') + var.get(u'module').put(u'exports', PyJs_inherits_4289_) +PyJs_anonymous_4285_._set_name(u'anonymous') +PyJs_Object_4291_ = Js({}) +@Js +def PyJs_anonymous_4292_(require, module, exports, this, arguments, var=var): + var = Scope({u'this':this, u'require':require, u'exports':exports, u'module':module, u'arguments':arguments}, var) + var.registers([u'require', u'exports', u'module']) + @Js + def PyJs_anonymous_4293_(process, this, arguments, var=var): + var = Scope({u'process':process, u'this':this, u'arguments':arguments}, var) + var.registers([u'splitPath', u'substr', u'process', u'normalizeArray', u'filter', u'splitPathRe']) + @Js + def PyJsHoisted_filter_(xs, f, this, arguments, var=var): + var = Scope({u'this':this, u'xs':xs, u'arguments':arguments, u'f':f}, var) + var.registers([u'i', u'res', u'f', u'xs']) + if var.get(u'xs').get(u'filter'): + return var.get(u'xs').callprop(u'filter', var.get(u'f')) + var.put(u'res', Js([])) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')=Js(0.0)): + try: + var.put(u'last', var.get(u'parts').get(var.get(u'i'))) + if PyJsStrictEq(var.get(u'last'),Js(u'.')): + var.get(u'parts').callprop(u'splice', var.get(u'i'), Js(1.0)) + else: + if PyJsStrictEq(var.get(u'last'),Js(u'..')): + var.get(u'parts').callprop(u'splice', var.get(u'i'), Js(1.0)) + (var.put(u'up',Js(var.get(u'up').to_number())+Js(1))-Js(1)) + else: + if var.get(u'up'): + var.get(u'parts').callprop(u'splice', var.get(u'i'), Js(1.0)) + (var.put(u'up',Js(var.get(u'up').to_number())-Js(1))+Js(1)) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + if var.get(u'allowAboveRoot'): + #for JS loop + + while (var.put(u'up',Js(var.get(u'up').to_number())-Js(1))+Js(1)): + try: + var.get(u'parts').callprop(u'unshift', Js(u'..')) + finally: + var.get(u'up') + return var.get(u'parts') + PyJsHoisted_normalizeArray_.func_name = u'normalizeArray' + var.put(u'normalizeArray', PyJsHoisted_normalizeArray_) + pass + var.put(u'splitPathRe', JsRegExp(u'/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/')) + @Js + def PyJs_anonymous_4294_(filename, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'filename':filename}, var) + var.registers([u'filename']) + return var.get(u'splitPathRe').callprop(u'exec', var.get(u'filename')).callprop(u'slice', Js(1.0)) + PyJs_anonymous_4294_._set_name(u'anonymous') + var.put(u'splitPath', PyJs_anonymous_4294_) + @Js + def PyJs_anonymous_4295_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'i', u'resolvedPath', u'path', u'resolvedAbsolute']) + var.put(u'resolvedPath', Js(u'')) + var.put(u'resolvedAbsolute', Js(False)) + #for JS loop + var.put(u'i', (var.get(u'arguments').get(u'length')-Js(1.0))) + while ((var.get(u'i')>=(-Js(1.0))) and var.get(u'resolvedAbsolute').neg()): + try: + var.put(u'path', (var.get(u'arguments').get(var.get(u'i')) if (var.get(u'i')>=Js(0.0)) else var.get(u'process').callprop(u'cwd'))) + if PyJsStrictNeq(var.get(u'path',throw=False).typeof(),Js(u'string')): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Arguments to path.resolve must be strings'))) + raise PyJsTempException + else: + if var.get(u'path').neg(): + continue + var.put(u'resolvedPath', ((var.get(u'path')+Js(u'/'))+var.get(u'resolvedPath'))) + var.put(u'resolvedAbsolute', PyJsStrictEq(var.get(u'path').callprop(u'charAt', Js(0.0)),Js(u'/'))) + finally: + (var.put(u'i',Js(var.get(u'i').to_number())-Js(1))+Js(1)) + @Js + def PyJs_anonymous_4296_(p, this, arguments, var=var): + var = Scope({u'this':this, u'p':p, u'arguments':arguments}, var) + var.registers([u'p']) + return var.get(u'p').neg().neg() + PyJs_anonymous_4296_._set_name(u'anonymous') + var.put(u'resolvedPath', var.get(u'normalizeArray')(var.get(u'filter')(var.get(u'resolvedPath').callprop(u'split', Js(u'/')), PyJs_anonymous_4296_), var.get(u'resolvedAbsolute').neg()).callprop(u'join', Js(u'/'))) + return (((Js(u'/') if var.get(u'resolvedAbsolute') else Js(u''))+var.get(u'resolvedPath')) or Js(u'.')) + PyJs_anonymous_4295_._set_name(u'anonymous') + var.get(u'exports').put(u'resolve', PyJs_anonymous_4295_) + @Js + def PyJs_anonymous_4297_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path', u'trailingSlash', u'isAbsolute']) + var.put(u'isAbsolute', var.get(u'exports').callprop(u'isAbsolute', var.get(u'path'))) + var.put(u'trailingSlash', PyJsStrictEq(var.get(u'substr')(var.get(u'path'), (-Js(1.0))),Js(u'/'))) + @Js + def PyJs_anonymous_4298_(p, this, arguments, var=var): + var = Scope({u'this':this, u'p':p, u'arguments':arguments}, var) + var.registers([u'p']) + return var.get(u'p').neg().neg() + PyJs_anonymous_4298_._set_name(u'anonymous') + var.put(u'path', var.get(u'normalizeArray')(var.get(u'filter')(var.get(u'path').callprop(u'split', Js(u'/')), PyJs_anonymous_4298_), var.get(u'isAbsolute').neg()).callprop(u'join', Js(u'/'))) + if (var.get(u'path').neg() and var.get(u'isAbsolute').neg()): + var.put(u'path', Js(u'.')) + if (var.get(u'path') and var.get(u'trailingSlash')): + var.put(u'path', Js(u'/'), u'+') + return ((Js(u'/') if var.get(u'isAbsolute') else Js(u''))+var.get(u'path')) + PyJs_anonymous_4297_._set_name(u'anonymous') + var.get(u'exports').put(u'normalize', PyJs_anonymous_4297_) + @Js + def PyJs_anonymous_4299_(path, this, arguments, var=var): + var = Scope({u'this':this, u'path':path, u'arguments':arguments}, var) + var.registers([u'path']) + return PyJsStrictEq(var.get(u'path').callprop(u'charAt', Js(0.0)),Js(u'/')) + PyJs_anonymous_4299_._set_name(u'anonymous') + var.get(u'exports').put(u'isAbsolute', PyJs_anonymous_4299_) + @Js + def PyJs_anonymous_4300_(this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments}, var) + var.registers([u'paths']) + var.put(u'paths', var.get(u'Array').get(u'prototype').get(u'slice').callprop(u'call', var.get(u'arguments'), Js(0.0))) + @Js + def PyJs_anonymous_4301_(p, index, this, arguments, var=var): + var = Scope({u'this':this, u'p':p, u'arguments':arguments, u'index':index}, var) + var.registers([u'p', u'index']) + if PyJsStrictNeq(var.get(u'p',throw=False).typeof(),Js(u'string')): + PyJsTempException = JsToPyException(var.get(u'TypeError').create(Js(u'Arguments to path.join must be strings'))) + raise PyJsTempException + return var.get(u'p') + PyJs_anonymous_4301_._set_name(u'anonymous') + return var.get(u'exports').callprop(u'normalize', var.get(u'filter')(var.get(u'paths'), PyJs_anonymous_4301_).callprop(u'join', Js(u'/'))) + PyJs_anonymous_4300_._set_name(u'anonymous') + var.get(u'exports').put(u'join', PyJs_anonymous_4300_) + @Js + def PyJs_anonymous_4302_(PyJsArg_66726f6d_, to, this, arguments, var=var): + var = Scope({u'this':this, u'to':to, u'from':PyJsArg_66726f6d_, u'arguments':arguments}, var) + var.registers([u'trim', u'outputParts', u'i', u'to', u'length', u'toParts', u'from', u'fromParts', u'samePartsLength']) + @Js + def PyJsHoisted_trim_(arr, this, arguments, var=var): + var = Scope({u'this':this, u'arr':arr, u'arguments':arguments}, var) + var.registers([u'start', u'arr', u'end']) + var.put(u'start', Js(0.0)) + #for JS loop + + while (var.get(u'start')=Js(0.0)): + try: + if PyJsStrictNeq(var.get(u'arr').get(var.get(u'end')),Js(u'')): + break + finally: + (var.put(u'end',Js(var.get(u'end').to_number())-Js(1))+Js(1)) + if (var.get(u'start')>var.get(u'end')): + return Js([]) + return var.get(u'arr').callprop(u'slice', var.get(u'start'), ((var.get(u'end')-var.get(u'start'))+Js(1.0))) + PyJsHoisted_trim_.func_name = u'trim' + var.put(u'trim', PyJsHoisted_trim_) + var.put(u'from', var.get(u'exports').callprop(u'resolve', var.get(u'from')).callprop(u'substr', Js(1.0))) + var.put(u'to', var.get(u'exports').callprop(u'resolve', var.get(u'to')).callprop(u'substr', Js(1.0))) + pass + var.put(u'fromParts', var.get(u'trim')(var.get(u'from').callprop(u'split', Js(u'/')))) + var.put(u'toParts', var.get(u'trim')(var.get(u'to').callprop(u'split', Js(u'/')))) + var.put(u'length', var.get(u'Math').callprop(u'min', var.get(u'fromParts').get(u'length'), var.get(u'toParts').get(u'length'))) + var.put(u'samePartsLength', var.get(u'length')) + #for JS loop + var.put(u'i', Js(0.0)) + while (var.get(u'i')Js(1.0)): + #for JS loop + var.put(u'i', Js(1.0)) + while (var.get(u'i')(-Js(1.0))): + if var.get(u'array'): + @Js + def PyJs_anonymous_4345_(line, this, arguments, var=var): + var = Scope({u'this':this, u'line':line, u'arguments':arguments}, var) + var.registers([u'line']) + return (Js(u' ')+var.get(u'line')) + PyJs_anonymous_4345_._set_name(u'anonymous') + var.put(u'str', var.get(u'str').callprop(u'split', Js(u'\n')).callprop(u'map', PyJs_anonymous_4345_).callprop(u'join', Js(u'\n')).callprop(u'substr', Js(2.0))) + else: + @Js + def PyJs_anonymous_4346_(line, this, arguments, var=var): + var = Scope({u'this':this, u'line':line, u'arguments':arguments}, var) + var.registers([u'line']) + return (Js(u' ')+var.get(u'line')) + PyJs_anonymous_4346_._set_name(u'anonymous') + var.put(u'str', (Js(u'\n')+var.get(u'str').callprop(u'split', Js(u'\n')).callprop(u'map', PyJs_anonymous_4346_).callprop(u'join', Js(u'\n')))) + else: + var.put(u'str', var.get(u'ctx').callprop(u'stylize', Js(u'[Circular]'), Js(u'special'))) + if var.get(u'isUndefined')(var.get(u'name')): + if (var.get(u'array') and var.get(u'key').callprop(u'match', JsRegExp(u'/^\\d+$/'))): + return var.get(u'str') + var.put(u'name', var.get(u'JSON').callprop(u'stringify', (Js(u'')+var.get(u'key')))) + if var.get(u'name').callprop(u'match', JsRegExp(u'/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/')): + var.put(u'name', var.get(u'name').callprop(u'substr', Js(1.0), (var.get(u'name').get(u'length')-Js(2.0)))) + var.put(u'name', var.get(u'ctx').callprop(u'stylize', var.get(u'name'), Js(u'name'))) + else: + var.put(u'name', var.get(u'name').callprop(u'replace', JsRegExp(u"/'/g"), Js(u"\\'")).callprop(u'replace', JsRegExp(u'/\\\\"/g'), Js(u'"')).callprop(u'replace', JsRegExp(u'/(^"|"$)/g'), Js(u"'"))) + var.put(u'name', var.get(u'ctx').callprop(u'stylize', var.get(u'name'), Js(u'string'))) + return ((var.get(u'name')+Js(u': '))+var.get(u'str')) + PyJsHoisted_formatProperty_.func_name = u'formatProperty' + var.put(u'formatProperty', PyJsHoisted_formatProperty_) + @Js + def PyJsHoisted_formatError_(value, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'value':value}, var) + var.registers([u'value']) + return ((Js(u'[')+var.get(u'Error').get(u'prototype').get(u'toString').callprop(u'call', var.get(u'value')))+Js(u']')) + PyJsHoisted_formatError_.func_name = u'formatError' + var.put(u'formatError', PyJsHoisted_formatError_) + @Js + def PyJsHoisted_formatArray_(ctx, value, recurseTimes, visibleKeys, keys, this, arguments, var=var): + var = Scope({u'this':this, u'visibleKeys':visibleKeys, u'arguments':arguments, u'recurseTimes':recurseTimes, u'keys':keys, u'ctx':ctx, u'value':value}, var) + var.registers([u'keys', u'recurseTimes', u'i', u'ctx', u'l', u'value', u'visibleKeys', u'output']) + var.put(u'output', Js([])) + #for JS loop + var.put(u'i', Js(0.0)) + var.put(u'l', var.get(u'value').get(u'length')) + while (var.get(u'i')=Js(3.0)): + var.get(u'ctx').put(u'depth', var.get(u'arguments').get(u'2')) + if (var.get(u'arguments').get(u'length')>=Js(4.0)): + var.get(u'ctx').put(u'colors', var.get(u'arguments').get(u'3')) + if var.get(u'isBoolean')(var.get(u'opts')): + var.get(u'ctx').put(u'showHidden', var.get(u'opts')) + else: + if var.get(u'opts'): + var.get(u'exports').callprop(u'_extend', var.get(u'ctx'), var.get(u'opts')) + if var.get(u'isUndefined')(var.get(u'ctx').get(u'showHidden')): + var.get(u'ctx').put(u'showHidden', Js(False)) + if var.get(u'isUndefined')(var.get(u'ctx').get(u'depth')): + var.get(u'ctx').put(u'depth', Js(2.0)) + if var.get(u'isUndefined')(var.get(u'ctx').get(u'colors')): + var.get(u'ctx').put(u'colors', Js(False)) + if var.get(u'isUndefined')(var.get(u'ctx').get(u'customInspect')): + var.get(u'ctx').put(u'customInspect', var.get(u'true')) + if var.get(u'ctx').get(u'colors'): + var.get(u'ctx').put(u'stylize', var.get(u'stylizeWithColor')) + return var.get(u'formatValue')(var.get(u'ctx'), var.get(u'obj'), var.get(u'ctx').get(u'depth')) + PyJsHoisted_inspect_.func_name = u'inspect' + var.put(u'inspect', PyJsHoisted_inspect_) + @Js + def PyJsHoisted_formatPrimitive_(ctx, value, this, arguments, var=var): + var = Scope({u'this':this, u'ctx':ctx, u'arguments':arguments, u'value':value}, var) + var.registers([u'simple', u'ctx', u'value']) + if var.get(u'isUndefined')(var.get(u'value')): + return var.get(u'ctx').callprop(u'stylize', Js(u'undefined'), Js(u'undefined')) + if var.get(u'isString')(var.get(u'value')): + var.put(u'simple', ((Js(u"'")+var.get(u'JSON').callprop(u'stringify', var.get(u'value')).callprop(u'replace', JsRegExp(u'/^"|"$/g'), Js(u'')).callprop(u'replace', JsRegExp(u"/'/g"), Js(u"\\'")).callprop(u'replace', JsRegExp(u'/\\\\"/g'), Js(u'"')))+Js(u"'"))) + return var.get(u'ctx').callprop(u'stylize', var.get(u'simple'), Js(u'string')) + if var.get(u'isNumber')(var.get(u'value')): + return var.get(u'ctx').callprop(u'stylize', (Js(u'')+var.get(u'value')), Js(u'number')) + if var.get(u'isBoolean')(var.get(u'value')): + return var.get(u'ctx').callprop(u'stylize', (Js(u'')+var.get(u'value')), Js(u'boolean')) + if var.get(u'isNull')(var.get(u'value')): + return var.get(u'ctx').callprop(u'stylize', Js(u'null'), Js(u'null')) + PyJsHoisted_formatPrimitive_.func_name = u'formatPrimitive' + var.put(u'formatPrimitive', PyJsHoisted_formatPrimitive_) + @Js + def PyJsHoisted_hasOwnProperty_(obj, prop, this, arguments, var=var): + var = Scope({u'this':this, u'obj':obj, u'arguments':arguments, u'prop':prop}, var) + var.registers([u'obj', u'prop']) + return var.get(u'Object').get(u'prototype').get(u'hasOwnProperty').callprop(u'call', var.get(u'obj'), var.get(u'prop')) + PyJsHoisted_hasOwnProperty_.func_name = u'hasOwnProperty' + var.put(u'hasOwnProperty', PyJsHoisted_hasOwnProperty_) + @Js + def PyJsHoisted_isNumber_(arg, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'arg':arg}, var) + var.registers([u'arg']) + return PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'number')) + PyJsHoisted_isNumber_.func_name = u'isNumber' + var.put(u'isNumber', PyJsHoisted_isNumber_) + @Js + def PyJsHoisted_isError_(e, this, arguments, var=var): + var = Scope({u'this':this, u'e':e, u'arguments':arguments}, var) + var.registers([u'e']) + return (var.get(u'isObject')(var.get(u'e')) and (PyJsStrictEq(var.get(u'objectToString')(var.get(u'e')),Js(u'[object Error]')) or var.get(u'e').instanceof(var.get(u'Error')))) + PyJsHoisted_isError_.func_name = u'isError' + var.put(u'isError', PyJsHoisted_isError_) + @Js + def PyJsHoisted_reduceToSingleString_(output, base, braces, this, arguments, var=var): + var = Scope({u'this':this, u'output':output, u'base':base, u'arguments':arguments, u'braces':braces}, var) + var.registers([u'output', u'length', u'base', u'numLinesEst', u'braces']) + var.put(u'numLinesEst', Js(0.0)) + @Js + def PyJs_anonymous_4347_(prev, cur, this, arguments, var=var): + var = Scope({u'this':this, u'prev':prev, u'cur':cur, u'arguments':arguments}, var) + var.registers([u'prev', u'cur']) + (var.put(u'numLinesEst',Js(var.get(u'numLinesEst').to_number())+Js(1))-Js(1)) + if (var.get(u'cur').callprop(u'indexOf', Js(u'\n'))>=Js(0.0)): + (var.put(u'numLinesEst',Js(var.get(u'numLinesEst').to_number())+Js(1))-Js(1)) + return ((var.get(u'prev')+var.get(u'cur').callprop(u'replace', JsRegExp(u'/\\u001b\\[\\d\\d?m/g'), Js(u'')).get(u'length'))+Js(1.0)) + PyJs_anonymous_4347_._set_name(u'anonymous') + var.put(u'length', var.get(u'output').callprop(u'reduce', PyJs_anonymous_4347_, Js(0.0))) + if (var.get(u'length')>Js(60.0)): + return (((((var.get(u'braces').get(u'0')+(Js(u'') if PyJsStrictEq(var.get(u'base'),Js(u'')) else (var.get(u'base')+Js(u'\n '))))+Js(u' '))+var.get(u'output').callprop(u'join', Js(u',\n ')))+Js(u' '))+var.get(u'braces').get(u'1')) + return (((((var.get(u'braces').get(u'0')+var.get(u'base'))+Js(u' '))+var.get(u'output').callprop(u'join', Js(u', ')))+Js(u' '))+var.get(u'braces').get(u'1')) + PyJsHoisted_reduceToSingleString_.func_name = u'reduceToSingleString' + var.put(u'reduceToSingleString', PyJsHoisted_reduceToSingleString_) + @Js + def PyJsHoisted_isNullOrUndefined_(arg, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'arg':arg}, var) + var.registers([u'arg']) + return (var.get(u'arg')==var.get(u"null")) + PyJsHoisted_isNullOrUndefined_.func_name = u'isNullOrUndefined' + var.put(u'isNullOrUndefined', PyJsHoisted_isNullOrUndefined_) + @Js + def PyJsHoisted_isDate_(d, this, arguments, var=var): + var = Scope({u'this':this, u'd':d, u'arguments':arguments}, var) + var.registers([u'd']) + return (var.get(u'isObject')(var.get(u'd')) and PyJsStrictEq(var.get(u'objectToString')(var.get(u'd')),Js(u'[object Date]'))) + PyJsHoisted_isDate_.func_name = u'isDate' + var.put(u'isDate', PyJsHoisted_isDate_) + @Js + def PyJsHoisted_isString_(arg, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'arg':arg}, var) + var.registers([u'arg']) + return PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'string')) + PyJsHoisted_isString_.func_name = u'isString' + var.put(u'isString', PyJsHoisted_isString_) + @Js + def PyJsHoisted_isPrimitive_(arg, this, arguments, var=var): + var = Scope({u'this':this, u'arguments':arguments, u'arg':arg}, var) + var.registers([u'arg']) + return (((((PyJsStrictEq(var.get(u'arg'),var.get(u"null")) or PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'boolean'))) or PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'number'))) or PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'string'))) or PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'symbol'))) or PyJsStrictEq(var.get(u'arg',throw=False).typeof(),Js(u'undefined'))) + PyJsHoisted_isPrimitive_.func_name = u'isPrimitive' + var.put(u'isPrimitive', PyJsHoisted_isPrimitive_) + @Js + def PyJsHoisted_formatValue_(ctx, value, recurseTimes, this, arguments, var=var): + var = Scope({u'this':this, u'ctx':ctx, u'arguments':arguments, u'value':value, u'recurseTimes':recurseTimes}, var) + var.registers([u'primitive', u'name', u'recurseTimes', u'keys', u'ctx', u'ret', u'n', u'visibleKeys', u'base', u'value', u'output', u'array', u'braces']) + if ((((var.get(u'ctx').get(u'customInspect') and var.get(u'value')) and var.get(u'isFunction')(var.get(u'value').get(u'inspect'))) and PyJsStrictNeq(var.get(u'value').get(u'inspect'),var.get(u'exports').get(u'inspect'))) and (var.get(u'value').get(u'constructor') and PyJsStrictEq(var.get(u'value').get(u'constructor').get(u'prototype'),var.get(u'value'))).neg()): + var.put(u'ret', var.get(u'value').callprop(u'inspect', var.get(u'recurseTimes'), var.get(u'ctx'))) + if var.get(u'isString')(var.get(u'ret')).neg(): + var.put(u'ret', var.get(u'formatValue')(var.get(u'ctx'), var.get(u'ret'), var.get(u'recurseTimes'))) + return var.get(u'ret') + var.put(u'primitive', var.get(u'formatPrimitive')(var.get(u'ctx'), var.get(u'value'))) + if var.get(u'primitive'): + return var.get(u'primitive') + var.put(u'keys', var.get(u'Object').callprop(u'keys', var.get(u'value'))) + var.put(u'visibleKeys', var.get(u'arrayToHash')(var.get(u'keys'))) + if var.get(u'ctx').get(u'showHidden'): + var.put(u'keys', var.get(u'Object').callprop(u'getOwnPropertyNames', var.get(u'value'))) + if (var.get(u'isError')(var.get(u'value')) and ((var.get(u'keys').callprop(u'indexOf', Js(u'message'))>=Js(0.0)) or (var.get(u'keys').callprop(u'indexOf', Js(u'description'))>=Js(0.0)))): + return var.get(u'formatError')(var.get(u'value')) + if PyJsStrictEq(var.get(u'keys').get(u'length'),Js(0.0)): + if var.get(u'isFunction')(var.get(u'value')): + var.put(u'name', ((Js(u': ')+var.get(u'value').get(u'name')) if var.get(u'value').get(u'name') else Js(u''))) + return var.get(u'ctx').callprop(u'stylize', ((Js(u'[Function')+var.get(u'name'))+Js(u']')), Js(u'special')) + if var.get(u'isRegExp')(var.get(u'value')): + return var.get(u'ctx').callprop(u'stylize', var.get(u'RegExp').get(u'prototype').get(u'toString').callprop(u'call', var.get(u'value')), Js(u'regexp')) + if var.get(u'isDate')(var.get(u'value')): + return var.get(u'ctx').callprop(u'stylize', var.get(u'Date').get(u'prototype').get(u'toString').callprop(u'call', var.get(u'value')), Js(u'date')) + if var.get(u'isError')(var.get(u'value')): + return var.get(u'formatError')(var.get(u'value')) + var.put(u'base', Js(u'')) + var.put(u'array', Js(False)) + var.put(u'braces', Js([Js(u'{'), Js(u'}')])) + if var.get(u'isArray')(var.get(u'value')): + var.put(u'array', var.get(u'true')) + var.put(u'braces', Js([Js(u'['), Js(u']')])) + if var.get(u'isFunction')(var.get(u'value')): + var.put(u'n', ((Js(u': ')+var.get(u'value').get(u'name')) if var.get(u'value').get(u'name') else Js(u''))) + var.put(u'base', ((Js(u' [Function')+var.get(u'n'))+Js(u']'))) + if var.get(u'isRegExp')(var.get(u'value')): + var.put(u'base', (Js(u' ')+var.get(u'RegExp').get(u'prototype').get(u'toString').callprop(u'call', var.get(u'value')))) + if var.get(u'isDate')(var.get(u'value')): + var.put(u'base', (Js(u' ')+var.get(u'Date').get(u'prototype').get(u'toUTCString').callprop(u'call', var.get(u'value')))) + if var.get(u'isError')(var.get(u'value')): + var.put(u'base', (Js(u' ')+var.get(u'formatError')(var.get(u'value')))) + if (PyJsStrictEq(var.get(u'keys').get(u'length'),Js(0.0)) and (var.get(u'array').neg() or (var.get(u'value').get(u'length')==Js(0.0)))): + return ((var.get(u'braces').get(u'0')+var.get(u'base'))+var.get(u'braces').get(u'1')) + if (var.get(u'recurseTimes')=var.get(u'len')): + return var.get(u'x') + while 1: + SWITCHED = False + CONDITION = (var.get(u'x')) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'%s')): + SWITCHED = True + return var.get(u'String')(var.get(u'args').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'%d')): + SWITCHED = True + return var.get(u'Number')(var.get(u'args').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))) + if SWITCHED or PyJsStrictEq(CONDITION, Js(u'%j')): + SWITCHED = True + try: + return var.get(u'JSON').callprop(u'stringify', var.get(u'args').get((var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1)))) + except PyJsException as PyJsTempException: + PyJsHolder_5f_51919926 = var.own.get(u'_') + var.force_own_put(u'_', PyExceptionToJs(PyJsTempException)) + try: + return Js(u'[Circular]') + finally: + if PyJsHolder_5f_51919926 is not None: + var.own[u'_'] = PyJsHolder_5f_51919926 + else: + del var.own[u'_'] + del PyJsHolder_5f_51919926 + if True: + SWITCHED = True + return var.get(u'x') + SWITCHED = True + break + PyJs_anonymous_4330_._set_name(u'anonymous') + var.put(u'str', var.get(u'String')(var.get(u'f')).callprop(u'replace', var.get(u'formatRegExp'), PyJs_anonymous_4330_)) + #for JS loop + var.put(u'x', var.get(u'args').get(var.get(u'i'))) + while (var.get(u'i') generates babel.py +echo "Generating babel.py..." +python -c "import js2py;js2py.translate_file('babel_bundle.js', 'babel.py');" +rm babel_bundle.js + diff --git a/libs/js2py/evaljs.py b/libs/js2py/evaljs.py new file mode 100644 index 000000000..3f5eeee53 --- /dev/null +++ b/libs/js2py/evaljs.py @@ -0,0 +1,265 @@ +# coding=utf-8 +from .translators import translate_js, DEFAULT_HEADER +from .es6 import js6_to_js5 +import sys +import time +import json +import six +import os +import hashlib +import codecs + +__all__ = [ + 'EvalJs', 'translate_js', 'import_js', 'eval_js', 'translate_file', + 'eval_js6', 'translate_js6', 'run_file', 'disable_pyimport', + 'get_file_contents', 'write_file_contents' +] +DEBUG = False + + +def disable_pyimport(): + import pyjsparser.parser + pyjsparser.parser.ENABLE_PYIMPORT = False + + +def path_as_local(path): + if os.path.isabs(path): + return path + # relative to cwd + return os.path.join(os.getcwd(), path) + + +def import_js(path, lib_name, globals): + """Imports from javascript source file. + globals is your globals()""" + with codecs.open(path_as_local(path), "r", "utf-8") as f: + js = f.read() + e = EvalJs() + e.execute(js) + var = e.context['var'] + globals[lib_name] = var.to_python() + + +def get_file_contents(path_or_file): + if hasattr(path_or_file, 'read'): + js = path_or_file.read() + else: + with codecs.open(path_as_local(path_or_file), "r", "utf-8") as f: + js = f.read() + return js + + +def write_file_contents(path_or_file, contents): + if hasattr(path_or_file, 'write'): + path_or_file.write(contents) + else: + with open(path_as_local(path_or_file), 'w') as f: + f.write(contents) + + +def translate_file(input_path, output_path): + ''' + Translates input JS file to python and saves the it to the output path. + It appends some convenience code at the end so that it is easy to import JS objects. + + For example we have a file 'example.js' with: var a = function(x) {return x} + translate_file('example.js', 'example.py') + + Now example.py can be easily importend and used: + >>> from example import example + >>> example.a(30) + 30 + ''' + js = get_file_contents(input_path) + + py_code = translate_js(js) + lib_name = os.path.basename(output_path).split('.')[0] + head = '__all__ = [%s]\n\n# Don\'t look below, you will not understand this Python code :) I don\'t.\n\n' % repr( + lib_name) + tail = '\n\n# Add lib to the module scope\n%s = var.to_python()' % lib_name + out = head + py_code + tail + write_file_contents(output_path, out) + + +def run_file(path_or_file, context=None): + ''' Context must be EvalJS object. Runs given path as a JS program. Returns (eval_value, context). + ''' + if context is None: + context = EvalJs() + if not isinstance(context, EvalJs): + raise TypeError('context must be the instance of EvalJs') + eval_value = context.eval(get_file_contents(path_or_file)) + return eval_value, context + + +def eval_js(js): + """Just like javascript eval. Translates javascript to python, + executes and returns python object. + js is javascript source code + + EXAMPLE: + >>> import js2py + >>> add = js2py.eval_js('function add(a, b) {return a + b}') + >>> add(1, 2) + 3 + 6 + >>> add('1', 2, 3) + u'12' + >>> add.constructor + function Function() { [python code] } + + NOTE: For Js Number, String, Boolean and other base types returns appropriate python BUILTIN type. + For Js functions and objects, returns Python wrapper - basically behaves like normal python object. + If you really want to convert object to python dict you can use to_dict method. + """ + e = EvalJs() + return e.eval(js) + + +def eval_js6(js): + return eval_js(js6_to_js5(js)) + + +def translate_js6(js): + return translate_js(js6_to_js5(js)) + + +class EvalJs(object): + """This class supports continuous execution of javascript under same context. + + >>> js = EvalJs() + >>> js.execute('var a = 10;function f(x) {return x*x};') + >>> js.f(9) + 81 + >>> js.a + 10 + + context is a python dict or object that contains python variables that should be available to JavaScript + For example: + >>> js = EvalJs({'a': 30}) + >>> js.execute('var x = a') + >>> js.x + 30 + + You can run interactive javascript console with console method!""" + + def __init__(self, context={}): + self.__dict__['_context'] = {} + exec (DEFAULT_HEADER, self._context) + self.__dict__['_var'] = self._context['var'].to_python() + if not isinstance(context, dict): + try: + context = context.__dict__ + except: + raise TypeError( + 'context has to be either a dict or have __dict__ attr') + for k, v in six.iteritems(context): + setattr(self._var, k, v) + + def execute(self, js=None, use_compilation_plan=False): + """executes javascript js in current context + + During initial execute() the converted js is cached for re-use. That means next time you + run the same javascript snippet you save many instructions needed to parse and convert the + js code to python code. + + This cache causes minor overhead (a cache dicts is updated) but the Js=>Py conversion process + is typically expensive compared to actually running the generated python code. + + Note that the cache is just a dict, it has no expiration or cleanup so when running this + in automated situations with vast amounts of snippets it might increase memory usage. + """ + try: + cache = self.__dict__['cache'] + except KeyError: + cache = self.__dict__['cache'] = {} + hashkey = hashlib.md5(js.encode('utf-8')).digest() + try: + compiled = cache[hashkey] + except KeyError: + code = translate_js( + js, '', use_compilation_plan=use_compilation_plan) + compiled = cache[hashkey] = compile(code, '', + 'exec') + exec (compiled, self._context) + + def eval(self, expression, use_compilation_plan=False): + """evaluates expression in current context and returns its value""" + code = 'PyJsEvalResult = eval(%s)' % json.dumps(expression) + self.execute(code, use_compilation_plan=use_compilation_plan) + return self['PyJsEvalResult'] + + def execute_debug(self, js): + """executes javascript js in current context + as opposed to the (faster) self.execute method, you can use your regular debugger + to set breakpoints and inspect the generated python code + """ + code = translate_js(js, '') + # make sure you have a temp folder: + filename = 'temp' + os.sep + '_' + hashlib.md5( + code.encode("utf-8")).hexdigest() + '.py' + try: + with open(filename, mode='w') as f: + f.write(code) + with open(filename, "r") as f: + pyCode = compile(f.read(), filename, 'exec') + exec(pyCode, self._context) + + except Exception as err: + raise err + finally: + os.remove(filename) + try: + os.remove(filename + 'c') + except: + pass + + def eval_debug(self, expression): + """evaluates expression in current context and returns its value + as opposed to the (faster) self.execute method, you can use your regular debugger + to set breakpoints and inspect the generated python code + """ + code = 'PyJsEvalResult = eval(%s)' % json.dumps(expression) + self.execute_debug(code) + return self['PyJsEvalResult'] + + def __getattr__(self, var): + return getattr(self._var, var) + + def __getitem__(self, var): + return getattr(self._var, var) + + def __setattr__(self, var, val): + return setattr(self._var, var, val) + + def __setitem__(self, var, val): + return setattr(self._var, var, val) + + def console(self): + """starts to interact (starts interactive console) Something like code.InteractiveConsole""" + while True: + if six.PY2: + code = raw_input('>>> ') + else: + code = input('>>>') + try: + print(self.eval(code)) + except KeyboardInterrupt: + break + except Exception as e: + import traceback + if DEBUG: + sys.stderr.write(traceback.format_exc()) + else: + sys.stderr.write('EXCEPTION: ' + str(e) + '\n') + time.sleep(0.01) + + +#print x + +if __name__ == '__main__': + #with open('C:\Users\Piotrek\Desktop\esprima.js', 'rb') as f: + # x = f.read() + e = EvalJs() + e.execute('square(x)') + #e.execute(x) + e.console() diff --git a/libs/js2py/host/__init__.py b/libs/js2py/host/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libs/js2py/host/console.py b/libs/js2py/host/console.py new file mode 100644 index 000000000..50a08632a --- /dev/null +++ b/libs/js2py/host/console.py @@ -0,0 +1,15 @@ +from ..base import * + +@Js +def console(): + pass + +@Js +def log(): + print(arguments[0]) + +console.put('log', log) +console.put('debug', log) +console.put('info', log) +console.put('warn', log) +console.put('error', log) diff --git a/libs/js2py/host/dom/__init__.py b/libs/js2py/host/dom/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libs/js2py/host/jseval.py b/libs/js2py/host/jseval.py new file mode 100644 index 000000000..13140d2d5 --- /dev/null +++ b/libs/js2py/host/jseval.py @@ -0,0 +1,51 @@ +from ..base import * +import inspect +try: + from js2py.translators.translator import translate_js +except: + pass + + +@Js +def Eval(code): + local_scope = inspect.stack()[3][0].f_locals['var'] + global_scope = this.GlobalObject + # todo fix scope - we have to behave differently if called through variable other than eval + # we will use local scope (default) + globals()['var'] = local_scope + try: + py_code = translate_js(code.to_string().value, '') + except SyntaxError as syn_err: + raise MakeError('SyntaxError', str(syn_err)) + lines = py_code.split('\n') + # a simple way to return value from eval. Will not work in complex cases. + has_return = False + for n in xrange(len(lines)): + line = lines[len(lines) - n - 1] + if line.strip(): + if line.startswith(' '): + break + elif line.strip() == 'pass': + continue + elif any( + line.startswith(e) + for e in ['return ', 'continue ', 'break', 'raise ']): + break + else: + has_return = True + cand = 'EVAL_RESULT = (%s)\n' % line + try: + compile(cand, '', 'exec') + except SyntaxError: + break + lines[len(lines) - n - 1] = cand + py_code = '\n'.join(lines) + break + #print py_code + executor(py_code) + if has_return: + return globals()['EVAL_RESULT'] + + +def executor(code): + exec (code, globals()) diff --git a/libs/js2py/host/jsfunctions.py b/libs/js2py/host/jsfunctions.py new file mode 100644 index 000000000..2360fee86 --- /dev/null +++ b/libs/js2py/host/jsfunctions.py @@ -0,0 +1,176 @@ +from ..base import * +from six.moves.urllib.parse import quote, unquote + +RADIX_CHARS = { + '1': 1, + '0': 0, + '3': 3, + '2': 2, + '5': 5, + '4': 4, + '7': 7, + '6': 6, + '9': 9, + '8': 8, + 'a': 10, + 'c': 12, + 'b': 11, + 'e': 14, + 'd': 13, + 'g': 16, + 'f': 15, + 'i': 18, + 'h': 17, + 'k': 20, + 'j': 19, + 'm': 22, + 'l': 21, + 'o': 24, + 'n': 23, + 'q': 26, + 'p': 25, + 's': 28, + 'r': 27, + 'u': 30, + 't': 29, + 'w': 32, + 'v': 31, + 'y': 34, + 'x': 33, + 'z': 35, + 'A': 10, + 'C': 12, + 'B': 11, + 'E': 14, + 'D': 13, + 'G': 16, + 'F': 15, + 'I': 18, + 'H': 17, + 'K': 20, + 'J': 19, + 'M': 22, + 'L': 21, + 'O': 24, + 'N': 23, + 'Q': 26, + 'P': 25, + 'S': 28, + 'R': 27, + 'U': 30, + 'T': 29, + 'W': 32, + 'V': 31, + 'Y': 34, + 'X': 33, + 'Z': 35 +} + + +@Js +def parseInt(string, radix): + string = string.to_string().value.lstrip() + sign = 1 + if string and string[0] in ('+', '-'): + if string[0] == '-': + sign = -1 + string = string[1:] + r = radix.to_int32() + strip_prefix = True + if r: + if r < 2 or r > 36: + return NaN + if r != 16: + strip_prefix = False + else: + r = 10 + if strip_prefix: + if len(string) >= 2 and string[:2] in ('0x', '0X'): + string = string[2:] + r = 16 + n = 0 + num = 0 + while n < len(string): + cand = RADIX_CHARS.get(string[n]) + if cand is None or not cand < r: + break + num = cand + num * r + n += 1 + if not n: + return NaN + return sign * num + + +@Js +def parseFloat(string): + string = string.to_string().value.strip() + sign = 1 + if string and string[0] in ('+', '-'): + if string[0] == '-': + sign = -1 + string = string[1:] + num = None + length = 1 + max_len = None + failed = 0 + while length <= len(string): + try: + num = float(string[:length]) + max_len = length + failed = 0 + except: + failed += 1 + if failed > 4: # cant be a number anymore + break + length += 1 + if num is None: + return NaN + return sign * float(string[:max_len]) + + +@Js +def isNaN(number): + if number.to_number().is_nan(): + return true + return false + + +@Js +def isFinite(number): + num = number.to_number() + if num.is_nan() or num.is_infinity(): + return false + return true + + +# todo test them properly + + +@Js +def escape(text): + return quote(text.to_string().value) + + +@Js +def unescape(text): + return unquote(text.to_string().value) + + +@Js +def encodeURI(text): + return quote(text.to_string().value, safe='~@#$&()*!+=:;,.?/\'') + + +@Js +def decodeURI(text): + return unquote(text.to_string().value) + + +@Js +def encodeURIComponent(text): + return quote(text.to_string().value, safe='~()*!.\'') + + +@Js +def decodeURIComponent(text): + return unquote(text.to_string().value) diff --git a/libs/js2py/internals/__init__.py b/libs/js2py/internals/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libs/js2py/internals/base.py b/libs/js2py/internals/base.py new file mode 100644 index 000000000..ec277c64d --- /dev/null +++ b/libs/js2py/internals/base.py @@ -0,0 +1,925 @@ +from __future__ import unicode_literals +import re + +import datetime + +from desc import * +from simplex import * +from conversions import * +import six +from pyjsparser import PyJsParser +from itertools import izip + +from conversions import * +from simplex import * + + +def Type(obj): + return obj.TYPE + + +# 8.6.2 +class PyJs(object): + TYPE = 'Object' + IS_CONSTRUCTOR = False + + prototype = None + Class = None + extensible = True + value = None + + own = {} + + def get_member(self, unconverted_prop): + return self.get(to_string(unconverted_prop)) + + def put_member(self, unconverted_prop, val): + return self.put(to_string(unconverted_prop), val) + + def get(self, prop): + assert type(prop) == unicode + cand = self.get_property(prop) + if cand is None: + return undefined + if is_data_descriptor(cand): + return cand['value'] + if is_undefined(cand['get']): + return undefined + return cand['get'].call(self) + + def get_own_property(self, prop): + assert type(prop) == unicode + # takes py returns py + return self.own.get(prop) + + def get_property(self, prop): + assert type(prop) == unicode + # take py returns py + cand = self.get_own_property(prop) + if cand: + return cand + if self.prototype is not None: + return self.prototype.get_property(prop) + + def put(self, prop, val, throw=False): + assert type(prop) == unicode + # takes py, returns none + if not self.can_put(prop): + if throw: + raise MakeError('TypeError', 'Could not define own property') + return + own_desc = self.get_own_property(prop) + if is_data_descriptor(own_desc): + self.own[prop]['value'] = val + return + desc = self.get_property(prop) + if is_accessor_descriptor(desc): + desc['set'].call( + self, (val, )) # calling setter on own or inherited element + else: # new property + self.own[prop] = { + 'value': val, + 'writable': True, + 'configurable': True, + 'enumerable': True + } + + def can_put(self, prop): # to check + assert type(prop) == unicode, type(prop) + # takes py returns py + desc = self.get_own_property(prop) + if desc: # if we have this property + if is_accessor_descriptor(desc): + return is_callable( + desc['set']) # Check if setter method is defined + else: # data desc + return desc['writable'] + if self.prototype is None: + return self.extensible + inherited = self.prototype.get_property(prop) + if inherited is None: + return self.extensible + if is_accessor_descriptor(inherited): + return not is_undefined(inherited['set']) + elif self.extensible: + return inherited['writable'] # weird... + return False + + def has_property(self, prop): + assert type(prop) == unicode + # takes py returns Py + return self.get_property(prop) is not None + + def delete(self, prop, throw=False): + assert type(prop) == unicode + # takes py, returns py + desc = self.get_own_property(prop) + if desc is None: + return True + if desc['configurable']: + del self.own[prop] + return True + if throw: + raise MakeError('TypeError', 'Could not define own property') + return False + + def default_value(self, hint=None): + order = ('valueOf', 'toString') + if hint == 'String' or (hint is None and self.Class == 'Date'): + order = ('toString', 'valueOf') + for meth_name in order: + method = self.get(meth_name) + if method is not None and is_callable(method): + cand = method.call(self, ()) + if is_primitive(cand): + return cand + raise MakeError('TypeError', + 'Cannot convert object to primitive value') + + def define_own_property( + self, prop, desc, + throw): # Internal use only. External through Object + assert type(prop) == unicode + # takes Py, returns Py + # prop must be a Py string. Desc is either a descriptor or accessor. + # Messy method - raw translation from Ecma spec to prevent any bugs. # todo check this + current = self.get_own_property(prop) + + extensible = self.extensible + if not current: # We are creating a new OWN property + if not extensible: + if throw: + raise MakeError('TypeError', + 'Could not define own property') + return False + # extensible must be True + if is_data_descriptor(desc) or is_generic_descriptor(desc): + DEFAULT_DATA_DESC = { + 'value': undefined, # undefined + 'writable': False, + 'enumerable': False, + 'configurable': False + } + DEFAULT_DATA_DESC.update(desc) + self.own[prop] = DEFAULT_DATA_DESC + else: + DEFAULT_ACCESSOR_DESC = { + 'get': undefined, # undefined + 'set': undefined, # undefined + 'enumerable': False, + 'configurable': False + } + DEFAULT_ACCESSOR_DESC.update(desc) + self.own[prop] = DEFAULT_ACCESSOR_DESC + return True + # therefore current exists! + if not desc or desc == current: # We don't need to change anything. + return True + configurable = current['configurable'] + if not configurable: # Prevent changing params + if desc.get('configurable'): + if throw: + raise MakeError('TypeError', + 'Could not define own property') + return False + if 'enumerable' in desc and desc['enumerable'] != current[ + 'enumerable']: + if throw: + raise MakeError('TypeError', + 'Could not define own property') + return False + if is_generic_descriptor(desc): + pass + elif is_data_descriptor(current) != is_data_descriptor(desc): + # we want to change the current type of property + if not configurable: + if throw: + raise MakeError('TypeError', + 'Could not define own property') + return False + if is_data_descriptor(current): # from data to setter + del current['value'] + del current['writable'] + current['set'] = undefined # undefined + current['get'] = undefined # undefined + else: # from setter to data + del current['set'] + del current['get'] + current['value'] = undefined # undefined + current['writable'] = False + elif is_data_descriptor(current) and is_data_descriptor(desc): + if not configurable: + if not current['writable'] and desc.get('writable'): + if throw: + raise MakeError('TypeError', + 'Could not define own property') + return False + if not current['writable'] and 'value' in desc and current[ + 'value'] != desc['value']: + if throw: + raise MakeError('TypeError', + 'Could not define own property') + return False + elif is_accessor_descriptor(current) and is_accessor_descriptor(desc): + if not configurable: + if 'set' in desc and desc['set'] != current['set']: + if throw: + raise MakeError('TypeError', + 'Could not define own property') + return False + if 'get' in desc and desc['get'] != current['get']: + if throw: + raise MakeError('TypeError', + 'Could not define own property') + return False + current.update(desc) + return True + + def create(self, args, space): + '''Generally not a constructor, raise an error''' + raise MakeError('TypeError', '%s is not a constructor' % self.Class) + + +def get_member( + self, prop, space +): # general member getter, prop has to be unconverted prop. it is it can be any value + typ = type(self) + if typ not in PRIMITIVES: # most likely getter for object + return self.get_member( + prop + ) # <- object can implement this to support faster prop getting. ex array. + elif typ == unicode: # then probably a String + if type(prop) == float and is_finite(prop): + index = int(prop) + if index == prop and 0 <= index < len(self): + return self[index] + s_prop = to_string(prop) + if s_prop == 'length': + return float(len(self)) + elif s_prop.isdigit(): + index = int(s_prop) + if 0 <= index < len(self): + return self[index] + # use standard string prototype + return space.StringPrototype.get(s_prop) + # maybe an index + elif typ == float: + # use standard number prototype + return space.NumberPrototype.get(to_string(prop)) + elif typ == bool: + return space.BooleanPrototype.get(to_string(prop)) + elif typ is UNDEFINED_TYPE: + raise MakeError('TypeError', + "Cannot read property '%s' of undefined" % prop) + elif typ is NULL_TYPE: + raise MakeError('TypeError', + "Cannot read property '%s' of null" % prop) + else: + raise RuntimeError('Unknown type! - ' + repr(typ)) + + +def get_member_dot(self, prop, space): + # dot member getter, prop has to be unicode + typ = type(self) + if typ not in PRIMITIVES: # most likely getter for object + return self.get(prop) + elif typ == unicode: # then probably a String + if prop == 'length': + return float(len(self)) + elif prop.isdigit(): + index = int(prop) + if 0 <= index < len(self): + return self[index] + else: + # use standard string prototype + return space.StringPrototype.get(prop) + # maybe an index + elif typ == float: + # use standard number prototype + return space.NumberPrototype.get(prop) + elif typ == bool: + return space.BooleanPrototype.get(prop) + elif typ in (UNDEFINED_TYPE, NULL_TYPE): + raise MakeError('TypeError', + "Cannot read property '%s' of undefined" % prop) + else: + raise RuntimeError('Unknown type! - ' + repr(typ)) + + +# Object + + +class PyJsObject(PyJs): + TYPE = 'Object' + Class = 'Object' + + def __init__(self, prototype=None): + self.prototype = prototype + self.own = {} + + def _init(self, props, vals): + i = 0 + for prop, kind in props: + if prop in self.own: # just check... probably will not happen very often. + if is_data_descriptor(self.own[prop]): + if kind != 'i': + raise MakeError( + 'SyntaxError', + 'Invalid object initializer! Duplicate property name "%s"' + % prop) + else: + if kind == 'i' or (kind == 'g' and 'get' in self.own[prop] + ) or (kind == 's' + and 'set' in self.own[prop]): + raise MakeError( + 'SyntaxError', + 'Invalid object initializer! Duplicate setter/getter of prop: "%s"' + % prop) + + if kind == 'i': # init + self.own[prop] = { + 'value': vals[i], + 'writable': True, + 'enumerable': True, + 'configurable': True + } + elif kind == 'g': # get + self.define_own_property(prop, { + 'get': vals[i], + 'enumerable': True, + 'configurable': True + }, False) + elif kind == 's': # get + self.define_own_property(prop, { + 'get': vals[i], + 'enumerable': True, + 'configurable': True + }, False) + else: + raise RuntimeError( + 'Invalid property kind - %s. Expected one of i, g, s.' % + repr(kind)) + i += 1 + + def _set_props(self, prop_descs): + for prop, desc in six.iteritems(prop_descs): + self.define_own_property(prop, desc) + + +# Array + + +# todo Optimise Array - extremely slow due to index conversions from str to int and back etc. +# solution - make get and put methods callable with any type of prop and handle conversions from inside +# if not array then use to_string(prop). In array if prop is integer then just use it +# also consider removal of these stupid writable, enumerable etc for ints. +class PyJsArray(PyJs): + Class = 'Array' + + def __init__(self, length, prototype=None): + self.prototype = prototype + self.own = { + 'length': { + 'value': float(length), + 'writable': True, + 'enumerable': False, + 'configurable': False + } + } + + def _init(self, elements): + for i, ele in enumerate(elements): + if ele is None: continue + self.own[unicode(i)] = { + 'value': ele, + 'writable': True, + 'enumerable': True, + 'configurable': True + } + + def put(self, prop, val, throw=False): + assert type(val) != int + # takes py, returns none + if not self.can_put(prop): + if throw: + raise MakeError('TypeError', 'Could not define own property') + return + own_desc = self.get_own_property(prop) + if is_data_descriptor(own_desc): + self.define_own_property(prop, {'value': val}, False) + return + desc = self.get_property(prop) + if is_accessor_descriptor(desc): + desc['set'].call( + self, (val, )) # calling setter on own or inherited element + else: # new property + self.define_own_property( + prop, { + 'value': val, + 'writable': True, + 'configurable': True, + 'enumerable': True + }, False) + + def define_own_property(self, prop, desc, throw): + assert type(desc.get('value')) != int + old_len_desc = self.get_own_property('length') + old_len = old_len_desc['value'] # value is js type so convert to py. + if prop == 'length': + if 'value' not in desc: + return PyJs.define_own_property(self, prop, desc, False) + new_len = to_uint32(desc['value']) + if new_len != to_number(desc['value']): + raise MakeError('RangeError', 'Invalid range!') + new_desc = dict((k, v) for k, v in six.iteritems(desc)) + new_desc['value'] = float(new_len) + if new_len >= old_len: + return PyJs.define_own_property(self, prop, new_desc, False) + if not old_len_desc['writable']: + return False + if 'writable' not in new_desc or new_desc['writable'] == True: + new_writable = True + else: + new_writable = False + new_desc['writable'] = True + if not PyJs.define_own_property(self, prop, new_desc, False): + return False + if new_len < old_len: + # not very efficient for sparse arrays, so using different method for sparse: + if old_len > 30 * len(self.own): + for ele in self.own.keys(): + if ele.isdigit() and int(ele) >= new_len: + if not self.delete( + ele + ): # if failed to delete set len to current len and reject. + new_desc['value'] = old_len + 1. + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property( + self, prop, new_desc, False) + return False + old_len = new_len + else: # standard method + while new_len < old_len: + old_len -= 1 + if not self.delete( + unicode(int(old_len)) + ): # if failed to delete set len to current len and reject. + new_desc['value'] = old_len + 1. + if not new_writable: + new_desc['writable'] = False + PyJs.define_own_property(self, prop, new_desc, + False) + return False + if not new_writable: + self.own['length']['writable'] = False + return True + + elif prop.isdigit(): + index = to_uint32(prop) + if index >= old_len and not old_len_desc['writable']: + return False + if not PyJs.define_own_property(self, prop, desc, False): + return False + if index >= old_len: + old_len_desc['value'] = index + 1. + return True + else: + return PyJs.define_own_property(self, prop, desc, False) + + def to_list(self): + return [ + self.get(str(e)) for e in xrange(self.get('length').to_uint32()) + ] + + +# database with compiled patterns. Js pattern -> Py pattern. +REGEXP_DB = {} + + +class PyJsRegExp(PyJs): + Class = 'RegExp' + + def __init__(self, body, flags, prototype=None): + self.prototype = prototype + self.glob = True if 'g' in flags else False + self.ignore_case = re.IGNORECASE if 'i' in flags else 0 + self.multiline = re.MULTILINE if 'm' in flags else 0 + self.value = body + + if (body, flags) in REGEXP_DB: + self.pat = REGEXP_DB[body, flags] + else: + comp = None + try: + # converting JS regexp pattern to Py pattern. + possible_fixes = [(u'[]', u'[\0]'), (u'[^]', u'[^\0]'), + (u'nofix1791', u'nofix1791')] + reg = self.value + for fix, rep in possible_fixes: + comp = PyJsParser()._interpret_regexp(reg, flags) + #print 'reg -> comp', reg, '->', comp + try: + self.pat = re.compile( + comp, self.ignore_case | self.multiline) + #print reg, '->', comp + break + except: + reg = reg.replace(fix, rep) + # print 'Fix', fix, '->', rep, '=', reg + else: + raise Exception() + REGEXP_DB[body, flags] = self.pat + except: + #print 'Invalid pattern...', self.value, comp + raise MakeError( + 'SyntaxError', + 'Invalid RegExp pattern: %s -> %s' % (repr(self.value), + repr(comp))) + # now set own properties: + self.own = { + 'source': { + 'value': self.value, + 'enumerable': False, + 'writable': False, + 'configurable': False + }, + 'global': { + 'value': self.glob, + 'enumerable': False, + 'writable': False, + 'configurable': False + }, + 'ignoreCase': { + 'value': bool(self.ignore_case), + 'enumerable': False, + 'writable': False, + 'configurable': False + }, + 'multiline': { + 'value': bool(self.multiline), + 'enumerable': False, + 'writable': False, + 'configurable': False + }, + 'lastIndex': { + 'value': 0., + 'enumerable': False, + 'writable': True, + 'configurable': False + } + } + + def match(self, string, pos): + '''string is of course a py string''' + return self.pat.match(string, int(pos)) + + +class PyJsError(PyJs): + Class = 'Error' + extensible = True + + def __init__(self, message=None, prototype=None): + self.prototype = prototype + self.own = {} + if message is not None: + self.put('message', to_string(message)) + self.own['message']['enumerable'] = False + + +class PyJsDate(PyJs): + Class = 'Date' + UTCToLocal = None # todo UTC to local should be imported! + + def __init__(self, value, prototype=None): + self.value = value + self.own = {} + self.prototype = prototype + + # todo fix this problematic datetime part + def to_local_dt(self): + return datetime.datetime.utcfromtimestamp( + self.UTCToLocal(self.value) // 1000) + + def to_utc_dt(self): + return datetime.datetime.utcfromtimestamp(self.value // 1000) + + def local_strftime(self, pattern): + if self.value is NaN: + return 'Invalid Date' + try: + dt = self.to_local_dt() + except: + raise MakeError( + 'TypeError', + 'unsupported date range. Will fix in future versions') + try: + return dt.strftime(pattern) + except: + raise MakeError( + 'TypeError', + 'Could not generate date string from this date (limitations of python.datetime)' + ) + + def utc_strftime(self, pattern): + if self.value is NaN: + return 'Invalid Date' + try: + dt = self.to_utc_dt() + except: + raise MakeError( + 'TypeError', + 'unsupported date range. Will fix in future versions') + try: + return dt.strftime(pattern) + except: + raise MakeError( + 'TypeError', + 'Could not generate date string from this date (limitations of python.datetime)' + ) + + +# Scope class it will hold all the variables accessible to user +class Scope(PyJs): + Class = 'Global' + extensible = True + IS_CHILD_SCOPE = True + THIS_BINDING = None + space = None + exe = None + + # todo speed up! + # in order to speed up this very important class the top scope should behave differently than + # child scopes, child scope should not have this property descriptor thing because they cant be changed anyway + # they are all confugurable= False + + def __init__(self, scope, space, parent=None): + """Doc""" + self.space = space + self.prototype = parent + if type(scope) is not dict: + assert parent is not None, 'You initialised the WITH_SCOPE without a parent scope.' + self.own = scope + self.is_with_scope = True + else: + self.is_with_scope = False + if parent is None: + # global, top level scope + self.own = {} + for k, v in six.iteritems(scope): + # set all the global items + self.define_own_property( + k, { + 'value': v, + 'configurable': False, + 'writable': False, + 'enumerable': False + }, False) + else: + # not global, less powerful but faster closure. + self.own = scope # simple dictionary which maps name directly to js object. + + self.par = super(Scope, self) + self.stack = [] + + def register(self, var): + # registered keeps only global registered variables + if self.prototype is None: + # define in global scope + if var in self.own: + self.own[var]['configurable'] = False + else: + self.define_own_property( + var, { + 'value': undefined, + 'configurable': False, + 'writable': True, + 'enumerable': True + }, False) + elif var not in self.own: + # define in local scope since it has not been defined yet + self.own[var] = undefined # default value + + def registers(self, vars): + """register multiple variables""" + for var in vars: + self.register(var) + + def put(self, var, val, throw=False): + if self.prototype is None: + desc = self.own.get(var) # global scope + if desc is None: + self.par.put(var, val, False) + else: + if desc['writable']: # todo consider getters/setters + desc['value'] = val + else: + if self.is_with_scope: + if self.own.has_property(var): + return self.own.put(var, val, throw=throw) + else: + return self.prototype.put(var, val) + # trying to put in local scope + # we dont know yet in which scope we should place this var + elif var in self.own: + self.own[var] = val + return val + else: + # try to put in the lower scope since we cant put in this one (var wasn't registered) + return self.prototype.put(var, val) + + def get(self, var, throw=False): + if self.prototype is not None: + if self.is_with_scope: + cand = None if not self.own.has_property( + var) else self.own.get(var) + else: + # fast local scope + cand = self.own.get(var) + if cand is None: + return self.prototype.get(var, throw) + return cand + # slow, global scope + if var not in self.own: + # try in ObjectPrototype... + if var in self.space.ObjectPrototype.own: + return self.space.ObjectPrototype.get(var) + if throw: + raise MakeError('ReferenceError', '%s is not defined' % var) + return undefined + cand = self.own[var].get('value') + return cand if cand is not None else self.own[var]['get'].call(self) + + def delete(self, var, throw=False): + if self.prototype is not None: + if self.is_with_scope: + if self.own.has_property(var): + return self.own.delete(var) + elif var in self.own: + return False + return self.prototype.delete(var) + # we are in global scope here. Must exist and be configurable to delete + if var not in self.own: + # this var does not exist, why do you want to delete it??? + return True + if self.own[var]['configurable']: + del self.own[var] + return True + # not configurable, cant delete + return False + + +def get_new_arguments_obj(args, space): + obj = space.NewObject() + obj.Class = 'Arguments' + obj.define_own_property( + 'length', { + 'value': float(len(args)), + 'writable': True, + 'enumerable': False, + 'configurable': True + }, False) + for i, e in enumerate(args): + obj.put(unicode(i), e) + return obj + + +#Function +class PyJsFunction(PyJs): + Class = 'Function' + source = '{ [native code] }' + IS_CONSTRUCTOR = True + + def __init__(self, + code, + ctx, + params, + name, + space, + is_declaration, + definitions, + prototype=None): + self.prototype = prototype + self.own = {} + + self.code = code + if type( + self.code + ) == int: # just a label pointing to the beginning of the code. + self.is_native = False + else: + self.is_native = True # python function + + self.ctx = ctx + + self.params = params + self.arguments_in_params = 'arguments' in params + self.definitions = definitions + + # todo remove this check later + for p in params: + assert p in self.definitions + + self.name = name + self.space = space + self.is_declaration = is_declaration + + #set own property length to the number of arguments + self.own['length'] = { + 'value': float(len(params)), + 'writable': False, + 'enumerable': False, + 'configurable': False + } + + if name: + self.own['name'] = { + 'value': name, + 'writable': False, + 'enumerable': False, + 'configurable': True + } + + if not self.is_native: # set prototype for user defined functions + # constructor points to this function + proto = space.NewObject() + proto.own['constructor'] = { + 'value': self, + 'writable': True, + 'enumerable': False, + 'configurable': True + } + self.own['prototype'] = { + 'value': proto, + 'writable': True, + 'enumerable': False, + 'configurable': False + } + # todo set up throwers on callee and arguments if in strict mode + + def call(self, this, args=()): + ''' Dont use this method from inside bytecode to call other bytecode. ''' + if self.is_native: + _args = SpaceTuple( + args + ) # we have to do that unfortunately to pass all the necessary info to the funcs + _args.space = self.space + return self.code( + this, _args + ) # must return valid js object - undefined, null, float, unicode, bool, or PyJs + else: + return self.space.exe._call(self, this, + args) # will run inside bytecode + + def has_instance(self, other): + # I am not sure here so instanceof may not work lol. + if not is_object(other): + return False + proto = self.get('prototype') + if not is_object(proto): + raise MakeError( + 'TypeError', + 'Function has non-object prototype in instanceof check') + while True: + other = other.prototype + if not other: # todo make sure that the condition is not None or null + return False + if other is proto: + return True + + def create(self, args, space): + proto = self.get('prototype') + if not is_object(proto): + proto = space.ObjectPrototype + new = PyJsObject(prototype=proto) + res = self.call(new, args) + if is_object(res): + return res + return new + + def _generate_my_context(self, this, args): + my_ctx = Scope( + dict(izip(self.params, args)), self.space, parent=self.ctx) + my_ctx.registers(self.definitions) + my_ctx.THIS_BINDING = this + if not self.arguments_in_params: + my_ctx.own['arguments'] = get_new_arguments_obj(args, self.space) + if not self.is_declaration and self.name and self.name not in my_ctx.own: + my_ctx.own[ + self. + name] = self # this should be immutable binding but come on! + return my_ctx + + +class SpaceTuple: + def __init__(self, tup): + self.tup = tup + + def __len__(self): + return len(self.tup) + + def __getitem__(self, item): + return self.tup[item] + + def __iter__(self): + return iter(self.tup) diff --git a/libs/js2py/internals/byte_trans.py b/libs/js2py/internals/byte_trans.py new file mode 100644 index 000000000..87fab4b4e --- /dev/null +++ b/libs/js2py/internals/byte_trans.py @@ -0,0 +1,752 @@ +from code import Code +from simplex import MakeError +from opcodes import * +from operations import * +from trans_utils import * + +SPECIAL_IDENTIFIERS = {'true', 'false', 'this'} + + +class ByteCodeGenerator: + def __init__(self, exe): + self.exe = exe + + self.declared_continue_labels = {} + self.declared_break_labels = {} + + self.implicit_breaks = [] + self.implicit_continues = [] + + self.declared_vars = [] + + self.function_declaration_tape = [] + + self.states = [] + + def record_state(self): + self.states.append( + (self.declared_continue_labels, self.declared_break_labels, + self.implicit_breaks, self.implicit_continues, self.declared_vars, + self.function_declaration_tape)) + self.declared_continue_labels, self.declared_break_labels, \ + self.implicit_breaks, self.implicit_continues, \ + self.declared_vars, self.function_declaration_tape = {}, {}, [], [], [], [] + + def restore_state(self): + self.declared_continue_labels, self.declared_break_labels, \ + self.implicit_breaks, self.implicit_continues, \ + self.declared_vars, self.function_declaration_tape = self.states.pop() + + def ArrayExpression(self, elements, **kwargs): + for e in elements: + if e is None: + self.emit('LOAD_NONE') + else: + self.emit(e) + self.emit('LOAD_ARRAY', len(elements)) + + def AssignmentExpression(self, operator, left, right, **kwargs): + operator = operator[:-1] + if left['type'] == 'MemberExpression': + self.emit(left['object']) + if left['computed']: + self.emit(left['property']) + self.emit(right) + if operator: + self.emit('STORE_MEMBER_OP', operator) + else: + self.emit('STORE_MEMBER') + else: + self.emit(right) + if operator: + self.emit('STORE_MEMBER_DOT_OP', left['property']['name'], + operator) + else: + self.emit('STORE_MEMBER_DOT', left['property']['name']) + elif left['type'] == 'Identifier': + if left['name'] in SPECIAL_IDENTIFIERS: + raise MakeError('SyntaxError', + 'Invalid left-hand side in assignment') + self.emit(right) + if operator: + self.emit('STORE_OP', left['name'], operator) + else: + self.emit('STORE', left['name']) + else: + raise MakeError('SyntaxError', + 'Invalid left-hand side in assignment') + + def BinaryExpression(self, operator, left, right, **kwargs): + self.emit(left) + self.emit(right) + self.emit('BINARY_OP', operator) + + def BlockStatement(self, body, **kwargs): + self._emit_statement_list(body) + + def BreakStatement(self, label, **kwargs): + if label is None: + self.emit('JUMP', self.implicit_breaks[-1]) + else: + label = label.get('name') + if label not in self.declared_break_labels: + raise MakeError('SyntaxError', + 'Undefined label \'%s\'' % label) + else: + self.emit('JUMP', self.declared_break_labels[label]) + + def CallExpression(self, callee, arguments, **kwargs): + if callee['type'] == 'MemberExpression': + self.emit(callee['object']) + if callee['computed']: + self.emit(callee['property']) + if arguments: + for e in arguments: + self.emit(e) + self.emit('LOAD_N_TUPLE', len(arguments)) + self.emit('CALL_METHOD') + else: + self.emit('CALL_METHOD_NO_ARGS') + else: + prop_name = to_key(callee['property']) + if arguments: + for e in arguments: + self.emit(e) + self.emit('LOAD_N_TUPLE', len(arguments)) + self.emit('CALL_METHOD_DOT', prop_name) + else: + self.emit('CALL_METHOD_DOT_NO_ARGS', prop_name) + else: + self.emit(callee) + if arguments: + for e in arguments: + self.emit(e) + self.emit('LOAD_N_TUPLE', len(arguments)) + self.emit('CALL') + else: + self.emit('CALL_NO_ARGS') + + def ClassBody(self, body, **kwargs): + raise NotImplementedError('Not available in ECMA 5.1') + + def ClassDeclaration(self, id, superClass, body, **kwargs): + raise NotImplementedError('Not available in ECMA 5.1') + + def ClassExpression(self, id, superClass, body, **kwargs): + raise NotImplementedError('Classes not available in ECMA 5.1') + + def ConditionalExpression(self, test, consequent, alternate, **kwargs): + alt = self.exe.get_new_label() + end = self.exe.get_new_label() + # ? + self.emit(test) + self.emit('JUMP_IF_FALSE', alt) + # first val + self.emit(consequent) + self.emit('JUMP', end) + # second val + self.emit('LABEL', alt) + self.emit(alternate) + # end of ?: statement + self.emit('LABEL', end) + + def ContinueStatement(self, label, **kwargs): + if label is None: + self.emit('JUMP', self.implicit_continues[-1]) + else: + label = label.get('name') + if label not in self.declared_continue_labels: + raise MakeError('SyntaxError', + 'Undefined label \'%s\'' % label) + else: + self.emit('JUMP', self.declared_continue_labels[label]) + + def DebuggerStatement(self, **kwargs): + self.EmptyStatement(**kwargs) + + def DoWhileStatement(self, body, test, **kwargs): + continue_label = self.exe.get_new_label() + break_label = self.exe.get_new_label() + initial_do = self.exe.get_new_label() + + self.emit('JUMP', initial_do) + self.emit('LABEL', continue_label) + self.emit(test) + self.emit('JUMP_IF_FALSE', break_label) + self.emit('LABEL', initial_do) + + # translate the body, remember to add and afterwards remove implicit break/continue labels + + self.implicit_continues.append(continue_label) + self.implicit_breaks.append(break_label) + self.emit(body) + self.implicit_continues.pop() + self.implicit_breaks.pop() + + self.emit('JUMP', continue_label) # loop back + self.emit('LABEL', break_label) + + def EmptyStatement(self, **kwargs): + # do nothing + pass + + def ExpressionStatement(self, expression, **kwargs): + # change the final stack value + # pop the previous value and execute expression + self.emit('POP') + self.emit(expression) + + def ForStatement(self, init, test, update, body, **kwargs): + continue_label = self.exe.get_new_label() + break_label = self.exe.get_new_label() + first_start = self.exe.get_new_label() + + if init is not None: + self.emit(init) + if init['type'] != 'VariableDeclaration': + self.emit('POP') + + # skip first update and go straight to test + self.emit('JUMP', first_start) + + self.emit('LABEL', continue_label) + if update: + self.emit(update) + self.emit('POP') + self.emit('LABEL', first_start) + if test: + self.emit(test) + self.emit('JUMP_IF_FALSE', break_label) + + # translate the body, remember to add and afterwards to remove implicit break/continue labels + + self.implicit_continues.append(continue_label) + self.implicit_breaks.append(break_label) + self.emit(body) + self.implicit_continues.pop() + self.implicit_breaks.pop() + + self.emit('JUMP', continue_label) # loop back + self.emit('LABEL', break_label) + + def ForInStatement(self, left, right, body, **kwargs): + # prepare the needed labels + body_start_label = self.exe.get_new_label() + continue_label = self.exe.get_new_label() + break_label = self.exe.get_new_label() + + # prepare the name + if left['type'] == 'VariableDeclaration': + if len(left['declarations']) != 1: + raise MakeError( + 'SyntaxError', + ' Invalid left-hand side in for-in loop: Must have a single binding.' + ) + self.emit(left) + name = left['declarations'][0]['id']['name'] + elif left['type'] == 'Identifier': + name = left['name'] + else: + raise MakeError('SyntaxError', + 'Invalid left-hand side in for-loop') + + # prepare the iterable + self.emit(right) + + # emit ForIn Opcode + self.emit('FOR_IN', name, body_start_label, continue_label, + break_label) + + # a special continue position + self.emit('LABEL', continue_label) + self.emit('NOP') + + self.emit('LABEL', body_start_label) + self.implicit_continues.append(continue_label) + self.implicit_breaks.append(break_label) + self.emit('LOAD_UNDEFINED') + self.emit(body) + self.implicit_continues.pop() + self.implicit_breaks.pop() + self.emit('NOP') + self.emit('LABEL', break_label) + self.emit('NOP') + + def FunctionDeclaration(self, id, params, defaults, body, **kwargs): + if defaults: + raise NotImplementedError('Defaults not available in ECMA 5.1') + + # compile function + self.record_state( + ) # cleans translator state and appends it to the stack so that it can be later restored + function_start = self.exe.get_new_label() + function_declarations = self.exe.get_new_label() + declarations_done = self.exe.get_new_label( + ) # put jump to this place at the and of function tape! + function_end = self.exe.get_new_label() + + # skip the function if encountered externally + self.emit('JUMP', function_end) + + self.emit('LABEL', function_start) + # call is made with empty stack so load undefined to fill it + self.emit('LOAD_UNDEFINED') + # declare all functions + self.emit('JUMP', function_declarations) + self.emit('LABEL', declarations_done) + self.function_declaration_tape.append(LABEL(function_declarations)) + + self.emit(body) + self.ReturnStatement(None) + + self.function_declaration_tape.append(JUMP(declarations_done)) + self.exe.tape.extend(self.function_declaration_tape) + + self.emit('LABEL', function_end) + declared_vars = self.declared_vars + self.restore_state() + + # create function object and append to stack + name = id.get('name') + assert name is not None + self.declared_vars.append(name) + self.function_declaration_tape.append( + LOAD_FUNCTION(function_start, tuple(p['name'] for p in params), + name, True, tuple(declared_vars))) + self.function_declaration_tape.append(STORE(name)) + self.function_declaration_tape.append(POP()) + + def FunctionExpression(self, id, params, defaults, body, **kwargs): + if defaults: + raise NotImplementedError('Defaults not available in ECMA 5.1') + + # compile function + self.record_state( + ) # cleans translator state and appends it to the stack so that it can be later restored + function_start = self.exe.get_new_label() + function_declarations = self.exe.get_new_label() + declarations_done = self.exe.get_new_label( + ) # put jump to this place at the and of function tape! + function_end = self.exe.get_new_label() + + # skip the function if encountered externally + self.emit('JUMP', function_end) + + self.emit('LABEL', function_start) + # call is made with empty stack so load undefined to fill it + self.emit('LOAD_UNDEFINED') + # declare all functions + self.emit('JUMP', function_declarations) + self.emit('LABEL', declarations_done) + self.function_declaration_tape.append(LABEL(function_declarations)) + + self.emit(body) + self.ReturnStatement(None) + + self.function_declaration_tape.append(JUMP(declarations_done)) + self.exe.tape.extend(self.function_declaration_tape) + + self.emit('LABEL', function_end) + declared_vars = self.declared_vars + self.restore_state() + + # create function object and append to stack + name = id.get('name') if id else None + self.emit('LOAD_FUNCTION', function_start, + tuple(p['name'] for p in params), name, False, + tuple(declared_vars)) + + def Identifier(self, name, **kwargs): + if name == 'true': + self.emit('LOAD_BOOLEAN', 1) + elif name == 'false': + self.emit('LOAD_BOOLEAN', 0) + elif name == 'undefined': + self.emit('LOAD_UNDEFINED') + else: + self.emit('LOAD', name) + + def IfStatement(self, test, consequent, alternate, **kwargs): + alt = self.exe.get_new_label() + end = self.exe.get_new_label() + # if + self.emit(test) + self.emit('JUMP_IF_FALSE', alt) + # consequent + self.emit(consequent) + self.emit('JUMP', end) + # alternate + self.emit('LABEL', alt) + if alternate is not None: + self.emit(alternate) + # end of if statement + self.emit('LABEL', end) + + def LabeledStatement(self, label, body, **kwargs): + label = label['name'] + if body['type'] in ('WhileStatement', 'DoWhileStatement', + 'ForStatement', 'ForInStatement'): + # Continue label available... Simply take labels defined by the loop. + # It is important that they request continue label first + self.declared_continue_labels[label] = self.exe._label_count + 1 + self.declared_break_labels[label] = self.exe._label_count + 2 + self.emit(body) + del self.declared_break_labels[label] + del self.declared_continue_labels[label] + else: + # only break label available + lbl = self.exe.get_new_label() + self.declared_break_labels[label] = lbl + self.emit(body) + self.emit('LABEL', lbl) + del self.declared_break_labels[label] + + def Literal(self, value, **kwargs): + if value is None: + self.emit('LOAD_NULL') + elif isinstance(value, bool): + self.emit('LOAD_BOOLEAN', int(value)) + elif isinstance(value, basestring): + self.emit('LOAD_STRING', unicode(value)) + elif isinstance(value, (float, int, long)): + self.emit('LOAD_NUMBER', float(value)) + elif isinstance(value, tuple): + self.emit('LOAD_REGEXP', *value) + else: + raise RuntimeError('Unsupported literal') + + def LogicalExpression(self, left, right, operator, **kwargs): + end = self.exe.get_new_label() + if operator == '&&': + # AND + self.emit(left) + self.emit('JUMP_IF_FALSE_WITHOUT_POP', end) + self.emit('POP') + self.emit(right) + self.emit('LABEL', end) + elif operator == '||': + # OR + self.emit(left) + self.emit('JUMP_IF_TRUE_WITHOUT_POP', end) + self.emit('POP') + self.emit(right) + self.emit('LABEL', end) + else: + raise RuntimeError("Unknown logical expression: %s" % operator) + + def MemberExpression(self, computed, object, property, **kwargs): + if computed: + self.emit(object) + self.emit(property) + self.emit('LOAD_MEMBER') + else: + self.emit(object) + self.emit('LOAD_MEMBER_DOT', property['name']) + + def NewExpression(self, callee, arguments, **kwargs): + self.emit(callee) + if arguments: + n = len(arguments) + for e in arguments: + self.emit(e) + self.emit('LOAD_N_TUPLE', n) + self.emit('NEW') + else: + self.emit('NEW_NO_ARGS') + + def ObjectExpression(self, properties, **kwargs): + data = [] + for prop in properties: + self.emit(prop['value']) + if prop['computed']: + raise NotImplementedError( + 'ECMA 5.1 does not support computed object properties!') + data.append((to_key(prop['key']), prop['kind'][0])) + self.emit('LOAD_OBJECT', tuple(data)) + + def Program(self, body, **kwargs): + self.emit('LOAD_UNDEFINED') + self.emit(body) + # add function tape ! + self.exe.tape = self.function_declaration_tape + self.exe.tape + + def Pyimport(self, imp, **kwargs): + raise NotImplementedError( + 'Not available for bytecode interpreter yet, use the Js2Py translator.' + ) + + def Property(self, kind, key, computed, value, method, shorthand, + **kwargs): + raise NotImplementedError('Not available in ECMA 5.1') + + def RestElement(self, argument, **kwargs): + raise NotImplementedError('Not available in ECMA 5.1') + + def ReturnStatement(self, argument, **kwargs): + self.emit('POP') # pop result of expression statements + if argument is None: + self.emit('LOAD_UNDEFINED') + else: + self.emit(argument) + self.emit('RETURN') + + def SequenceExpression(self, expressions, **kwargs): + for e in expressions: + self.emit(e) + self.emit('POP') + del self.exe.tape[-1] + + def SwitchCase(self, test, consequent, **kwargs): + raise NotImplementedError('Already implemented in SwitchStatement') + + def SwitchStatement(self, discriminant, cases, **kwargs): + self.emit(discriminant) + labels = [self.exe.get_new_label() for case in cases] + tests = [case['test'] for case in cases] + consequents = [case['consequent'] for case in cases] + end_of_switch = self.exe.get_new_label() + + # translate test cases + for test, label in zip(tests, labels): + if test is not None: + self.emit(test) + self.emit('JUMP_IF_EQ', label) + else: + self.emit('POP') + self.emit('JUMP', label) + # this will be executed if none of the cases worked + self.emit('POP') + self.emit('JUMP', end_of_switch) + + # translate consequents + self.implicit_breaks.append(end_of_switch) + for consequent, label in zip(consequents, labels): + self.emit('LABEL', label) + self._emit_statement_list(consequent) + self.implicit_breaks.pop() + + self.emit('LABEL', end_of_switch) + + def ThisExpression(self, **kwargs): + self.emit('LOAD_THIS') + + def ThrowStatement(self, argument, **kwargs): + # throw with the empty stack + self.emit('POP') + self.emit(argument) + self.emit('THROW') + + def TryStatement(self, block, handler, finalizer, **kwargs): + try_label = self.exe.get_new_label() + catch_label = self.exe.get_new_label() + finally_label = self.exe.get_new_label() + end_label = self.exe.get_new_label() + + self.emit('JUMP', end_label) + + # try block + self.emit('LABEL', try_label) + self.emit('LOAD_UNDEFINED') + self.emit(block) + self.emit( + 'NOP' + ) # needed to distinguish from break/continue vs some internal jumps + + # catch block + self.emit('LABEL', catch_label) + self.emit('LOAD_UNDEFINED') + if handler: + self.emit(handler['body']) + self.emit('NOP') + + # finally block + self.emit('LABEL', finally_label) + self.emit('LOAD_UNDEFINED') + if finalizer: + self.emit(finalizer) + self.emit('NOP') + + self.emit('LABEL', end_label) + + # give life to the code + self.emit('TRY_CATCH_FINALLY', try_label, catch_label, + handler['param']['name'] if handler else None, finally_label, + bool(finalizer), end_label) + + def UnaryExpression(self, operator, argument, **kwargs): + if operator == 'typeof' and argument[ + 'type'] == 'Identifier': # todo fix typeof + self.emit('TYPEOF', argument['name']) + elif operator == 'delete': + if argument['type'] == 'MemberExpression': + self.emit(argument['object']) + if argument['property']['type'] == 'Identifier': + self.emit('LOAD_STRING', + unicode(argument['property']['name'])) + else: + self.emit(argument['property']) + self.emit('DELETE_MEMBER') + elif argument['type'] == 'Identifier': + self.emit('DELETE', argument['name']) + else: + self.emit('LOAD_BOOLEAN', 1) + elif operator in UNARY_OPERATIONS: + self.emit(argument) + self.emit('UNARY_OP', operator) + else: + raise MakeError('SyntaxError', + 'Unknown unary operator %s' % operator) + + def UpdateExpression(self, operator, argument, prefix, **kwargs): + incr = int(operator == "++") + post = int(not prefix) + if argument['type'] == 'MemberExpression': + if argument['computed']: + self.emit(argument['object']) + self.emit(argument['property']) + self.emit('POSTFIX_MEMBER', post, incr) + else: + self.emit(argument['object']) + name = to_key(argument['property']) + self.emit('POSTFIX_MEMBER_DOT', post, incr, name) + elif argument['type'] == 'Identifier': + name = to_key(argument) + self.emit('POSTFIX', post, incr, name) + else: + raise MakeError('SyntaxError', + 'Invalid left-hand side in assignment') + + def VariableDeclaration(self, declarations, kind, **kwargs): + if kind != 'var': + raise NotImplementedError( + 'Only var variable declaration is supported by ECMA 5.1') + for d in declarations: + self.emit(d) + + def LexicalDeclaration(self, declarations, kind, **kwargs): + raise NotImplementedError('Not supported by ECMA 5.1') + + def VariableDeclarator(self, id, init, **kwargs): + name = id['name'] + if name in SPECIAL_IDENTIFIERS: + raise MakeError('Invalid left-hand side in assignment') + self.declared_vars.append(name) + if init is not None: + self.emit(init) + self.emit('STORE', name) + self.emit('POP') + + def WhileStatement(self, test, body, **kwargs): + continue_label = self.exe.get_new_label() + break_label = self.exe.get_new_label() + + self.emit('LABEL', continue_label) + self.emit(test) + self.emit('JUMP_IF_FALSE', break_label) + + # translate the body, remember to add and afterwards remove implicit break/continue labels + + self.implicit_continues.append(continue_label) + self.implicit_breaks.append(break_label) + self.emit(body) + self.implicit_continues.pop() + self.implicit_breaks.pop() + + self.emit('JUMP', continue_label) # loop back + self.emit('LABEL', break_label) + + def WithStatement(self, object, body, **kwargs): + beg_label = self.exe.get_new_label() + end_label = self.exe.get_new_label() + # scope + self.emit(object) + + # now the body + self.emit('JUMP', end_label) + self.emit('LABEL', beg_label) + self.emit('LOAD_UNDEFINED') + self.emit(body) + self.emit('NOP') + self.emit('LABEL', end_label) + + # with statement implementation + self.emit('WITH', beg_label, end_label) + + def _emit_statement_list(self, statements): + for statement in statements: + self.emit(statement) + + def emit(self, what, *args): + ''' what can be either name of the op, or node, or a list of statements.''' + if isinstance(what, basestring): + return self.exe.emit(what, *args) + elif isinstance(what, list): + self._emit_statement_list(what) + else: + return getattr(self, what['type'])(**what) + + +import os, codecs + + +def path_as_local(path): + if os.path.isabs(path): + return path + # relative to cwd + return os.path.join(os.getcwd(), path) + + +def get_file_contents(path_or_file): + if hasattr(path_or_file, 'read'): + js = path_or_file.read() + else: + with codecs.open(path_as_local(path_or_file), "r", "utf-8") as f: + js = f.read() + return js + + +def main(): + from space import Space + import fill_space + + from pyjsparser import parse + import json + a = ByteCodeGenerator(Code()) + + s = Space() + fill_space.fill_space(s, a) + + a.exe.space = s + s.exe = a.exe + con = get_file_contents('internals/esprima.js') + d = parse(con + ( + ''';JSON.stringify(exports.parse(%s), 4, 4)''' % json.dumps(con))) + # d = parse(''' + # function x(n) { + # log(n) + # return x(n+1) + # } + # x(0) + # ''') + + # var v = 333333; + # while (v) { + # v-- + # + # } + a.emit(d) + print a.declared_vars + print a.exe.tape + print len(a.exe.tape) + + a.exe.compile() + + def log(this, args): + print args[0] + return 999 + + print a.exe.run(a.exe.space.GlobalObj) + + +if __name__ == '__main__': + main() diff --git a/libs/js2py/internals/code.py b/libs/js2py/internals/code.py new file mode 100644 index 000000000..6bd6739fd --- /dev/null +++ b/libs/js2py/internals/code.py @@ -0,0 +1,197 @@ +from opcodes import * +from space import * +from base import * + + +class Code: + '''Can generate, store and run sequence of ops representing js code''' + + def __init__(self, is_strict=False): + self.tape = [] + self.compiled = False + self.label_locs = None + self.is_strict = is_strict + + self.contexts = [] + self.current_ctx = None + self.return_locs = [] + self._label_count = 0 + self.label_locs = None + + # useful references + self.GLOBAL_THIS = None + self.space = None + + def get_new_label(self): + self._label_count += 1 + return self._label_count + + def emit(self, op_code, *args): + ''' Adds op_code with specified args to tape ''' + self.tape.append(OP_CODES[op_code](*args)) + + def compile(self, start_loc=0): + ''' Records locations of labels and compiles the code ''' + self.label_locs = {} if self.label_locs is None else self.label_locs + loc = start_loc + while loc < len(self.tape): + if type(self.tape[loc]) == LABEL: + self.label_locs[self.tape[loc].num] = loc + del self.tape[loc] + continue + loc += 1 + self.compiled = True + + def _call(self, func, this, args): + ''' Calls a bytecode function func + NOTE: use !ONLY! when calling functions from native methods! ''' + assert not func.is_native + # fake call - the the runner to return to the end of the file + old_contexts = self.contexts + old_return_locs = self.return_locs + old_curr_ctx = self.current_ctx + + self.contexts = [FakeCtx()] + self.return_locs = [len(self.tape)] # target line after return + + # prepare my ctx + my_ctx = func._generate_my_context(this, args) + self.current_ctx = my_ctx + + # execute dunction + ret = self.run(my_ctx, starting_loc=self.label_locs[func.code]) + + # bring back old execution + self.current_ctx = old_curr_ctx + self.contexts = old_contexts + self.return_locs = old_return_locs + + return ret + + def execute_fragment_under_context(self, ctx, start_label, end_label): + ''' just like run but returns if moved outside of the specified fragment + # 4 different exectution results + # 0=normal, 1=return, 2=jump_outside, 3=errors + # execute_fragment_under_context returns: + # (return_value, typ, return_value/jump_loc/py_error) + # ctx.stack must be len 1 and its always empty after the call. + ''' + old_curr_ctx = self.current_ctx + try: + self.current_ctx = ctx + return self._execute_fragment_under_context( + ctx, start_label, end_label) + except JsException as err: + # undo the things that were put on the stack (if any) + # don't worry, I know the recovery is possible through try statement and for this reason try statement + # has its own context and stack so it will not delete the contents of the outer stack + del ctx.stack[:] + return undefined, 3, err + finally: + self.current_ctx = old_curr_ctx + + def _execute_fragment_under_context(self, ctx, start_label, end_label): + start, end = self.label_locs[start_label], self.label_locs[end_label] + initial_len = len(ctx.stack) + loc = start + entry_level = len(self.contexts) + # for e in self.tape[start:end]: + # print e + + while loc < len(self.tape): + #print loc, self.tape[loc] + if len(self.contexts) == entry_level and loc >= end: + assert loc == end + assert len(ctx.stack) == ( + 1 + initial_len), 'Stack change must be equal to +1!' + return ctx.stack.pop(), 0, None # means normal return + + # execute instruction + status = self.tape[loc].eval(ctx) + + # check status for special actions + if status is not None: + if type(status) == int: # jump to label + loc = self.label_locs[status] + if len(self.contexts) == entry_level: + # check if jumped outside of the fragment and break if so + if not start <= loc < end: + assert len(ctx.stack) == ( + 1 + initial_len + ), 'Stack change must be equal to +1!' + return ctx.stack.pop(), 2, status # jump outside + continue + + elif len(status) == 2: # a call or a return! + # call: (new_ctx, func_loc_label_num) + if status[0] is not None: + # append old state to the stack + self.contexts.append(ctx) + self.return_locs.append(loc + 1) + # set new state + loc = self.label_locs[status[1]] + ctx = status[0] + self.current_ctx = ctx + continue + + # return: (None, None) + else: + if len(self.contexts) == entry_level: + assert len(ctx.stack) == 1 + initial_len + return undefined, 1, ctx.stack.pop( + ) # return signal + return_value = ctx.stack.pop() + ctx = self.contexts.pop() + self.current_ctx = ctx + ctx.stack.append(return_value) + + loc = self.return_locs.pop() + continue + # next instruction + loc += 1 + assert False, 'Remember to add NOP at the end!' + + def run(self, ctx, starting_loc=0): + loc = starting_loc + self.current_ctx = ctx + while loc < len(self.tape): + # execute instruction + #print loc, self.tape[loc] + status = self.tape[loc].eval(ctx) + + # check status for special actions + if status is not None: + if type(status) == int: # jump to label + loc = self.label_locs[status] + continue + + elif len(status) == 2: # a call or a return! + # call: (new_ctx, func_loc_label_num) + if status[0] is not None: + # append old state to the stack + self.contexts.append(ctx) + self.return_locs.append(loc + 1) + # set new state + loc = self.label_locs[status[1]] + ctx = status[0] + self.current_ctx = ctx + continue + + # return: (None, None) + else: + return_value = ctx.stack.pop() + ctx = self.contexts.pop() + self.current_ctx = ctx + ctx.stack.append(return_value) + + loc = self.return_locs.pop() + continue + # next instruction + loc += 1 + assert len(ctx.stack) == 1, ctx.stack + return ctx.stack.pop() + + +class FakeCtx(object): + def __init__(self): + self.stack = [] diff --git a/libs/js2py/internals/constructors/__init__.py b/libs/js2py/internals/constructors/__init__.py new file mode 100644 index 000000000..4bf956237 --- /dev/null +++ b/libs/js2py/internals/constructors/__init__.py @@ -0,0 +1 @@ +__author__ = 'Piotr Dabkowski' \ No newline at end of file diff --git a/libs/js2py/internals/constructors/jsarray.py b/libs/js2py/internals/constructors/jsarray.py new file mode 100644 index 000000000..23364ce48 --- /dev/null +++ b/libs/js2py/internals/constructors/jsarray.py @@ -0,0 +1,28 @@ +from ..conversions import * +from ..func_utils import * + + +def Array(this, args): + return ArrayConstructor(args, args.space) + + +def ArrayConstructor(args, space): + if len(args) == 1: + l = get_arg(args, 0) + if type(l) == float: + if to_uint32(l) == l: + return space.NewArray(l) + else: + raise MakeError( + 'RangeError', + 'Invalid length specified for Array constructor (must be uint32)' + ) + else: + return space.ConstructArray([l]) + else: + return space.ConstructArray(list(args)) + + +def isArray(this, args): + x = get_arg(args, 0) + return is_object(x) and x.Class == u'Array' diff --git a/libs/js2py/internals/constructors/jsboolean.py b/libs/js2py/internals/constructors/jsboolean.py new file mode 100644 index 000000000..17025d9f5 --- /dev/null +++ b/libs/js2py/internals/constructors/jsboolean.py @@ -0,0 +1,14 @@ +from ..conversions import * +from ..func_utils import * + + +def Boolean(this, args): + return to_boolean(get_arg(args, 0)) + + +def BooleanConstructor(args, space): + temp = space.NewObject() + temp.prototype = space.BooleanPrototype + temp.Class = 'Boolean' + temp.value = to_boolean(get_arg(args, 0)) + return temp diff --git a/libs/js2py/internals/constructors/jsconsole.py b/libs/js2py/internals/constructors/jsconsole.py new file mode 100644 index 000000000..6840ba708 --- /dev/null +++ b/libs/js2py/internals/constructors/jsconsole.py @@ -0,0 +1,11 @@ +from __future__ import unicode_literals + +from js2py.internals.conversions import * +from js2py.internals.func_utils import * + + +class ConsoleMethods: + def log(this, args): + x = ' '.join(to_string(e) for e in args) + print(x) + return undefined diff --git a/libs/js2py/internals/constructors/jsdate.py b/libs/js2py/internals/constructors/jsdate.py new file mode 100644 index 000000000..98de64319 --- /dev/null +++ b/libs/js2py/internals/constructors/jsdate.py @@ -0,0 +1,405 @@ +from ..base import * +from .time_helpers import * + +TZ_OFFSET = (time.altzone // 3600) +ABS_OFFSET = abs(TZ_OFFSET) +TZ_NAME = time.tzname[1] +ISO_FORMAT = '%s-%s-%sT%s:%s:%s.%sZ' + + +@Js +def Date(year, month, date, hours, minutes, seconds, ms): + return now().to_string() + + +Date.Class = 'Date' + + +def now(): + return PyJsDate(int(time.time() * 1000), prototype=DatePrototype) + + +@Js +def UTC(year, month, date, hours, minutes, seconds, ms): # todo complete this + args = arguments + y = args[0].to_number() + m = args[1].to_number() + l = len(args) + dt = args[2].to_number() if l > 2 else Js(1) + h = args[3].to_number() if l > 3 else Js(0) + mi = args[4].to_number() if l > 4 else Js(0) + sec = args[5].to_number() if l > 5 else Js(0) + mili = args[6].to_number() if l > 6 else Js(0) + if not y.is_nan() and 0 <= y.value <= 99: + y = y + Js(1900) + t = TimeClip(MakeDate(MakeDay(y, m, dt), MakeTime(h, mi, sec, mili))) + return PyJsDate(t, prototype=DatePrototype) + + +@Js +def parse(string): + return PyJsDate( + TimeClip(parse_date(string.to_string().value)), + prototype=DatePrototype) + + +Date.define_own_property('now', { + 'value': Js(now), + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + +Date.define_own_property('parse', { + 'value': parse, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + +Date.define_own_property('UTC', { + 'value': UTC, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) + + +class PyJsDate(PyJs): + Class = 'Date' + extensible = True + + def __init__(self, value, prototype=None): + self.value = value + self.own = {} + self.prototype = prototype + + # todo fix this problematic datetime part + def to_local_dt(self): + return datetime.datetime.utcfromtimestamp( + UTCToLocal(self.value) // 1000) + + def to_utc_dt(self): + return datetime.datetime.utcfromtimestamp(self.value // 1000) + + def local_strftime(self, pattern): + if self.value is NaN: + return 'Invalid Date' + try: + dt = self.to_local_dt() + except: + raise MakeError( + 'TypeError', + 'unsupported date range. Will fix in future versions') + try: + return dt.strftime(pattern) + except: + raise MakeError( + 'TypeError', + 'Could not generate date string from this date (limitations of python.datetime)' + ) + + def utc_strftime(self, pattern): + if self.value is NaN: + return 'Invalid Date' + try: + dt = self.to_utc_dt() + except: + raise MakeError( + 'TypeError', + 'unsupported date range. Will fix in future versions') + try: + return dt.strftime(pattern) + except: + raise MakeError( + 'TypeError', + 'Could not generate date string from this date (limitations of python.datetime)' + ) + + +def parse_date(py_string): # todo support all date string formats + try: + try: + dt = datetime.datetime.strptime(py_string, "%Y-%m-%dT%H:%M:%S.%fZ") + except: + dt = datetime.datetime.strptime(py_string, "%Y-%m-%dT%H:%M:%SZ") + return MakeDate( + MakeDay(Js(dt.year), Js(dt.month - 1), Js(dt.day)), + MakeTime( + Js(dt.hour), Js(dt.minute), Js(dt.second), + Js(dt.microsecond // 1000))) + except: + raise MakeError( + 'TypeError', + 'Could not parse date %s - unsupported date format. Currently only supported format is RFC3339 utc. Sorry!' + % py_string) + + +def date_constructor(*args): + if len(args) >= 2: + return date_constructor2(*args) + elif len(args) == 1: + return date_constructor1(args[0]) + else: + return date_constructor0() + + +def date_constructor0(): + return now() + + +def date_constructor1(value): + v = value.to_primitive() + if v._type() == 'String': + v = parse_date(v.value) + else: + v = v.to_int() + return PyJsDate(TimeClip(v), prototype=DatePrototype) + + +def date_constructor2(*args): + y = args[0].to_number() + m = args[1].to_number() + l = len(args) + dt = args[2].to_number() if l > 2 else Js(1) + h = args[3].to_number() if l > 3 else Js(0) + mi = args[4].to_number() if l > 4 else Js(0) + sec = args[5].to_number() if l > 5 else Js(0) + mili = args[6].to_number() if l > 6 else Js(0) + if not y.is_nan() and 0 <= y.value <= 99: + y = y + Js(1900) + t = TimeClip( + LocalToUTC(MakeDate(MakeDay(y, m, dt), MakeTime(h, mi, sec, mili)))) + return PyJsDate(t, prototype=DatePrototype) + + +Date.create = date_constructor + +DatePrototype = PyJsDate(float('nan'), prototype=ObjectPrototype) + + +def check_date(obj): + if obj.Class != 'Date': + raise MakeError('TypeError', 'this is not a Date object') + + +class DateProto: + def toString(): + check_date(this) + if this.value is NaN: + return 'Invalid Date' + offset = (UTCToLocal(this.value) - this.value) // msPerHour + return this.local_strftime( + '%a %b %d %Y %H:%M:%S GMT') + '%s00 (%s)' % (pad( + offset, 2, True), GetTimeZoneName(this.value)) + + def toDateString(): + check_date(this) + return this.local_strftime('%d %B %Y') + + def toTimeString(): + check_date(this) + return this.local_strftime('%H:%M:%S') + + def toLocaleString(): + check_date(this) + return this.local_strftime('%d %B %Y %H:%M:%S') + + def toLocaleDateString(): + check_date(this) + return this.local_strftime('%d %B %Y') + + def toLocaleTimeString(): + check_date(this) + return this.local_strftime('%H:%M:%S') + + def valueOf(): + check_date(this) + return this.value + + def getTime(): + check_date(this) + return this.value + + def getFullYear(): + check_date(this) + if this.value is NaN: + return NaN + return YearFromTime(UTCToLocal(this.value)) + + def getUTCFullYear(): + check_date(this) + if this.value is NaN: + return NaN + return YearFromTime(this.value) + + def getMonth(): + check_date(this) + if this.value is NaN: + return NaN + return MonthFromTime(UTCToLocal(this.value)) + + def getDate(): + check_date(this) + if this.value is NaN: + return NaN + return DateFromTime(UTCToLocal(this.value)) + + def getUTCMonth(): + check_date(this) + if this.value is NaN: + return NaN + return MonthFromTime(this.value) + + def getUTCDate(): + check_date(this) + if this.value is NaN: + return NaN + return DateFromTime(this.value) + + def getDay(): + check_date(this) + if this.value is NaN: + return NaN + return WeekDay(UTCToLocal(this.value)) + + def getUTCDay(): + check_date(this) + if this.value is NaN: + return NaN + return WeekDay(this.value) + + def getHours(): + check_date(this) + if this.value is NaN: + return NaN + return HourFromTime(UTCToLocal(this.value)) + + def getUTCHours(): + check_date(this) + if this.value is NaN: + return NaN + return HourFromTime(this.value) + + def getMinutes(): + check_date(this) + if this.value is NaN: + return NaN + return MinFromTime(UTCToLocal(this.value)) + + def getUTCMinutes(): + check_date(this) + if this.value is NaN: + return NaN + return MinFromTime(this.value) + + def getSeconds(): + check_date(this) + if this.value is NaN: + return NaN + return SecFromTime(UTCToLocal(this.value)) + + def getUTCSeconds(): + check_date(this) + if this.value is NaN: + return NaN + return SecFromTime(this.value) + + def getMilliseconds(): + check_date(this) + if this.value is NaN: + return NaN + return msFromTime(UTCToLocal(this.value)) + + def getUTCMilliseconds(): + check_date(this) + if this.value is NaN: + return NaN + return msFromTime(this.value) + + def getTimezoneOffset(): + check_date(this) + if this.value is NaN: + return NaN + return (this.value - UTCToLocal(this.value)) // 60000 + + def setTime(time): + check_date(this) + this.value = TimeClip(time.to_number().to_int()) + return this.value + + def setMilliseconds(ms): + check_date(this) + t = UTCToLocal(this.value) + tim = MakeTime( + HourFromTime(t), MinFromTime(t), SecFromTime(t), ms.to_int()) + u = TimeClip(LocalToUTC(MakeDate(Day(t), tim))) + this.value = u + return u + + def setUTCMilliseconds(ms): + check_date(this) + t = this.value + tim = MakeTime( + HourFromTime(t), MinFromTime(t), SecFromTime(t), ms.to_int()) + u = TimeClip(MakeDate(Day(t), tim)) + this.value = u + return u + + # todo Complete all setters! + + def toUTCString(): + check_date(this) + return this.utc_strftime('%d %B %Y %H:%M:%S') + + def toISOString(): + check_date(this) + t = this.value + year = YearFromTime(t) + month, day, hour, minute, second, milli = pad( + MonthFromTime(t) + 1), pad(DateFromTime(t)), pad( + HourFromTime(t)), pad(MinFromTime(t)), pad( + SecFromTime(t)), pad(msFromTime(t)) + return ISO_FORMAT % (unicode(year) if 0 <= year <= 9999 else pad( + year, 6, True), month, day, hour, minute, second, milli) + + def toJSON(key): + o = this.to_object() + tv = o.to_primitive('Number') + if tv.Class == 'Number' and not tv.is_finite(): + return this.null + toISO = o.get('toISOString') + if not toISO.is_callable(): + raise this.MakeError('TypeError', 'toISOString is not callable') + return toISO.call(o, ()) + + +def pad(num, n=2, sign=False): + '''returns n digit string representation of the num''' + s = unicode(abs(num)) + if len(s) < n: + s = '0' * (n - len(s)) + s + if not sign: + return s + if num >= 0: + return '+' + s + else: + return '-' + s + + +fill_prototype(DatePrototype, DateProto, default_attrs) + +Date.define_own_property( + 'prototype', { + 'value': DatePrototype, + 'enumerable': False, + 'writable': False, + 'configurable': False + }) + +DatePrototype.define_own_property('constructor', { + 'value': Date, + 'enumerable': False, + 'writable': True, + 'configurable': True +}) diff --git a/libs/js2py/internals/constructors/jsfunction.py b/libs/js2py/internals/constructors/jsfunction.py new file mode 100644 index 000000000..9728fb382 --- /dev/null +++ b/libs/js2py/internals/constructors/jsfunction.py @@ -0,0 +1,75 @@ +from ..base import * +from ..conversions import * +from ..func_utils import * +from pyjsparser import parse +from ..byte_trans import ByteCodeGenerator, Code + + +def Function(this, args): + # convert arguments to python list of strings + a = map(to_string, tuple(args)) + _body = u';' + _args = () + if len(a): + _body = u'%s;' % a[-1] + _args = a[:-1] + return executable_function(_body, _args, args.space, global_context=True) + + +def executable_function(_body, _args, space, global_context=True): + func_str = u'(function (%s) { ; %s ; });' % (u', '.join(_args), _body) + + co = executable_code( + code_str=func_str, space=space, global_context=global_context) + return co() + + +# you can use this one lovely piece of function to compile and execute code on the fly! Watch out though as it may generate lots of code. +# todo tape cleanup? we dont know which pieces are needed and which are not so rather impossible without smarter machinery something like GC, +# a one solution would be to have a separate tape for functions +def executable_code(code_str, space, global_context=True): + # parse first to check if any SyntaxErrors + parsed = parse(code_str) + + old_tape_len = len(space.byte_generator.exe.tape) + space.byte_generator.record_state() + start = space.byte_generator.exe.get_new_label() + skip = space.byte_generator.exe.get_new_label() + space.byte_generator.emit('JUMP', skip) + space.byte_generator.emit('LABEL', start) + space.byte_generator.emit(parsed) + space.byte_generator.emit('NOP') + space.byte_generator.emit('LABEL', skip) + space.byte_generator.emit('NOP') + space.byte_generator.restore_state() + space.byte_generator.exe.compile( + start_loc=old_tape_len + ) # dont read the code from the beginning, dont be stupid! + + ctx = space.GlobalObj if global_context else space.exe.current_ctx + + def ex_code(): + ret, status, token = space.byte_generator.exe.execute_fragment_under_context( + ctx, start, skip) + # todo Clean up the tape! + # this is NOT a way to do that because the fragment may contain the executable code! We dont want to remove it + #del space.byte_generator.exe.tape[old_tape_len:] + if status == 0: + return ret + elif status == 3: + raise token + else: + raise RuntimeError( + 'Unexpected return status during JIT execution: %d' % status) + + return ex_code + + +def _eval(this, args): + code_str = to_string(get_arg(args, 0)) + return executable_code(code_str, args.space, global_context=True)() + + +def log(this, args): + print ' '.join(map(to_string, args)) + return undefined diff --git a/libs/js2py/internals/constructors/jsmath.py b/libs/js2py/internals/constructors/jsmath.py new file mode 100644 index 000000000..3eb44616b --- /dev/null +++ b/libs/js2py/internals/constructors/jsmath.py @@ -0,0 +1,157 @@ +from __future__ import unicode_literals + +from ..conversions import * +from ..func_utils import * + +import math +import random + +CONSTANTS = { + 'E': 2.7182818284590452354, + 'LN10': 2.302585092994046, + 'LN2': 0.6931471805599453, + 'LOG2E': 1.4426950408889634, + 'LOG10E': 0.4342944819032518, + 'PI': 3.1415926535897932, + 'SQRT1_2': 0.7071067811865476, + 'SQRT2': 1.4142135623730951 +} + + +class MathFunctions: + def abs(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + return abs(a) + + def acos(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + try: + return math.acos(a) + except: + return NaN + + def asin(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + try: + return math.asin(a) + except: + return NaN + + def atan(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + return math.atan(a) + + def atan2(this, args): + x = get_arg(args, 0) + y = get_arg(args, 1) + a = to_number(x) + b = to_number(y) + if a != a or b != b: # it must be a nan + return NaN + return math.atan2(a, b) + + def ceil(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + return float(math.ceil(a)) + + def floor(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + return float(math.floor(a)) + + def round(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + return float(round(a)) + + def sin(this, args): + x = get_arg(args, 0) + a = to_number(x) + if not is_finite(a): # it must be a nan + return NaN + return math.sin(a) + + def cos(this, args): + x = get_arg(args, 0) + a = to_number(x) + if not is_finite(a): # it must be a nan + return NaN + return math.cos(a) + + def tan(this, args): + x = get_arg(args, 0) + a = to_number(x) + if not is_finite(a): # it must be a nan + return NaN + return math.tan(a) + + def log(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + try: + return math.log(a) + except: + return NaN + + def exp(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + return math.exp(a) + + def pow(this, args): + x = get_arg(args, 0) + y = get_arg(args, 1) + a = to_number(x) + b = to_number(y) + if a != a or b != b: # it must be a nan + return NaN + try: + return a**b + except: + return NaN + + def sqrt(this, args): + x = get_arg(args, 0) + a = to_number(x) + if a != a: # it must be a nan + return NaN + try: + return a**0.5 + except: + return NaN + + def min(this, args): + if len(args) == 0: + return Infinity + return min(map(to_number, tuple(args))) + + def max(this, args): + if len(args) == 0: + return -Infinity + return max(map(to_number, tuple(args))) + + def random(this, args): + return random.random() diff --git a/libs/js2py/internals/constructors/jsnumber.py b/libs/js2py/internals/constructors/jsnumber.py new file mode 100644 index 000000000..276b7cfad --- /dev/null +++ b/libs/js2py/internals/constructors/jsnumber.py @@ -0,0 +1,27 @@ +from __future__ import unicode_literals + +from ..conversions import * +from ..func_utils import * + + +def Number(this, args): + if len(args) == 0: + return 0. + return to_number(args[0]) + + +def NumberConstructor(args, space): + temp = space.NewObject() + temp.prototype = space.NumberPrototype + temp.Class = 'Number' + temp.value = float(to_number(get_arg(args, 0)) if len(args) > 0 else 0.) + return temp + + +CONSTS = { + 'MAX_VALUE': 1.7976931348623157e308, + 'MIN_VALUE': 5.0e-324, + 'NaN': NaN, + 'NEGATIVE_INFINITY': Infinity, + 'POSITIVE_INFINITY': -Infinity +} diff --git a/libs/js2py/internals/constructors/jsobject.py b/libs/js2py/internals/constructors/jsobject.py new file mode 100644 index 000000000..06fdbbb05 --- /dev/null +++ b/libs/js2py/internals/constructors/jsobject.py @@ -0,0 +1,204 @@ +from __future__ import unicode_literals +from ..conversions import * +from ..func_utils import * +from ..base import is_data_descriptor +import six + + +def Object(this, args): + val = get_arg(args, 0) + if is_null(val) or is_undefined(val): + return args.space.NewObject() + return to_object(val, args.space) + + +def ObjectCreate(args, space): + if len(args): + val = get_arg(args, 0) + if is_object(val): + # Implementation dependent, but my will simply return :) + return val + elif type(val) in (NUMBER_TYPE, STRING_TYPE, BOOLEAN_TYPE): + return to_object(val, space) + return space.NewObject() + + +class ObjectMethods: + def getPrototypeOf(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError('TypeError', + 'Object.getPrototypeOf called on non-object') + return null if obj.prototype is None else obj.prototype + + def getOwnPropertyDescriptor(this, args): + obj = get_arg(args, 0) + prop = get_arg(args, 1) + if not is_object(obj): + raise MakeError( + 'TypeError', + 'Object.getOwnPropertyDescriptor called on non-object') + desc = obj.own.get(to_string(prop)) + return convert_to_js_type(desc, args.space) + + def getOwnPropertyNames(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError( + 'TypeError', + 'Object.getOwnPropertyDescriptor called on non-object') + return args.space.ConstructArray(obj.own.keys()) + + def create(this, args): + obj = get_arg(args, 0) + if not (is_object(obj) or is_null(obj)): + raise MakeError('TypeError', + 'Object prototype may only be an Object or null') + temp = args.space.NewObject() + temp.prototype = None if is_null(obj) else obj + if len(args) > 1 and not is_undefined(args[1]): + if six.PY2: + args.tup = (args[1], ) + ObjectMethods.defineProperties.__func__(temp, args) + else: + args.tup = (args[1], ) + ObjectMethods.defineProperties(temp, args) + return temp + + def defineProperty(this, args): + obj = get_arg(args, 0) + prop = get_arg(args, 1) + attrs = get_arg(args, 2) + if not is_object(obj): + raise MakeError('TypeError', + 'Object.defineProperty called on non-object') + name = to_string(prop) + if not obj.define_own_property(name, ToPropertyDescriptor(attrs), + False): + raise MakeError('TypeError', 'Cannot redefine property: %s' % name) + return obj + + def defineProperties(this, args): + obj = get_arg(args, 0) + properties = get_arg(args, 1) + if not is_object(obj): + raise MakeError('TypeError', + 'Object.defineProperties called on non-object') + props = to_object(properties, args.space) + for k, v in props.own.items(): + if not v.get('enumerable'): + continue + desc = ToPropertyDescriptor(props.get(unicode(k))) + if not obj.define_own_property(unicode(k), desc, False): + raise MakeError('TypeError', + 'Failed to define own property: %s' % k) + return obj + + def seal(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError('TypeError', 'Object.seal called on non-object') + for desc in obj.own.values(): + desc['configurable'] = False + obj.extensible = False + return obj + + def freeze(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError('TypeError', 'Object.freeze called on non-object') + for desc in obj.own.values(): + desc['configurable'] = False + if is_data_descriptor(desc): + desc['writable'] = False + obj.extensible = False + return obj + + def preventExtensions(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError('TypeError', + 'Object.preventExtensions on non-object') + obj.extensible = False + return obj + + def isSealed(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError('TypeError', + 'Object.isSealed called on non-object') + if obj.extensible: + return False + for desc in obj.own.values(): + if desc.get('configurable'): + return False + return True + + def isFrozen(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError('TypeError', + 'Object.isFrozen called on non-object') + if obj.extensible: + return False + for desc in obj.own.values(): + if desc.get('configurable'): + return False + if is_data_descriptor(desc) and desc.get('writable'): + return False + return True + + def isExtensible(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError('TypeError', + 'Object.isExtensible called on non-object') + return obj.extensible + + def keys(this, args): + obj = get_arg(args, 0) + if not is_object(obj): + raise MakeError('TypeError', 'Object.keys called on non-object') + return args.space.ConstructArray([ + unicode(e) for e, d in six.iteritems(obj.own) + if d.get('enumerable') + ]) + + +# some utility functions: + + +def ToPropertyDescriptor(obj): # page 38 (50 absolute) + if not is_object(obj): + raise MakeError('TypeError', + 'Can\'t convert non-object to property descriptor') + desc = {} + if obj.has_property('enumerable'): + desc['enumerable'] = to_boolean(obj.get('enumerable')) + if obj.has_property('configurable'): + desc['configurable'] = to_boolean(obj.get('configurable')) + if obj.has_property('value'): + desc['value'] = obj.get('value') + if obj.has_property('writable'): + desc['writable'] = to_boolean(obj.get('writable')) + if obj.has_property('get'): + cand = obj.get('get') + if not (is_undefined(cand) or is_callable(cand)): + raise MakeError( + 'TypeError', + 'Invalid getter (it has to be a function or undefined)') + desc['get'] = cand + if obj.has_property('set'): + cand = obj.get('set') + if not (is_undefined(cand) or is_callable(cand)): + raise MakeError( + 'TypeError', + 'Invalid setter (it has to be a function or undefined)') + desc['set'] = cand + if ('get' in desc or 'set' in desc) and ('value' in desc + or 'writable' in desc): + raise MakeError( + 'TypeError', + 'Invalid property. A property cannot both have accessors and be writable or have a value.' + ) + return desc diff --git a/libs/js2py/internals/constructors/jsregexp.py b/libs/js2py/internals/constructors/jsregexp.py new file mode 100644 index 000000000..7b264fdb6 --- /dev/null +++ b/libs/js2py/internals/constructors/jsregexp.py @@ -0,0 +1,41 @@ +from __future__ import unicode_literals +from ..conversions import * +from ..func_utils import * +from ..base import SpaceTuple + +REG_EXP_FLAGS = ('g', 'i', 'm') + + +def RegExp(this, args): + pattern = get_arg(args, 0) + flags = get_arg(args, 1) + if GetClass(pattern) == 'RegExp': + if not is_undefined(flags): + raise MakeError( + 'TypeError', + 'Cannot supply flags when constructing one RegExp from another' + ) + # return unchanged + return pattern + #pattern is not a regexp + if is_undefined(pattern): + pattern = u'' + else: + pattern = to_string(pattern) + flags = to_string(flags) if not is_undefined(flags) else u'' + for flag in flags: + if flag not in REG_EXP_FLAGS: + raise MakeError( + 'SyntaxError', + 'Invalid flags supplied to RegExp constructor "%s"' % flag) + if len(set(flags)) != len(flags): + raise MakeError( + 'SyntaxError', + 'Invalid flags supplied to RegExp constructor "%s"' % flags) + return args.space.NewRegExp(pattern, flags) + + +def RegExpCreate(args, space): + _args = SpaceTuple(args) + _args.space = space + return RegExp(undefined, _args) diff --git a/libs/js2py/internals/constructors/jsstring.py b/libs/js2py/internals/constructors/jsstring.py new file mode 100644 index 000000000..f2b43831b --- /dev/null +++ b/libs/js2py/internals/constructors/jsstring.py @@ -0,0 +1,23 @@ +from ..conversions import * +from ..func_utils import * + + +def fromCharCode(this, args): + res = u'' + for e in args: + res += unichr(to_uint16(e)) + return res + + +def String(this, args): + if len(args) == 0: + return u'' + return to_string(args[0]) + + +def StringConstructor(args, space): + temp = space.NewObject() + temp.prototype = space.StringPrototype + temp.Class = 'String' + temp.value = to_string(get_arg(args, 0)) if len(args) > 0 else u'' + return temp diff --git a/libs/js2py/internals/constructors/time_helpers.py b/libs/js2py/internals/constructors/time_helpers.py new file mode 100644 index 000000000..eda95fb60 --- /dev/null +++ b/libs/js2py/internals/constructors/time_helpers.py @@ -0,0 +1,209 @@ +from __future__ import unicode_literals + +# NOTE: t must be INT!!! +import time +import datetime +import warnings + +try: + from tzlocal import get_localzone + LOCAL_ZONE = get_localzone() +except: # except all problems... + warnings.warn( + 'Please install or fix tzlocal library (pip install tzlocal) in order to make Date object work better. Otherwise I will assume DST is in effect all the time' + ) + + class LOCAL_ZONE: + @staticmethod + def dst(*args): + return 1 + + +from js2py.base import MakeError +CUM = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365) +msPerDay = 86400000 +msPerYear = int(86400000 * 365.242) +msPerSecond = 1000 +msPerMinute = 60000 +msPerHour = 3600000 +HoursPerDay = 24 +MinutesPerHour = 60 +SecondsPerMinute = 60 +NaN = float('nan') +LocalTZA = -time.timezone * msPerSecond + + +def DaylightSavingTA(t): + if t is NaN: + return t + try: + return int( + LOCAL_ZONE.dst(datetime.datetime.utcfromtimestamp( + t // 1000)).seconds) * 1000 + except: + warnings.warn( + 'Invalid datetime date, assumed DST time, may be inaccurate...', + Warning) + return 1 + #raise MakeError('TypeError', 'date not supported by python.datetime. I will solve it in future versions') + + +def GetTimeZoneName(t): + return time.tzname[DaylightSavingTA(t) > 0] + + +def LocalToUTC(t): + return t - LocalTZA - DaylightSavingTA(t - LocalTZA) + + +def UTCToLocal(t): + return t + LocalTZA + DaylightSavingTA(t) + + +def Day(t): + return t // 86400000 + + +def TimeWithinDay(t): + return t % 86400000 + + +def DaysInYear(y): + if y % 4: + return 365 + elif y % 100: + return 366 + elif y % 400: + return 365 + else: + return 366 + + +def DayFromYear(y): + return 365 * (y - 1970) + (y - 1969) // 4 - (y - 1901) // 100 + ( + y - 1601) // 400 + + +def TimeFromYear(y): + return 86400000 * DayFromYear(y) + + +def YearFromTime(t): + guess = 1970 - t // 31556908800 # msPerYear + gt = TimeFromYear(guess) + if gt <= t: + while gt <= t: + guess += 1 + gt = TimeFromYear(guess) + return guess - 1 + else: + while gt > t: + guess -= 1 + gt = TimeFromYear(guess) + return guess + + +def DayWithinYear(t): + return Day(t) - DayFromYear(YearFromTime(t)) + + +def InLeapYear(t): + y = YearFromTime(t) + if y % 4: + return 0 + elif y % 100: + return 1 + elif y % 400: + return 0 + else: + return 1 + + +def MonthFromTime(t): + day = DayWithinYear(t) + leap = InLeapYear(t) + if day < 31: + return 0 + day -= leap + if day < 59: + return 1 + elif day < 90: + return 2 + elif day < 120: + return 3 + elif day < 151: + return 4 + elif day < 181: + return 5 + elif day < 212: + return 6 + elif day < 243: + return 7 + elif day < 273: + return 8 + elif day < 304: + return 9 + elif day < 334: + return 10 + else: + return 11 + + +def DateFromTime(t): + mon = MonthFromTime(t) + day = DayWithinYear(t) + return day - CUM[mon] - (1 if InLeapYear(t) and mon >= 2 else 0) + 1 + + +def WeekDay(t): + # 0 == sunday + return (Day(t) + 4) % 7 + + +def msFromTime(t): + return t % 1000 + + +def SecFromTime(t): + return (t // 1000) % 60 + + +def MinFromTime(t): + return (t // 60000) % 60 + + +def HourFromTime(t): + return (t // 3600000) % 24 + + +def MakeTime(hour, Min, sec, ms): + # takes PyJs objects and returns t + if not (hour.is_finite() and Min.is_finite() and sec.is_finite() + and ms.is_finite()): + return NaN + h, m, s, milli = hour.to_int(), Min.to_int(), sec.to_int(), ms.to_int() + return h * 3600000 + m * 60000 + s * 1000 + milli + + +def MakeDay(year, month, date): + # takes PyJs objects and returns t + if not (year.is_finite() and month.is_finite() and date.is_finite()): + return NaN + y, m, dt = year.to_int(), month.to_int(), date.to_int() + y += m // 12 + mn = m % 12 + d = DayFromYear(y) + CUM[mn] + dt - 1 + (1 if DaysInYear(y) == 366 + and mn >= 2 else 0) + return d # ms per day + + +def MakeDate(day, time): + return 86400000 * day + time + + +def TimeClip(t): + if t != t or abs(t) == float('inf'): + return NaN + if abs(t) > 8.64 * 10**15: + return NaN + return int(t) diff --git a/libs/js2py/internals/conversions.py b/libs/js2py/internals/conversions.py new file mode 100644 index 000000000..b90a427d2 --- /dev/null +++ b/libs/js2py/internals/conversions.py @@ -0,0 +1,148 @@ +from __future__ import unicode_literals +# Type Conversions. to_type. All must return PyJs subclass instance +from simplex import * + + +def to_primitive(self, hint=None): + if is_primitive(self): + return self + if hint is None and (self.Class == 'Number' or self.Class == 'Boolean'): + # favour number for Class== Number or Boolean default = String + hint = 'Number' + return self.default_value(hint) + + +def to_boolean(self): + typ = Type(self) + if typ == 'Boolean': # no need to convert + return self + elif typ == 'Null' or typ == 'Undefined': # they are both always false + return False + elif typ == 'Number': # false only for 0, and NaN + return self and self == self # test for nan (nan -> flase) + elif typ == 'String': + return bool(self) + else: # object - always True + return True + + +def to_number(self): + typ = Type(self) + if typ == 'Number': # or self.Class=='Number': # no need to convert + return self + elif typ == 'Null': # null is 0 + return 0. + elif typ == 'Undefined': # undefined is NaN + return NaN + elif typ == 'Boolean': # 1 for True 0 for false + return float(self) + elif typ == 'String': + s = self.strip() # Strip white space + if not s: # '' is simply 0 + return 0. + if 'x' in s or 'X' in s[:3]: # hex (positive only) + try: # try to convert + num = int(s, 16) + except ValueError: # could not convert -> NaN + return NaN + return float(num) + sign = 1 # get sign + if s[0] in '+-': + if s[0] == '-': + sign = -1 + s = s[1:] + if s == 'Infinity': # Check for infinity keyword. 'NaN' will be NaN anyway. + return sign * Infinity + try: # decimal try + num = sign * float(s) # Converted + except ValueError: + return NaN # could not convert to decimal > return NaN + return float(num) + else: # object - most likely it will be NaN. + return to_number(to_primitive(self, 'Number')) + + +def to_string(self): + typ = Type(self) + if typ == 'String': + return self + elif typ == 'Null': + return 'null' + elif typ == 'Undefined': + return 'undefined' + elif typ == 'Boolean': + return 'true' if self else 'false' + elif typ == 'Number': # or self.Class=='Number': + if is_nan(self): + return 'NaN' + elif is_infinity(self): + sign = '-' if self < 0 else '' + return sign + 'Infinity' + elif int(self) == self: # integer value! + return unicode(int(self)) + return unicode(self) # todo make it print exactly like node.js + else: # object + return to_string(to_primitive(self, 'String')) + + +def to_object(self, space): + typ = Type(self) + if typ == 'Object': + return self + elif typ == 'Boolean': # Unsure ... todo check here + return space.Boolean.create((self, ), space) + elif typ == 'Number': # ? + return space.Number.create((self, ), space) + elif typ == 'String': # ? + return space.String.create((self, ), space) + elif typ == 'Null' or typ == 'Undefined': + raise MakeError('TypeError', + 'undefined or null can\'t be converted to object') + else: + raise RuntimeError() + + +def to_int32(self): + num = to_number(self) + if is_nan(num) or is_infinity(num): + return 0 + int32 = int(num) % 2**32 + return int(int32 - 2**32 if int32 >= 2**31 else int32) + + +def to_int(self): + num = to_number(self) + if is_nan(num): + return 0 + elif is_infinity(num): + return 10**20 if num > 0 else -10**20 + return int(num) + + +def to_uint32(self): + num = to_number(self) + if is_nan(num) or is_infinity(num): + return 0 + return int(num) % 2**32 + + +def to_uint16(self): + num = to_number(self) + if is_nan(num) or is_infinity(num): + return 0 + return int(num) % 2**16 + + +def to_int16(self): + num = to_number(self) + if is_nan(num) or is_infinity(num): + return 0 + int16 = int(num) % 2**16 + return int(int16 - 2**16 if int16 >= 2**15 else int16) + + +def cok(self): + """Check object coercible""" + if type(self) in (UNDEFINED_TYPE, NULL_TYPE): + raise MakeError('TypeError', + 'undefined or null can\'t be converted to object') diff --git a/libs/js2py/internals/desc.py b/libs/js2py/internals/desc.py new file mode 100644 index 000000000..e81179c28 --- /dev/null +++ b/libs/js2py/internals/desc.py @@ -0,0 +1,90 @@ +# todo make sure what they mean by desc undefined? None or empty? Answer: None :) it can never be empty but None is sometimes returned. + +# I am implementing everything as dicts to speed up property creation + +# Warning: value, get, set props of dest are PyJs types. Rest is Py! + + +def is_data_descriptor(desc): + return desc and ('value' in desc or 'writable' in desc) + + +def is_accessor_descriptor(desc): + return desc and ('get' in desc or 'set' in desc) + + +def is_generic_descriptor( + desc +): # generic means not the data and not the setter - therefore it must be one that changes only enum and conf + return desc and not (is_data_descriptor(desc) + or is_accessor_descriptor(desc)) + + +def from_property_descriptor(desc, space): + if not desc: + return {} + obj = space.NewObject() + if is_data_descriptor(desc): + obj.define_own_property( + 'value', { + 'value': desc['value'], + 'writable': True, + 'enumerable': True, + 'configurable': True + }, False) + obj.define_own_property( + 'writable', { + 'value': desc['writable'], + 'writable': True, + 'enumerable': True, + 'configurable': True + }, False) + else: + obj.define_own_property( + 'get', { + 'value': desc['get'], + 'writable': True, + 'enumerable': True, + 'configurable': True + }, False) + obj.define_own_property( + 'set', { + 'value': desc['set'], + 'writable': True, + 'enumerable': True, + 'configurable': True + }, False) + obj.define_own_property( + 'writable', { + 'value': desc['writable'], + 'writable': True, + 'enumerable': True, + 'configurable': True + }, False) + obj.define_own_property( + 'enumerable', { + 'value': desc['enumerable'], + 'writable': True, + 'enumerable': True, + 'configurable': True + }, False) + return obj + + +def to_property_descriptor(obj): + if obj._type() != 'Object': + raise TypeError() + desc = {} + for e in ('enumerable', 'configurable', 'writable'): + if obj.has_property(e): + desc[e] = obj.get(e).to_boolean().value + if obj.has_property('value'): + desc['value'] = obj.get('value') + for e in ('get', 'set'): + if obj.has_property(e): + cand = obj.get(e) + if not (cand.is_callable() or cand.is_undefined()): + raise TypeError() + if ('get' in desc or 'set' in desc) and ('value' in desc + or 'writable' in desc): + raise TypeError() diff --git a/libs/js2py/internals/fill_space.py b/libs/js2py/internals/fill_space.py new file mode 100644 index 000000000..9aa9c4d21 --- /dev/null +++ b/libs/js2py/internals/fill_space.py @@ -0,0 +1,284 @@ +from __future__ import unicode_literals + +from base import Scope +from func_utils import * +from conversions import * +import six +from prototypes.jsboolean import BooleanPrototype +from prototypes.jserror import ErrorPrototype +from prototypes.jsfunction import FunctionPrototype +from prototypes.jsnumber import NumberPrototype +from prototypes.jsobject import ObjectPrototype +from prototypes.jsregexp import RegExpPrototype +from prototypes.jsstring import StringPrototype +from prototypes.jsarray import ArrayPrototype +import prototypes.jsjson as jsjson +import prototypes.jsutils as jsutils + +from constructors import jsnumber +from constructors import jsstring +from constructors import jsarray +from constructors import jsboolean +from constructors import jsregexp +from constructors import jsmath +from constructors import jsobject +from constructors import jsfunction +from constructors import jsconsole + + +def fill_proto(proto, proto_class, space): + for i in dir(proto_class): + e = getattr(proto_class, i) + if six.PY2: + if hasattr(e, '__func__'): + meth = e.__func__ + else: + continue + else: + if hasattr(e, '__call__') and not i.startswith('__'): + meth = e + else: + continue + meth_name = meth.__name__.strip('_') # RexExp._exec -> RegExp.exec + js_meth = space.NewFunction(meth, space.ctx, (), meth_name, False, ()) + set_non_enumerable(proto, meth_name, js_meth) + return proto + + +def easy_func(f, space): + return space.NewFunction(f, space.ctx, (), f.__name__, False, ()) + + +def Empty(this, args): + return undefined + + +def set_non_enumerable(obj, name, prop): + obj.define_own_property( + unicode(name), { + 'value': prop, + 'writable': True, + 'enumerable': False, + 'configurable': True + }, True) + + +def set_protected(obj, name, prop): + obj.define_own_property( + unicode(name), { + 'value': prop, + 'writable': False, + 'enumerable': False, + 'configurable': False + }, True) + + +def fill_space(space, byte_generator): + # set global scope + global_scope = Scope({}, space, parent=None) + global_scope.THIS_BINDING = global_scope + global_scope.registers(byte_generator.declared_vars) + space.GlobalObj = global_scope + + space.byte_generator = byte_generator + + # first init all protos, later take care of constructors and details + + # Function must be first obviously, we have to use a small trick to do that... + function_proto = space.NewFunction(Empty, space.ctx, (), 'Empty', False, + ()) + space.FunctionPrototype = function_proto # this will fill the prototypes of the methods! + fill_proto(function_proto, FunctionPrototype, space) + + # Object next + object_proto = space.NewObject() # no proto + fill_proto(object_proto, ObjectPrototype, space) + space.ObjectPrototype = object_proto + function_proto.prototype = object_proto + + # Number + number_proto = space.NewObject() + number_proto.prototype = object_proto + fill_proto(number_proto, NumberPrototype, space) + number_proto.value = 0. + number_proto.Class = 'Number' + space.NumberPrototype = number_proto + + # String + string_proto = space.NewObject() + string_proto.prototype = object_proto + fill_proto(string_proto, StringPrototype, space) + string_proto.value = u'' + string_proto.Class = 'String' + space.StringPrototype = string_proto + + # Boolean + boolean_proto = space.NewObject() + boolean_proto.prototype = object_proto + fill_proto(boolean_proto, BooleanPrototype, space) + boolean_proto.value = False + boolean_proto.Class = 'Boolean' + space.BooleanPrototype = boolean_proto + + # Array + array_proto = space.NewArray(0) + array_proto.prototype = object_proto + fill_proto(array_proto, ArrayPrototype, space) + space.ArrayPrototype = array_proto + + # JSON + json = space.NewObject() + json.put(u'stringify', easy_func(jsjson.stringify, space)) + json.put(u'parse', easy_func(jsjson.parse, space)) + + # Utils + parseFloat = easy_func(jsutils.parseFloat, space) + parseInt = easy_func(jsutils.parseInt, space) + isNaN = easy_func(jsutils.isNaN, space) + isFinite = easy_func(jsutils.isFinite, space) + + # Error + error_proto = space.NewError(u'Error', u'') + error_proto.prototype = object_proto + error_proto.put(u'name', u'Error') + fill_proto(error_proto, ErrorPrototype, space) + space.ErrorPrototype = error_proto + + def construct_constructor(typ): + def creator(this, args): + message = get_arg(args, 0) + if not is_undefined(message): + msg = to_string(message) + else: + msg = u'' + return space.NewError(typ, msg) + + j = easy_func(creator, space) + j.name = unicode(typ) + j.prototype = space.ERROR_TYPES[typ] + + def new_create(args, space): + message = get_arg(args, 0) + if not is_undefined(message): + msg = to_string(message) + else: + msg = u'' + return space.NewError(typ, msg) + + j.create = new_create + return j + + # fill remaining error types + error_constructors = {} + for err_type_name in (u'Error', u'EvalError', u'RangeError', + u'ReferenceError', u'SyntaxError', u'TypeError', + u'URIError'): + extra_err = space.NewError(u'Error', u'') + extra_err.put(u'name', err_type_name) + setattr(space, err_type_name + u'Prototype', extra_err) + error_constructors[err_type_name] = construct_constructor( + err_type_name) + assert space.TypeErrorPrototype is not None + + # RegExp + regexp_proto = space.NewRegExp(u'(?:)', u'') + regexp_proto.prototype = object_proto + fill_proto(regexp_proto, RegExpPrototype, space) + space.RegExpPrototype = regexp_proto + + # Json + + # now all these boring constructors... + + # Number + number = easy_func(jsnumber.Number, space) + space.Number = number + number.create = jsnumber.NumberConstructor + set_non_enumerable(number_proto, 'constructor', number) + set_protected(number, 'prototype', number_proto) + # number has some extra constants + for k, v in jsnumber.CONSTS.items(): + set_protected(number, k, v) + + # String + string = easy_func(jsstring.String, space) + space.String = string + string.create = jsstring.StringConstructor + set_non_enumerable(string_proto, 'constructor', string) + set_protected(string, 'prototype', string_proto) + # string has an extra function + set_non_enumerable(string, 'fromCharCode', + easy_func(jsstring.fromCharCode, space)) + + # Boolean + boolean = easy_func(jsboolean.Boolean, space) + space.Boolean = boolean + boolean.create = jsboolean.BooleanConstructor + set_non_enumerable(boolean_proto, 'constructor', boolean) + set_protected(boolean, 'prototype', boolean_proto) + + # Array + array = easy_func(jsarray.Array, space) + space.Array = array + array.create = jsarray.ArrayConstructor + set_non_enumerable(array_proto, 'constructor', array) + set_protected(array, 'prototype', array_proto) + array.put(u'isArray', easy_func(jsarray.isArray, space)) + + # RegExp + regexp = easy_func(jsregexp.RegExp, space) + space.RegExp = regexp + regexp.create = jsregexp.RegExpCreate + set_non_enumerable(regexp_proto, 'constructor', regexp) + set_protected(regexp, 'prototype', regexp_proto) + + # Object + _object = easy_func(jsobject.Object, space) + space.Object = _object + _object.create = jsobject.ObjectCreate + set_non_enumerable(object_proto, 'constructor', _object) + set_protected(_object, 'prototype', object_proto) + fill_proto(_object, jsobject.ObjectMethods, space) + + # Function + function = easy_func(jsfunction.Function, space) + space.Function = function + + # Math + math = space.NewObject() + math.Class = 'Math' + fill_proto(math, jsmath.MathFunctions, space) + for k, v in jsmath.CONSTANTS.items(): + set_protected(math, k, v) + + console = space.NewObject() + fill_proto(console, jsconsole.ConsoleMethods, space) + + # set global object + builtins = { + 'String': string, + 'Number': number, + 'Boolean': boolean, + 'RegExp': regexp, + 'exports': convert_to_js_type({}, space), + 'Math': math, + #'Date', + 'Object': _object, + 'Function': function, + 'JSON': json, + 'Array': array, + 'parseFloat': parseFloat, + 'parseInt': parseInt, + 'isFinite': isFinite, + 'isNaN': isNaN, + 'eval': easy_func(jsfunction._eval, space), + 'console': console, + 'log': console.get(u'log'), + } + + builtins.update(error_constructors) + + set_protected(global_scope, 'NaN', NaN) + set_protected(global_scope, 'Infinity', Infinity) + for k, v in builtins.items(): + set_non_enumerable(global_scope, k, v) diff --git a/libs/js2py/internals/func_utils.py b/libs/js2py/internals/func_utils.py new file mode 100644 index 000000000..3c0b8d576 --- /dev/null +++ b/libs/js2py/internals/func_utils.py @@ -0,0 +1,73 @@ +from simplex import * +from conversions import * + +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + + +def get_arg(arguments, n): + if len(arguments) <= n: + return undefined + return arguments[n] + + +def ensure_js_types(args, space=None): + return tuple(convert_to_js_type(e, space=space) for e in args) + + +def convert_to_js_type(e, space=None): + t = type(e) + if is_js_type(e): + return e + if t in (int, long, float): + return float(e) + elif isinstance(t, basestring): + return unicode(t) + elif t in (list, tuple): + if space is None: + raise MakeError( + 'TypeError', + 'Actually an internal error, could not convert to js type because space not specified' + ) + return space.ConstructArray(ensure_js_types(e, space=space)) + elif t == dict: + if space is None: + raise MakeError( + 'TypeError', + 'Actually an internal error, could not convert to js type because space not specified' + ) + new = {} + for k, v in e.items(): + new[to_string(convert_to_js_type(k, space))] = convert_to_js_type( + v, space) + return space.ConstructObject(new) + else: + raise MakeError('TypeError', 'Could not convert to js type!') + + +def is_js_type(e): + if type(e) in PRIMITIVES: + return True + elif hasattr(e, 'Class') and hasattr(e, 'value'): # not perfect but works + return True + else: + return False + + +# todo optimise these 2! +def js_array_to_tuple(arr): + length = to_uint32(arr.get(u'length')) + return tuple(arr.get(unicode(e)) for e in xrange(length)) + + +def js_array_to_list(arr): + length = to_uint32(arr.get(u'length')) + return [arr.get(unicode(e)) for e in xrange(length)] + + +def js_arr_length(arr): + return to_uint32(arr.get(u'length')) diff --git a/libs/js2py/internals/gen.py b/libs/js2py/internals/gen.py new file mode 100644 index 000000000..e69de29bb diff --git a/libs/js2py/internals/opcodes.py b/libs/js2py/internals/opcodes.py new file mode 100644 index 000000000..0f3127db7 --- /dev/null +++ b/libs/js2py/internals/opcodes.py @@ -0,0 +1,805 @@ +from operations import * +from base import get_member, get_member_dot, PyJsFunction, Scope + + +class OP_CODE(object): + _params = [] + + # def eval(self, ctx): + # raise + + def __repr__(self): + return self.__class__.__name__ + str( + tuple([getattr(self, e) for e in self._params])) + + +# --------------------- UNARY ---------------------- + + +class UNARY_OP(OP_CODE): + _params = ['operator'] + + def __init__(self, operator): + self.operator = operator + + def eval(self, ctx): + val = ctx.stack.pop() + ctx.stack.append(UNARY_OPERATIONS[self.operator](val)) + + +# special unary operations + + +class TYPEOF(OP_CODE): + _params = ['identifier'] + + def __init__(self, identifier): + self.identifier = identifier + + def eval(self, ctx): + # typeof something_undefined does not throw reference error + val = ctx.get(self.identifier, + False) # <= this makes it slightly different! + ctx.stack.append(typeof_uop(val)) + + +class POSTFIX(OP_CODE): + _params = ['cb', 'ca', 'identifier'] + + def __init__(self, post, incr, identifier): + self.identifier = identifier + self.cb = 1 if incr else -1 + self.ca = -self.cb if post else 0 + + def eval(self, ctx): + target = to_number(ctx.get(self.identifier)) + self.cb + ctx.put(self.identifier, target) + ctx.stack.append(target + self.ca) + + +class POSTFIX_MEMBER(OP_CODE): + _params = ['cb', 'ca'] + + def __init__(self, post, incr): + self.cb = 1 if incr else -1 + self.ca = -self.cb if post else 0 + + def eval(self, ctx): + name = ctx.stack.pop() + left = ctx.stack.pop() + + target = to_number(get_member(left, name, ctx.space)) + self.cb + if type(left) not in PRIMITIVES: + left.put_member(name, target) + + ctx.stack.append(target + self.ca) + + +class POSTFIX_MEMBER_DOT(OP_CODE): + _params = ['cb', 'ca', 'prop'] + + def __init__(self, post, incr, prop): + self.cb = 1 if incr else -1 + self.ca = -self.cb if post else 0 + self.prop = prop + + def eval(self, ctx): + left = ctx.stack.pop() + + target = to_number(get_member_dot(left, self.prop, + ctx.space)) + self.cb + if type(left) not in PRIMITIVES: + left.put(self.prop, target) + + ctx.stack.append(target + self.ca) + + +class DELETE(OP_CODE): + _params = ['name'] + + def __init__(self, name): + self.name = name + + def eval(self, ctx): + ctx.stack.append(ctx.delete(self.name)) + + +class DELETE_MEMBER(OP_CODE): + def eval(self, ctx): + prop = to_string(ctx.stack.pop()) + obj = to_object(ctx.stack.pop(), ctx) + ctx.stack.append(obj.delete(prop, False)) + + +# --------------------- BITWISE ---------------------- + + +class BINARY_OP(OP_CODE): + _params = ['operator'] + + def __init__(self, operator): + self.operator = operator + + def eval(self, ctx): + right = ctx.stack.pop() + left = ctx.stack.pop() + ctx.stack.append(BINARY_OPERATIONS[self.operator](left, right)) + + +# &&, || and conditional are implemented in bytecode + +# --------------------- JUMPS ---------------------- + + +# simple label that will be removed from code after compilation. labels ID will be translated +# to source code position. +class LABEL(OP_CODE): + _params = ['num'] + + def __init__(self, num): + self.num = num + + +# I implemented interpreter in the way that when an integer is returned by eval operation the execution will jump +# to the location of the label (it is loc = label_locations[label]) + + +class BASE_JUMP(OP_CODE): + _params = ['label'] + + def __init__(self, label): + self.label = label + + +class JUMP(BASE_JUMP): + def eval(self, ctx): + return self.label + + +class JUMP_IF_TRUE(BASE_JUMP): + def eval(self, ctx): + val = ctx.stack.pop() + if to_boolean(val): + return self.label + + +class JUMP_IF_EQ(BASE_JUMP): + # this one is used in switch statement - compares last 2 values using === operator and jumps popping both if true else pops last. + def eval(self, ctx): + cmp = ctx.stack.pop() + if strict_equality_op(ctx.stack[-1], cmp): + ctx.stack.pop() + return self.label + + +class JUMP_IF_TRUE_WITHOUT_POP(BASE_JUMP): + def eval(self, ctx): + val = ctx.stack[-1] + if to_boolean(val): + return self.label + + +class JUMP_IF_FALSE(BASE_JUMP): + def eval(self, ctx): + val = ctx.stack.pop() + if not to_boolean(val): + return self.label + + +class JUMP_IF_FALSE_WITHOUT_POP(BASE_JUMP): + def eval(self, ctx): + val = ctx.stack[-1] + if not to_boolean(val): + return self.label + + +class POP(OP_CODE): + def eval(self, ctx): + # todo remove this check later + assert len(ctx.stack), 'Popped from empty stack!' + del ctx.stack[-1] + + +# class REDUCE(OP_CODE): +# def eval(self, ctx): +# assert len(ctx.stack)==2 +# ctx.stack[0] = ctx.stack[1] +# del ctx.stack[1] + +# --------------- LOADING -------------- + + +class LOAD_NONE(OP_CODE): # be careful with this :) + _params = [] + + def eval(self, ctx): + ctx.stack.append(None) + + +class LOAD_N_TUPLE( + OP_CODE +): # loads the tuple composed of n last elements on stack. elements are popped. + _params = ['n'] + + def __init__(self, n): + self.n = n + + def eval(self, ctx): + tup = tuple(ctx.stack[-self.n:]) + del ctx.stack[-self.n:] + ctx.stack.append(tup) + + +class LOAD_UNDEFINED(OP_CODE): + def eval(self, ctx): + ctx.stack.append(undefined) + + +class LOAD_NULL(OP_CODE): + def eval(self, ctx): + ctx.stack.append(null) + + +class LOAD_BOOLEAN(OP_CODE): + _params = ['val'] + + def __init__(self, val): + assert val in (0, 1) + self.val = bool(val) + + def eval(self, ctx): + ctx.stack.append(self.val) + + +class LOAD_STRING(OP_CODE): + _params = ['val'] + + def __init__(self, val): + assert isinstance(val, basestring) + self.val = unicode(val) + + def eval(self, ctx): + ctx.stack.append(self.val) + + +class LOAD_NUMBER(OP_CODE): + _params = ['val'] + + def __init__(self, val): + assert isinstance(val, (float, int, long)) + self.val = float(val) + + def eval(self, ctx): + ctx.stack.append(self.val) + + +class LOAD_REGEXP(OP_CODE): + _params = ['body', 'flags'] + + def __init__(self, body, flags): + self.body = body + self.flags = flags + + def eval(self, ctx): + # we have to generate a new regexp - they are mutable + ctx.stack.append(ctx.space.NewRegExp(self.body, self.flags)) + + +class LOAD_FUNCTION(OP_CODE): + _params = ['start', 'params', 'name', 'is_declaration', 'definitions'] + + def __init__(self, start, params, name, is_declaration, definitions): + assert type(start) == int + self.start = start # its an ID of label pointing to the beginning of the function bytecode + self.params = params + self.name = name + self.is_declaration = bool(is_declaration) + self.definitions = tuple(set(definitions + params)) + + def eval(self, ctx): + ctx.stack.append( + ctx.space.NewFunction(self.start, ctx, self.params, self.name, + self.is_declaration, self.definitions)) + + +class LOAD_OBJECT(OP_CODE): + _params = [ + 'props' + ] # props are py string pairs (prop_name, kind): kind can be either i, g or s. (init, get, set) + + def __init__(self, props): + self.num = len(props) + self.props = props + + def eval(self, ctx): + obj = ctx.space.NewObject() + if self.num: + obj._init(self.props, ctx.stack[-self.num:]) + del ctx.stack[-self.num:] + + ctx.stack.append(obj) + + +class LOAD_ARRAY(OP_CODE): + _params = ['num'] + + def __init__(self, num): + self.num = num + + def eval(self, ctx): + arr = ctx.space.NewArray(self.num) + if self.num: + arr._init(ctx.stack[-self.num:]) + del ctx.stack[-self.num:] + ctx.stack.append(arr) + + +class LOAD_THIS(OP_CODE): + def eval(self, ctx): + ctx.stack.append(ctx.THIS_BINDING) + + +class LOAD(OP_CODE): # todo check! + _params = ['identifier'] + + def __init__(self, identifier): + self.identifier = identifier + + # 11.1.2 + def eval(self, ctx): + ctx.stack.append(ctx.get(self.identifier, throw=True)) + + +class LOAD_MEMBER(OP_CODE): + def eval(self, ctx): + prop = ctx.stack.pop() + obj = ctx.stack.pop() + ctx.stack.append(get_member(obj, prop, ctx.space)) + + +class LOAD_MEMBER_DOT(OP_CODE): + _params = ['prop'] + + def __init__(self, prop): + self.prop = prop + + def eval(self, ctx): + obj = ctx.stack.pop() + ctx.stack.append(get_member_dot(obj, self.prop, ctx.space)) + + +# --------------- STORING -------------- + + +class STORE(OP_CODE): + _params = ['identifier'] + + def __init__(self, identifier): + self.identifier = identifier + + def eval(self, ctx): + value = ctx.stack[-1] # don't pop + ctx.put(self.identifier, value) + + +class STORE_MEMBER(OP_CODE): + def eval(self, ctx): + value = ctx.stack.pop() + name = ctx.stack.pop() + left = ctx.stack.pop() + + typ = type(left) + if typ in PRIMITIVES: + prop = to_string(name) + if typ == NULL_TYPE: + raise MakeError('TypeError', + "Cannot set property '%s' of null" % prop) + elif typ == UNDEFINED_TYPE: + raise MakeError('TypeError', + "Cannot set property '%s' of undefined" % prop) + # just ignore... + else: + left.put_member(name, value) + + ctx.stack.append(value) + + +class STORE_MEMBER_DOT(OP_CODE): + _params = ['prop'] + + def __init__(self, prop): + self.prop = prop + + def eval(self, ctx): + value = ctx.stack.pop() + left = ctx.stack.pop() + + typ = type(left) + if typ in PRIMITIVES: + if typ == NULL_TYPE: + raise MakeError('TypeError', + "Cannot set property '%s' of null" % self.prop) + elif typ == UNDEFINED_TYPE: + raise MakeError( + 'TypeError', + "Cannot set property '%s' of undefined" % self.prop) + # just ignore... + else: + left.put(self.prop, value) + ctx.stack.append(value) + + +class STORE_OP(OP_CODE): + _params = ['identifier', 'op'] + + def __init__(self, identifier, op): + self.identifier = identifier + self.op = op + + def eval(self, ctx): + value = ctx.stack.pop() + new_value = BINARY_OPERATIONS[self.op](ctx.get(self.identifier), value) + ctx.put(self.identifier, new_value) + ctx.stack.append(new_value) + + +class STORE_MEMBER_OP(OP_CODE): + _params = ['op'] + + def __init__(self, op): + self.op = op + + def eval(self, ctx): + value = ctx.stack.pop() + name = ctx.stack.pop() + left = ctx.stack.pop() + + typ = type(left) + if typ in PRIMITIVES: + if typ is NULL_TYPE: + raise MakeError( + 'TypeError', + "Cannot set property '%s' of null" % to_string(name)) + elif typ is UNDEFINED_TYPE: + raise MakeError( + 'TypeError', + "Cannot set property '%s' of undefined" % to_string(name)) + ctx.stack.append(BINARY_OPERATIONS[self.op](get_member( + left, name, ctx.space), value)) + return + else: + ctx.stack.append(BINARY_OPERATIONS[self.op](get_member( + left, name, ctx.space), value)) + left.put_member(name, ctx.stack[-1]) + + +class STORE_MEMBER_DOT_OP(OP_CODE): + _params = ['prop', 'op'] + + def __init__(self, prop, op): + self.prop = prop + self.op = op + + def eval(self, ctx): + value = ctx.stack.pop() + left = ctx.stack.pop() + + typ = type(left) + if typ in PRIMITIVES: + if typ == NULL_TYPE: + raise MakeError('TypeError', + "Cannot set property '%s' of null" % self.prop) + elif typ == UNDEFINED_TYPE: + raise MakeError( + 'TypeError', + "Cannot set property '%s' of undefined" % self.prop) + ctx.stack.append(BINARY_OPERATIONS[self.op](get_member_dot( + left, self.prop, ctx.space), value)) + return + else: + ctx.stack.append(BINARY_OPERATIONS[self.op](get_member_dot( + left, self.prop, ctx.space), value)) + left.put(self.prop, ctx.stack[-1]) + + +# --------------- CALLS -------------- + + +def bytecode_call(ctx, func, this, args): + if type(func) is not PyJsFunction: + raise MakeError('TypeError', "%s is not a function" % Type(func)) + if func.is_native: # call to built-in function or method + ctx.stack.append(func.call(this, args)) + return None + + # therefore not native. we have to return (new_context, function_label) to instruct interpreter to call + return func._generate_my_context(this, args), func.code + + +class CALL(OP_CODE): + def eval(self, ctx): + args = ctx.stack.pop() + func = ctx.stack.pop() + + return bytecode_call(ctx, func, ctx.space.GlobalObj, args) + + +class CALL_METHOD(OP_CODE): + def eval(self, ctx): + args = ctx.stack.pop() + prop = ctx.stack.pop() + base = ctx.stack.pop() + + func = get_member(base, prop, ctx.space) + + return bytecode_call(ctx, func, base, args) + + +class CALL_METHOD_DOT(OP_CODE): + _params = ['prop'] + + def __init__(self, prop): + self.prop = prop + + def eval(self, ctx): + args = ctx.stack.pop() + base = ctx.stack.pop() + + func = get_member_dot(base, self.prop, ctx.space) + + return bytecode_call(ctx, func, base, args) + + +class CALL_NO_ARGS(OP_CODE): + def eval(self, ctx): + func = ctx.stack.pop() + + return bytecode_call(ctx, func, ctx.space.GlobalObj, ()) + + +class CALL_METHOD_NO_ARGS(OP_CODE): + def eval(self, ctx): + prop = ctx.stack.pop() + base = ctx.stack.pop() + + func = get_member(base, prop, ctx.space) + + return bytecode_call(ctx, func, base, ()) + + +class CALL_METHOD_DOT_NO_ARGS(OP_CODE): + _params = ['prop'] + + def __init__(self, prop): + self.prop = prop + + def eval(self, ctx): + base = ctx.stack.pop() + + func = get_member_dot(base, self.prop, ctx.space) + + return bytecode_call(ctx, func, base, ()) + + +class NOP(OP_CODE): + def eval(self, ctx): + pass + + +class RETURN(OP_CODE): + def eval( + self, ctx + ): # remember to load the return value on stack before using RETURN op. + return (None, None) + + +class NEW(OP_CODE): + def eval(self, ctx): + args = ctx.stack.pop() + constructor = ctx.stack.pop() + if type(constructor) in PRIMITIVES or not hasattr( + constructor, 'create'): + raise MakeError('TypeError', + '%s is not a constructor' % Type(constructor)) + ctx.stack.append(constructor.create(args, space=ctx.space)) + + +class NEW_NO_ARGS(OP_CODE): + def eval(self, ctx): + constructor = ctx.stack.pop() + if type(constructor) in PRIMITIVES or not hasattr( + constructor, 'create'): + raise MakeError('TypeError', + '%s is not a constructor' % Type(constructor)) + ctx.stack.append(constructor.create((), space=ctx.space)) + + +# --------------- EXCEPTIONS -------------- + + +class THROW(OP_CODE): + def eval(self, ctx): + raise MakeError(None, None, ctx.stack.pop()) + + +class TRY_CATCH_FINALLY(OP_CODE): + _params = [ + 'try_label', 'catch_label', 'catch_variable', 'finally_label', + 'finally_present', 'end_label' + ] + + def __init__(self, try_label, catch_label, catch_variable, finally_label, + finally_present, end_label): + self.try_label = try_label + self.catch_label = catch_label + self.catch_variable = catch_variable + self.finally_label = finally_label + self.finally_present = finally_present + self.end_label = end_label + + def eval(self, ctx): + # 4 different exectution results + # 0=normal, 1=return, 2=jump_outside, 3=errors + # execute_fragment_under_context returns: + # (return_value, typ, jump_loc/error) + + ctx.stack.pop() + + # execute try statement + try_status = ctx.space.exe.execute_fragment_under_context( + ctx, self.try_label, self.catch_label) + + errors = try_status[1] == 3 + + # catch + if errors and self.catch_variable is not None: + # generate catch block context... + catch_context = Scope({ + self.catch_variable: + try_status[2].get_thrown_value(ctx.space) + }, ctx.space, ctx) + catch_context.THIS_BINDING = ctx.THIS_BINDING + catch_status = ctx.space.exe.execute_fragment_under_context( + catch_context, self.catch_label, self.finally_label) + else: + catch_status = None + + # finally + if self.finally_present: + finally_status = ctx.space.exe.execute_fragment_under_context( + ctx, self.finally_label, self.end_label) + else: + finally_status = None + + # now return controls + other_status = catch_status or try_status + if finally_status is None or (finally_status[1] == 0 + and other_status[1] != 0): + winning_status = other_status + else: + winning_status = finally_status + + val, typ, spec = winning_status + if typ == 0: # normal + ctx.stack.append(val) + return + elif typ == 1: # return + ctx.stack.append(spec) + return None, None # send return signal + elif typ == 2: # jump outside + ctx.stack.append(val) + return spec + elif typ == 3: + # throw is made with empty stack as usual + raise spec + else: + raise RuntimeError('Invalid return code') + + +# ------------ WITH + ITERATORS ---------- + + +class WITH(OP_CODE): + _params = ['beg_label', 'end_label'] + + def __init__(self, beg_label, end_label): + self.beg_label = beg_label + self.end_label = end_label + + def eval(self, ctx): + obj = to_object(ctx.stack.pop(), ctx.space) + + with_context = Scope( + obj, ctx.space, ctx) # todo actually use the obj to modify the ctx + with_context.THIS_BINDING = ctx.THIS_BINDING + status = ctx.space.exe.execute_fragment_under_context( + with_context, self.beg_label, self.end_label) + + val, typ, spec = status + + if typ != 3: # exception + ctx.stack.pop() + + if typ == 0: # normal + ctx.stack.append(val) + return + elif typ == 1: # return + ctx.stack.append(spec) + return None, None # send return signal + elif typ == 2: # jump outside + ctx.stack.append(val) + return spec + elif typ == 3: # exception + # throw is made with empty stack as usual + raise spec + else: + raise RuntimeError('Invalid return code') + + +class FOR_IN(OP_CODE): + _params = ['name', 'body_start_label', 'continue_label', 'break_label'] + + def __init__(self, name, body_start_label, continue_label, break_label): + self.name = name + self.body_start_label = body_start_label + self.continue_label = continue_label + self.break_label = break_label + + def eval(self, ctx): + iterable = ctx.stack.pop() + if is_null(iterable) or is_undefined(iterable): + ctx.stack.pop() + ctx.stack.append(undefined) + return self.break_label + + obj = to_object(iterable, ctx.space) + + for e in sorted(obj.own): + if not obj.own[e]['enumerable']: + continue + + ctx.put( + self.name, e + ) # JS would have been so much nicer if this was ctx.space.put(self.name, obj.get(e)) + + # evaluate the body + status = ctx.space.exe.execute_fragment_under_context( + ctx, self.body_start_label, self.break_label) + + val, typ, spec = status + + if typ != 3: # exception + ctx.stack.pop() + + if typ == 0: # normal + ctx.stack.append(val) + continue + elif typ == 1: # return + ctx.stack.append(spec) + return None, None # send return signal + elif typ == 2: # jump outside + # now have to figure out whether this is a continue or something else... + ctx.stack.append(val) + if spec == self.continue_label: + # just a continue, perform next iteration as normal + continue + return spec # break or smth, go there and finish the iteration + elif typ == 3: # exception + # throw is made with empty stack as usual + raise spec + else: + raise RuntimeError('Invalid return code') + + return self.break_label + + +# all opcodes... +OP_CODES = {} +g = '' +for g in globals(): + try: + if not issubclass(globals()[g], OP_CODE) or g is 'OP_CODE': + continue + except: + continue + OP_CODES[g] = globals()[g] diff --git a/libs/js2py/internals/operations.py b/libs/js2py/internals/operations.py new file mode 100644 index 000000000..d9875088c --- /dev/null +++ b/libs/js2py/internals/operations.py @@ -0,0 +1,314 @@ +from __future__ import unicode_literals +from simplex import * +from conversions import * + +# ------------------------------------------------------------------------------ +# Unary operations + + +# -x +def minus_uop(self): + return -to_number(self) + + +# +x +def plus_uop(self): # +u + return to_number(self) + + +# !x +def logical_negation_uop(self): # !u cant do 'not u' :( + return not to_boolean(self) + + +# typeof x +def typeof_uop(self): + if is_callable(self): + return u'function' + typ = Type(self).lower() + if typ == u'null': + typ = u'object' # absolutely idiotic... + return typ + + +# ~u +def bit_invert_uop(self): + return float(to_int32(float(~to_int32(self)))) + + +# void +def void_op(self): + return undefined + + +UNARY_OPERATIONS = { + '+': plus_uop, + '-': minus_uop, + '!': logical_negation_uop, + '~': bit_invert_uop, + 'void': void_op, + 'typeof': + typeof_uop, # this one only for member expressions! for identifiers its slightly different... +} + +# ------------------------------------------------------------------------------ +# ----- binary ops ------- + +# Bitwise operators +# <<, >>, &, ^, |, ~ + + +# << +def bit_lshift_op(self, other): + lnum = to_int32(self) + rnum = to_uint32(other) + shiftCount = rnum & 0x1F + return float(to_int32(float(lnum << shiftCount))) + + +# >> +def bit_rshift_op(self, other): + lnum = to_int32(self) + rnum = to_uint32(other) + shiftCount = rnum & 0x1F + return float(to_int32(float(lnum >> shiftCount))) + + +# >>> +def bit_bshift_op(self, other): + lnum = to_uint32(self) + rnum = to_uint32(other) + shiftCount = rnum & 0x1F + return float(to_uint32(float(lnum >> shiftCount))) + + +# & +def bit_and_op(self, other): + lnum = to_int32(self) + rnum = to_int32(other) + return float(to_int32(float(lnum & rnum))) + + +# ^ +def bit_xor_op(self, other): + lnum = to_int32(self) + rnum = to_int32(other) + return float(to_int32(float(lnum ^ rnum))) + + +# | +def bit_or_op(self, other): + lnum = to_int32(self) + rnum = to_int32(other) + return float(to_int32(float(lnum | rnum))) + + +# Additive operators +# + and - are implemented here + + +# + +def add_op(self, other): + if type(self) is float and type(other) is float: + return self + other + if type(self) is unicode and type(other) is unicode: + return self + other + # standard way... + a = to_primitive(self) + b = to_primitive(other) + if type(a) is unicode or type(b) is unicode: # string wins hehe + return to_string(a) + to_string(b) + return to_number(a) + to_number(b) + + +# - +def sub_op(self, other): + return to_number(self) - to_number(other) + + +# Multiplicative operators +# *, / and % are implemented here + + +# * +def mul_op(self, other): + return to_number(self) * to_number(other) + + +# / +def div_op(self, other): + a = to_number(self) + b = to_number(other) + if b: + return a / float(b) # ensure at least one is a float. + if not a or a != a: + return NaN + return Infinity if a > 0 else -Infinity + + +# % +def mod_op(self, other): + a = to_number(self) + b = to_number(other) + if abs(a) == Infinity or not b: + return NaN + if abs(b) == Infinity: + return a + pyres = a % b # different signs in python and javascript + # python has the same sign as b and js has the same + # sign as a. + if a < 0 and pyres > 0: + pyres -= abs(b) + elif a > 0 and pyres < 0: + pyres += abs(b) + return float(pyres) + + +# Comparisons +# <, <=, !=, ==, >=, > are implemented here. +def abstract_relational_comparison(self, other, + self_first=True): # todo speed up! + ''' self= +def greater_eq_op(self, other): + res = abstract_relational_comparison(self, other, True) + if res is None: + return False + return not res + + +# > +def greater_op(self, other): + res = abstract_relational_comparison(self, other, False) + if res is None: + return False + return res + + +# equality + + +def abstract_equality_op(self, other): + ''' returns the result of JS == compare. + result is PyJs type: bool''' + tx, ty = Type(self), Type(other) + if tx == ty: + if tx == 'Undefined' or tx == 'Null': + return True + if tx == 'Number' or tx == 'String' or tx == 'Boolean': + return self == other + return self is other # Object + elif (tx == 'Undefined' and ty == 'Null') or (ty == 'Undefined' + and tx == 'Null'): + return True + elif tx == 'Number' and ty == 'String': + return abstract_equality_op(self, to_number(other)) + elif tx == 'String' and ty == 'Number': + return abstract_equality_op(to_number(self), other) + elif tx == 'Boolean': + return abstract_equality_op(to_number(self), other) + elif ty == 'Boolean': + return abstract_equality_op(self, to_number(other)) + elif (tx == 'String' or tx == 'Number') and is_object(other): + return abstract_equality_op(self, to_primitive(other)) + elif (ty == 'String' or ty == 'Number') and is_object(self): + return abstract_equality_op(to_primitive(self), other) + else: + return False + + +def abstract_inequality_op(self, other): + return not abstract_equality_op(self, other) + + +def strict_equality_op(self, other): + typ = Type(self) + if typ != Type(other): + return False + if typ == 'Undefined' or typ == 'Null': + return True + if typ == 'Boolean' or typ == 'String' or typ == 'Number': + return self == other + else: # object + return self is other # Id compare. + + +def strict_inequality_op(self, other): + return not strict_equality_op(self, other) + + +def instanceof_op(self, other): + '''checks if self is instance of other''' + if not hasattr(other, 'has_instance'): + return False + return other.has_instance(self) + + +def in_op(self, other): + '''checks if self is in other''' + if not is_object(other): + raise MakeError( + 'TypeError', + "You can\'t use 'in' operator to search in non-objects") + return other.has_property(to_string(self)) + + +BINARY_OPERATIONS = { + '+': add_op, + '-': sub_op, + '*': mul_op, + '/': div_op, + '%': mod_op, + '<<': bit_lshift_op, + '>>': bit_rshift_op, + '>>>': bit_bshift_op, + '|': bit_or_op, + '&': bit_and_op, + '^': bit_xor_op, + '==': abstract_equality_op, + '!=': abstract_inequality_op, + '===': strict_equality_op, + '!==': strict_inequality_op, + '<': less_op, + '<=': less_eq_op, + '>': greater_op, + '>=': greater_eq_op, + 'in': in_op, + 'instanceof': instanceof_op, +} diff --git a/libs/js2py/internals/prototypes/__init__.py b/libs/js2py/internals/prototypes/__init__.py new file mode 100644 index 000000000..8de79cb9d --- /dev/null +++ b/libs/js2py/internals/prototypes/__init__.py @@ -0,0 +1 @@ +__author__ = 'Piotr Dabkowski' diff --git a/libs/js2py/internals/prototypes/jsarray.py b/libs/js2py/internals/prototypes/jsarray.py new file mode 100644 index 000000000..ace774ece --- /dev/null +++ b/libs/js2py/internals/prototypes/jsarray.py @@ -0,0 +1,489 @@ +from __future__ import unicode_literals +from ..conversions import * +from ..func_utils import * +from ..operations import strict_equality_op + +import six + +if six.PY3: + xrange = range + import functools + +ARR_STACK = set({}) + + +class ArrayPrototype: + def toString(this, args): + arr = to_object(this, args.space) + func = arr.get('join') + if not is_callable(func): + return u'[object %s]' % GetClass(arr) + return func.call(this, ()) + + def toLocaleString(this, args): + array = to_object(this, args.space) + arr_len = js_arr_length(array) + # separator is simply a comma ',' + if not arr_len: + return '' + res = [] + for i in xrange(arr_len): + element = array.get(unicode(i)) + if is_undefined(element) or is_null(element): + res.append('') + else: + cand = to_object(element, args.space) + str_func = cand.get('toLocaleString') + if not is_callable(str_func): + raise MakeError( + 'TypeError', + 'toLocaleString method of item at index %d is not callable' + % i) + res.append(to_string(str_func.call(cand, ()))) + return ','.join(res) + + def concat(this, args): + array = to_object(this, args.space) + items = [array] + items.extend(tuple(args)) + A = [] + for E in items: + if GetClass(E) == 'Array': + k = 0 + e_len = js_arr_length(E) + while k < e_len: + if E.has_property(unicode(k)): + A.append(E.get(unicode(k))) + k += 1 + else: + A.append(E) + return args.space.ConstructArray(A) + + def join(this, args): + ARR_STACK.add(this) + array = to_object(this, args.space) + separator = get_arg(args, 0) + arr_len = js_arr_length(array) + separator = ',' if is_undefined(separator) else to_string(separator) + elems = [] + for e in xrange(arr_len): + elem = array.get(unicode(e)) + if elem in ARR_STACK: + s = '' + else: + s = to_string(elem) + elems.append( + s if not (is_undefined(elem) or is_null(elem)) else '') + res = separator.join(elems) + ARR_STACK.remove(this) + return res + + def pop(this, args): #todo check + array = to_object(this, args.space) + arr_len = js_arr_length(array) + if not arr_len: + array.put('length', float(arr_len)) + return undefined + ind = unicode(arr_len - 1) + element = array.get(ind) + array.delete(ind) + array.put('length', float(arr_len - 1)) + return element + + def push(this, args): + array = to_object(this, args.space) + arr_len = js_arr_length(array) + to_put = tuple(args) + i = arr_len + for i, e in enumerate(to_put, arr_len): + array.put(unicode(i), e, True) + array.put('length', float(arr_len + len(to_put)), True) + return float(i) + + def reverse(this, args): + array = to_object(this, args.space) + vals = js_array_to_list(array) + has_props = [ + array.has_property(unicode(e)) + for e in xrange(js_arr_length(array)) + ] + vals.reverse() + has_props.reverse() + for i, val in enumerate(vals): + if has_props[i]: + array.put(unicode(i), val) + else: + array.delete(unicode(i)) + return array + + def shift(this, args): + array = to_object(this, args.space) + arr_len = js_arr_length(array) + if not arr_len: + array.put('length', 0.) + return undefined + first = array.get('0') + for k in xrange(1, arr_len): + from_s, to_s = unicode(k), unicode(k - 1) + if array.has_property(from_s): + array.put(to_s, array.get(from_s)) + else: + array.delete(to_s) + array.delete(unicode(arr_len - 1)) + array.put('length', float(arr_len - 1)) + return first + + def slice(this, args): # todo check + array = to_object(this, args.space) + start = get_arg(args, 0) + end = get_arg(args, 1) + arr_len = js_arr_length(array) + relative_start = to_int(start) + k = max((arr_len + relative_start), 0) if relative_start < 0 else min( + relative_start, arr_len) + relative_end = arr_len if is_undefined(end) else to_int(end) + final = max((arr_len + relative_end), 0) if relative_end < 0 else min( + relative_end, arr_len) + res = [] + n = 0 + while k < final: + pk = unicode(k) + if array.has_property(pk): + res.append(array.get(pk)) + k += 1 + n += 1 + return args.space.ConstructArray(res) + + def sort( + this, args + ): # todo: this assumes array continous (not sparse) - fix for sparse arrays + cmpfn = get_arg(args, 0) + if not GetClass(this) in ('Array', 'Arguments'): + return to_object(this, args.space) # do nothing + arr_len = js_arr_length(this) + if not arr_len: + return this + arr = [ + (this.get(unicode(e)) if this.has_property(unicode(e)) else None) + for e in xrange(arr_len) + ] + if not is_callable(cmpfn): + cmpfn = None + cmp = lambda a, b: sort_compare(a, b, cmpfn) + if six.PY3: + key = functools.cmp_to_key(cmp) + arr.sort(key=key) + else: + arr.sort(cmp=cmp) + for i in xrange(arr_len): + if arr[i] is None: + this.delete(unicode(i)) + else: + this.put(unicode(i), arr[i]) + return this + + def splice(this, args): + # 1-8 + array = to_object(this, args.space) + start = get_arg(args, 0) + deleteCount = get_arg(args, 1) + arr_len = js_arr_length(this) + relative_start = to_int(start) + actual_start = max( + (arr_len + relative_start), 0) if relative_start < 0 else min( + relative_start, arr_len) + actual_delete_count = min( + max(to_int(deleteCount), 0), arr_len - actual_start) + k = 0 + A = args.space.NewArray(0) + # 9 + while k < actual_delete_count: + if array.has_property(unicode(actual_start + k)): + A.put(unicode(k), array.get(unicode(actual_start + k))) + k += 1 + # 10-11 + items = list(args)[2:] + items_len = len(items) + # 12 + if items_len < actual_delete_count: + k = actual_start + while k < (arr_len - actual_delete_count): + fr = unicode(k + actual_delete_count) + to = unicode(k + items_len) + if array.has_property(fr): + array.put(to, array.get(fr)) + else: + array.delete(to) + k += 1 + k = arr_len + while k > (arr_len - actual_delete_count + items_len): + array.delete(unicode(k - 1)) + k -= 1 + # 13 + elif items_len > actual_delete_count: + k = arr_len - actual_delete_count + while k > actual_start: + fr = unicode(k + actual_delete_count - 1) + to = unicode(k + items_len - 1) + if array.has_property(fr): + array.put(to, array.get(fr)) + else: + array.delete(to) + k -= 1 + # 14-17 + k = actual_start + while items: + E = items.pop(0) + array.put(unicode(k), E) + k += 1 + array.put('length', float(arr_len - actual_delete_count + items_len)) + return A + + def unshift(this, args): + array = to_object(this, args.space) + arr_len = js_arr_length(array) + argCount = len(args) + k = arr_len + while k > 0: + fr = unicode(k - 1) + to = unicode(k + argCount - 1) + if array.has_property(fr): + array.put(to, array.get(fr)) + else: + array.delete(to) + k -= 1 + items = tuple(args) + for j, e in enumerate(items): + array.put(unicode(j), e) + array.put('length', float(arr_len + argCount)) + return float(arr_len + argCount) + + def indexOf(this, args): + array = to_object(this, args.space) + searchElement = get_arg(args, 0) + arr_len = js_arr_length(array) + if arr_len == 0: + return -1. + if len(args) > 1: + n = to_int(args[1]) + else: + n = 0 + if n >= arr_len: + return -1. + if n >= 0: + k = n + else: + k = arr_len - abs(n) + if k < 0: + k = 0 + while k < arr_len: + if array.has_property(unicode(k)): + elementK = array.get(unicode(k)) + if strict_equality_op(searchElement, elementK): + return float(k) + k += 1 + return -1. + + def lastIndexOf(this, args): + array = to_object(this, args.space) + searchElement = get_arg(args, 0) + arr_len = js_arr_length(array) + if arr_len == 0: + return -1. + if len(args) > 1: + n = to_int(args[1]) + else: + n = arr_len - 1 + if n >= 0: + k = min(n, arr_len - 1) + else: + k = arr_len - abs(n) + while k >= 0: + if array.has_property(unicode(k)): + elementK = array.get(unicode(k)) + if strict_equality_op(searchElement, elementK): + return float(k) + k -= 1 + return -1. + + def every(this, args): + array = to_object(this, args.space) + callbackfn = get_arg(args, 0) + arr_len = js_arr_length(array) + if not is_callable(callbackfn): + raise MakeError('TypeError', 'callbackfn must be a function') + T = get_arg(args, 1) + k = 0 + while k < arr_len: + if array.has_property(unicode(k)): + kValue = array.get(unicode(k)) + if not to_boolean( + callbackfn.call(T, (kValue, float(k), array))): + return False + k += 1 + return True + + def some(this, args): + array = to_object(this, args.space) + callbackfn = get_arg(args, 0) + arr_len = js_arr_length(array) + if not is_callable(callbackfn): + raise MakeError('TypeError', 'callbackfn must be a function') + T = get_arg(args, 1) + k = 0 + while k < arr_len: + if array.has_property(unicode(k)): + kValue = array.get(unicode(k)) + if to_boolean(callbackfn.call(T, (kValue, float(k), array))): + return True + k += 1 + return False + + def forEach(this, args): + array = to_object(this, args.space) + callbackfn = get_arg(args, 0) + arr_len = js_arr_length(array) + if not is_callable(callbackfn): + raise MakeError('TypeError', 'callbackfn must be a function') + _this = get_arg(args, 1) + k = 0 + while k < arr_len: + sk = unicode(k) + if array.has_property(sk): + kValue = array.get(sk) + callbackfn.call(_this, (kValue, float(k), array)) + k += 1 + return undefined + + def map(this, args): + array = to_object(this, args.space) + callbackfn = get_arg(args, 0) + arr_len = js_arr_length(array) + if not is_callable(callbackfn): + raise MakeError('TypeError', 'callbackfn must be a function') + _this = get_arg(args, 1) + k = 0 + A = args.space.NewArray(0) + while k < arr_len: + Pk = unicode(k) + if array.has_property(Pk): + kValue = array.get(Pk) + mappedValue = callbackfn.call(_this, (kValue, float(k), array)) + A.define_own_property( + Pk, { + 'value': mappedValue, + 'writable': True, + 'enumerable': True, + 'configurable': True + }, False) + k += 1 + return A + + def filter(this, args): + array = to_object(this, args.space) + callbackfn = get_arg(args, 0) + arr_len = js_arr_length(array) + if not is_callable(callbackfn): + raise MakeError('TypeError', 'callbackfn must be a function') + _this = get_arg(args, 1) + k = 0 + res = [] + while k < arr_len: + if array.has_property(unicode(k)): + kValue = array.get(unicode(k)) + if to_boolean( + callbackfn.call(_this, (kValue, float(k), array))): + res.append(kValue) + k += 1 + return args.space.ConstructArray(res) + + def reduce(this, args): + array = to_object(this, args.space) + callbackfn = get_arg(args, 0) + arr_len = js_arr_length(array) + if not is_callable(callbackfn): + raise MakeError('TypeError', 'callbackfn must be a function') + if not arr_len and len(args) < 2: + raise MakeError('TypeError', + 'Reduce of empty array with no initial value') + k = 0 + accumulator = undefined + if len(args) > 1: # initial value present + accumulator = args[1] + else: + kPresent = False + while not kPresent and k < arr_len: + kPresent = array.has_property(unicode(k)) + if kPresent: + accumulator = array.get(unicode(k)) + k += 1 + if not kPresent: + raise MakeError('TypeError', + 'Reduce of empty array with no initial value') + while k < arr_len: + if array.has_property(unicode(k)): + kValue = array.get(unicode(k)) + accumulator = callbackfn.call( + undefined, (accumulator, kValue, float(k), array)) + k += 1 + return accumulator + + def reduceRight(this, args): + array = to_object(this, args.space) + callbackfn = get_arg(args, 0) + arr_len = js_arr_length(array) + if not is_callable(callbackfn): + raise MakeError('TypeError', 'callbackfn must be a function') + if not arr_len and len(args) < 2: + raise MakeError('TypeError', + 'Reduce of empty array with no initial value') + k = arr_len - 1 + accumulator = undefined + + if len(args) > 1: # initial value present + accumulator = args[1] + else: + kPresent = False + while not kPresent and k >= 0: + kPresent = array.has_property(unicode(k)) + if kPresent: + accumulator = array.get(unicode(k)) + k -= 1 + if not kPresent: + raise MakeError('TypeError', + 'Reduce of empty array with no initial value') + while k >= 0: + if array.has_property(unicode(k)): + kValue = array.get(unicode(k)) + accumulator = callbackfn.call( + undefined, (accumulator, kValue, float(k), array)) + k -= 1 + return accumulator + + +def sort_compare(a, b, comp): + if a is None: + if b is None: + return 0 + return 1 + if b is None: + if a is None: + return 0 + return -1 + if is_undefined(a): + if is_undefined(b): + return 0 + return 1 + if is_undefined(b): + if is_undefined(a): + return 0 + return -1 + if comp is not None: + res = comp.call(undefined, (a, b)) + return to_int(res) + x, y = to_string(a), to_string(b) + if x < y: + return -1 + elif x > y: + return 1 + return 0 diff --git a/libs/js2py/internals/prototypes/jsboolean.py b/libs/js2py/internals/prototypes/jsboolean.py new file mode 100644 index 000000000..9aff9d2e8 --- /dev/null +++ b/libs/js2py/internals/prototypes/jsboolean.py @@ -0,0 +1,22 @@ +from __future__ import unicode_literals + +from ..conversions import * +from ..func_utils import * + + +class BooleanPrototype: + def toString(this, args): + if GetClass(this) != 'Boolean': + raise MakeError('TypeError', + 'Boolean.prototype.toString is not generic') + if is_object(this): + this = this.value + return u'true' if this else u'false' + + def valueOf(this, args): + if GetClass(this) != 'Boolean': + raise MakeError('TypeError', + 'Boolean.prototype.valueOf is not generic') + if is_object(this): + this = this.value + return this diff --git a/libs/js2py/internals/prototypes/jserror.py b/libs/js2py/internals/prototypes/jserror.py new file mode 100644 index 000000000..c58dec498 --- /dev/null +++ b/libs/js2py/internals/prototypes/jserror.py @@ -0,0 +1,15 @@ +from __future__ import unicode_literals +from ..conversions import * +from ..func_utils import * + + +class ErrorPrototype: + def toString(this, args): + if Type(this) != 'Object': + raise MakeError('TypeError', + 'Error.prototype.toString called on non-object') + name = this.get('name') + name = u'Error' if is_undefined(name) else to_string(name) + msg = this.get('message') + msg = '' if is_undefined(msg) else to_string(msg) + return name + (name and msg and ': ') + msg diff --git a/libs/js2py/internals/prototypes/jsfunction.py b/libs/js2py/internals/prototypes/jsfunction.py new file mode 100644 index 000000000..06ec68014 --- /dev/null +++ b/libs/js2py/internals/prototypes/jsfunction.py @@ -0,0 +1,61 @@ +from __future__ import unicode_literals + +from ..conversions import * +from ..func_utils import * + +# python 3 support +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + +# todo fix apply and bind + + +class FunctionPrototype: + def toString(this, args): + if not is_callable(this): + raise MakeError('TypeError', + 'Function.prototype.toString is not generic') + + args = u', '.join(map(unicode, this.params)) + return u'function %s(%s) { [native code] }' % (this.name if this.name + else u'', args) + + def call(this, args): + if not is_callable(this): + raise MakeError('TypeError', + 'Function.prototype.call is not generic') + _this = get_arg(args, 0) + _args = tuple(args)[1:] + return this.call(_this, _args) + + def apply(this, args): + if not is_callable(this): + raise MakeError('TypeError', + 'Function.prototype.apply is not generic') + _args = get_arg(args, 1) + if not is_object(_args): + raise MakeError( + 'TypeError', + 'argList argument to Function.prototype.apply must an Object') + _this = get_arg(args, 0) + return this.call(_this, js_array_to_tuple(_args)) + + def bind(this, args): + if not is_callable(this): + raise MakeError('TypeError', + 'Function.prototype.bind is not generic') + bound_this = get_arg(args, 0) + bound_args = tuple(args)[1:] + + def bound(dummy_this, extra_args): + return this.call(bound_this, bound_args + tuple(extra_args)) + + js_bound = args.space.NewFunction(bound, this.ctx, (), u'', False, ()) + js_bound.put(u'length', + float(max(len(this.params) - len(bound_args), 0.))) + js_bound.put(u'name', u'boundFunc') + return js_bound diff --git a/libs/js2py/internals/prototypes/jsjson.py b/libs/js2py/internals/prototypes/jsjson.py new file mode 100644 index 000000000..87dc5f389 --- /dev/null +++ b/libs/js2py/internals/prototypes/jsjson.py @@ -0,0 +1,205 @@ +from __future__ import unicode_literals +from ..conversions import * +from ..func_utils import * +from ..operations import strict_equality_op +import json + +indent = '' +# python 3 support +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + + +def parse(this, args): + text, reviver = get_arg(args, 0), get_arg(args, 1) + s = to_string(text) + try: + unfiltered = json.loads(s) + except: + raise MakeError( + 'SyntaxError', + 'JSON.parse could not parse JSON string - Invalid syntax') + unfiltered = to_js(unfiltered, args.space) + if is_callable(reviver): + root = args.space.ConstructObject({'': unfiltered}) + return walk(root, '', reviver) + else: + return unfiltered + + +def stringify(this, args): + global indent + value, replacer, space = get_arg(args, 0), get_arg(args, 1), get_arg( + args, 2) + stack = set([]) + indent = '' + property_list = replacer_function = undefined + if is_object(replacer): + if is_callable(replacer): + replacer_function = replacer + elif replacer.Class == 'Array': + property_list = [] + for e in replacer: + v = replacer[e] + item = undefined + typ = Type(v) + if typ == 'Number': + item = to_string(v) + elif typ == 'String': + item = v + elif typ == 'Object': + if GetClass(v) in ('String', 'Number'): + item = to_string(v) + if not is_undefined(item) and item not in property_list: + property_list.append(item) + if is_object(space): + if GetClass(space) == 'Number': + space = to_number(space) + elif GetClass(space) == 'String': + space = to_string(space) + if Type(space) == 'Number': + space = min(10, to_int(space)) + gap = max(int(space), 0) * ' ' + elif Type(space) == 'String': + gap = space[:10] + else: + gap = '' + return Str('', args.space.ConstructObject({ + '': value + }), replacer_function, property_list, gap, stack, space) + + +def Str(key, holder, replacer_function, property_list, gap, stack, space): + value = holder.get(key) + if is_object(value): + to_json = value.get('toJSON') + if is_callable(to_json): + value = to_json.call(value, (key, )) + if not is_undefined(replacer_function): + value = replacer_function.call(holder, (key, value)) + + if is_object(value): + if value.Class == 'String': + value = to_string(value) + elif value.Class == 'Number': + value = to_number(value) + elif value.Class == 'Boolean': + value = to_boolean(value) + typ = Type(value) + if is_null(value): + return 'null' + elif typ == 'Boolean': + return 'true' if value else 'false' + elif typ == 'String': + return Quote(value) + elif typ == 'Number': + if not is_infinity(value): + return to_string(value) + return 'null' + if is_object(value) and not is_callable(value): + if value.Class == 'Array': + return ja(value, stack, gap, property_list, replacer_function, + space) + else: + return jo(value, stack, gap, property_list, replacer_function, + space) + return undefined + + +def jo(value, stack, gap, property_list, replacer_function, space): + global indent + if value in stack: + raise MakeError('TypeError', 'Converting circular structure to JSON') + stack.add(value) + stepback = indent + indent += gap + if not is_undefined(property_list): + k = property_list + else: + k = [unicode(e) for e, d in value.own.items() if d.get('enumerable')] + partial = [] + for p in k: + str_p = Str(p, value, replacer_function, property_list, gap, stack, + space) + if not is_undefined(str_p): + member = json.dumps(p) + ':' + ( + ' ' if gap else + '') + str_p # todo not sure here - what space character? + partial.append(member) + if not partial: + final = '{}' + else: + if not gap: + final = '{%s}' % ','.join(partial) + else: + sep = ',\n' + indent + properties = sep.join(partial) + final = '{\n' + indent + properties + '\n' + stepback + '}' + stack.remove(value) + indent = stepback + return final + + +def ja(value, stack, gap, property_list, replacer_function, space): + global indent + if value in stack: + raise MakeError('TypeError', 'Converting circular structure to JSON') + stack.add(value) + stepback = indent + indent += gap + partial = [] + length = js_arr_length(value) + for index in xrange(length): + index = unicode(index) + str_index = Str(index, value, replacer_function, property_list, gap, + stack, space) + if is_undefined(str_index): + partial.append('null') + else: + partial.append(str_index) + if not partial: + final = '[]' + else: + if not gap: + final = '[%s]' % ','.join(partial) + else: + sep = ',\n' + indent + properties = sep.join(partial) + final = '[\n' + indent + properties + '\n' + stepback + ']' + stack.remove(value) + indent = stepback + return final + + +def Quote(string): + return json.dumps(string) + + +def to_js(d, _args_space): + return convert_to_js_type(d, _args_space) + + +def walk(holder, name, reviver): + val = holder.get(name) + if GetClass(val) == 'Array': + for i in xrange(js_arr_length(val)): + i = unicode(i) + new_element = walk(val, i, reviver) + if is_undefined(new_element): + val.delete(i) + else: + new_element.put(i, new_element) + elif is_object(val): + for key in [ + unicode(e) for e, d in val.own.items() if d.get('enumerable') + ]: + new_element = walk(val, key, reviver) + if is_undefined(new_element): + val.delete(key) + else: + val.put(key, new_element) + return reviver.call(holder, (name, val)) diff --git a/libs/js2py/internals/prototypes/jsnumber.py b/libs/js2py/internals/prototypes/jsnumber.py new file mode 100644 index 000000000..d099eabd3 --- /dev/null +++ b/libs/js2py/internals/prototypes/jsnumber.py @@ -0,0 +1,163 @@ +from __future__ import unicode_literals +from ..conversions import * +from ..func_utils import * + +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + +RADIX_SYMBOLS = { + 0: '0', + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6', + 7: '7', + 8: '8', + 9: '9', + 10: 'a', + 11: 'b', + 12: 'c', + 13: 'd', + 14: 'e', + 15: 'f', + 16: 'g', + 17: 'h', + 18: 'i', + 19: 'j', + 20: 'k', + 21: 'l', + 22: 'm', + 23: 'n', + 24: 'o', + 25: 'p', + 26: 'q', + 27: 'r', + 28: 's', + 29: 't', + 30: 'u', + 31: 'v', + 32: 'w', + 33: 'x', + 34: 'y', + 35: 'z' +} + + +def to_str_rep(num): + if is_nan(num): + return 'NaN' + elif is_infinity(num): + sign = '-' if num < 0 else '' + return sign + 'Infinity' + elif int(num) == num: # dont print .0 + return unicode(int(num)) + return unicode(num) # todo: Make it 100% consistent with Node + + +class NumberPrototype: + def toString(this, args): + if GetClass(this) != 'Number': + raise MakeError('TypeError', + 'Number.prototype.valueOf is not generic') + if type(this) != float: + this = this.value + radix = get_arg(args, 0) + if is_undefined(radix): + return to_str_rep(this) + r = to_int(radix) + if r == 10: + return to_str_rep(this) + if r not in xrange(2, 37) or radix != r: + raise MakeError( + 'RangeError', + 'Number.prototype.toString() radix argument must be an integer between 2 and 36' + ) + num = to_int(this) + if num < 0: + num = -num + sign = '-' + else: + sign = '' + res = '' + while num: + s = RADIX_SYMBOLS[num % r] + num = num // r + res = s + res + return sign + (res if res else '0') + + def valueOf(this, args): + if GetClass(this) != 'Number': + raise MakeError('TypeError', + 'Number.prototype.valueOf is not generic') + if type(this) != float: + this = this.value + return this + + def toFixed(this, args): + if GetClass(this) != 'Number': + raise MakeError( + 'TypeError', + 'Number.prototype.toFixed called on incompatible receiver') + if type(this) != float: + this = this.value + fractionDigits = get_arg(args, 0) + digs = to_int(fractionDigits) + if digs < 0 or digs > 20: + raise MakeError( + 'RangeError', + 'toFixed() digits argument must be between 0 and 20') + elif is_infinity(this): + return 'Infinity' if this > 0 else '-Infinity' + elif is_nan(this): + return 'NaN' + return format(this, '-.%df' % digs) + + def toExponential(this, args): + if GetClass(this) != 'Number': + raise MakeError( + 'TypeError', + 'Number.prototype.toExponential called on incompatible receiver' + ) + if type(this) != float: + this = this.value + fractionDigits = get_arg(args, 0) + digs = to_int(fractionDigits) + if digs < 0 or digs > 20: + raise MakeError( + 'RangeError', + 'toFixed() digits argument must be between 0 and 20') + elif is_infinity(this): + return 'Infinity' if this > 0 else '-Infinity' + elif is_nan(this): + return 'NaN' + return format(this, '-.%de' % digs) + + def toPrecision(this, args): + if GetClass(this) != 'Number': + raise MakeError( + 'TypeError', + 'Number.prototype.toPrecision called on incompatible receiver') + if type(this) != float: + this = this.value + precision = get_arg(args, 0) + if is_undefined(precision): + return to_string(this) + prec = to_int(precision) + if is_nan(this): + return 'NaN' + elif is_infinity(this): + return 'Infinity' if this > 0 else '-Infinity' + digs = prec - len(str(int(this))) + if digs >= 0: + return format(this, '-.%df' % digs) + else: + return format(this, '-.%df' % (prec - 1)) + + +NumberPrototype.toLocaleString = NumberPrototype.toString diff --git a/libs/js2py/internals/prototypes/jsobject.py b/libs/js2py/internals/prototypes/jsobject.py new file mode 100644 index 000000000..cdda6baba --- /dev/null +++ b/libs/js2py/internals/prototypes/jsobject.py @@ -0,0 +1,48 @@ +from __future__ import unicode_literals +from ..conversions import * +from ..func_utils import * + + +class ObjectPrototype: + def toString(this, args): + if type(this) == UNDEFINED_TYPE: + return u'[object Undefined]' + elif type(this) == NULL_TYPE: + return u'[object Null]' + return u'[object %s]' % GetClass(to_object(this, args.space)) + + def valueOf(this, args): + return to_object(this, args.space) + + def toLocaleString(this, args): + o = to_object(this, args.space) + toString = o.get(u'toString') + if not is_callable(toString): + raise MakeError('TypeError', 'toString of this is not callcable') + else: + return toString.call(this, args) + + def hasOwnProperty(this, args): + prop = get_arg(args, 0) + o = to_object(this, args.space) + return o.get_own_property(to_string(prop)) is not None + + def isPrototypeOf(this, args): + # a bit stupid specification because of object conversion that will cause invalid values for primitives + # for example Object.prototype.isPrototypeOf.call((5).__proto__, 5) gives false + obj = get_arg(args, 0) + if not is_object(obj): + return False + o = to_object(this, args.space) + while 1: + obj = obj.prototype + if obj is None or is_null(obj): + return False + if obj is o: + return True + + def propertyIsEnumerable(this, args): + prop = get_arg(args, 0) + o = to_object(this, args.space) + cand = o.own.get(to_string(prop)) + return cand is not None and cand.get('enumerable') diff --git a/libs/js2py/internals/prototypes/jsregexp.py b/libs/js2py/internals/prototypes/jsregexp.py new file mode 100644 index 000000000..54aba3274 --- /dev/null +++ b/libs/js2py/internals/prototypes/jsregexp.py @@ -0,0 +1,56 @@ +from __future__ import unicode_literals + +from ..conversions import * +from ..func_utils import * + + +class RegExpPrototype: + def toString(this, args): + flags = u'' + try: + if this.glob: + flags += u'g' + if this.ignore_case: + flags += u'i' + if this.multiline: + flags += u'm' + except: + pass + try: + v = this.value if this.value else u'(?:)' + except: + v = u'(?:)' + return u'/%s/' % v + flags + + def test(this, args): + string = get_arg(args, 0) + return RegExpExec(this, string, args.space) is not null + + def _exec( + this, args + ): # will be changed to exec in base.py. cant name it exec here... + string = get_arg(args, 0) + return RegExpExec(this, string, args.space) + + +def RegExpExec(this, string, space): + if GetClass(this) != 'RegExp': + raise MakeError('TypeError', 'RegExp.prototype.exec is not generic!') + string = to_string(string) + length = len(string) + i = to_int(this.get('lastIndex')) if this.glob else 0 + matched = False + while not matched: + if i < 0 or i > length: + this.put('lastIndex', 0.) + return null + matched = this.match(string, i) + i += 1 + start, end = matched.span() #[0]+i-1, matched.span()[1]+i-1 + if this.glob: + this.put('lastIndex', float(end)) + arr = convert_to_js_type( + [matched.group()] + list(matched.groups()), space=space) + arr.put('index', float(start)) + arr.put('input', unicode(string)) + return arr diff --git a/libs/js2py/internals/prototypes/jsstring.py b/libs/js2py/internals/prototypes/jsstring.py new file mode 100644 index 000000000..b56246e25 --- /dev/null +++ b/libs/js2py/internals/prototypes/jsstring.py @@ -0,0 +1,323 @@ +from __future__ import unicode_literals + +# -*- coding: utf-8 -*- +import re +from ..conversions import * +from ..func_utils import * +from jsregexp import RegExpExec + +DIGS = set(u'0123456789') +WHITE = u"\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF" + + +def replacement_template(rep, source, span, npar): + """Takes the replacement template and some info about the match and returns filled template + """ + n = 0 + res = '' + while n < len(rep) - 1: + char = rep[n] + if char == '$': + if rep[n + 1] == '$': + res += '$' + n += 2 + continue + elif rep[n + 1] == '`': + # replace with string that is BEFORE match + res += source[:span[0]] + n += 2 + continue + elif rep[n + 1] == '\'': + # replace with string that is AFTER match + res += source[span[1]:] + n += 2 + continue + elif rep[n + 1] in DIGS: + dig = rep[n + 1] + if n + 2 < len(rep) and rep[n + 2] in DIGS: + dig += rep[n + 2] + num = int(dig) + # we will not do any replacements if we dont have this npar or dig is 0 + if not num or num > len(npar): + res += '$' + dig + else: + # None - undefined has to be replaced with '' + res += npar[num - 1] if npar[num - 1] else '' + n += 1 + len(dig) + continue + res += char + n += 1 + if n < len(rep): + res += rep[-1] + return res + + +################################################### + + +class StringPrototype: + def toString(this, args): + if GetClass(this) != 'String': + raise MakeError('TypeError', + 'String.prototype.toString is not generic') + if type(this) == unicode: + return this + assert type(this.value) == unicode + return this.value + + def valueOf(this, args): + if GetClass(this) != 'String': + raise MakeError('TypeError', + 'String.prototype.valueOf is not generic') + if type(this) == unicode: + return this + assert type(this.value) == unicode + return this.value + + def charAt(this, args): + cok(this) + pos = to_int(get_arg(args, 0)) + s = to_string(this) + if 0 <= pos < len(s): + return s[pos] + return u'' + + def charCodeAt(this, args): + cok(this) + pos = to_int(get_arg(args, 0)) + s = to_string(this) + if 0 <= pos < len(s): + return float(ord(s[pos])) + return NaN + + def concat(this, args): + cok(this) + return to_string(this) + u''.join(map(to_string, args)) + + def indexOf(this, args): + cok(this) + search = to_string(get_arg(args, 0)) + pos = to_int(get_arg(args, 1)) + s = to_string(this) + return float(s.find(search, min(max(pos, 0), len(s)))) + + def lastIndexOf(this, args): + cok(this) + search = to_string(get_arg(args, 0)) + pos = get_arg(args, 1) + s = to_string(this) + pos = 10**12 if is_nan(pos) else to_int(pos) + return float(s.rfind(search, 0, min(max(pos, 0) + 1, len(s)))) + + def localeCompare(this, args): + cok(this) + s = to_string(this) + that = to_string(get_arg(args, 0)) + if s < that: + return -1. + elif s > that: + return 1. + return 0. + + def match(this, args): + cok(this) + s = to_string(this) + regexp = get_arg(args, 0) + r = args.space.NewRegExp( + regexp, '') if GetClass(regexp) != 'RegExp' else regexp + if not r.glob: + return RegExpExec(r, s, space=args.space) + r.put('lastIndex', float(0)) + found = [] + previous_last_index = 0 + last_match = True + while last_match: + result = RegExpExec(r, s, space=args.space) + if is_null(result): + last_match = False + else: + this_index = r.get('lastIndex') + if this_index == previous_last_index: + r.put('lastIndex', float(this_index + 1)) + previous_last_index += 1 + else: + previous_last_index = this_index + matchStr = result.get('0') + found.append(matchStr) + if not found: + return null + return args.space.ConstructArray(found) + + def replace(this, args): + # VERY COMPLICATED. to check again. + cok(this) + s = to_string(this) + searchValue = get_arg(args, 0) + replaceValue = get_arg(args, 1) + res = '' + if not is_callable(replaceValue): + replaceValue = to_string(replaceValue) + func = False + else: + func = True + # Replace all ( global ) + if GetClass(searchValue) == 'RegExp' and searchValue.glob: + last = 0 + for e in re.finditer(searchValue.pat, s): + res += s[last:e.span()[0]] + if func: + # prepare arguments for custom func (replaceValue) + call_args = (e.group(), ) + e.groups() + (e.span()[1], s) + # convert all types to JS before Js bytecode call... + res += to_string( + replaceValue.call( + this, ensure_js_types(call_args, + space=args.space))) + else: + res += replacement_template(replaceValue, s, e.span(), + e.groups()) + last = e.span()[1] + res += s[last:] + return res + elif GetClass(searchValue) == 'RegExp': + e = re.search(searchValue.pat, s) + if e is None: + return s + span = e.span() + pars = e.groups() + match = e.group() + else: + match = to_string(searchValue) + ind = s.find(match) + if ind == -1: + return s + span = ind, ind + len(match) + pars = () + res = s[:span[0]] + if func: + call_args = (match, ) + pars + (span[1], s) + # convert all types to JS before Js bytecode call... + res += to_string( + replaceValue.call(this, + ensure_js_types(call_args, + space=args.space))) + else: + res += replacement_template(replaceValue, s, span, pars) + res += s[span[1]:] + return res + + def search(this, args): + cok(this) + string = to_string(this) + regexp = get_arg(args, 0) + if GetClass(regexp) == 'RegExp': + rx = regexp + else: + rx = args.space.NewRegExp(regexp, '') + res = re.search(rx.pat, string) + if res is not None: + return float(res.span()[0]) + return -1. + + def slice(this, args): + cok(this) + s = to_string(this) + start = to_int(get_arg(args, 0)) + length = len(s) + end = get_arg(args, 1) + end = length if is_undefined(end) else to_int(end) + #From = max(length+start, 0) if start<0 else min(length, start) + #To = max(length+end, 0) if end<0 else min(length, end) + return s[start:end] + + def split(this, args): + # its a bit different from re.split! + cok(this) + s = to_string(this) + separator = get_arg(args, 0) + limit = get_arg(args, 1) + lim = 2**32 - 1 if is_undefined(limit) else to_uint32(limit) + if not lim: + return args.space.ConstructArray([]) + if is_undefined(separator): + return args.space.ConstructArray([s]) + len_s = len(s) + res = [] + R = separator if GetClass(separator) == 'RegExp' else to_string( + separator) + if not len_s: + if SplitMatch(s, 0, R) is None: + return args.space.ConstructArray([s]) + return args.space.ConstructArray([]) + p = q = 0 + while q != len_s: + e, cap = SplitMatch(s, q, R) + if e is None or e == p: + q += 1 + continue + res.append(s[p:q]) + p = q = e + if len(res) == lim: + return args.space.ConstructArray(res) + for element in cap: + res.append(element) + if len(res) == lim: + return args.space.ConstructArray(res) + res.append(s[p:]) + return args.space.ConstructArray(res) + + def substring(this, args): + cok(this) + s = to_string(this) + start = to_int(get_arg(args, 0)) + length = len(s) + end = get_arg(args, 1) + end = length if is_undefined(end) else to_int(end) + fstart = min(max(start, 0), length) + fend = min(max(end, 0), length) + return s[min(fstart, fend):max(fstart, fend)] + + def substr(this, args): + cok(this) + #I hate this function and its description in specification + r1 = to_string(this) + r2 = to_int(get_arg(args, 0)) + length = get_arg(args, 1) + r3 = 10**20 if is_undefined(length) else to_int(length) + r4 = len(r1) + r5 = r2 if r2 >= 0 else max(0, r2 + r4) + r6 = min(max(r3, 0), r4 - r5) + if r6 <= 0: + return '' + return r1[r5:r5 + r6] + + def toLowerCase(this, args): + cok(this) + return to_string(this).lower() + + def toLocaleLowerCase(this, args): + cok(this) + return to_string(this).lower() + + def toUpperCase(this, args): + cok(this) + return to_string(this).upper() + + def toLocaleUpperCase(this, args): + cok(this) + return to_string(this).upper() + + def trim(this, args): + cok(this) + return to_string(this).strip(WHITE) + + +def SplitMatch(s, q, R): + # s is Py String to match, q is the py int match start and R is Js RegExp or String. + if GetClass(R) == 'RegExp': + res = R.match(s, q) + return (None, ()) if res is None else (res.span()[1], res.groups()) + # R is just a string + if s[q:].startswith(R): + return q + len(R), () + return None, () diff --git a/libs/js2py/internals/prototypes/jsutils.py b/libs/js2py/internals/prototypes/jsutils.py new file mode 100644 index 000000000..85f5bd44b --- /dev/null +++ b/libs/js2py/internals/prototypes/jsutils.py @@ -0,0 +1,149 @@ +from __future__ import unicode_literals +from ..conversions import * +from ..func_utils import * + +RADIX_CHARS = { + '1': 1, + '0': 0, + '3': 3, + '2': 2, + '5': 5, + '4': 4, + '7': 7, + '6': 6, + '9': 9, + '8': 8, + 'a': 10, + 'c': 12, + 'b': 11, + 'e': 14, + 'd': 13, + 'g': 16, + 'f': 15, + 'i': 18, + 'h': 17, + 'k': 20, + 'j': 19, + 'm': 22, + 'l': 21, + 'o': 24, + 'n': 23, + 'q': 26, + 'p': 25, + 's': 28, + 'r': 27, + 'u': 30, + 't': 29, + 'w': 32, + 'v': 31, + 'y': 34, + 'x': 33, + 'z': 35, + 'A': 10, + 'C': 12, + 'B': 11, + 'E': 14, + 'D': 13, + 'G': 16, + 'F': 15, + 'I': 18, + 'H': 17, + 'K': 20, + 'J': 19, + 'M': 22, + 'L': 21, + 'O': 24, + 'N': 23, + 'Q': 26, + 'P': 25, + 'S': 28, + 'R': 27, + 'U': 30, + 'T': 29, + 'W': 32, + 'V': 31, + 'Y': 34, + 'X': 33, + 'Z': 35 +} + +# parseFloat +# parseInt +# isFinite +# isNaN + + +def parseInt(this, args): + string, radix = get_arg(args, 0), get_arg(args, 1) + string = to_string(string).lstrip() + sign = 1 + if string and string[0] in ('+', '-'): + if string[0] == '-': + sign = -1 + string = string[1:] + r = to_int32(radix) + strip_prefix = True + if r: + if r < 2 or r > 36: + return NaN + if r != 16: + strip_prefix = False + else: + r = 10 + if strip_prefix: + if len(string) >= 2 and string[:2] in ('0x', '0X'): + string = string[2:] + r = 16 + n = 0 + num = 0 + while n < len(string): + cand = RADIX_CHARS.get(string[n]) + if cand is None or not cand < r: + break + num = cand + num * r + n += 1 + if not n: + return NaN + return float(sign * num) + + +def parseFloat(this, args): + string = get_arg(args, 0) + string = to_string(string).strip() + sign = 1 + if string and string[0] in ('+', '-'): + if string[0] == '-': + sign = -1 + string = string[1:] + num = None + length = 1 + max_len = None + failed = 0 + while length <= len(string): + try: + num = float(string[:length]) + max_len = length + failed = 0 + except: + failed += 1 + if failed > 4: # cant be a number anymore + break + length += 1 + if num is None: + return NaN + return sign * float(string[:max_len]) + + +def isNaN(this, args): + number = get_arg(args, 0) + if is_nan(to_number(number)): + return True + return False + + +def isFinite(this, args): + number = get_arg(args, 0) + num = to_number(number) + if is_nan(num) or is_infinity(num): + return False + return True diff --git a/libs/js2py/internals/seval.py b/libs/js2py/internals/seval.py new file mode 100644 index 000000000..c4404ab77 --- /dev/null +++ b/libs/js2py/internals/seval.py @@ -0,0 +1,32 @@ +import pyjsparser +from space import Space +import fill_space +from byte_trans import ByteCodeGenerator +from code import Code +from simplex import MakeError +import sys +sys.setrecursionlimit(100000) + + +pyjsparser.parser.ENABLE_JS2PY_ERRORS = lambda msg: MakeError(u'SyntaxError', unicode(msg)) + +def get_js_bytecode(js): + a = ByteCodeGenerator(Code()) + d = pyjsparser.parse(js) + a.emit(d) + return a.exe.tape + +def eval_js_vm(js): + a = ByteCodeGenerator(Code()) + s = Space() + a.exe.space = s + s.exe = a.exe + + d = pyjsparser.parse(js) + + a.emit(d) + fill_space.fill_space(s, a) + # print a.exe.tape + a.exe.compile() + + return a.exe.run(a.exe.space.GlobalObj) diff --git a/libs/js2py/internals/simplex.py b/libs/js2py/internals/simplex.py new file mode 100644 index 000000000..b05f6174e --- /dev/null +++ b/libs/js2py/internals/simplex.py @@ -0,0 +1,133 @@ +from __future__ import unicode_literals +import six + + +#Undefined +class PyJsUndefined(object): + TYPE = 'Undefined' + Class = 'Undefined' + + +undefined = PyJsUndefined() + + +#Null +class PyJsNull(object): + TYPE = 'Null' + Class = 'Null' + + +null = PyJsNull() + +Infinity = float('inf') +NaN = float('nan') + +UNDEFINED_TYPE = PyJsUndefined +NULL_TYPE = PyJsNull +STRING_TYPE = unicode if six.PY2 else str +NUMBER_TYPE = float +BOOLEAN_TYPE = bool + +# exactly 5 simplexes! +PRIMITIVES = frozenset( + [UNDEFINED_TYPE, NULL_TYPE, STRING_TYPE, NUMBER_TYPE, BOOLEAN_TYPE]) + +TYPE_NAMES = { + UNDEFINED_TYPE: 'Undefined', + NULL_TYPE: 'Null', + STRING_TYPE: 'String', + NUMBER_TYPE: 'Number', + BOOLEAN_TYPE: 'Boolean', +} + + +def Type(x): + # Any -> Str + return TYPE_NAMES.get(type(x), 'Object') + + +def GetClass(x): + # Any -> Str + cand = TYPE_NAMES.get(type(x)) + if cand is None: + return x.Class + return cand + + +def is_undefined(self): + return self is undefined + + +def is_null(self): + return self is null + + +def is_primitive(self): + return type(self) in PRIMITIVES + + +def is_object(self): + return not is_primitive(self) + + +def is_callable(self): + return hasattr(self, 'call') + + +def is_infinity(self): + return self == float('inf') or self == -float('inf') + + +def is_nan(self): + return self != self # nan!=nan evaluates to True + + +def is_finite(self): + return not (is_nan(self) or is_infinity(self)) + + +class JsException(Exception): + def __init__(self, typ=None, message=None, throw=None): + if typ is None and message is None and throw is None: + # it means its the trasnlator based error (old format), do nothing + self._translator_based = True + else: + assert throw is None or (typ is None + and message is None), (throw, typ, + message) + self._translator_based = False + self.typ = typ + self.message = message + self.throw = throw + + def get_thrown_value(self, space): + if self.throw is not None: + return self.throw + else: + return space.NewError(self.typ, self.message) + + def __str__(self): + if self._translator_based: + if self.mes.Class == 'Error': + return self.mes.callprop('toString').value + else: + return self.mes.to_string().value + else: + if self.throw is not None: + from conversions import to_string + return to_string(self.throw) + else: + return self.typ + ': ' + self.message + + +def MakeError(typ, message=u'no info', throw=None): + return JsException(typ, + unicode(message) if message is not None else message, + throw) + + +def value_from_js_exception(js_exception, space): + if js_exception.throw is not None: + return js_exception.throw + else: + return space.NewError(js_exception.typ, js_exception.message) diff --git a/libs/js2py/internals/space.py b/libs/js2py/internals/space.py new file mode 100644 index 000000000..7283070cd --- /dev/null +++ b/libs/js2py/internals/space.py @@ -0,0 +1,92 @@ +from base import * +from simplex import * + + +class Space(object): + def __init__(self): + self.GlobalObj = None + self.ctx = None + self.byte_generator = None + + self.Number = None + self.String = None + self.Boolean = None + self.RegExp = None + self.Object = None + self.Array = None + self.Function = None + + self.BooleanPrototype = None + self.NumberPrototype = None + self.StringPrototype = None + + self.FunctionPrototype = None + self.ArrayPrototype = None + self.RegExpPrototype = None + self.DatePrototype = None + self.ObjectPrototype = None + + self.ErrorPrototype = None + self.EvalErrorPrototype = None + self.RangeErrorPrototype = None + self.ReferenceErrorPrototype = None + self.SyntaxErrorPrototype = None + self.TypeErrorPrototype = None + self.URIErrorPrototype = None + + self.interpreter = None + + @property + def ERROR_TYPES(self): + return { + 'Error': self.ErrorPrototype, + 'EvalError': self.EvalErrorPrototype, + 'RangeError': self.RangeErrorPrototype, + 'ReferenceError': self.ReferenceErrorPrototype, + 'SyntaxError': self.SyntaxErrorPrototype, + 'TypeError': self.TypeErrorPrototype, + 'URIError': self.URIErrorPrototype, + } + + def get_global_environment(self): + return self.GlobalCtx.variable_environment() + + def NewObject(self): + return PyJsObject(self.ObjectPrototype) + + def NewFunction(self, code, ctx, params, name, is_declaration, + definitions): + return PyJsFunction( + code, + ctx, + params, + name, + self, + is_declaration, + definitions, + prototype=self.FunctionPrototype) + + def NewDate(self, value): + return PyJsDate(value, self.DatePrototype) + + def NewArray(self, length=0): + return PyJsArray(length, self.ArrayPrototype) + + def NewError(self, typ, message): + return PyJsError(message, self.ERROR_TYPES[typ]) + + def NewRegExp(self, body, flags): + return PyJsRegExp(body, flags, self.RegExpPrototype) + + def ConstructArray(self, py_arr): + ''' note py_arr elems are NOT converted to PyJs types!''' + arr = self.NewArray(len(py_arr)) + arr._init(py_arr) + return arr + + def ConstructObject(self, py_obj): + ''' note py_obj items are NOT converted to PyJs types! ''' + obj = self.NewObject() + for k, v in py_obj.items(): + obj.put(unicode(k), v) + return obj diff --git a/libs/js2py/internals/speed.py b/libs/js2py/internals/speed.py new file mode 100644 index 000000000..3ca4079e7 --- /dev/null +++ b/libs/js2py/internals/speed.py @@ -0,0 +1,62 @@ +from timeit import timeit +from collections import namedtuple +from array import array +from itertools import izip +from collections import deque + + +class Y(object): + UUU = 88 + + def __init__(self, x): + self.x = x + + def s(self, x): + return self.x + 1 + + +class X(Y): + A = 10 + B = 2 + C = 4 + D = 9 + + def __init__(self, x): + self.x = x + self.stack = [] + self.par = super(X, self) + + def s(self, x): + pass + + def __add__(self, other): + return self.x + other.x + + def another(self): + return Y.s(self, 1) + + def yet_another(self): + return self.par.s(1) + + +def add(a, b): + return a.x + b.x + + +t = [] + +Type = None +try: + print timeit( + """ + +t.append(4) +t.pop() + + + +""", + "from __main__ import X,Y,namedtuple,array,t,add,Type, izip", + number=1000000) +except: + raise diff --git a/libs/js2py/internals/trans_utils.py b/libs/js2py/internals/trans_utils.py new file mode 100644 index 000000000..235b46a85 --- /dev/null +++ b/libs/js2py/internals/trans_utils.py @@ -0,0 +1,28 @@ +def to_key(literal_or_identifier): + ''' returns string representation of this object''' + if literal_or_identifier['type'] == 'Identifier': + return literal_or_identifier['name'] + elif literal_or_identifier['type'] == 'Literal': + k = literal_or_identifier['value'] + if isinstance(k, float): + return unicode(float_repr(k)) + elif 'regex' in literal_or_identifier: + return compose_regex(k) + elif isinstance(k, bool): + return u'true' if k else u'false' + elif k is None: + return u'null' + else: + return unicode(k) + + +def compose_regex(val): + reg, flags = val + # reg = REGEXP_CONVERTER._unescape_string(reg) + return u'/%s/%s' % (reg, flags) + + +def float_repr(f): + if int(f) == f: + return unicode(repr(int(f))) + return unicode(repr(f)) diff --git a/libs/js2py/legecy_translators/__init__.py b/libs/js2py/legecy_translators/__init__.py new file mode 100644 index 000000000..d01e0f5fd --- /dev/null +++ b/libs/js2py/legecy_translators/__init__.py @@ -0,0 +1 @@ +__author__ = 'Piotrek' diff --git a/libs/js2py/legecy_translators/constants.py b/libs/js2py/legecy_translators/constants.py new file mode 100644 index 000000000..ea048f128 --- /dev/null +++ b/libs/js2py/legecy_translators/constants.py @@ -0,0 +1,308 @@ +from string import ascii_lowercase, digits +################################## +StringName = u'PyJsConstantString%d_' +NumberName = u'PyJsConstantNumber%d_' +RegExpName = u'PyJsConstantRegExp%d_' +################################## +ALPHAS = set(ascii_lowercase + ascii_lowercase.upper()) +NUMS = set(digits) +IDENTIFIER_START = ALPHAS.union(NUMS) +ESCAPE_CHARS = {'n', '0', 'b', 'f', 'r', 't', 'v', '"', "'", '\\'} +OCTAL = {'0', '1', '2', '3', '4', '5', '6', '7'} +HEX = set('0123456789abcdefABCDEF') +from utils import * +IDENTIFIER_PART = IDENTIFIER_PART.union({'.'}) + + +def _is_cancelled(source, n): + cancelled = False + k = 0 + while True: + k += 1 + if source[n - k] != '\\': + break + cancelled = not cancelled + return cancelled + + +def _ensure_regexp(source, n): #<- this function has to be improved + '''returns True if regexp starts at n else returns False + checks whether it is not a division ''' + markers = '(+~"\'=[%:?!*^|&-,;/\\' + k = 0 + while True: + k += 1 + if n - k < 0: + return True + char = source[n - k] + if char in markers: + return True + if char != ' ' and char != '\n': + break + return False + + +def parse_num(source, start, charset): + """Returns a first index>=start of chat not in charset""" + while start < len(source) and source[start] in charset: + start += 1 + return start + + +def parse_exponent(source, start): + """returns end of exponential, raises SyntaxError if failed""" + if not source[start] in {'e', 'E'}: + if source[start] in IDENTIFIER_PART: + raise SyntaxError('Invalid number literal!') + return start + start += 1 + if source[start] in {'-', '+'}: + start += 1 + FOUND = False + # we need at least one dig after exponent + while source[start] in NUMS: + FOUND = True + start += 1 + if not FOUND or source[start] in IDENTIFIER_PART: + raise SyntaxError('Invalid number literal!') + return start + + +def remove_constants(source): + '''Replaces Strings and Regexp literals in the source code with + identifiers and *removes comments*. Identifier is of the format: + + PyJsStringConst(String const number)_ - for Strings + PyJsRegExpConst(RegExp const number)_ - for RegExps + + Returns dict which relates identifier and replaced constant. + + Removes single line and multiline comments from JavaScript source code + Pseudo comments (inside strings) will not be removed. + + For example this line: + var x = "/*PSEUDO COMMENT*/ TEXT //ANOTHER PSEUDO COMMENT" + will be unaltered''' + source = ' ' + source + '\n' + comments = [] + inside_comment, single_comment = False, False + inside_single, inside_double = False, False + inside_regexp = False + regexp_class_count = 0 + n = 0 + while n < len(source): + char = source[n] + if char == '"' and not (inside_comment or inside_single + or inside_regexp): + if not _is_cancelled(source, n): + if inside_double: + inside_double[1] = n + 1 + comments.append(inside_double) + inside_double = False + else: + inside_double = [n, None, 0] + elif char == "'" and not (inside_comment or inside_double + or inside_regexp): + if not _is_cancelled(source, n): + if inside_single: + inside_single[1] = n + 1 + comments.append(inside_single) + inside_single = False + else: + inside_single = [n, None, 0] + elif (inside_single or inside_double): + if char in LINE_TERMINATOR: + if _is_cancelled(source, n): + if char == CR and source[n + 1] == LF: + n += 1 + n += 1 + continue + else: + raise SyntaxError( + 'Invalid string literal. Line terminators must be escaped!' + ) + else: + if inside_comment: + if single_comment: + if char in LINE_TERMINATOR: + inside_comment[1] = n + comments.append(inside_comment) + inside_comment = False + single_comment = False + else: # Multiline + if char == '/' and source[n - 1] == '*': + inside_comment[1] = n + 1 + comments.append(inside_comment) + inside_comment = False + elif inside_regexp: + if not quiting_regexp: + if char in LINE_TERMINATOR: + raise SyntaxError( + 'Invalid regexp literal. Line terminators cant appear!' + ) + if _is_cancelled(source, n): + n += 1 + continue + if char == '[': + regexp_class_count += 1 + elif char == ']': + regexp_class_count = max(regexp_class_count - 1, 0) + elif char == '/' and not regexp_class_count: + quiting_regexp = True + else: + if char not in IDENTIFIER_START: + inside_regexp[1] = n + comments.append(inside_regexp) + inside_regexp = False + elif char == '/' and source[n - 1] == '/': + single_comment = True + inside_comment = [n - 1, None, 1] + elif char == '*' and source[n - 1] == '/': + inside_comment = [n - 1, None, 1] + elif char == '/' and source[n + 1] not in ('/', '*'): + if not _ensure_regexp(source, n): #<- improve this one + n += 1 + continue #Probably just a division + quiting_regexp = False + inside_regexp = [n, None, 2] + elif not (inside_comment or inside_regexp): + if (char in NUMS and + source[n - 1] not in IDENTIFIER_PART) or char == '.': + if char == '.': + k = parse_num(source, n + 1, NUMS) + if k == n + 1: # just a stupid dot... + n += 1 + continue + k = parse_exponent(source, k) + elif char == '0' and source[n + 1] in { + 'x', 'X' + }: #Hex number probably + k = parse_num(source, n + 2, HEX) + if k == n + 2 or source[k] in IDENTIFIER_PART: + raise SyntaxError('Invalid hex literal!') + else: #int or exp or flot or exp flot + k = parse_num(source, n + 1, NUMS) + if source[k] == '.': + k = parse_num(source, k + 1, NUMS) + k = parse_exponent(source, k) + comments.append((n, k, 3)) + n = k + continue + n += 1 + res = '' + start = 0 + count = 0 + constants = {} + for end, next_start, typ in comments: + res += source[start:end] + start = next_start + if typ == 0: # String + name = StringName + elif typ == 1: # comment + continue + elif typ == 2: # regexp + name = RegExpName + elif typ == 3: # number + name = NumberName + else: + raise RuntimeError() + res += ' ' + name % count + ' ' + constants[name % count] = source[end:next_start] + count += 1 + res += source[start:] + # remove this stupid white space + for e in WHITE: + res = res.replace(e, ' ') + res = res.replace(CR + LF, '\n') + for e in LINE_TERMINATOR: + res = res.replace(e, '\n') + return res.strip(), constants + + +def recover_constants(py_source, + replacements): #now has n^2 complexity. improve to n + '''Converts identifiers representing Js constants to the PyJs constants + PyJsNumberConst_1_ which has the true value of 5 will be converted to PyJsNumber(5)''' + for identifier, value in replacements.iteritems(): + if identifier.startswith('PyJsConstantRegExp'): + py_source = py_source.replace(identifier, + 'JsRegExp(%s)' % repr(value)) + elif identifier.startswith('PyJsConstantString'): + py_source = py_source.replace( + identifier, 'Js(u%s)' % unify_string_literals(value)) + else: + py_source = py_source.replace(identifier, 'Js(%s)' % value) + return py_source + + +def unify_string_literals(js_string): + """this function parses the string just like javascript + for example literal '\d' in JavaScript would be interpreted + as 'd' - backslash would be ignored and in Pyhon this + would be interpreted as '\\d' This function fixes this problem.""" + n = 0 + res = '' + limit = len(js_string) + while n < limit: + char = js_string[n] + if char == '\\': + new, n = do_escape(js_string, n) + res += new + else: + res += char + n += 1 + return res + + +def unify_regexp_literals(js): + pass + + +def do_escape(source, n): + """Its actually quite complicated to cover every case :) + http://www.javascriptkit.com/jsref/escapesequence.shtml""" + if not n + 1 < len(source): + return '' # not possible here but can be possible in general case. + if source[n + 1] in LINE_TERMINATOR: + if source[n + 1] == CR and n + 2 < len(source) and source[n + 2] == LF: + return source[n:n + 3], n + 3 + return source[n:n + 2], n + 2 + if source[n + 1] in ESCAPE_CHARS: + return source[n:n + 2], n + 2 + if source[n + 1] in {'x', 'u'}: + char, length = ('u', 4) if source[n + 1] == 'u' else ('x', 2) + n += 2 + end = parse_num(source, n, HEX) + if end - n < length: + raise SyntaxError('Invalid escape sequence!') + #if length==4: + # return unichr(int(source[n:n+4], 16)), n+4 # <- this was a very bad way of solving this problem :) + return source[n - 2:n + length], n + length + if source[n + 1] in OCTAL: + n += 1 + end = parse_num(source, n, OCTAL) + end = min(end, n + 3) # cant be longer than 3 + # now the max allowed is 377 ( in octal) and 255 in decimal + max_num = 255 + num = 0 + len_parsed = 0 + for e in source[n:end]: + cand = 8 * num + int(e) + if cand > max_num: + break + num = cand + len_parsed += 1 + # we have to return in a different form because python may want to parse more... + # for example '\777' will be parsed by python as a whole while js will use only \77 + return '\\' + hex(num)[1:], n + len_parsed + return source[n + 1], n + 2 + + +#####TEST###### + +if __name__ == '__main__': + test = (''' + ''') + + t, d = remove_constants(test) + print t, d diff --git a/libs/js2py/legecy_translators/exps.py b/libs/js2py/legecy_translators/exps.py new file mode 100644 index 000000000..3c8f793cd --- /dev/null +++ b/libs/js2py/legecy_translators/exps.py @@ -0,0 +1,83 @@ +""" +exp_translate routine: +It takes a single line of JS code and returns a SINGLE line of Python code. +Note var is not present here because it was removed in previous stages. Also remove this useless void keyword +If case of parsing errors it must return a pos of error. +1. Convert all assignment operations to put operations, this may be hard :( DONE, wasn't that bad +2. Convert all gets and calls to get and callprop. +3. Convert unary operators like typeof, new, !, delete, ++, -- + Delete can be handled by replacing last get method with delete. +4. Convert remaining operators that are not handled by python: + &&, || <= these should be easy simply replace && by and and || by or + === and !== + comma operator , in, instanceof and finally :? + + +NOTES: +Strings and other literals are not present so each = means assignment +""" +from utils import * +from jsparser import * + + +def exps_translator(js): + #Check () {} and [] nums + ass = assignment_translator(js) + + +# Step 1 +def assignment_translator(js): + sep = js.split(',') + res = sep[:] + for i, e in enumerate(sep): + if '=' not in e: # no need to convert + continue + res[i] = bass_translator(e) + return ','.join(res) + + +def bass_translator(s): + # I hope that I will not have to fix any bugs here because it will be terrible + if '(' in s or '[' in s: + converted = '' + for e in bracket_split(s, ['()', '[]'], strip=False): + if e[0] == '(': + converted += '(' + bass_translator(e[1:-1]) + ')' + elif e[0] == '[': + converted += '[' + bass_translator(e[1:-1]) + ']' + else: + converted += e + s = converted + if '=' not in s: + return s + ass = reversed(s.split('=')) + last = ass.next() + res = last + for e in ass: + op = '' + if e[-1] in OP_METHODS: #increment assign like += + op = ', "' + e[-1] + '"' + e = e[:-1] + cand = e.strip( + '() ') # (a) = 40 is valid so we need to transform '(a) ' to 'a' + if not is_property_accessor(cand): # it is not a property assignment + if not is_lval(cand) or is_internal(cand): + raise SyntaxError('Invalid left-hand side in assignment') + res = 'var.put(%s, %s%s)' % (cand.__repr__(), res, op) + elif cand[-1] == ']': # property assignment via [] + c = list(bracket_split(cand, ['[]'], strip=False)) + meth, prop = ''.join(c[:-1]).strip(), c[-1][1:-1].strip( + ) #this does not have to be a string so dont remove + #() because it can be a call + res = '%s.put(%s, %s%s)' % (meth, prop, res, op) + else: # Prop set via '.' + c = cand.rfind('.') + meth, prop = cand[:c].strip(), cand[c + 1:].strip('() ') + if not is_lval(prop): + raise SyntaxError('Invalid left-hand side in assignment') + res = '%s.put(%s, %s%s)' % (meth, prop.__repr__(), res, op) + return res + + +if __name__ == '__main__': + print bass_translator('3.ddsd = 40') diff --git a/libs/js2py/legecy_translators/flow.py b/libs/js2py/legecy_translators/flow.py new file mode 100644 index 000000000..9e2bb0fa7 --- /dev/null +++ b/libs/js2py/legecy_translators/flow.py @@ -0,0 +1,480 @@ +"""This module translates JS flow into PY flow. + +Translates: +IF ELSE + +DO WHILE +WHILE +FOR 123 +FOR iter +CONTINUE, BREAK, RETURN, LABEL, THROW, TRY, SWITCH +""" +from utils import * +from jsparser import * +from nodevisitor import exp_translator +import random + +TO_REGISTER = [] +CONTINUE_LABEL = 'JS_CONTINUE_LABEL_%s' +BREAK_LABEL = 'JS_BREAK_LABEL_%s' + +PREPARE = '''HOLDER = var.own.get(NAME)\nvar.force_own_put(NAME, PyExceptionToJs(PyJsTempException))\n''' +RESTORE = '''if HOLDER is not None:\n var.own[NAME] = HOLDER\nelse:\n del var.own[NAME]\ndel HOLDER\n''' +TRY_CATCH = '''%stry:\nBLOCKfinally:\n%s''' % (PREPARE, indent(RESTORE)) + + +def get_continue_label(label): + return CONTINUE_LABEL % label.encode('hex') + + +def get_break_label(label): + return BREAK_LABEL % label.encode('hex') + + +def pass_until(source, start, tokens=(';', )): + while start < len(source) and source[start] not in tokens: + start += 1 + return start + 1 + + +def do_bracket_exp(source, start, throw=True): + bra, cand = pass_bracket(source, start, '()') + if throw and not bra: + raise SyntaxError('Missing bracket expression') + bra = exp_translator(bra[1:-1]) + if throw and not bra: + raise SyntaxError('Empty bracket condition') + return bra, cand if bra else start + + +def do_if(source, start): + start += 2 # pass this if + bra, start = do_bracket_exp(source, start, throw=True) + statement, start = do_statement(source, start) + if statement is None: + raise SyntaxError('Invalid if statement') + translated = 'if %s:\n' % bra + indent(statement) + + elseif = except_keyword(source, start, 'else') + is_elseif = False + if elseif: + start = elseif + if except_keyword(source, start, 'if'): + is_elseif = True + elseif, start = do_statement(source, start) + if elseif is None: + raise SyntaxError('Invalid if statement)') + if is_elseif: + translated += 'el' + elseif + else: + translated += 'else:\n' + indent(elseif) + return translated, start + + +def do_statement(source, start): + """returns none if not found other functions that begin with 'do_' raise + also this do_ type function passes white space""" + start = pass_white(source, start) + # start is the fist position after initial start that is not a white space or \n + if not start < len(source): #if finished parsing return None + return None, start + if any(startswith_keyword(source[start:], e) for e in {'case', 'default'}): + return None, start + rest = source[start:] + for key, meth in KEYWORD_METHODS.iteritems( + ): # check for statements that are uniquely defined by their keywords + if rest.startswith(key): + # has to startwith this keyword and the next letter after keyword must be either EOF or not in IDENTIFIER_PART + if len(key) == len(rest) or rest[len(key)] not in IDENTIFIER_PART: + return meth(source, start) + if rest[0] == '{': #Block + return do_block(source, start) + # Now only label and expression left + cand = parse_identifier(source, start, False) + if cand is not None: # it can mean that its a label + label, cand_start = cand + cand_start = pass_white(source, cand_start) + if source[cand_start] == ':': + return do_label(source, start) + return do_expression(source, start) + + +def do_while(source, start): + start += 5 # pass while + bra, start = do_bracket_exp(source, start, throw=True) + statement, start = do_statement(source, start) + if statement is None: + raise SyntaxError('Missing statement to execute in while loop!') + return 'while %s:\n' % bra + indent(statement), start + + +def do_dowhile(source, start): + start += 2 # pass do + statement, start = do_statement(source, start) + if statement is None: + raise SyntaxError('Missing statement to execute in do while loop!') + start = except_keyword(source, start, 'while') + if not start: + raise SyntaxError('Missing while keyword in do-while loop') + bra, start = do_bracket_exp(source, start, throw=True) + statement += 'if not %s:\n' % bra + indent('break\n') + return 'while 1:\n' + indent(statement), start + + +def do_block(source, start): + bra, start = pass_bracket(source, start, '{}') + #print source[start:], bra + #return bra +'\n', start + if bra is None: + raise SyntaxError('Missing block ( {code} )') + code = '' + bra = bra[1:-1] + ';' + bra_pos = 0 + while bra_pos < len(bra): + st, bra_pos = do_statement(bra, bra_pos) + if st is None: + break + code += st + bra_pos = pass_white(bra, bra_pos) + if bra_pos < len(bra): + raise SyntaxError('Block has more code that could not be parsed:\n' + + bra[bra_pos:]) + return code, start + + +def do_empty(source, start): + return 'pass\n', start + 1 + + +def do_expression(source, start): + start = pass_white(source, start) + end = pass_until(source, start, tokens=(';', )) + if end == start + 1: #empty statement + return 'pass\n', end + # AUTOMATIC SEMICOLON INSERTION FOLLOWS + # Without ASI this function would end with: return exp_translator(source[start:end].rstrip(';'))+'\n', end + # ASI makes things a bit more complicated: + # we will try to parse as much as possible, inserting ; in place of last new line in case of error + rev = False + rpos = 0 + while True: + try: + code = source[start:end].rstrip(';') + cand = exp_translator(code) + '\n', end + just_to_test = compile(cand[0], '', 'exec') + return cand + except Exception as e: + if not rev: + rev = source[start:end][::-1] + lpos = rpos + while True: + rpos = pass_until(rev, rpos, LINE_TERMINATOR) + if rpos >= len(rev): + raise + if filter(lambda x: x not in SPACE, rev[lpos:rpos]): + break + end = start + len(rev) - rpos + 1 + + +def do_var(source, start): + #todo auto ; insertion + start += 3 #pass var + end = pass_until(source, start, tokens=(';', )) + defs = argsplit( + source[start:end - 1] + ) # defs is the list of defined vars with optional initializer + code = '' + for de in defs: + var, var_end = parse_identifier(de, 0, True) + TO_REGISTER.append(var) + var_end = pass_white(de, var_end) + if var_end < len( + de + ): # we have something more to parse... It has to start with = + if de[var_end] != '=': + raise SyntaxError( + 'Unexpected initializer in var statement. Expected "=", got "%s"' + % de[var_end]) + code += exp_translator(de) + '\n' + if not code.strip(): + code = 'pass\n' + return code, end + + +def do_label(source, start): + label, end = parse_identifier(source, start) + end = pass_white(source, end) + #now source[end] must be : + assert source[end] == ':' + end += 1 + inside, end = do_statement(source, end) + if inside is None: + raise SyntaxError('Missing statement after label') + defs = '' + if inside.startswith('while ') or inside.startswith( + 'for ') or inside.startswith('#for'): + # we have to add contine label as well... + # 3 or 1 since #for loop type has more lines before real for. + sep = 1 if not inside.startswith('#for') else 3 + cont_label = get_continue_label(label) + temp = inside.split('\n') + injected = 'try:\n' + '\n'.join(temp[sep:]) + injected += 'except %s:\n pass\n' % cont_label + inside = '\n'.join(temp[:sep]) + '\n' + indent(injected) + defs += 'class %s(Exception): pass\n' % cont_label + break_label = get_break_label(label) + inside = 'try:\n%sexcept %s:\n pass\n' % (indent(inside), break_label) + defs += 'class %s(Exception): pass\n' % break_label + return defs + inside, end + + +def do_for(source, start): + start += 3 # pass for + entered = start + bra, start = pass_bracket(source, start, '()') + inside, start = do_statement(source, start) + if inside is None: + raise SyntaxError('Missing statement after for') + bra = bra[1:-1] + if ';' in bra: + init = argsplit(bra, ';') + if len(init) != 3: + raise SyntaxError('Invalid for statement') + args = [] + for i, item in enumerate(init): + end = pass_white(item, 0) + if end == len(item): + args.append('' if i != 1 else '1') + continue + if not i and except_keyword(item, end, 'var') is not None: + # var statement + args.append(do_var(item, end)[0]) + continue + args.append(do_expression(item, end)[0]) + return '#for JS loop\n%swhile %s:\n%s%s\n' % ( + args[0], args[1].strip(), indent(inside), indent(args[2])), start + # iteration + end = pass_white(bra, 0) + register = False + if bra[end:].startswith('var '): + end += 3 + end = pass_white(bra, end) + register = True + name, end = parse_identifier(bra, end) + if register: + TO_REGISTER.append(name) + end = pass_white(bra, end) + if bra[end:end + 2] != 'in' or bra[end + 2] in IDENTIFIER_PART: + #print source[entered-10:entered+50] + raise SyntaxError('Invalid "for x in y" statement') + end += 2 # pass in + exp = exp_translator(bra[end:]) + res = 'for temp in %s:\n' % exp + res += indent('var.put(%s, temp)\n' % name.__repr__()) + indent(inside) + return res, start + + +# todo - IMPORTANT +def do_continue(source, start, name='continue'): + start += len(name) #pass continue + start = pass_white(source, start) + if start < len(source) and source[start] == ';': + return '%s\n' % name, start + 1 + # labeled statement or error + label, start = parse_identifier(source, start) + start = pass_white(source, start) + if start < len(source) and source[start] != ';': + raise SyntaxError('Missing ; after label name in %s statement' % name) + return 'raise %s("%s")\n' % (get_continue_label(label) + if name == 'continue' else + get_break_label(label), name), start + 1 + + +def do_break(source, start): + return do_continue(source, start, 'break') + + +def do_return(source, start): + start += 6 # pass return + end = source.find(';', start) + 1 + if end == -1: + end = len(source) + trans = exp_translator(source[start:end].rstrip(';')) + return 'return %s\n' % (trans if trans else "var.get('undefined')"), end + + +# todo later?- Also important +def do_throw(source, start): + start += 5 # pass throw + end = source.find(';', start) + 1 + if not end: + end = len(source) + trans = exp_translator(source[start:end].rstrip(';')) + if not trans: + raise SyntaxError('Invalid throw statement: nothing to throw') + res = 'PyJsTempException = JsToPyException(%s)\nraise PyJsTempException\n' % trans + return res, end + + +def do_try(source, start): + start += 3 # pass try + block, start = do_block(source, start) + result = 'try:\n%s' % indent(block) + catch = except_keyword(source, start, 'catch') + if catch: + bra, catch = pass_bracket(source, catch, '()') + bra = bra[1:-1] + identifier, bra_end = parse_identifier(bra, 0) + holder = 'PyJsHolder_%s_%d' % (identifier.encode('hex'), + random.randrange(1e8)) + identifier = identifier.__repr__() + bra_end = pass_white(bra, bra_end) + if bra_end < len(bra): + raise SyntaxError('Invalid content of catch statement') + result += 'except PyJsException as PyJsTempException:\n' + block, catch = do_block(source, catch) + # fill in except ( catch ) block and remember to recover holder variable to its previous state + result += indent( + TRY_CATCH.replace('HOLDER', holder).replace('NAME', + identifier).replace( + 'BLOCK', + indent(block))) + start = max(catch, start) + final = except_keyword(source, start, 'finally') + if not (final or catch): + raise SyntaxError( + 'Try statement has to be followed by catch or finally') + if not final: + return result, start + # translate finally statement + block, start = do_block(source, final) + return result + 'finally:\n%s' % indent(block), start + + +def do_debugger(source, start): + start += 8 # pass debugger + end = pass_white(source, start) + if end < len(source) and source[end] == ';': + end += 1 + return 'pass\n', end #ignore errors... + + +# todo automatic ; insertion. fuck this crappy feature + +# Least important + + +def do_switch(source, start): + start += 6 # pass switch + code = 'while 1:\n' + indent('SWITCHED = False\nCONDITION = (%s)\n') + # parse value of check + val, start = pass_bracket(source, start, '()') + if val is None: + raise SyntaxError('Missing () after switch statement') + if not val.strip(): + raise SyntaxError('Missing content inside () after switch statement') + code = code % exp_translator(val) + bra, start = pass_bracket(source, start, '{}') + if bra is None: + raise SyntaxError('Missing block {} after switch statement') + bra_pos = 0 + bra = bra[1:-1] + ';' + while True: + case = except_keyword(bra, bra_pos, 'case') + default = except_keyword(bra, bra_pos, 'default') + assert not (case and default) + if case or default: # this ?: expression makes things much harder.... + case_code = None + if case: + case_code = 'if SWITCHED or PyJsStrictEq(CONDITION, %s):\n' + # we are looking for a first : with count 1. ? gives -1 and : gives +1. + count = 0 + for pos, e in enumerate(bra[case:], case): + if e == '?': + count -= 1 + elif e == ':': + count += 1 + if count == 1: + break + else: + raise SyntaxError( + 'Missing : token after case in switch statement') + case_condition = exp_translator( + bra[case:pos]) # switch {case CONDITION: statements} + case_code = case_code % case_condition + case = pos + 1 + if default: + case = except_token(bra, default, ':') + case_code = 'if True:\n' + # now parse case statements (things after ':' ) + cand, case = do_statement(bra, case) + while cand: + case_code += indent(cand) + cand, case = do_statement(bra, case) + case_code += indent('SWITCHED = True\n') + code += indent(case_code) + bra_pos = case + else: + break + # prevent infinite loop :) + code += indent('break\n') + return code, start + + +def do_pyimport(source, start): + start += 8 + lib, start = parse_identifier(source, start) + jlib = 'PyImport_%s' % lib + code = 'import %s as %s\n' % (lib, jlib) + #check whether valid lib name... + try: + compile(code, '', 'exec') + except: + raise SyntaxError( + 'Invalid Python module name (%s) in pyimport statement' % lib) + # var.pyimport will handle module conversion to PyJs object + code += 'var.pyimport(%s, %s)\n' % (repr(lib), jlib) + return code, start + + +def do_with(source, start): + raise NotImplementedError('With statement is not implemented yet :(') + + +KEYWORD_METHODS = { + 'do': do_dowhile, + 'while': do_while, + 'if': do_if, + 'throw': do_throw, + 'return': do_return, + 'continue': do_continue, + 'break': do_break, + 'try': do_try, + 'for': do_for, + 'switch': do_switch, + 'var': do_var, + 'debugger': do_debugger, # this one does not do anything + 'with': do_with, + 'pyimport': do_pyimport +} + +#Also not specific statements (harder to detect) +# Block {} +# Expression or Empty Statement +# Label +# +# Its easy to recognize block but harder to distinguish between label and expression statement + + +def translate_flow(source): + """Source cant have arrays, object, constant or function literals. + Returns PySource and variables to register""" + global TO_REGISTER + TO_REGISTER = [] + return do_block('{%s}' % source, 0)[0], TO_REGISTER + + +if __name__ == '__main__': + #print do_dowhile('do {} while(k+f)', 0)[0] + #print 'e: "%s"'%do_expression('++(c?g:h); mj', 0)[0] + print translate_flow('a; yimport test')[0] diff --git a/libs/js2py/legecy_translators/functions.py b/libs/js2py/legecy_translators/functions.py new file mode 100644 index 000000000..4825eee0f --- /dev/null +++ b/libs/js2py/legecy_translators/functions.py @@ -0,0 +1,98 @@ +"""This module removes JS functions from source code""" +from jsparser import * +from utils import * + +INLINE_NAME = 'PyJsLvalInline%d_' +INLINE_COUNT = 0 +PRE_EXP_STARTS = { + 'return', 'new', 'void', 'throw', 'typeof', 'in', 'instanceof' +} +PRE_ALLOWED = IDENTIFIER_PART.union({';', '{', '}', ']', ')', ':'}) +INCREMENTS = {'++', '--'} + + +def reset_inline_count(): + global INLINE_COUNT + INLINE_COUNT = 0 + + +def remove_functions(source, all_inline=False): + """removes functions and returns new source, and 2 dicts. + first dict with removed hoisted(global) functions and second with replaced inline functions""" + global INLINE_COUNT + inline = {} + hoisted = {} + n = 0 + limit = len(source) - 9 # 8 is length of 'function' + res = '' + last = 0 + while n < limit: + if n and source[n - 1] in IDENTIFIER_PART: + n += 1 + continue + if source[n:n + 8] == 'function' and source[n + + 8] not in IDENTIFIER_PART: + if source[:n].rstrip().endswith( + '.'): # allow function as a property name :) + n += 1 + continue + if source[n + 8:].lstrip().startswith( + ':'): # allow functions inside objects... + n += 1 + continue + entered = n + res += source[last:n] + name = '' + n = pass_white(source, n + 8) + if source[n] in IDENTIFIER_START: # hoisted function + name, n = parse_identifier(source, n) + args, n = pass_bracket(source, n, '()') + if not args: + raise SyntaxError('Function misses bracket with argnames ()') + args = args.strip('() \n') + args = tuple(parse_identifier(e, 0)[0] + for e in argsplit(args)) if args else () + if len(args) - len(set(args)): + # I know its legal in JS but python does not allow duplicate argnames + # I will not work around it + raise SyntaxError( + 'Function has duplicate argument names. Its not legal in this implementation. Sorry.' + ) + block, n = pass_bracket(source, n, '{}') + if not block: + raise SyntaxError( + 'Function does not have any code block to execute') + mixed = False # named function expression flag + if name and not all_inline: + # Here I will distinguish between named function expression (mixed) and a function statement + before = source[:entered].rstrip() + if any(endswith_keyword(before, e) for e in PRE_EXP_STARTS): + #print 'Ended ith keyword' + mixed = True + elif before and before[-1] not in PRE_ALLOWED and not before[ + -2:] in INCREMENTS: + #print 'Ended with'+repr(before[-1]), before[-1]=='}' + mixed = True + else: + #print 'FUNCTION STATEMENT' + #its a function statement. + # todo remove fucking label if present! + hoisted[name] = block, args + if not name or mixed or all_inline: # its a function expression (can be both named and not named) + #print 'FUNCTION EXPRESSION' + INLINE_COUNT += 1 + iname = INLINE_NAME % INLINE_COUNT # inline name + res += ' ' + iname + inline['%s@%s' % ( + iname, name + )] = block, args #here added real name at the end because it has to be added to the func scope + last = n + else: + n += 1 + res += source[last:] + return res, hoisted, inline + + +if __name__ == '__main__': + print remove_functions( + '5+5 function n (functiona ,functionaj) {dsd s, dsdd}') diff --git a/libs/js2py/legecy_translators/jsparser.py b/libs/js2py/legecy_translators/jsparser.py new file mode 100644 index 000000000..a09537d31 --- /dev/null +++ b/libs/js2py/legecy_translators/jsparser.py @@ -0,0 +1,326 @@ +""" +The process of translating JS will go like that: # TOP = 'imports and scope set' + +1. Remove all the comments +2. Replace number, string and regexp literals with markers +4. Remove global Functions and move their translation to the TOP. Also add register code there. +5. Replace inline functions with lvals +6. Remove List and Object literals and replace them with lvals +7. Find and remove var declarations, generate python register code that would go on TOP. + +Here we should be left with global code only where 1 line of js code = 1 line of python code. +Routine translating this code should be called glob_translate: +1. Search for outer structures and translate them using glob and inside using exps_translate + + +exps_translate routine: +1. Remove outer {} +2. Split lines at ; +3. Convert line by line using exp_translate +4. In case of error in 3 try to insert ; according to ECMA rules and repeat 3. + +exp_translate routine: +It takes a single line of JS code and returns a SINGLE line of Python code. +Note var is not present here because it was removed in previous stages. +If case of parsing errors it must return a pos of error. +1. Convert all assignment operations to put operations, this may be hard :( +2. Convert all gets and calls to get and callprop. +3. Convert unary operators like typeof, new, !, delete. + Delete can be handled by replacing last get method with delete. +4. Convert remaining operators that are not handled by python eg: === and , + + + + + +lval format PyJsLvalNR +marker PyJs(TYPE_NAME)(NR) + +TODO +1. Number literal replacement +2. Array literal replacement +3. Object literal replacement +5. Function replacement +4. Literal replacement translators + + +""" + +from utils import * + +OP_METHODS = { + '*': '__mul__', + '/': '__div__', + '%': '__mod__', + '+': '__add__', + '-': '__sub__', + '<<': '__lshift__', + '>>': '__rshift__', + '&': '__and__', + '^': '__xor__', + '|': '__or__' +} + + +def dbg(source): + try: + with open('C:\Users\Piotrek\Desktop\dbg.py', 'w') as f: + f.write(source) + except: + pass + + +def indent(lines, ind=4): + return ind * ' ' + lines.replace('\n', '\n' + ind * ' ').rstrip(' ') + + +def inject_before_lval(source, lval, code): + if source.count(lval) > 1: + dbg(source) + print + print lval + raise RuntimeError('To many lvals (%s)' % lval) + elif not source.count(lval): + dbg(source) + print + print lval + assert lval not in source + raise RuntimeError('No lval found "%s"' % lval) + end = source.index(lval) + inj = source.rfind('\n', 0, end) + ind = inj + while source[ind + 1] == ' ': + ind += 1 + ind -= inj + return source[:inj + 1] + indent(code, ind) + source[inj + 1:] + + +def bracket_split(source, brackets=('()', '{}', '[]'), strip=False): + """DOES NOT RETURN EMPTY STRINGS (can only return empty bracket content if strip=True)""" + starts = [e[0] for e in brackets] + in_bracket = 0 + n = 0 + last = 0 + while n < len(source): + e = source[n] + if not in_bracket and e in starts: + in_bracket = 1 + start = n + b_start, b_end = brackets[starts.index(e)] + elif in_bracket: + if e == b_start: + in_bracket += 1 + elif e == b_end: + in_bracket -= 1 + if not in_bracket: + if source[last:start]: + yield source[last:start] + last = n + 1 + yield source[start + strip:n + 1 - strip] + n += 1 + if source[last:]: + yield source[last:] + + +def pass_bracket(source, start, bracket='()'): + """Returns content of brackets with brackets and first pos after brackets + if source[start] is followed by some optional white space and brackets. + Otherwise None""" + e = bracket_split(source[start:], [bracket], False) + try: + cand = e.next() + except StopIteration: + return None, None + if not cand.strip(): #white space... + try: + res = e.next() + return res, start + len(cand) + len(res) + except StopIteration: + return None, None + elif cand[-1] == bracket[1]: + return cand, start + len(cand) + else: + return None, None + + +def startswith_keyword(start, keyword): + start = start.lstrip() + if start.startswith(keyword): + if len(keyword) < len(start): + if start[len(keyword)] in IDENTIFIER_PART: + return False + return True + return False + + +def endswith_keyword(ending, keyword): + ending = ending.rstrip() + if ending.endswith(keyword): + if len(keyword) < len(ending): + if ending[len(ending) - len(keyword) - 1] in IDENTIFIER_PART: + return False + return True + return False + + +def pass_white(source, start): + n = start + while n < len(source): + if source[n] in SPACE: + n += 1 + else: + break + return n + + +def except_token(source, start, token, throw=True): + """Token can be only a single char. Returns position after token if found. Otherwise raises syntax error if throw + otherwise returns None""" + start = pass_white(source, start) + if start < len(source) and source[start] == token: + return start + 1 + if throw: + raise SyntaxError('Missing token. Expected %s' % token) + return None + + +def except_keyword(source, start, keyword): + """ Returns position after keyword if found else None + Note: skips white space""" + start = pass_white(source, start) + kl = len(keyword) #keyword len + if kl + start > len(source): + return None + if source[start:start + kl] != keyword: + return None + if kl + start < len(source) and source[start + kl] in IDENTIFIER_PART: + return None + return start + kl + + +def parse_identifier(source, start, throw=True): + """passes white space from start and returns first identifier, + if identifier invalid and throw raises SyntaxError otherwise returns None""" + start = pass_white(source, start) + end = start + if not end < len(source): + if throw: + raise SyntaxError('Missing identifier!') + return None + if source[end] not in IDENTIFIER_START: + if throw: + raise SyntaxError('Invalid identifier start: "%s"' % source[end]) + return None + end += 1 + while end < len(source) and source[end] in IDENTIFIER_PART: + end += 1 + if not is_valid_lval(source[start:end]): + if throw: + raise SyntaxError( + 'Invalid identifier name: "%s"' % source[start:end]) + return None + return source[start:end], end + + +def argsplit(args, sep=','): + """used to split JS args (it is not that simple as it seems because + sep can be inside brackets). + + pass args *without* brackets! + + Used also to parse array and object elements, and more""" + parsed_len = 0 + last = 0 + splits = [] + for e in bracket_split(args, brackets=['()', '[]', '{}']): + if e[0] not in {'(', '[', '{'}: + for i, char in enumerate(e): + if char == sep: + splits.append(args[last:parsed_len + i]) + last = parsed_len + i + 1 + parsed_len += len(e) + splits.append(args[last:]) + return splits + + +def split_add_ops(text): + """Specialized function splitting text at add/sub operators. + Operands are *not* translated. Example result ['op1', '+', 'op2', '-', 'op3']""" + n = 0 + text = text.replace('++', '##').replace( + '--', '@@') #text does not normally contain any of these + spotted = False # set to true if noticed anything other than +- or white space + last = 0 + while n < len(text): + e = text[n] + if e == '+' or e == '-': + if spotted: + yield text[last:n].replace('##', '++').replace('@@', '--') + yield e + last = n + 1 + spotted = False + elif e == '/' or e == '*' or e == '%': + spotted = False + elif e != ' ': + spotted = True + n += 1 + yield text[last:n].replace('##', '++').replace('@@', '--') + + +def split_at_any(text, + lis, + translate=False, + not_before=[], + not_after=[], + validitate=None): + """ doc """ + lis.sort(key=lambda x: len(x), reverse=True) + last = 0 + n = 0 + text_len = len(text) + while n < text_len: + if any(text[:n].endswith(e) + for e in not_before): #Cant end with end before + n += 1 + continue + for e in lis: + s = len(e) + if s + n > text_len: + continue + if validitate and not validitate(e, text[:n], text[n + s:]): + continue + if any(text[n + s:].startswith(e) + for e in not_after): #Cant end with end before + n += 1 + break + if e == text[n:n + s]: + yield text[last:n] if not translate else translate( + text[last:n]) + yield e + n += s + last = n + break + else: + n += 1 + yield text[last:n] if not translate else translate(text[last:n]) + + +def split_at_single(text, sep, not_before=[], not_after=[]): + """Works like text.split(sep) but separated fragments + cant end with not_before or start with not_after""" + n = 0 + lt, s = len(text), len(sep) + last = 0 + while n < lt: + if not s + n > lt: + if sep == text[n:n + s]: + if any(text[last:n].endswith(e) for e in not_before): + pass + elif any(text[n + s:].startswith(e) for e in not_after): + pass + else: + yield text[last:n] + last = n + s + n += s - 1 + n += 1 + yield text[last:] diff --git a/libs/js2py/legecy_translators/nodevisitor.py b/libs/js2py/legecy_translators/nodevisitor.py new file mode 100644 index 000000000..4d50545c9 --- /dev/null +++ b/libs/js2py/legecy_translators/nodevisitor.py @@ -0,0 +1,562 @@ +from jsparser import * +from utils import * +import re +from utils import * + +#Note all white space sent to this module must be ' ' so no '\n' +REPL = {} + +#PROBLEMS +# <<=, >>=, >>>= +# they are unusual so I will not fix that now. a++ +b works fine and a+++++b (a++ + ++b) does not work even in V8 +ASSIGNMENT_MATCH = '(?)=(?!=)' + + +def unary_validitator(keyword, before, after): + if keyword[-1] in IDENTIFIER_PART: + if not after or after[0] in IDENTIFIER_PART: + return False + if before and before[-1] in IDENTIFIER_PART: # I am not sure here... + return False + return True + + +def comb_validitator(keyword, before, after): + if keyword == 'instanceof' or keyword == 'in': + if before and before[-1] in IDENTIFIER_PART: + return False + elif after and after[0] in IDENTIFIER_PART: + return False + return True + + +def bracket_replace(code): + new = '' + for e in bracket_split(code, ['()', '[]'], False): + if e[0] == '[': + name = '#PYJSREPL' + str(len(REPL)) + '{' + new += name + REPL[name] = e + elif e[0] == '(': # can be a function call + name = '@PYJSREPL' + str(len(REPL)) + '}' + new += name + REPL[name] = e + else: + new += e + return new + + +class NodeVisitor: + def __init__(self, code): + self.code = code + + def rl(self, lis, op): + """performs this operation on a list from *right to left* + op must take 2 args + a,b,c => op(a, op(b, c))""" + it = reversed(lis) + res = trans(it.next()) + for e in it: + e = trans(e) + res = op(e, res) + return res + + def lr(self, lis, op): + """performs this operation on a list from *left to right* + op must take 2 args + a,b,c => op(op(a, b), c)""" + it = iter(lis) + res = trans(it.next()) + for e in it: + e = trans(e) + res = op(res, e) + return res + + def translate(self): + """Translates outer operation and calls translate on inner operation. + Returns fully translated code.""" + if not self.code: + return '' + new = bracket_replace(self.code) + #Check comma operator: + cand = new.split(',') #every comma in new must be an operator + if len(cand) > 1: #LR + return self.lr(cand, js_comma) + #Check = operator: + # dont split at != or !== or == or === or <= or >= + #note <<=, >>= or this >>> will NOT be supported + # maybe I will change my mind later + # Find this crappy ?: + if '?' in new: + cond_ind = new.find('?') + tenary_start = 0 + for ass in re.finditer(ASSIGNMENT_MATCH, new): + cand = ass.span()[1] + if cand < cond_ind: + tenary_start = cand + else: + break + actual_tenary = new[tenary_start:] + spl = ''.join(split_at_any(new, [':', '?'], translate=trans)) + tenary_translation = transform_crap(spl) + assignment = new[:tenary_start] + ' PyJsConstantTENARY' + return trans(assignment).replace('PyJsConstantTENARY', + tenary_translation) + cand = list(split_at_single(new, '=', ['!', '=', '<', '>'], ['='])) + if len(cand) > 1: # RL + it = reversed(cand) + res = trans(it.next()) + for e in it: + e = e.strip() + if not e: + raise SyntaxError('Missing left-hand in assignment!') + op = '' + if e[-2:] in OP_METHODS: + op = ',' + e[-2:].__repr__() + e = e[:-2] + elif e[-1:] in OP_METHODS: + op = ',' + e[-1].__repr__() + e = e[:-1] + e = trans(e) + #Now replace last get method with put and change args + c = list(bracket_split(e, ['()'])) + beg, arglist = ''.join(c[:-1]).strip(), c[-1].strip( + ) #strips just to make sure... I will remove it later + if beg[-4:] != '.get': + raise SyntaxError('Invalid left-hand side in assignment') + beg = beg[0:-3] + 'put' + arglist = arglist[0:-1] + ', ' + res + op + ')' + res = beg + arglist + return res + #Now check remaining 2 arg operators that are not handled by python + #They all have Left to Right (LR) associativity + order = [OR, AND, BOR, BXOR, BAND, EQS, COMPS, BSHIFTS, ADDS, MULTS] + # actually we dont need OR and AND because they can be handled easier. But just for fun + dangerous = ['<', '>'] + for typ in order: + #we have to use special method for ADDS since they can be also unary operation +/++ or -/-- FUCK + if '+' in typ: + cand = list(split_add_ops(new)) + else: + #dont translate. cant start or end on dangerous op. + cand = list( + split_at_any( + new, + typ.keys(), + False, + dangerous, + dangerous, + validitate=comb_validitator)) + if not len(cand) > 1: + continue + n = 1 + res = trans(cand[0]) + if not res: + raise SyntaxError("Missing operand!") + while n < len(cand): + e = cand[n] + if not e: + raise SyntaxError("Missing operand!") + if n % 2: + op = typ[e] + else: + res = op(res, trans(e)) + n += 1 + return res + #Now replace unary operators - only they are left + cand = list( + split_at_any( + new, UNARY.keys(), False, validitate=unary_validitator)) + if len(cand) > 1: #contains unary operators + if '++' in cand or '--' in cand: #it cant contain both ++ and -- + if '--' in cand: + op = '--' + meths = js_post_dec, js_pre_dec + else: + op = '++' + meths = js_post_inc, js_pre_inc + pos = cand.index(op) + if cand[pos - 1].strip(): # post increment + a = cand[pos - 1] + meth = meths[0] + elif cand[pos + 1].strip(): #pre increment + a = cand[pos + 1] + meth = meths[1] + else: + raise SyntaxError('Invalid use of ++ operator') + if cand[pos + 2:]: + raise SyntaxError('Too many operands') + operand = meth(trans(a)) + cand = cand[:pos - 1] + # now last cand should be operand and every other odd element should be empty + else: + operand = trans(cand[-1]) + del cand[-1] + for i, e in enumerate(reversed(cand)): + if i % 2: + if e.strip(): + raise SyntaxError('Too many operands') + else: + operand = UNARY[e](operand) + return operand + #Replace brackets + if new[0] == '@' or new[0] == '#': + if len( + list(bracket_split(new, ('#{', '@}'))) + ) == 1: # we have only one bracket, otherwise pseudobracket like @@.... + assert new in REPL + if new[0] == '#': + raise SyntaxError( + '[] cant be used as brackets! Use () instead.') + return '(' + trans(REPL[new][1:-1]) + ')' + #Replace function calls and prop getters + # 'now' must be a reference like: a or b.c.d but it can have also calls or getters ( for example a["b"](3)) + #From here @@ means a function call and ## means get operation (note they dont have to present) + it = bracket_split(new, ('#{', '@}')) + res = [] + for e in it: + if e[0] != '#' and e[0] != '@': + res += [x.strip() for x in e.split('.')] + else: + res += [e.strip()] + # res[0] can be inside @@ (name)... + res = filter(lambda x: x, res) + if is_internal(res[0]): + out = res[0] + elif res[0][0] in {'#', '@'}: + out = '(' + trans(REPL[res[0]][1:-1]) + ')' + elif is_valid_lval( + res[0]) or res[0] in {'this', 'false', 'true', 'null'}: + out = 'var.get(' + res[0].__repr__() + ')' + else: + if is_reserved(res[0]): + raise SyntaxError('Unexpected reserved word: "%s"' % res[0]) + raise SyntaxError('Invalid identifier: "%s"' % res[0]) + if len(res) == 1: + return out + n = 1 + while n < len(res): #now every func call is a prop call + e = res[n] + if e[0] == '@': # direct call + out += trans_args(REPL[e]) + n += 1 + continue + args = False #assume not prop call + if n + 1 < len(res) and res[n + 1][0] == '@': #prop call + args = trans_args(REPL[res[n + 1]])[1:] + if args != ')': + args = ',' + args + if e[0] == '#': + prop = trans(REPL[e][1:-1]) + else: + if not is_lval(e): + raise SyntaxError('Invalid identifier: "%s"' % e) + prop = e.__repr__() + if args: # prop call + n += 1 + out += '.callprop(' + prop + args + else: #prop get + out += '.get(' + prop + ')' + n += 1 + return out + + +def js_comma(a, b): + return 'PyJsComma(' + a + ',' + b + ')' + + +def js_or(a, b): + return '(' + a + ' or ' + b + ')' + + +def js_bor(a, b): + return '(' + a + '|' + b + ')' + + +def js_bxor(a, b): + return '(' + a + '^' + b + ')' + + +def js_band(a, b): + return '(' + a + '&' + b + ')' + + +def js_and(a, b): + return '(' + a + ' and ' + b + ')' + + +def js_strict_eq(a, b): + + return 'PyJsStrictEq(' + a + ',' + b + ')' + + +def js_strict_neq(a, b): + return 'PyJsStrictNeq(' + a + ',' + b + ')' + + +#Not handled by python in the same way like JS. For example 2==2==True returns false. +# In JS above would return true so we need brackets. +def js_abstract_eq(a, b): + return '(' + a + '==' + b + ')' + + +#just like == +def js_abstract_neq(a, b): + return '(' + a + '!=' + b + ')' + + +def js_lt(a, b): + return '(' + a + '<' + b + ')' + + +def js_le(a, b): + return '(' + a + '<=' + b + ')' + + +def js_ge(a, b): + return '(' + a + '>=' + b + ')' + + +def js_gt(a, b): + return '(' + a + '>' + b + ')' + + +def js_in(a, b): + return b + '.contains(' + a + ')' + + +def js_instanceof(a, b): + return a + '.instanceof(' + b + ')' + + +def js_lshift(a, b): + return '(' + a + '<<' + b + ')' + + +def js_rshift(a, b): + return '(' + a + '>>' + b + ')' + + +def js_shit(a, b): + return 'PyJsBshift(' + a + ',' + b + ')' + + +def js_add( + a, + b): # To simplify later process of converting unary operators + and ++ + return '(%s+%s)' % (a, b) + + +def js_sub(a, b): # To simplify + return '(%s-%s)' % (a, b) + + +def js_mul(a, b): + return '(' + a + '*' + b + ')' + + +def js_div(a, b): + return '(' + a + '/' + b + ')' + + +def js_mod(a, b): + return '(' + a + '%' + b + ')' + + +def js_typeof(a): + cand = list(bracket_split(a, ('()', ))) + if len(cand) == 2 and cand[0] == 'var.get': + return cand[0] + cand[1][:-1] + ',throw=False).typeof()' + return a + '.typeof()' + + +def js_void(a): + return '(' + a + ')' + + +def js_new(a): + cands = list(bracket_split(a, ('()', ))) + lim = len(cands) + if lim < 2: + return a + '.create()' + n = 0 + while n < lim: + c = cands[n] + if c[0] == '(': + if cands[n - 1].endswith( + '.get') and n + 1 >= lim: # last get operation. + return a + '.create()' + elif cands[n - 1][0] == '(': + return ''.join(cands[:n]) + '.create' + c + ''.join( + cands[n + 1:]) + elif cands[n - 1] == '.callprop': + beg = ''.join(cands[:n - 1]) + args = argsplit(c[1:-1], ',') + prop = args[0] + new_args = ','.join(args[1:]) + create = '.get(%s).create(%s)' % (prop, new_args) + return beg + create + ''.join(cands[n + 1:]) + n += 1 + return a + '.create()' + + +def js_delete(a): + #replace last get with delete. + c = list(bracket_split(a, ['()'])) + beg, arglist = ''.join(c[:-1]).strip(), c[-1].strip( + ) #strips just to make sure... I will remove it later + if beg[-4:] != '.get': + raise SyntaxError('Invalid delete operation') + return beg[:-3] + 'delete' + arglist + + +def js_neg(a): + return '(-' + a + ')' + + +def js_pos(a): + return '(+' + a + ')' + + +def js_inv(a): + return '(~' + a + ')' + + +def js_not(a): + return a + '.neg()' + + +def postfix(a, inc, post): + bra = list(bracket_split(a, ('()', ))) + meth = bra[-2] + if not meth.endswith('get'): + raise SyntaxError('Invalid ++ or -- operation.') + bra[-2] = bra[-2][:-3] + 'put' + bra[-1] = '(%s,%s%sJs(1))' % (bra[-1][1:-1], a, '+' if inc else '-') + res = ''.join(bra) + return res if not post else '(%s%sJs(1))' % (res, '-' if inc else '+') + + +def js_pre_inc(a): + return postfix(a, True, False) + + +def js_post_inc(a): + return postfix(a, True, True) + + +def js_pre_dec(a): + return postfix(a, False, False) + + +def js_post_dec(a): + return postfix(a, False, True) + + +OR = {'||': js_or} +AND = {'&&': js_and} +BOR = {'|': js_bor} +BXOR = {'^': js_bxor} +BAND = {'&': js_band} + +EQS = { + '===': js_strict_eq, + '!==': js_strict_neq, + '==': js_abstract_eq, # we need == and != too. Read a note above method + '!=': js_abstract_neq +} + +#Since JS does not have chained comparisons we need to implement all cmp methods. +COMPS = { + '<': js_lt, + '<=': js_le, + '>=': js_ge, + '>': js_gt, + 'instanceof': js_instanceof, #todo change to validitate + 'in': js_in +} + +BSHIFTS = {'<<': js_lshift, '>>': js_rshift, '>>>': js_shit} + +ADDS = {'+': js_add, '-': js_sub} + +MULTS = {'*': js_mul, '/': js_div, '%': js_mod} + +#Note they dont contain ++ and -- methods because they both have 2 different methods +# correct method will be found automatically in translate function +UNARY = { + 'typeof': js_typeof, + 'void': js_void, + 'new': js_new, + 'delete': js_delete, + '!': js_not, + '-': js_neg, + '+': js_pos, + '~': js_inv, + '++': None, + '--': None +} + + +def transform_crap(code): #needs some more tests + """Transforms this ?: crap into if else python syntax""" + ind = code.rfind('?') + if ind == -1: + return code + sep = code.find(':', ind) + if sep == -1: + raise SyntaxError('Invalid ?: syntax (probably missing ":" )') + beg = max(code.rfind(':', 0, ind), code.find('?', 0, ind)) + 1 + end = code.find(':', sep + 1) + end = len(code) if end == -1 else end + formula = '(' + code[ind + 1:sep] + ' if ' + code[ + beg:ind] + ' else ' + code[sep + 1:end] + ')' + return transform_crap(code[:beg] + formula + code[end:]) + + +from code import InteractiveConsole + +#e = InteractiveConsole(globals()).interact() +import traceback + + +def trans(code): + return NodeVisitor(code.strip()).translate().strip() + + +#todo finish this trans args +def trans_args(code): + new = bracket_replace(code.strip()[1:-1]) + args = ','.join(trans(e) for e in new.split(',')) + return '(%s)' % args + + +EXP = 0 + + +def exp_translator(code): + global REPL, EXP + EXP += 1 + REPL = {} + #print EXP, code + code = code.replace('\n', ' ') + assert '@' not in code + assert ';' not in code + assert '#' not in code + #if not code.strip(): #? + # return 'var.get("undefined")' + try: + return trans(code) + except: + #print '\n\ntrans failed on \n\n' + code + #raw_input('\n\npress enter') + raise + + +if __name__ == '__main__': + #print 'Here', trans('(eee ) . ii [ PyJsMarker ] [ jkj ] ( j , j ) . + # jiji (h , ji , i)(non )( )()()()') + for e in xrange(3): + print exp_translator('jk = kk.ik++') + #First line translated with PyJs: PyJsStrictEq(PyJsAdd((Js(100)*Js(50)),Js(30)), Js("5030")), yay! + print exp_translator('delete a.f') diff --git a/libs/js2py/legecy_translators/nparser.py b/libs/js2py/legecy_translators/nparser.py new file mode 100644 index 000000000..a9c97c9ae --- /dev/null +++ b/libs/js2py/legecy_translators/nparser.py @@ -0,0 +1,3209 @@ +# JUST FOR NOW, later I will write my own - much faster and better. + +# Copyright (C) 2013 Ariya Hidayat +# Copyright (C) 2013 Thaddee Tyl +# Copyright (C) 2012 Ariya Hidayat +# Copyright (C) 2012 Mathias Bynens +# Copyright (C) 2012 Joost-Wim Boekesteijn +# Copyright (C) 2012 Kris Kowal +# Copyright (C) 2012 Yusuke Suzuki +# Copyright (C) 2012 Arpad Borsos +# Copyright (C) 2011 Ariya Hidayat +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# -*- coding: latin-1 -*- +from __future__ import print_function +import re + + +def typeof(t): + if t is None: return 'undefined' + elif isinstance(t, bool): return 'boolean' + elif isinstance(t, str): return 'string' + elif isinstance(t, int) or isinstance(t, float): return 'number' + elif hasattr(t, '__call__'): return 'function' + else: return 'object' + + +def list_indexOf(l, v): + try: + return l.index(v) + except: + return -1 + + +parseFloat = float +parseInt = int + + +class jsdict(object): + def __init__(self, d): + self.__dict__.update(d) + + def __getitem__(self, name): + if name in self.__dict__: + return self.__dict__[name] + else: + return None + + def __setitem__(self, name, value): + self.__dict__[name] = value + return value + + def __getattr__(self, name): + try: + return getattr(self, name) + except: + return None + + def __setattr__(self, name, value): + self[name] = value + return value + + def __contains__(self, name): + return name in self.__dict__ + + def __repr__(self): + return str(self.__dict__) + + +class RegExp(object): + def __init__(self, pattern, flags=''): + self.flags = flags + pyflags = 0 | re.M if 'm' in flags else 0 | re.I if 'i' in flags else 0 + self.source = pattern + self.pattern = re.compile(pattern, pyflags) + + def test(self, s): + return self.pattern.search(s) is not None + + +console = jsdict({"log": print}) + + +def __temp__42(object=None, body=None): + return jsdict({ + "type": Syntax.WithStatement, + "object": object, + "body": body, + }) + + +def __temp__41(test=None, body=None): + return jsdict({ + "type": Syntax.WhileStatement, + "test": test, + "body": body, + }) + + +def __temp__40(id=None, init=None): + return jsdict({ + "type": Syntax.VariableDeclarator, + "id": id, + "init": init, + }) + + +def __temp__39(declarations=None, kind=None): + return jsdict({ + "type": Syntax.VariableDeclaration, + "declarations": declarations, + "kind": kind, + }) + + +def __temp__38(operator=None, argument=None): + if (operator == "++") or (operator == "--"): + return jsdict({ + "type": Syntax.UpdateExpression, + "operator": operator, + "argument": argument, + "prefix": True, + }) + return jsdict({ + "type": Syntax.UnaryExpression, + "operator": operator, + "argument": argument, + "prefix": True, + }) + + +def __temp__37(block=None, guardedHandlers=None, handlers=None, + finalizer=None): + return jsdict({ + "type": Syntax.TryStatement, + "block": block, + "guardedHandlers": guardedHandlers, + "handlers": handlers, + "finalizer": finalizer, + }) + + +def __temp__36(argument=None): + return jsdict({ + "type": Syntax.ThrowStatement, + "argument": argument, + }) + + +def __temp__35(): + return jsdict({ + "type": Syntax.ThisExpression, + }) + + +def __temp__34(discriminant=None, cases=None): + return jsdict({ + "type": Syntax.SwitchStatement, + "discriminant": discriminant, + "cases": cases, + }) + + +def __temp__33(test=None, consequent=None): + return jsdict({ + "type": Syntax.SwitchCase, + "test": test, + "consequent": consequent, + }) + + +def __temp__32(expressions=None): + return jsdict({ + "type": Syntax.SequenceExpression, + "expressions": expressions, + }) + + +def __temp__31(argument=None): + return jsdict({ + "type": Syntax.ReturnStatement, + "argument": argument, + }) + + +def __temp__30(kind=None, key=None, value=None): + return jsdict({ + "type": Syntax.Property, + "key": key, + "value": value, + "kind": kind, + }) + + +def __temp__29(body=None): + return jsdict({ + "type": Syntax.Program, + "body": body, + }) + + +def __temp__28(operator=None, argument=None): + return jsdict({ + "type": Syntax.UpdateExpression, + "operator": operator, + "argument": argument, + "prefix": False, + }) + + +def __temp__27(properties=None): + return jsdict({ + "type": Syntax.ObjectExpression, + "properties": properties, + }) + + +def __temp__26(callee=None, args=None): + return jsdict({ + "type": Syntax.NewExpression, + "callee": callee, + "arguments": args, + }) + + +def __temp__25(accessor=None, object=None, property=None): + return jsdict({ + "type": Syntax.MemberExpression, + "computed": accessor == "[", + "object": object, + "property": property, + }) + + +def __temp__24(token=None): + return jsdict({ + "type": Syntax.Literal, + "value": token.value, + "raw": source[token.range[0]:token.range[1]], + }) + + +def __temp__23(label=None, body=None): + return jsdict({ + "type": Syntax.LabeledStatement, + "label": label, + "body": body, + }) + + +def __temp__22(test=None, consequent=None, alternate=None): + return jsdict({ + "type": Syntax.IfStatement, + "test": test, + "consequent": consequent, + "alternate": alternate, + }) + + +def __temp__21(name=None): + return jsdict({ + "type": Syntax.Identifier, + "name": name, + }) + + +def __temp__20(id=None, params=None, defaults=None, body=None): + return jsdict({ + "type": Syntax.FunctionExpression, + "id": id, + "params": params, + "defaults": defaults, + "body": body, + "rest": None, + "generator": False, + "expression": False, + }) + + +def __temp__19(id=None, params=None, defaults=None, body=None): + return jsdict({ + "type": Syntax.FunctionDeclaration, + "id": id, + "params": params, + "defaults": defaults, + "body": body, + "rest": None, + "generator": False, + "expression": False, + }) + + +def __temp__18(left=None, right=None, body=None): + return jsdict({ + "type": Syntax.ForInStatement, + "left": left, + "right": right, + "body": body, + "each": False, + }) + + +def __temp__17(init=None, test=None, update=None, body=None): + return jsdict({ + "type": Syntax.ForStatement, + "init": init, + "test": test, + "update": update, + "body": body, + }) + + +def __temp__16(expression=None): + return jsdict({ + "type": Syntax.ExpressionStatement, + "expression": expression, + }) + + +def __temp__15(): + return jsdict({ + "type": Syntax.EmptyStatement, + }) + + +def __temp__14(body=None, test=None): + return jsdict({ + "type": Syntax.DoWhileStatement, + "body": body, + "test": test, + }) + + +def __temp__13(): + return jsdict({ + "type": Syntax.DebuggerStatement, + }) + + +def __temp__12(label=None): + return jsdict({ + "type": Syntax.ContinueStatement, + "label": label, + }) + + +def __temp__11(test=None, consequent=None, alternate=None): + return jsdict({ + "type": Syntax.ConditionalExpression, + "test": test, + "consequent": consequent, + "alternate": alternate, + }) + + +def __temp__10(param=None, body=None): + return jsdict({ + "type": Syntax.CatchClause, + "param": param, + "body": body, + }) + + +def __temp__9(callee=None, args=None): + return jsdict({ + "type": Syntax.CallExpression, + "callee": callee, + "arguments": args, + }) + + +def __temp__8(label=None): + return jsdict({ + "type": Syntax.BreakStatement, + "label": label, + }) + + +def __temp__7(body=None): + return jsdict({ + "type": Syntax.BlockStatement, + "body": body, + }) + + +def __temp__6(operator=None, left=None, right=None): + type = (Syntax.LogicalExpression if (operator == "||") or + (operator == "&&") else Syntax.BinaryExpression) + return jsdict({ + "type": type, + "operator": operator, + "left": left, + "right": right, + }) + + +def __temp__5(operator=None, left=None, right=None): + return jsdict({ + "type": Syntax.AssignmentExpression, + "operator": operator, + "left": left, + "right": right, + }) + + +def __temp__4(elements=None): + return jsdict({ + "type": Syntax.ArrayExpression, + "elements": elements, + }) + + +def __temp__3(node=None): + if extra.source: + node.loc.source = extra.source + return node + + +def __temp__2(node=None): + if node.range or node.loc: + if extra.loc: + state.markerStack.pop() + state.markerStack.pop() + if extra.range: + state.markerStack.pop() + else: + SyntaxTreeDelegate.markEnd(node) + return node + + +def __temp__1(node=None): + if extra.range: + node.range = [state.markerStack.pop(), index] + if extra.loc: + node.loc = jsdict({ + "start": + jsdict({ + "line": state.markerStack.pop(), + "column": state.markerStack.pop(), + }), + "end": + jsdict({ + "line": lineNumber, + "column": index - lineStart, + }), + }) + SyntaxTreeDelegate.postProcess(node) + return node + + +def __temp__0(): + if extra.loc: + state.markerStack.append(index - lineStart) + state.markerStack.append(lineNumber) + if extra.range: + state.markerStack.append(index) + + +Token = None +TokenName = None +FnExprTokens = None +Syntax = None +PropertyKind = None +Messages = None +Regex = None +SyntaxTreeDelegate = None +source = None +strict = None +index = None +lineNumber = None +lineStart = None +length = None +delegate = None +lookahead = None +state = None +extra = None +Token = jsdict({ + "BooleanLiteral": 1, + "EOF": 2, + "Identifier": 3, + "Keyword": 4, + "NullLiteral": 5, + "NumericLiteral": 6, + "Punctuator": 7, + "StringLiteral": 8, + "RegularExpression": 9, +}) +TokenName = jsdict({}) +TokenName[Token.BooleanLiteral] = "Boolean" +TokenName[Token.EOF] = "" +TokenName[Token.Identifier] = "Identifier" +TokenName[Token.Keyword] = "Keyword" +TokenName[Token.NullLiteral] = "Null" +TokenName[Token.NumericLiteral] = "Numeric" +TokenName[Token.Punctuator] = "Punctuator" +TokenName[Token.StringLiteral] = "String" +TokenName[Token.RegularExpression] = "RegularExpression" +FnExprTokens = [ + "(", "{", "[", "in", "typeof", "instanceof", "new", "return", "case", + "delete", "throw", "void", "=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", + ">>>=", "&=", "|=", "^=", ",", "+", "-", "*", "/", "%", "++", "--", "<<", + ">>", ">>>", "&", "|", "^", "!", "~", "&&", "||", "?", ":", "===", "==", + ">=", "<=", "<", ">", "!=", "!==" +] +Syntax = jsdict({ + "AssignmentExpression": "AssignmentExpression", + "ArrayExpression": "ArrayExpression", + "BlockStatement": "BlockStatement", + "BinaryExpression": "BinaryExpression", + "BreakStatement": "BreakStatement", + "CallExpression": "CallExpression", + "CatchClause": "CatchClause", + "ConditionalExpression": "ConditionalExpression", + "ContinueStatement": "ContinueStatement", + "DoWhileStatement": "DoWhileStatement", + "DebuggerStatement": "DebuggerStatement", + "EmptyStatement": "EmptyStatement", + "ExpressionStatement": "ExpressionStatement", + "ForStatement": "ForStatement", + "ForInStatement": "ForInStatement", + "FunctionDeclaration": "FunctionDeclaration", + "FunctionExpression": "FunctionExpression", + "Identifier": "Identifier", + "IfStatement": "IfStatement", + "Literal": "Literal", + "LabeledStatement": "LabeledStatement", + "LogicalExpression": "LogicalExpression", + "MemberExpression": "MemberExpression", + "NewExpression": "NewExpression", + "ObjectExpression": "ObjectExpression", + "Program": "Program", + "Property": "Property", + "ReturnStatement": "ReturnStatement", + "SequenceExpression": "SequenceExpression", + "SwitchStatement": "SwitchStatement", + "SwitchCase": "SwitchCase", + "ThisExpression": "ThisExpression", + "ThrowStatement": "ThrowStatement", + "TryStatement": "TryStatement", + "UnaryExpression": "UnaryExpression", + "UpdateExpression": "UpdateExpression", + "VariableDeclaration": "VariableDeclaration", + "VariableDeclarator": "VariableDeclarator", + "WhileStatement": "WhileStatement", + "WithStatement": "WithStatement", +}) +PropertyKind = jsdict({ + "Data": 1, + "Get": 2, + "Set": 4, +}) +Messages = jsdict({ + "UnexpectedToken": + "Unexpected token %0", + "UnexpectedNumber": + "Unexpected number", + "UnexpectedString": + "Unexpected string", + "UnexpectedIdentifier": + "Unexpected identifier", + "UnexpectedReserved": + "Unexpected reserved word", + "UnexpectedEOS": + "Unexpected end of input", + "NewlineAfterThrow": + "Illegal newline after throw", + "InvalidRegExp": + "Invalid regular expression", + "UnterminatedRegExp": + "Invalid regular expression: missing /", + "InvalidLHSInAssignment": + "Invalid left-hand side in assignment", + "InvalidLHSInForIn": + "Invalid left-hand side in for-in", + "MultipleDefaultsInSwitch": + "More than one default clause in switch statement", + "NoCatchOrFinally": + "Missing catch or finally after try", + "UnknownLabel": + "Undefined label '%0'", + "Redeclaration": + "%0 '%1' has already been declared", + "IllegalContinue": + "Illegal continue statement", + "IllegalBreak": + "Illegal break statement", + "IllegalReturn": + "Illegal return statement", + "StrictModeWith": + "Strict mode code may not include a with statement", + "StrictCatchVariable": + "Catch variable may not be eval or arguments in strict mode", + "StrictVarName": + "Variable name may not be eval or arguments in strict mode", + "StrictParamName": + "Parameter name eval or arguments is not allowed in strict mode", + "StrictParamDupe": + "Strict mode function may not have duplicate parameter names", + "StrictFunctionName": + "Function name may not be eval or arguments in strict mode", + "StrictOctalLiteral": + "Octal literals are not allowed in strict mode.", + "StrictDelete": + "Delete of an unqualified identifier in strict mode.", + "StrictDuplicateProperty": + "Duplicate data property in object literal not allowed in strict mode", + "AccessorDataProperty": + "Object literal may not have data and accessor property with the same name", + "AccessorGetSet": + "Object literal may not have multiple get/set accessors with the same name", + "StrictLHSAssignment": + "Assignment to eval or arguments is not allowed in strict mode", + "StrictLHSPostfix": + "Postfix increment/decrement may not have eval or arguments operand in strict mode", + "StrictLHSPrefix": + "Prefix increment/decrement may not have eval or arguments operand in strict mode", + "StrictReservedWord": + "Use of future reserved word in strict mode", +}) +Regex = jsdict({ + "NonAsciiIdentifierStart": + RegExp( + u"[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]" + ), + "NonAsciiIdentifierPart": + RegExp( + u"[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]" + ), +}) + + +def assert__py__(condition=None, message=None): + if not condition: + raise RuntimeError("ASSERT: " + message) + + +def isDecimalDigit(ch=None): + return (ch >= 48) and (ch <= 57) + + +def isHexDigit(ch=None): + return "0123456789abcdefABCDEF".find(ch) >= 0 + + +def isOctalDigit(ch=None): + return "01234567".find(ch) >= 0 + + +def isWhiteSpace(ch=None): + return ( + ((((ch == 32) or (ch == 9)) or (ch == 11)) or + (ch == 12)) or (ch == 160) + ) or ((ch >= 5760) and ( + u"\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\ufeff" + .find(unichr(ch)) > 0)) + + +def isLineTerminator(ch=None): + return (((ch == 10) or (ch == 13)) or (ch == 8232)) or (ch == 8233) + + +def isIdentifierStart(ch=None): + return (((((ch == 36) or (ch == 95)) or ((ch >= 65) and (ch <= 90))) or + ((ch >= 97) and (ch <= 122))) or + (ch == 92)) or ((ch >= 128) + and Regex.NonAsciiIdentifierStart.test(unichr(ch))) + + +def isIdentifierPart(ch=None): + return ((((((ch == 36) or (ch == 95)) or ((ch >= 65) and (ch <= 90))) or + ((ch >= 97) and (ch <= 122))) or ((ch >= 48) and (ch <= 57))) or + (ch == 92)) or ((ch >= 128) + and Regex.NonAsciiIdentifierPart.test(unichr(ch))) + + +def isFutureReservedWord(id=None): + while 1: + if (id == "super") or ((id == "import") or ((id == "extends") or + ((id == "export") or + ((id == "enum") or + (id == "class"))))): + return True + else: + return False + break + + +def isStrictModeReservedWord(id=None): + while 1: + if (id == "let") or ((id == "yield") or + ((id == "static") or + ((id == "public") or + ((id == "protected") or + ((id == "private") or + ((id == "package") or + ((id == "interface") or + (id == "implements")))))))): + return True + else: + return False + break + + +def isRestrictedWord(id=None): + return (id == "eval") or (id == "arguments") + + +def isKeyword(id=None): + if strict and isStrictModeReservedWord(id): + return True + while 1: + if len(id) == 2: + return ((id == "if") or (id == "in")) or (id == "do") + elif len(id) == 3: + return ((((id == "var") or (id == "for")) or (id == "new")) or + (id == "try")) or (id == "let") + elif len(id) == 4: + return (((((id == "this") or (id == "else")) or (id == "case")) or + (id == "void")) or (id == "with")) or (id == "enum") + elif len(id) == 5: + return (((((((id == "while") or (id == "break")) or + (id == "catch")) or (id == "throw")) or + (id == "const")) or (id == "yield")) or + (id == "class")) or (id == "super") + elif len(id) == 6: + return (((((id == "return") or (id == "typeof")) or + (id == "delete")) or (id == "switch")) or + (id == "export")) or (id == "import") + elif len(id) == 7: + return ((id == "default") or + (id == "finally")) or (id == "extends") + elif len(id) == 8: + return ((id == "function") or + (id == "continue")) or (id == "debugger") + elif len(id) == 10: + return id == "instanceof" + else: + return False + break + + +def addComment(type=None, value=None, start=None, end=None, loc=None): + comment = None + assert__py__(('undefined' + if not 'start' in locals() else typeof(start)) == "number", + "Comment must have valid position") + if state.lastCommentStart >= start: + return + state.lastCommentStart = start + comment = jsdict({ + "type": type, + "value": value, + }) + if extra.range: + comment.range = [start, end] + if extra.loc: + comment.loc = loc + extra.comments.append(comment) + + +def skipSingleLineComment(): + global index, lineNumber, lineStart + start = None + loc = None + ch = None + comment = None + start = index - 2 + loc = jsdict({ + "start": + jsdict({ + "line": lineNumber, + "column": (index - lineStart) - 2, + }), + }) + while index < length: + ch = (ord(source[index]) if index < len(source) else None) + index += 1 + index + if isLineTerminator(ch): + if extra.comments: + comment = source[(start + 2):(index - 1)] + loc.end = jsdict({ + "line": lineNumber, + "column": (index - lineStart) - 1, + }) + addComment("Line", comment, start, index - 1, loc) + if (ch == 13) and ( + (ord(source[index]) if index < len(source) else None) == 10): + index += 1 + index + lineNumber += 1 + lineNumber + lineStart = index + return + if extra.comments: + comment = source[(start + 2):index] + loc.end = jsdict({ + "line": lineNumber, + "column": index - lineStart, + }) + addComment("Line", comment, start, index, loc) + + +def skipMultiLineComment(): + global index, lineNumber, lineStart + start = None + loc = None + ch = None + comment = None + if extra.comments: + start = index - 2 + loc = jsdict({ + "start": + jsdict({ + "line": lineNumber, + "column": (index - lineStart) - 2, + }), + }) + while index < length: + ch = (ord(source[index]) if index < len(source) else None) + if isLineTerminator(ch): + if (ch == 13) and ((ord(source[index + 1]) if + (index + 1) < len(source) else None) == 10): + index += 1 + index + lineNumber += 1 + lineNumber + index += 1 + index + lineStart = index + if index >= length: + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + elif ch == 42: + if (ord(source[index + 1]) if + (index + 1) < len(source) else None) == 47: + index += 1 + index + index += 1 + index + if extra.comments: + comment = source[(start + 2):(index - 2)] + loc.end = jsdict({ + "line": lineNumber, + "column": index - lineStart, + }) + addComment("Block", comment, start, index, loc) + return + index += 1 + index + else: + index += 1 + index + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + + +def skipComment(): + global index, lineNumber, lineStart + ch = None + while index < length: + ch = (ord(source[index]) if index < len(source) else None) + if isWhiteSpace(ch): + index += 1 + index + elif isLineTerminator(ch): + index += 1 + index + if (ch == 13) and ( + (ord(source[index]) if index < len(source) else None) == 10): + index += 1 + index + lineNumber += 1 + lineNumber + lineStart = index + elif ch == 47: + ch = (ord(source[index + 1]) if + (index + 1) < len(source) else None) + if ch == 47: + index += 1 + index + index += 1 + index + skipSingleLineComment() + elif ch == 42: + index += 1 + index + index += 1 + index + skipMultiLineComment() + else: + break + else: + break + + +def scanHexEscape(prefix=None): + global len__py__, index + i = None + len__py__ = None + ch = None + code = 0 + len__py__ = (4 if prefix == "u" else 2) + i = 0 + while 1: + if not (i < len__py__): + break + if (index < length) and isHexDigit(source[index]): + index += 1 + ch = source[index - 1] + code = (code * 16) + "0123456789abcdef".find(ch.lower()) + else: + return "" + i += 1 + return unichr(code) + + +def getEscapedIdentifier(): + global index + ch = None + id = None + index += 1 + index += 1 + ch = (ord(source[index - 1]) if index - 1 < len(source) else None) + id = unichr(ch) + if ch == 92: + if (ord(source[index]) if index < len(source) else None) != 117: + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + index += 1 + index + ch = scanHexEscape("u") + if ((not ch) or (ch == "\\")) or (not isIdentifierStart( + (ord(ch[0]) if 0 < len(ch) else None))): + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + id = ch + while index < length: + ch = (ord(source[index]) if index < len(source) else None) + if not isIdentifierPart(ch): + break + index += 1 + index + id += unichr(ch) + if ch == 92: + id = id[0:(0 + (len(id) - 1))] + if (ord(source[index]) if index < len(source) else None) != 117: + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + index += 1 + index + ch = scanHexEscape("u") + if ((not ch) or (ch == "\\")) or (not isIdentifierPart( + (ord(ch[0]) if 0 < len(ch) else None))): + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + id += ch + return id + + +def getIdentifier(): + global index + start = None + ch = None + index += 1 + start = index - 1 + while index < length: + ch = (ord(source[index]) if index < len(source) else None) + if ch == 92: + index = start + return getEscapedIdentifier() + if isIdentifierPart(ch): + index += 1 + index + else: + break + return source[start:index] + + +def scanIdentifier(): + start = None + id = None + type = None + start = index + id = (getEscapedIdentifier() if + (ord(source[index]) if index < len(source) else None) == 92 else + getIdentifier()) + if len(id) == 1: + type = Token.Identifier + elif isKeyword(id): + type = Token.Keyword + elif id == "null": + type = Token.NullLiteral + elif (id == "true") or (id == "false"): + type = Token.BooleanLiteral + else: + type = Token.Identifier + return jsdict({ + "type": type, + "value": id, + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + + +def scanPunctuator(): + global index + start = index + code = (ord(source[index]) if index < len(source) else None) + code2 = None + ch1 = source[index] + ch2 = None + ch3 = None + ch4 = None + while 1: + if (code == 126) or ((code == 63) or ((code == 58) or + ((code == 93) or + ((code == 91) or + ((code == 125) or + ((code == 123) or + ((code == 44) or + ((code == 59) or + ((code == 41) or + ((code == 40) or + (code == 46))))))))))): + index += 1 + index + if extra.tokenize: + if code == 40: + extra.openParenToken = len(extra.tokens) + elif code == 123: + extra.openCurlyToken = len(extra.tokens) + return jsdict({ + "type": Token.Punctuator, + "value": unichr(code), + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + else: + code2 = (ord(source[index + 1]) if + (index + 1) < len(source) else None) + if code2 == 61: + while 1: + if (code == 124) or ((code == 94) or + ((code == 62) or + ((code == 60) or + ((code == 47) or + ((code == 45) or + ((code == 43) or + ((code == 42) or + ((code == 38) or + (code == 37))))))))): + index += 2 + return jsdict({ + "type": Token.Punctuator, + "value": unichr(code) + unichr(code2), + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + elif (code == 61) or (code == 33): + index += 2 + if (ord(source[index]) + if index < len(source) else None) == 61: + index += 1 + index + return jsdict({ + "type": Token.Punctuator, + "value": source[start:index], + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + else: + break + break + break + break + ch2 = source[index + 1] if index + 1 < len(source) else None + ch3 = source[index + 2] if index + 2 < len(source) else None + ch4 = source[index + 3] if index + 3 < len(source) else None + if ((ch1 == ">") and (ch2 == ">")) and (ch3 == ">"): + if ch4 == "=": + index += 4 + return jsdict({ + "type": Token.Punctuator, + "value": ">>>=", + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + if ((ch1 == ">") and (ch2 == ">")) and (ch3 == ">"): + index += 3 + return jsdict({ + "type": Token.Punctuator, + "value": ">>>", + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + if ((ch1 == "<") and (ch2 == "<")) and (ch3 == "="): + index += 3 + return jsdict({ + "type": Token.Punctuator, + "value": "<<=", + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + if ((ch1 == ">") and (ch2 == ">")) and (ch3 == "="): + index += 3 + return jsdict({ + "type": Token.Punctuator, + "value": ">>=", + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + if (ch1 == ch2) and ("+-<>&|".find(ch1) >= 0): + index += 2 + return jsdict({ + "type": Token.Punctuator, + "value": ch1 + ch2, + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + if "<>=!+-*%&|^/".find(ch1) >= 0: + index += 1 + index + return jsdict({ + "type": Token.Punctuator, + "value": ch1, + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + + +def scanHexLiteral(start=None): + global index + number = "" + while index < length: + if not isHexDigit(source[index]): + break + index += 1 + number += source[index - 1] + if len(number) == 0: + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + if isIdentifierStart( + (ord(source[index]) if index < len(source) else None)): + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + return jsdict({ + "type": Token.NumericLiteral, + "value": parseInt("0x" + number, 16), + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + + +def scanOctalLiteral(start=None): + global index + index += 1 + number = "0" + source[index - 1] + while index < length: + if not isOctalDigit(source[index]): + break + index += 1 + number += source[index - 1] + if isIdentifierStart( + (ord(source[index]) + if index < len(source) else None)) or isDecimalDigit( + (ord(source[index]) if index < len(source) else None)): + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + return jsdict({ + "type": Token.NumericLiteral, + "value": parseInt(number, 8), + "octal": True, + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + + +def scanNumericLiteral(): + global index + number = None + start = None + ch = None + ch = source[index] + assert__py__( + isDecimalDigit((ord(ch[0]) if 0 < len(ch) else None)) or (ch == "."), + "Numeric literal must start with a decimal digit or a decimal point") + start = index + number = "" + if ch != ".": + index += 1 + number = source[index - 1] + ch = source[index] if index < len(source) else None + if number == "0": + if (ch == "x") or (ch == "X"): + index += 1 + index + return scanHexLiteral(start) + if isOctalDigit(ch): + return scanOctalLiteral(start) + if ch and isDecimalDigit((ord(ch[0]) if 0 < len(ch) else None)): + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + while isDecimalDigit( + (ord(source[index]) if index < len(source) else None)): + index += 1 + number += source[index - 1] + ch = source[index] if index < len(source) else None + if ch == ".": + index += 1 + number += source[index - 1] + while isDecimalDigit( + (ord(source[index]) if index < len(source) else None)): + index += 1 + number += source[index - 1] + ch = source[index] + if (ch == "e") or (ch == "E"): + index += 1 + number += source[index - 1] + ch = source[index] + if (ch == "+") or (ch == "-"): + index += 1 + number += source[index - 1] + if isDecimalDigit( + (ord(source[index]) if index < len(source) else None)): + while isDecimalDigit( + (ord(source[index]) if index < len(source) else None)): + index += 1 + number += source[index - 1] + else: + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + if isIdentifierStart( + (ord(source[index]) if index < len(source) else None)): + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + return jsdict({ + "type": Token.NumericLiteral, + "value": parseFloat(number), + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + + +def scanStringLiteral(): + global index, lineNumber + str = "" + quote = None + start = None + ch = None + code = None + unescaped = None + restore = None + octal = False + quote = source[index] + assert__py__((quote == "'") or (quote == "\""), + "String literal must starts with a quote") + start = index + index += 1 + index + while index < length: + index += 1 + ch = source[index - 1] + if ch == quote: + quote = "" + break + elif ch == "\\": + index += 1 + ch = source[index - 1] + if (not ch) or (not isLineTerminator( + (ord(ch[0]) if 0 < len(ch) else None))): + while 1: + if ch == "n": + str += u"\x0a" + break + elif ch == "r": + str += u"\x0d" + break + elif ch == "t": + str += u"\x09" + break + elif (ch == "x") or (ch == "u"): + restore = index + unescaped = scanHexEscape(ch) + if unescaped: + str += unescaped + else: + index = restore + str += ch + break + elif ch == "b": + str += u"\x08" + break + elif ch == "f": + str += u"\x0c" + break + elif ch == "v": + str += u"\x0b" + break + else: + if isOctalDigit(ch): + code = "01234567".find(ch) + if code != 0: + octal = True + if (index < length) and isOctalDigit( + source[index]): + octal = True + index += 1 + code = (code * 8) + "01234567".find( + source[index - 1]) + if (("0123".find(ch) >= 0) and + (index < length)) and isOctalDigit( + source[index]): + index += 1 + code = (code * 8) + "01234567".find( + source[index - 1]) + str += unichr(code) + else: + str += ch + break + break + else: + lineNumber += 1 + lineNumber + if (ch == u"\x0d") and (source[index] == u"\x0a"): + index += 1 + index + elif isLineTerminator((ord(ch[0]) if 0 < len(ch) else None)): + break + else: + str += ch + if quote != "": + throwError(jsdict({}), Messages.UnexpectedToken, "ILLEGAL") + return jsdict({ + "type": Token.StringLiteral, + "value": str, + "octal": octal, + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + + +def scanRegExp(): + global lookahead, index + str = None + ch = None + start = None + pattern = None + flags = None + value = None + classMarker = False + restore = None + terminated = False + lookahead = None + skipComment() + start = index + ch = source[index] + assert__py__(ch == "/", + "Regular expression literal must start with a slash") + index += 1 + str = source[index - 1] + while index < length: + index += 1 + ch = source[index - 1] + str += ch + if classMarker: + if ch == "]": + classMarker = False + else: + if ch == "\\": + index += 1 + ch = source[index - 1] + if isLineTerminator((ord(ch[0]) if 0 < len(ch) else None)): + throwError(jsdict({}), Messages.UnterminatedRegExp) + str += ch + elif ch == "/": + terminated = True + break + elif ch == "[": + classMarker = True + elif isLineTerminator((ord(ch[0]) if 0 < len(ch) else None)): + throwError(jsdict({}), Messages.UnterminatedRegExp) + if not terminated: + throwError(jsdict({}), Messages.UnterminatedRegExp) + pattern = str[1:(1 + (len(str) - 2))] + flags = "" + while index < length: + ch = source[index] + if not isIdentifierPart((ord(ch[0]) if 0 < len(ch) else None)): + break + index += 1 + index + if (ch == "\\") and (index < length): + ch = source[index] + if ch == "u": + index += 1 + index + restore = index + ch = scanHexEscape("u") + if ch: + flags += ch + str += "\\u" + while 1: + if not (restore < index): + break + str += source[restore] + restore += 1 + else: + index = restore + flags += "u" + str += "\\u" + else: + str += "\\" + else: + flags += ch + str += ch + try: + value = RegExp(pattern, flags) + except Exception as e: + throwError(jsdict({}), Messages.InvalidRegExp) + peek() + if extra.tokenize: + return jsdict({ + "type": Token.RegularExpression, + "value": value, + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [start, index], + }) + return jsdict({ + "literal": str, + "value": value, + "range": [start, index], + }) + + +def isIdentifierName(token=None): + return (((token.type == Token.Identifier) or + (token.type == Token.Keyword)) or + (token.type == Token.BooleanLiteral)) or ( + token.type == Token.NullLiteral) + + +def advanceSlash(): + prevToken = None + checkToken = None + prevToken = extra.tokens[len(extra.tokens) - 1] + if not prevToken: + return scanRegExp() + if prevToken.type == "Punctuator": + if prevToken.value == ")": + checkToken = extra.tokens[extra.openParenToken - 1] + if (checkToken and (checkToken.type == "Keyword")) and ( + (((checkToken.value == "if") or + (checkToken.value == "while")) or + (checkToken.value == "for")) or (checkToken.value == "with")): + return scanRegExp() + return scanPunctuator() + if prevToken.value == "}": + if extra.tokens[extra.openCurlyToken - 3] and ( + extra.tokens[extra.openCurlyToken - 3].type == "Keyword"): + checkToken = extra.tokens[extra.openCurlyToken - 4] + if not checkToken: + return scanPunctuator() + elif extra.tokens[extra.openCurlyToken - 4] and ( + extra.tokens[extra.openCurlyToken - 4].type == "Keyword"): + checkToken = extra.tokens[extra.openCurlyToken - 5] + if not checkToken: + return scanRegExp() + else: + return scanPunctuator() + if FnExprTokens.indexOf(checkToken.value) >= 0: + return scanPunctuator() + return scanRegExp() + return scanRegExp() + if prevToken.type == "Keyword": + return scanRegExp() + return scanPunctuator() + + +def advance(): + ch = None + skipComment() + if index >= length: + return jsdict({ + "type": Token.EOF, + "lineNumber": lineNumber, + "lineStart": lineStart, + "range": [index, index], + }) + ch = (ord(source[index]) if index < len(source) else None) + if ((ch == 40) or (ch == 41)) or (ch == 58): + return scanPunctuator() + if (ch == 39) or (ch == 34): + return scanStringLiteral() + if isIdentifierStart(ch): + return scanIdentifier() + if ch == 46: + if isDecimalDigit((ord(source[index + 1]) if + (index + 1) < len(source) else None)): + return scanNumericLiteral() + return scanPunctuator() + if isDecimalDigit(ch): + return scanNumericLiteral() + if extra.tokenize and (ch == 47): + return advanceSlash() + return scanPunctuator() + + +def lex(): + global index, lineNumber, lineStart, lookahead + token = None + token = lookahead + index = token.range[1] + lineNumber = token.lineNumber + lineStart = token.lineStart + lookahead = advance() + index = token.range[1] + lineNumber = token.lineNumber + lineStart = token.lineStart + return token + + +def peek(): + global lookahead, index, lineNumber, lineStart + pos = None + line = None + start = None + pos = index + line = lineNumber + start = lineStart + lookahead = advance() + index = pos + lineNumber = line + lineStart = start + + +SyntaxTreeDelegate = jsdict({ + "name": "SyntaxTree", + "markStart": __temp__0, + "markEnd": __temp__1, + "markEndIf": __temp__2, + "postProcess": __temp__3, + "createArrayExpression": __temp__4, + "createAssignmentExpression": __temp__5, + "createBinaryExpression": __temp__6, + "createBlockStatement": __temp__7, + "createBreakStatement": __temp__8, + "createCallExpression": __temp__9, + "createCatchClause": __temp__10, + "createConditionalExpression": __temp__11, + "createContinueStatement": __temp__12, + "createDebuggerStatement": __temp__13, + "createDoWhileStatement": __temp__14, + "createEmptyStatement": __temp__15, + "createExpressionStatement": __temp__16, + "createForStatement": __temp__17, + "createForInStatement": __temp__18, + "createFunctionDeclaration": __temp__19, + "createFunctionExpression": __temp__20, + "createIdentifier": __temp__21, + "createIfStatement": __temp__22, + "createLabeledStatement": __temp__23, + "createLiteral": __temp__24, + "createMemberExpression": __temp__25, + "createNewExpression": __temp__26, + "createObjectExpression": __temp__27, + "createPostfixExpression": __temp__28, + "createProgram": __temp__29, + "createProperty": __temp__30, + "createReturnStatement": __temp__31, + "createSequenceExpression": __temp__32, + "createSwitchCase": __temp__33, + "createSwitchStatement": __temp__34, + "createThisExpression": __temp__35, + "createThrowStatement": __temp__36, + "createTryStatement": __temp__37, + "createUnaryExpression": __temp__38, + "createVariableDeclaration": __temp__39, + "createVariableDeclarator": __temp__40, + "createWhileStatement": __temp__41, + "createWithStatement": __temp__42, +}) + + +def peekLineTerminator(): + global index, lineNumber, lineStart + pos = None + line = None + start = None + found = None + pos = index + line = lineNumber + start = lineStart + skipComment() + found = lineNumber != line + index = pos + lineNumber = line + lineStart = start + return found + + +def throwError(token=None, messageFormat=None, a=None): + def __temp__43(whole=None, index=None): + assert__py__(index < len(args), "Message reference must be in range") + return args[index] + + error = None + args = Array.prototype.slice.call(arguments, 2) + msg = messageFormat.replace(RegExp(r'%(\d)'), __temp__43) + if ('undefined' if not ('lineNumber' in token) else typeof( + token.lineNumber)) == "number": + error = RuntimeError((("Line " + token.lineNumber) + ": ") + msg) + error.index = token.range[0] + error.lineNumber = token.lineNumber + error.column = (token.range[0] - lineStart) + 1 + else: + error = RuntimeError((("Line " + lineNumber) + ": ") + msg) + error.index = index + error.lineNumber = lineNumber + error.column = (index - lineStart) + 1 + error.description = msg + raise error + + +def throwErrorTolerant(): + try: + throwError.apply(None, arguments) + except Exception as e: + if extra.errors: + extra.errors.append(e) + else: + raise + + +def throwUnexpected(token=None): + if token.type == Token.EOF: + throwError(token, Messages.UnexpectedEOS) + if token.type == Token.NumericLiteral: + throwError(token, Messages.UnexpectedNumber) + if token.type == Token.StringLiteral: + throwError(token, Messages.UnexpectedString) + if token.type == Token.Identifier: + throwError(token, Messages.UnexpectedIdentifier) + if token.type == Token.Keyword: + if isFutureReservedWord(token.value): + throwError(token, Messages.UnexpectedReserved) + elif strict and isStrictModeReservedWord(token.value): + throwErrorTolerant(token, Messages.StrictReservedWord) + return + throwError(token, Messages.UnexpectedToken, token.value) + throwError(token, Messages.UnexpectedToken, token.value) + + +def expect(value=None): + token = lex() + if (token.type != Token.Punctuator) or (token.value != value): + throwUnexpected(token) + + +def expectKeyword(keyword=None): + token = lex() + if (token.type != Token.Keyword) or (token.value != keyword): + throwUnexpected(token) + + +def match(value=None): + return (lookahead.type == Token.Punctuator) and (lookahead.value == value) + + +def matchKeyword(keyword=None): + return (lookahead.type == Token.Keyword) and (lookahead.value == keyword) + + +def matchAssign(): + op = None + if lookahead.type != Token.Punctuator: + return False + op = lookahead.value + return (((((((((((op == "=") or (op == "*=")) or (op == "/=")) or + (op == "%=")) or (op == "+=")) or (op == "-=")) or + (op == "<<=")) or (op == ">>=")) or (op == ">>>=")) or + (op == "&=")) or (op == "^=")) or (op == "|=") + + +def consumeSemicolon(): + line = None + if (ord(source[index]) if index < len(source) else None) == 59: + lex() + return + line = lineNumber + skipComment() + if lineNumber != line: + return + if match(";"): + lex() + return + if (lookahead.type != Token.EOF) and (not match("}")): + throwUnexpected(lookahead) + + +def isLeftHandSide(expr=None): + return (expr.type == Syntax.Identifier) or ( + expr.type == Syntax.MemberExpression) + + +def parseArrayInitialiser(): + elements = [] + expect("[") + while not match("]"): + if match(","): + lex() + elements.append(None) + else: + elements.append(parseAssignmentExpression()) + if not match("]"): + expect(",") + expect("]") + return delegate.createArrayExpression(elements) + + +def parsePropertyFunction(param=None, first=None): + global strict + previousStrict = None + body = None + previousStrict = strict + skipComment() + delegate.markStart() + body = parseFunctionSourceElements() + if (first and strict) and isRestrictedWord(param[0].name): + throwErrorTolerant(first, Messages.StrictParamName) + strict = previousStrict + return delegate.markEnd( + delegate.createFunctionExpression(None, param, [], body)) + + +def parseObjectPropertyKey(): + token = None + skipComment() + delegate.markStart() + token = lex() + if (token.type == Token.StringLiteral) or ( + token.type == Token.NumericLiteral): + if strict and token.octal: + throwErrorTolerant(token, Messages.StrictOctalLiteral) + return delegate.markEnd(delegate.createLiteral(token)) + return delegate.markEnd(delegate.createIdentifier(token.value)) + + +def parseObjectProperty(): + token = None + key = None + id = None + value = None + param = None + token = lookahead + skipComment() + delegate.markStart() + if token.type == Token.Identifier: + id = parseObjectPropertyKey() + if (token.value == "get") and (not match(":")): + key = parseObjectPropertyKey() + expect("(") + expect(")") + value = parsePropertyFunction([]) + return delegate.markEnd(delegate.createProperty("get", key, value)) + if (token.value == "set") and (not match(":")): + key = parseObjectPropertyKey() + expect("(") + token = lookahead + if token.type != Token.Identifier: + expect(")") + throwErrorTolerant(token, Messages.UnexpectedToken, + token.value) + value = parsePropertyFunction([]) + else: + param = [parseVariableIdentifier()] + expect(")") + value = parsePropertyFunction(param, token) + return delegate.markEnd(delegate.createProperty("set", key, value)) + expect(":") + value = parseAssignmentExpression() + return delegate.markEnd(delegate.createProperty("init", id, value)) + if (token.type == Token.EOF) or (token.type == Token.Punctuator): + throwUnexpected(token) + else: + key = parseObjectPropertyKey() + expect(":") + value = parseAssignmentExpression() + return delegate.markEnd(delegate.createProperty("init", key, value)) + + +def parseObjectInitialiser(): + properties = [] + property = None + name = None + key = None + kind = None + map = jsdict({}) + toString = str + expect("{") + while not match("}"): + property = parseObjectProperty() + if property.key.type == Syntax.Identifier: + name = property.key.name + else: + name = toString(property.key.value) + kind = (PropertyKind.Data if property.kind == "init" else ( + PropertyKind.Get if property.kind == "get" else PropertyKind.Set)) + key = "$" + name + if key in map: + if map[key] == PropertyKind.Data: + if strict and (kind == PropertyKind.Data): + throwErrorTolerant( + jsdict({}), Messages.StrictDuplicateProperty) + elif kind != PropertyKind.Data: + throwErrorTolerant( + jsdict({}), Messages.AccessorDataProperty) + else: + if kind == PropertyKind.Data: + throwErrorTolerant( + jsdict({}), Messages.AccessorDataProperty) + elif map[key] & kind: + throwErrorTolerant(jsdict({}), Messages.AccessorGetSet) + map[key] |= kind + else: + map[key] = kind + properties.append(property) + if not match("}"): + expect(",") + expect("}") + return delegate.createObjectExpression(properties) + + +def parseGroupExpression(): + expr = None + expect("(") + expr = parseExpression() + expect(")") + return expr + + +def parsePrimaryExpression(): + type = None + token = None + expr = None + if match("("): + return parseGroupExpression() + type = lookahead.type + delegate.markStart() + if type == Token.Identifier: + expr = delegate.createIdentifier(lex().value) + elif (type == Token.StringLiteral) or (type == Token.NumericLiteral): + if strict and lookahead.octal: + throwErrorTolerant(lookahead, Messages.StrictOctalLiteral) + expr = delegate.createLiteral(lex()) + elif type == Token.Keyword: + if matchKeyword("this"): + lex() + expr = delegate.createThisExpression() + elif matchKeyword("function"): + expr = parseFunctionExpression() + elif type == Token.BooleanLiteral: + token = lex() + token.value = token.value == "true" + expr = delegate.createLiteral(token) + elif type == Token.NullLiteral: + token = lex() + token.value = None + expr = delegate.createLiteral(token) + elif match("["): + expr = parseArrayInitialiser() + elif match("{"): + expr = parseObjectInitialiser() + elif match("/") or match("/="): + expr = delegate.createLiteral(scanRegExp()) + if expr: + return delegate.markEnd(expr) + throwUnexpected(lex()) + + +def parseArguments(): + args = [] + expect("(") + if not match(")"): + while index < length: + args.append(parseAssignmentExpression()) + if match(")"): + break + expect(",") + expect(")") + return args + + +def parseNonComputedProperty(): + token = None + delegate.markStart() + token = lex() + if not isIdentifierName(token): + throwUnexpected(token) + return delegate.markEnd(delegate.createIdentifier(token.value)) + + +def parseNonComputedMember(): + expect(".") + return parseNonComputedProperty() + + +def parseComputedMember(): + expr = None + expect("[") + expr = parseExpression() + expect("]") + return expr + + +def parseNewExpression(): + callee = None + args = None + delegate.markStart() + expectKeyword("new") + callee = parseLeftHandSideExpression() + args = (parseArguments() if match("(") else []) + return delegate.markEnd(delegate.createNewExpression(callee, args)) + + +def parseLeftHandSideExpressionAllowCall(): + marker = None + expr = None + args = None + property = None + marker = createLocationMarker() + expr = (parseNewExpression() + if matchKeyword("new") else parsePrimaryExpression()) + while (match(".") or match("[")) or match("("): + if match("("): + args = parseArguments() + expr = delegate.createCallExpression(expr, args) + elif match("["): + property = parseComputedMember() + expr = delegate.createMemberExpression("[", expr, property) + else: + property = parseNonComputedMember() + expr = delegate.createMemberExpression(".", expr, property) + if marker: + marker.end() + marker.apply(expr) + return expr + + +def parseLeftHandSideExpression(): + marker = None + expr = None + property = None + marker = createLocationMarker() + expr = (parseNewExpression() + if matchKeyword("new") else parsePrimaryExpression()) + while match(".") or match("["): + if match("["): + property = parseComputedMember() + expr = delegate.createMemberExpression("[", expr, property) + else: + property = parseNonComputedMember() + expr = delegate.createMemberExpression(".", expr, property) + if marker: + marker.end() + marker.apply(expr) + return expr + + +def parsePostfixExpression(): + expr = None + token = None + delegate.markStart() + expr = parseLeftHandSideExpressionAllowCall() + if lookahead.type == Token.Punctuator: + if (match("++") or match("--")) and (not peekLineTerminator()): + if (strict and + (expr.type == Syntax.Identifier)) and isRestrictedWord( + expr.name): + throwErrorTolerant(jsdict({}), Messages.StrictLHSPostfix) + if not isLeftHandSide(expr): + throwError(jsdict({}), Messages.InvalidLHSInAssignment) + token = lex() + expr = delegate.createPostfixExpression(token.value, expr) + return delegate.markEndIf(expr) + + +def parseUnaryExpression(): + token = None + expr = None + delegate.markStart() + if (lookahead.type != Token.Punctuator) and (lookahead.type != + Token.Keyword): + expr = parsePostfixExpression() + elif match("++") or match("--"): + token = lex() + expr = parseUnaryExpression() + if (strict and + (expr.type == Syntax.Identifier)) and isRestrictedWord(expr.name): + throwErrorTolerant(jsdict({}), Messages.StrictLHSPrefix) + if not isLeftHandSide(expr): + throwError(jsdict({}), Messages.InvalidLHSInAssignment) + expr = delegate.createUnaryExpression(token.value, expr) + elif ((match("+") or match("-")) or match("~")) or match("!"): + token = lex() + expr = parseUnaryExpression() + expr = delegate.createUnaryExpression(token.value, expr) + elif (matchKeyword("delete") + or matchKeyword("void")) or matchKeyword("typeof"): + token = lex() + expr = parseUnaryExpression() + expr = delegate.createUnaryExpression(token.value, expr) + if (strict and (expr.operator == "delete")) and ( + expr.argument.type == Syntax.Identifier): + throwErrorTolerant(jsdict({}), Messages.StrictDelete) + else: + expr = parsePostfixExpression() + return delegate.markEndIf(expr) + + +def binaryPrecedence(token=None, allowIn=None): + prec = 0 + if (token.type != Token.Punctuator) and (token.type != Token.Keyword): + return 0 + while 1: + if token.value == "||": + prec = 1 + break + elif token.value == "&&": + prec = 2 + break + elif token.value == "|": + prec = 3 + break + elif token.value == "^": + prec = 4 + break + elif token.value == "&": + prec = 5 + break + elif (token.value == "!==") or ((token.value == "===") or + ((token.value == "!=") or + (token.value == "=="))): + prec = 6 + break + elif (token.value == "instanceof") or ((token.value == ">=") or + ((token.value == "<=") or + ((token.value == ">") or + (token.value == "<")))): + prec = 7 + break + elif token.value == "in": + prec = (7 if allowIn else 0) + break + elif (token.value == ">>>") or ((token.value == ">>") or + (token.value == "<<")): + prec = 8 + break + elif (token.value == "-") or (token.value == "+"): + prec = 9 + break + elif (token.value == "%") or ((token.value == "/") or + (token.value == "*")): + prec = 11 + break + else: + break + break + return prec + + +def parseBinaryExpression(): + marker = None + markers = None + expr = None + token = None + prec = None + previousAllowIn = None + stack = None + right = None + operator = None + left = None + i = None + previousAllowIn = state.allowIn + state.allowIn = True + marker = createLocationMarker() + left = parseUnaryExpression() + token = lookahead + prec = binaryPrecedence(token, previousAllowIn) + if prec == 0: + return left + token.prec = prec + lex() + markers = [marker, createLocationMarker()] + right = parseUnaryExpression() + stack = [left, token, right] + prec = binaryPrecedence(lookahead, previousAllowIn) + while prec > 0: + while (len(stack) > 2) and (prec <= stack[len(stack) - 2].prec): + right = stack.pop() + operator = stack.pop().value + left = stack.pop() + expr = delegate.createBinaryExpression(operator, left, right) + markers.pop() + marker = markers.pop() + if marker: + marker.end() + marker.apply(expr) + stack.append(expr) + markers.append(marker) + token = lex() + token.prec = prec + stack.append(token) + markers.append(createLocationMarker()) + expr = parseUnaryExpression() + stack.append(expr) + prec = binaryPrecedence(lookahead, previousAllowIn) + state.allowIn = previousAllowIn + i = len(stack) - 1 + expr = stack[i] + markers.pop() + while i > 1: + expr = delegate.createBinaryExpression(stack[i - 1].value, + stack[i - 2], expr) + i -= 2 + marker = markers.pop() + if marker: + marker.end() + marker.apply(expr) + return expr + + +def parseConditionalExpression(): + expr = None + previousAllowIn = None + consequent = None + alternate = None + delegate.markStart() + expr = parseBinaryExpression() + if match("?"): + lex() + previousAllowIn = state.allowIn + state.allowIn = True + consequent = parseAssignmentExpression() + state.allowIn = previousAllowIn + expect(":") + alternate = parseAssignmentExpression() + expr = delegate.markEnd( + delegate.createConditionalExpression(expr, consequent, alternate)) + else: + delegate.markEnd(jsdict({})) + return expr + + +def parseAssignmentExpression(): + token = None + left = None + right = None + node = None + token = lookahead + delegate.markStart() + left = parseConditionalExpression() + node = left + if matchAssign(): + if not isLeftHandSide(left): + throwError(jsdict({}), Messages.InvalidLHSInAssignment) + if (strict and + (left.type == Syntax.Identifier)) and isRestrictedWord(left.name): + throwErrorTolerant(token, Messages.StrictLHSAssignment) + token = lex() + right = parseAssignmentExpression() + node = delegate.createAssignmentExpression(token.value, left, right) + return delegate.markEndIf(node) + + +def parseExpression(): + expr = None + delegate.markStart() + expr = parseAssignmentExpression() + if match(","): + expr = delegate.createSequenceExpression([expr]) + while index < length: + if not match(","): + break + lex() + expr.expressions.append(parseAssignmentExpression()) + return delegate.markEndIf(expr) + + +def parseStatementList(): + list__py__ = [] + statement = None + while index < length: + if match("}"): + break + statement = parseSourceElement() + if ('undefined' if not 'statement' in locals() else + typeof(statement)) == "undefined": + break + list__py__.append(statement) + return list__py__ + + +def parseBlock(): + block = None + skipComment() + delegate.markStart() + expect("{") + block = parseStatementList() + expect("}") + return delegate.markEnd(delegate.createBlockStatement(block)) + + +def parseVariableIdentifier(): + token = None + skipComment() + delegate.markStart() + token = lex() + if token.type != Token.Identifier: + throwUnexpected(token) + return delegate.markEnd(delegate.createIdentifier(token.value)) + + +def parseVariableDeclaration(kind=None): + init = None + id = None + skipComment() + delegate.markStart() + id = parseVariableIdentifier() + if strict and isRestrictedWord(id.name): + throwErrorTolerant(jsdict({}), Messages.StrictVarName) + if kind == "const": + expect("=") + init = parseAssignmentExpression() + elif match("="): + lex() + init = parseAssignmentExpression() + return delegate.markEnd(delegate.createVariableDeclarator(id, init)) + + +def parseVariableDeclarationList(kind=None): + list__py__ = [] + while 1: + list__py__.append(parseVariableDeclaration(kind)) + if not match(","): + break + lex() + if not (index < length): + break + return list__py__ + + +def parseVariableStatement(): + declarations = None + expectKeyword("var") + declarations = parseVariableDeclarationList() + consumeSemicolon() + return delegate.createVariableDeclaration(declarations, "var") + + +def parseConstLetDeclaration(kind=None): + declarations = None + skipComment() + delegate.markStart() + expectKeyword(kind) + declarations = parseVariableDeclarationList(kind) + consumeSemicolon() + return delegate.markEnd( + delegate.createVariableDeclaration(declarations, kind)) + + +def parseEmptyStatement(): + expect(";") + return delegate.createEmptyStatement() + + +def parseExpressionStatement(): + expr = parseExpression() + consumeSemicolon() + return delegate.createExpressionStatement(expr) + + +def parseIfStatement(): + test = None + consequent = None + alternate = None + expectKeyword("if") + expect("(") + test = parseExpression() + expect(")") + consequent = parseStatement() + if matchKeyword("else"): + lex() + alternate = parseStatement() + else: + alternate = None + return delegate.createIfStatement(test, consequent, alternate) + + +def parseDoWhileStatement(): + body = None + test = None + oldInIteration = None + expectKeyword("do") + oldInIteration = state.inIteration + state.inIteration = True + body = parseStatement() + state.inIteration = oldInIteration + expectKeyword("while") + expect("(") + test = parseExpression() + expect(")") + if match(";"): + lex() + return delegate.createDoWhileStatement(body, test) + + +def parseWhileStatement(): + test = None + body = None + oldInIteration = None + expectKeyword("while") + expect("(") + test = parseExpression() + expect(")") + oldInIteration = state.inIteration + state.inIteration = True + body = parseStatement() + state.inIteration = oldInIteration + return delegate.createWhileStatement(test, body) + + +def parseForVariableDeclaration(): + token = None + declarations = None + delegate.markStart() + token = lex() + declarations = parseVariableDeclarationList() + return delegate.markEnd( + delegate.createVariableDeclaration(declarations, token.value)) + + +def parseForStatement(): + init = None + test = None + update = None + left = None + right = None + body = None + oldInIteration = None + update = None + test = update + init = test + expectKeyword("for") + expect("(") + if match(";"): + lex() + else: + if matchKeyword("var") or matchKeyword("let"): + state.allowIn = False + init = parseForVariableDeclaration() + state.allowIn = True + if (len(init.declarations) == 1) and matchKeyword("in"): + lex() + left = init + right = parseExpression() + init = None + else: + state.allowIn = False + init = parseExpression() + state.allowIn = True + if matchKeyword("in"): + if not isLeftHandSide(init): + throwError(jsdict({}), Messages.InvalidLHSInForIn) + lex() + left = init + right = parseExpression() + init = None + if ('undefined' + if not 'left' in locals() else typeof(left)) == "undefined": + expect(";") + if ('undefined' + if not 'left' in locals() else typeof(left)) == "undefined": + if not match(";"): + test = parseExpression() + expect(";") + if not match(")"): + update = parseExpression() + expect(")") + oldInIteration = state.inIteration + state.inIteration = True + body = parseStatement() + state.inIteration = oldInIteration + return (delegate.createForStatement(init, test, update, body) if ( + 'undefined' if not 'left' in locals() else typeof(left)) == "undefined" + else delegate.createForInStatement(left, right, body)) + + +def parseContinueStatement(): + label = None + key = None + expectKeyword("continue") + if (ord(source[index]) if index < len(source) else None) == 59: + lex() + if not state.inIteration: + throwError(jsdict({}), Messages.IllegalContinue) + return delegate.createContinueStatement(None) + if peekLineTerminator(): + if not state.inIteration: + throwError(jsdict({}), Messages.IllegalContinue) + return delegate.createContinueStatement(None) + if lookahead.type == Token.Identifier: + label = parseVariableIdentifier() + key = "$" + label.name + if not (key in state.labelSet): + throwError(jsdict({}), Messages.UnknownLabel, label.name) + consumeSemicolon() + if (label == None) and (not state.inIteration): + throwError(jsdict({}), Messages.IllegalContinue) + return delegate.createContinueStatement(label) + + +def parseBreakStatement(): + label = None + key = None + expectKeyword("break") + if (ord(source[index]) if index < len(source) else None) == 59: + lex() + if not (state.inIteration or state.inSwitch): + throwError(jsdict({}), Messages.IllegalBreak) + return delegate.createBreakStatement(None) + if peekLineTerminator(): + if not (state.inIteration or state.inSwitch): + throwError(jsdict({}), Messages.IllegalBreak) + return delegate.createBreakStatement(None) + if lookahead.type == Token.Identifier: + label = parseVariableIdentifier() + key = "$" + label.name + if not (key in state.labelSet): + throwError(jsdict({}), Messages.UnknownLabel, label.name) + consumeSemicolon() + if (label == None) and (not (state.inIteration or state.inSwitch)): + throwError(jsdict({}), Messages.IllegalBreak) + return delegate.createBreakStatement(label) + + +def parseReturnStatement(): + argument = None + expectKeyword("return") + if not state.inFunctionBody: + throwErrorTolerant(jsdict({}), Messages.IllegalReturn) + if (ord(source[index]) if index < len(source) else None) == 32: + if isIdentifierStart((ord(source[index + 1]) if + (index + 1) < len(source) else None)): + argument = parseExpression() + consumeSemicolon() + return delegate.createReturnStatement(argument) + if peekLineTerminator(): + return delegate.createReturnStatement(None) + if not match(";"): + if (not match("}")) and (lookahead.type != Token.EOF): + argument = parseExpression() + consumeSemicolon() + return delegate.createReturnStatement(argument) + + +def parseWithStatement(): + object = None + body = None + if strict: + throwErrorTolerant(jsdict({}), Messages.StrictModeWith) + expectKeyword("with") + expect("(") + object = parseExpression() + expect(")") + body = parseStatement() + return delegate.createWithStatement(object, body) + + +def parseSwitchCase(): + test = None + consequent = [] + statement = None + skipComment() + delegate.markStart() + if matchKeyword("default"): + lex() + test = None + else: + expectKeyword("case") + test = parseExpression() + expect(":") + while index < length: + if (match("}") or matchKeyword("default")) or matchKeyword("case"): + break + statement = parseStatement() + consequent.append(statement) + return delegate.markEnd(delegate.createSwitchCase(test, consequent)) + + +def parseSwitchStatement(): + discriminant = None + cases = None + clause = None + oldInSwitch = None + defaultFound = None + expectKeyword("switch") + expect("(") + discriminant = parseExpression() + expect(")") + expect("{") + if match("}"): + lex() + return delegate.createSwitchStatement(discriminant) + cases = [] + oldInSwitch = state.inSwitch + state.inSwitch = True + defaultFound = False + while index < length: + if match("}"): + break + clause = parseSwitchCase() + if clause.test == None: + if defaultFound: + throwError(jsdict({}), Messages.MultipleDefaultsInSwitch) + defaultFound = True + cases.append(clause) + state.inSwitch = oldInSwitch + expect("}") + return delegate.createSwitchStatement(discriminant, cases) + + +def parseThrowStatement(): + argument = None + expectKeyword("throw") + if peekLineTerminator(): + throwError(jsdict({}), Messages.NewlineAfterThrow) + argument = parseExpression() + consumeSemicolon() + return delegate.createThrowStatement(argument) + + +def parseCatchClause(): + param = None + body = None + skipComment() + delegate.markStart() + expectKeyword("catch") + expect("(") + if match(")"): + throwUnexpected(lookahead) + param = parseVariableIdentifier() + if strict and isRestrictedWord(param.name): + throwErrorTolerant(jsdict({}), Messages.StrictCatchVariable) + expect(")") + body = parseBlock() + return delegate.markEnd(delegate.createCatchClause(param, body)) + + +def parseTryStatement(): + block = None + handlers = [] + finalizer = None + expectKeyword("try") + block = parseBlock() + if matchKeyword("catch"): + handlers.append(parseCatchClause()) + if matchKeyword("finally"): + lex() + finalizer = parseBlock() + if (len(handlers) == 0) and (not finalizer): + throwError(jsdict({}), Messages.NoCatchOrFinally) + return delegate.createTryStatement(block, [], handlers, finalizer) + + +def parseDebuggerStatement(): + expectKeyword("debugger") + consumeSemicolon() + return delegate.createDebuggerStatement() + + +def parseStatement(): + type = lookahead.type + expr = None + labeledBody = None + key = None + if type == Token.EOF: + throwUnexpected(lookahead) + skipComment() + delegate.markStart() + if type == Token.Punctuator: + while 1: + if lookahead.value == ";": + return delegate.markEnd(parseEmptyStatement()) + elif lookahead.value == "{": + return delegate.markEnd(parseBlock()) + elif lookahead.value == "(": + return delegate.markEnd(parseExpressionStatement()) + else: + break + break + if type == Token.Keyword: + while 1: + if lookahead.value == "break": + return delegate.markEnd(parseBreakStatement()) + elif lookahead.value == "continue": + return delegate.markEnd(parseContinueStatement()) + elif lookahead.value == "debugger": + return delegate.markEnd(parseDebuggerStatement()) + elif lookahead.value == "do": + return delegate.markEnd(parseDoWhileStatement()) + elif lookahead.value == "for": + return delegate.markEnd(parseForStatement()) + elif lookahead.value == "function": + return delegate.markEnd(parseFunctionDeclaration()) + elif lookahead.value == "if": + return delegate.markEnd(parseIfStatement()) + elif lookahead.value == "return": + return delegate.markEnd(parseReturnStatement()) + elif lookahead.value == "switch": + return delegate.markEnd(parseSwitchStatement()) + elif lookahead.value == "throw": + return delegate.markEnd(parseThrowStatement()) + elif lookahead.value == "try": + return delegate.markEnd(parseTryStatement()) + elif lookahead.value == "var": + return delegate.markEnd(parseVariableStatement()) + elif lookahead.value == "while": + return delegate.markEnd(parseWhileStatement()) + elif lookahead.value == "with": + return delegate.markEnd(parseWithStatement()) + else: + break + break + expr = parseExpression() + if (expr.type == Syntax.Identifier) and match(":"): + lex() + key = "$" + expr.name + if key in state.labelSet: + throwError(jsdict({}), Messages.Redeclaration, "Label", expr.name) + state.labelSet[key] = True + labeledBody = parseStatement() + del state.labelSet[key] + return delegate.markEnd( + delegate.createLabeledStatement(expr, labeledBody)) + consumeSemicolon() + return delegate.markEnd(delegate.createExpressionStatement(expr)) + + +def parseFunctionSourceElements(): + global strict + sourceElement = None + sourceElements = [] + token = None + directive = None + firstRestricted = None + oldLabelSet = None + oldInIteration = None + oldInSwitch = None + oldInFunctionBody = None + skipComment() + delegate.markStart() + expect("{") + while index < length: + if lookahead.type != Token.StringLiteral: + break + token = lookahead + sourceElement = parseSourceElement() + sourceElements.append(sourceElement) + if sourceElement.expression.type != Syntax.Literal: + break + directive = source[(token.range[0] + 1):(token.range[1] - 1)] + if directive == "use strict": + strict = True + if firstRestricted: + throwErrorTolerant(firstRestricted, + Messages.StrictOctalLiteral) + else: + if (not firstRestricted) and token.octal: + firstRestricted = token + oldLabelSet = state.labelSet + oldInIteration = state.inIteration + oldInSwitch = state.inSwitch + oldInFunctionBody = state.inFunctionBody + state.labelSet = jsdict({}) + state.inIteration = False + state.inSwitch = False + state.inFunctionBody = True + while index < length: + if match("}"): + break + sourceElement = parseSourceElement() + if ('undefined' if not 'sourceElement' in locals() else + typeof(sourceElement)) == "undefined": + break + sourceElements.append(sourceElement) + expect("}") + state.labelSet = oldLabelSet + state.inIteration = oldInIteration + state.inSwitch = oldInSwitch + state.inFunctionBody = oldInFunctionBody + return delegate.markEnd(delegate.createBlockStatement(sourceElements)) + + +def parseParams(firstRestricted=None): + param = None + params = [] + token = None + stricted = None + paramSet = None + key = None + message = None + expect("(") + if not match(")"): + paramSet = jsdict({}) + while index < length: + token = lookahead + param = parseVariableIdentifier() + key = "$" + token.value + if strict: + if isRestrictedWord(token.value): + stricted = token + message = Messages.StrictParamName + if key in paramSet: + stricted = token + message = Messages.StrictParamDupe + elif not firstRestricted: + if isRestrictedWord(token.value): + firstRestricted = token + message = Messages.StrictParamName + elif isStrictModeReservedWord(token.value): + firstRestricted = token + message = Messages.StrictReservedWord + elif key in paramSet: + firstRestricted = token + message = Messages.StrictParamDupe + params.append(param) + paramSet[key] = True + if match(")"): + break + expect(",") + expect(")") + return jsdict({ + "params": params, + "stricted": stricted, + "firstRestricted": firstRestricted, + "message": message, + }) + + +def parseFunctionDeclaration(): + global strict + id = None + params = [] + body = None + token = None + stricted = None + tmp = None + firstRestricted = None + message = None + previousStrict = None + skipComment() + delegate.markStart() + expectKeyword("function") + token = lookahead + id = parseVariableIdentifier() + if strict: + if isRestrictedWord(token.value): + throwErrorTolerant(token, Messages.StrictFunctionName) + else: + if isRestrictedWord(token.value): + firstRestricted = token + message = Messages.StrictFunctionName + elif isStrictModeReservedWord(token.value): + firstRestricted = token + message = Messages.StrictReservedWord + tmp = parseParams(firstRestricted) + params = tmp.params + stricted = tmp.stricted + firstRestricted = tmp.firstRestricted + if tmp.message: + message = tmp.message + previousStrict = strict + body = parseFunctionSourceElements() + if strict and firstRestricted: + throwError(firstRestricted, message) + if strict and stricted: + throwErrorTolerant(stricted, message) + strict = previousStrict + return delegate.markEnd( + delegate.createFunctionDeclaration(id, params, [], body)) + + +def parseFunctionExpression(): + global strict + token = None + id = None + stricted = None + firstRestricted = None + message = None + tmp = None + params = [] + body = None + previousStrict = None + delegate.markStart() + expectKeyword("function") + if not match("("): + token = lookahead + id = parseVariableIdentifier() + if strict: + if isRestrictedWord(token.value): + throwErrorTolerant(token, Messages.StrictFunctionName) + else: + if isRestrictedWord(token.value): + firstRestricted = token + message = Messages.StrictFunctionName + elif isStrictModeReservedWord(token.value): + firstRestricted = token + message = Messages.StrictReservedWord + tmp = parseParams(firstRestricted) + params = tmp.params + stricted = tmp.stricted + firstRestricted = tmp.firstRestricted + if tmp.message: + message = tmp.message + previousStrict = strict + body = parseFunctionSourceElements() + if strict and firstRestricted: + throwError(firstRestricted, message) + if strict and stricted: + throwErrorTolerant(stricted, message) + strict = previousStrict + return delegate.markEnd( + delegate.createFunctionExpression(id, params, [], body)) + + +def parseSourceElement(): + if lookahead.type == Token.Keyword: + while 1: + if (lookahead.value == "let") or (lookahead.value == "const"): + return parseConstLetDeclaration(lookahead.value) + elif lookahead.value == "function": + return parseFunctionDeclaration() + else: + return parseStatement() + break + if lookahead.type != Token.EOF: + return parseStatement() + + +def parseSourceElements(): + global strict + sourceElement = None + sourceElements = [] + token = None + directive = None + firstRestricted = None + while index < length: + token = lookahead + if token.type != Token.StringLiteral: + break + sourceElement = parseSourceElement() + sourceElements.append(sourceElement) + if sourceElement.expression.type != Syntax.Literal: + break + directive = source[(token.range[0] + 1):(token.range[1] - 1)] + if directive == "use strict": + strict = True + if firstRestricted: + throwErrorTolerant(firstRestricted, + Messages.StrictOctalLiteral) + else: + if (not firstRestricted) and token.octal: + firstRestricted = token + while index < length: + sourceElement = parseSourceElement() + if ('undefined' if not 'sourceElement' in locals() else + typeof(sourceElement)) == "undefined": + break + sourceElements.append(sourceElement) + return sourceElements + + +def parseProgram(): + global strict + body = None + skipComment() + delegate.markStart() + strict = False + peek() + body = parseSourceElements() + return delegate.markEnd(delegate.createProgram(body)) + + +def collectToken(): + start = None + loc = None + token = None + range = None + value = None + skipComment() + start = index + loc = jsdict({ + "start": + jsdict({ + "line": lineNumber, + "column": index - lineStart, + }), + }) + token = extra.advance() + loc.end = jsdict({ + "line": lineNumber, + "column": index - lineStart, + }) + if token.type != Token.EOF: + range = [token.range[0], token.range[1]] + value = source[token.range[0]:token.range[1]] + extra.tokens.append( + jsdict({ + "type": TokenName[token.type], + "value": value, + "range": range, + "loc": loc, + })) + return token + + +def collectRegex(): + pos = None + loc = None + regex = None + token = None + skipComment() + pos = index + loc = jsdict({ + "start": + jsdict({ + "line": lineNumber, + "column": index - lineStart, + }), + }) + regex = extra.scanRegExp() + loc.end = jsdict({ + "line": lineNumber, + "column": index - lineStart, + }) + if not extra.tokenize: + if len(extra.tokens) > 0: + token = extra.tokens[len(extra.tokens) - 1] + if (token.range[0] == pos) and (token.type == "Punctuator"): + if (token.value == "/") or (token.value == "/="): + extra.tokens.pop() + extra.tokens.append( + jsdict({ + "type": "RegularExpression", + "value": regex.literal, + "range": [pos, index], + "loc": loc, + })) + return regex + + +def filterTokenLocation(): + i = None + entry = None + token = None + tokens = [] + i = 0 + while 1: + if not (i < len(extra.tokens)): + break + entry = extra.tokens[i] + token = jsdict({ + "type": entry.type, + "value": entry.value, + }) + if extra.range: + token.range = entry.range + if extra.loc: + token.loc = entry.loc + tokens.append(token) + i += 1 + extra.tokens = tokens + + +class LocationMarker(object): + def __init__(self=None): + self.marker = [index, lineNumber, index - lineStart, 0, 0, 0] + + def end(self=None): + self.marker[3] = index + self.marker[4] = lineNumber + self.marker[5] = index - lineStart + + def apply(self=None, node=None): + if extra.range: + node.range = [self.marker[0], self.marker[3]] + if extra.loc: + node.loc = jsdict({ + "start": + jsdict({ + "line": self.marker[1], + "column": self.marker[2], + }), + "end": + jsdict({ + "line": self.marker[4], + "column": self.marker[5], + }), + }) + node = delegate.postProcess(node) + + +def createLocationMarker(): + if (not extra.loc) and (not extra.range): + return None + skipComment() + return LocationMarker() + + +def patch(): + global advance, scanRegExp + if ('undefined' if not ('tokens' in extra) else typeof( + extra.tokens)) != "undefined": + extra.advance = advance + extra.scanRegExp = scanRegExp + advance = collectToken + scanRegExp = collectRegex + + +def unpatch(): + global advance, scanRegExp + if ('undefined' if not ('scanRegExp' in extra) else typeof( + extra.scanRegExp)) == "function": + advance = extra.advance + scanRegExp = extra.scanRegExp + + +def tokenize(code, **options): + global delegate, source, index, lineNumber, lineStart, length, lookahead, state, extra + options = jsdict(options) + toString = None + token = None + tokens = None + toString = str + if (('undefined' if not 'code' in locals() else typeof(code)) != + "string") and (not isinstance(code, str)): + code = toString(code) + delegate = SyntaxTreeDelegate + source = code + index = 0 + lineNumber = (1 if len(source) > 0 else 0) + lineStart = 0 + length = len(source) + lookahead = None + state = jsdict({ + "allowIn": True, + "labelSet": jsdict({}), + "inFunctionBody": False, + "inIteration": False, + "inSwitch": False, + "lastCommentStart": -1, + }) + extra = jsdict({}) + options = options or jsdict({}) + options.tokens = True + extra.tokens = [] + extra.tokenize = True + extra.openParenToken = -1 + extra.openCurlyToken = -1 + extra.range = (('undefined' if not ('range' in options) else typeof( + options.range)) == "boolean") and options.range + extra.loc = (('undefined' if not ('loc' in options) else typeof( + options.loc)) == "boolean") and options.loc + if (('undefined' if not ('comment' in options) else typeof( + options.comment)) == "boolean") and options.comment: + extra.comments = [] + if (('undefined' if not ('tolerant' in options) else typeof( + options.tolerant)) == "boolean") and options.tolerant: + extra.errors = [] + if length > 0: + if (typeof(source[0])) == "undefined": + if isinstance(code, str): + source = code.valueOf() + patch() + try: + peek() + if lookahead.type == Token.EOF: + return extra.tokens + token = lex() + while lookahead.type != Token.EOF: + try: + token = lex() + except Exception as lexError: + token = lookahead + if extra.errors: + extra.errors.append(lexError) + break + else: + raise + filterTokenLocation() + tokens = extra.tokens + if ('undefined' if not ('comments' in extra) else typeof( + extra.comments)) != "undefined": + tokens.comments = extra.comments + if ('undefined' if not ('errors' in extra) else typeof( + extra.errors)) != "undefined": + tokens.errors = extra.errors + except Exception as e: + raise + finally: + unpatch() + extra = jsdict({}) + return tokens + + +def parse(code, **options): + global delegate, source, index, lineNumber, lineStart, length, lookahead, state, extra + options = jsdict(options) + program = None + toString = None + toString = str + if (('undefined' if not 'code' in locals() else typeof(code)) != + "string") and (not isinstance(code, str)): + code = toString(code) + delegate = SyntaxTreeDelegate + source = code + index = 0 + lineNumber = (1 if len(source) > 0 else 0) + lineStart = 0 + length = len(source) + lookahead = None + state = jsdict({ + "allowIn": True, + "labelSet": jsdict({}), + "inFunctionBody": False, + "inIteration": False, + "inSwitch": False, + "lastCommentStart": -1, + "markerStack": [], + }) + extra = jsdict({}) + if ('undefined' + if not 'options' in locals() else typeof(options)) != "undefined": + extra.range = (('undefined' if not ('range' in options) else typeof( + options.range)) == "boolean") and options.range + extra.loc = (('undefined' if not ('loc' in options) else typeof( + options.loc)) == "boolean") and options.loc + if (extra.loc and + (options.source != None)) and (options.source != undefined): + extra.source = toString(options.source) + if (('undefined' if not ('tokens' in options) else typeof( + options.tokens)) == "boolean") and options.tokens: + extra.tokens = [] + if (('undefined' if not ('comment' in options) else typeof( + options.comment)) == "boolean") and options.comment: + extra.comments = [] + if (('undefined' if not ('tolerant' in options) else typeof( + options.tolerant)) == "boolean") and options.tolerant: + extra.errors = [] + if length > 0: + if (typeof(source[0])) == "undefined": + if isinstance(code, str): + source = code.valueOf() + patch() + try: + program = parseProgram() + if ('undefined' if not ('comments' in extra) else typeof( + extra.comments)) != "undefined": + program.comments = extra.comments + if ('undefined' if not ('tokens' in extra) else typeof( + extra.tokens)) != "undefined": + filterTokenLocation() + program.tokens = extra.tokens + if ('undefined' if not ('errors' in extra) else typeof( + extra.errors)) != "undefined": + program.errors = extra.errors + except Exception as e: + raise + finally: + unpatch() + extra = jsdict({}) + return program + + +parse('var = 490 \n a=4;') diff --git a/libs/js2py/legecy_translators/objects.py b/libs/js2py/legecy_translators/objects.py new file mode 100644 index 000000000..2abda3e8b --- /dev/null +++ b/libs/js2py/legecy_translators/objects.py @@ -0,0 +1,300 @@ +""" This module removes all objects/arrays from JS source code and replace them with LVALS. +Also it has s function translating removed object/array to python code. +Use this module just after removing constants. Later move on to removing functions""" +OBJECT_LVAL = 'PyJsLvalObject%d_' +ARRAY_LVAL = 'PyJsLvalArray%d_' +from utils import * +from jsparser import * +from nodevisitor import exp_translator +import functions +from flow import KEYWORD_METHODS + + +def FUNC_TRANSLATOR(*a): # stupid import system in python + raise RuntimeError('Remember to set func translator. Thank you.') + + +def set_func_translator(ftrans): + # stupid stupid Python or Peter + global FUNC_TRANSLATOR + FUNC_TRANSLATOR = ftrans + + +def is_empty_object(n, last): + """n may be the inside of block or object""" + if n.strip(): + return False + # seems to be but can be empty code + last = last.strip() + markers = { + ')', + ';', + } + if not last or last[-1] in markers: + return False + return True + + +# todo refine this function +def is_object(n, last): + """n may be the inside of block or object. + last is the code before object""" + if is_empty_object(n, last): + return True + if not n.strip(): + return False + #Object contains lines of code so it cant be an object + if len(argsplit(n, ';')) > 1: + return False + cands = argsplit(n, ',') + if not cands[-1].strip(): + return True # {xxxx,} empty after last , it must be an object + for cand in cands: + cand = cand.strip() + # separate each candidate element at : in dict and check whether they are correct... + kv = argsplit(cand, ':') + if len( + kv + ) > 2: # set the len of kv to 2 because of this stupid : expression + kv = kv[0], ':'.join(kv[1:]) + + if len(kv) == 2: + # key value pair, check whether not label or ?: + k, v = kv + if not is_lval(k.strip()): + return False + v = v.strip() + if v.startswith('function'): + continue + #will fail on label... {xxx: while {}} + if v[0] == '{': # value cant be a code block + return False + for e in KEYWORD_METHODS: + # if v starts with any statement then return false + if v.startswith(e) and len(e) < len(v) and v[len( + e)] not in IDENTIFIER_PART: + return False + elif not (cand.startswith('set ') or cand.startswith('get ')): + return False + return True + + +def is_array(last): + #it can be prop getter + last = last.strip() + if any( + endswith_keyword(last, e) for e in + {'return', 'new', 'void', 'throw', 'typeof', 'in', 'instanceof'}): + return True + markers = {')', ']'} + return not last or not (last[-1] in markers or last[-1] in IDENTIFIER_PART) + + +def remove_objects(code, count=1): + """ This function replaces objects with OBJECTS_LVALS, returns new code, replacement dict and count. + count arg is the number that should be added to the LVAL of the first replaced object + """ + replacements = {} #replacement dict + br = bracket_split(code, ['{}', '[]']) + res = '' + last = '' + for e in br: + #test whether e is an object + if e[0] == '{': + n, temp_rep, cand_count = remove_objects(e[1:-1], count) + # if e was not an object then n should not contain any : + if is_object(n, last): + #e was an object + res += ' ' + OBJECT_LVAL % count + replacements[OBJECT_LVAL % count] = e + count += 1 + else: + # e was just a code block but could contain objects inside + res += '{%s}' % n + count = cand_count + replacements.update(temp_rep) + elif e[0] == '[': + if is_array(last): + res += e # will be translated later + else: # prop get + n, rep, count = remove_objects(e[1:-1], count) + res += '[%s]' % n + replacements.update(rep) + else: # e does not contain any objects + res += e + last = e #needed to test for this stipid empty object + return res, replacements, count + + +def remove_arrays(code, count=1): + """removes arrays and replaces them with ARRAY_LVALS + returns new code and replacement dict + *NOTE* has to be called AFTER remove objects""" + res = '' + last = '' + replacements = {} + for e in bracket_split(code, ['[]']): + if e[0] == '[': + if is_array(last): + name = ARRAY_LVAL % count + res += ' ' + name + replacements[name] = e + count += 1 + else: # pseudo array. But pseudo array can contain true array. for example a[['d'][3]] has 2 pseudo and 1 true array + cand, new_replacements, count = remove_arrays(e[1:-1], count) + res += '[%s]' % cand + replacements.update(new_replacements) + else: + res += e + last = e + return res, replacements, count + + +def translate_object(obj, lval, obj_count=1, arr_count=1): + obj = obj[1:-1] # remove {} from both ends + obj, obj_rep, obj_count = remove_objects(obj, obj_count) + obj, arr_rep, arr_count = remove_arrays(obj, arr_count) + # functions can be defined inside objects. exp translator cant translate them. + # we have to remove them and translate with func translator + # its better explained in translate_array function + obj, hoisted, inline = functions.remove_functions(obj, all_inline=True) + assert not hoisted + gsetters_after = '' + keys = argsplit(obj) + res = [] + for i, e in enumerate(keys, 1): + e = e.strip() + if e.startswith('set '): + gsetters_after += translate_setter(lval, e) + elif e.startswith('get '): + gsetters_after += translate_getter(lval, e) + elif ':' not in e: + if i < len(keys + ): # can happen legally only in the last element {3:2,} + raise SyntaxError('Unexpected "," in Object literal') + break + else: #Not getter, setter or elision + spl = argsplit(e, ':') + if len(spl) < 2: + raise SyntaxError('Invalid Object literal: ' + e) + try: + key, value = spl + except: #len(spl)> 2 + print 'Unusual case ' + repr(e) + key = spl[0] + value = ':'.join(spl[1:]) + key = key.strip() + if is_internal(key): + key = '%s.to_string().value' % key + else: + key = repr(key) + + value = exp_translator(value) + if not value: + raise SyntaxError('Missing value in Object literal') + res.append('%s:%s' % (key, value)) + res = '%s = Js({%s})\n' % (lval, ','.join(res)) + gsetters_after + # translate all the nested objects (including removed earlier functions) + for nested_name, nested_info in inline.iteritems(): # functions + nested_block, nested_args = nested_info + new_def = FUNC_TRANSLATOR(nested_name, nested_block, nested_args) + res = new_def + res + for lval, obj in obj_rep.iteritems(): #objects + new_def, obj_count, arr_count = translate_object( + obj, lval, obj_count, arr_count) + # add object definition BEFORE array definition + res = new_def + res + for lval, obj in arr_rep.iteritems(): # arrays + new_def, obj_count, arr_count = translate_array( + obj, lval, obj_count, arr_count) + # add object definition BEFORE array definition + res = new_def + res + return res, obj_count, arr_count + + +def translate_setter(lval, setter): + func = 'function' + setter[3:] + try: + _, data, _ = functions.remove_functions(func) + if not data or len(data) > 1: + raise Exception() + except: + raise SyntaxError('Could not parse setter: ' + setter) + prop = data.keys()[0] + body, args = data[prop] + if len(args) != 1: #setter must have exactly 1 argument + raise SyntaxError('Invalid setter. It must take exactly 1 argument.') + # now messy part + res = FUNC_TRANSLATOR('setter', body, args) + res += "%s.define_own_property(%s, {'set': setter})\n" % (lval, repr(prop)) + return res + + +def translate_getter(lval, getter): + func = 'function' + getter[3:] + try: + _, data, _ = functions.remove_functions(func) + if not data or len(data) > 1: + raise Exception() + except: + raise SyntaxError('Could not parse getter: ' + getter) + prop = data.keys()[0] + body, args = data[prop] + if len(args) != 0: #setter must have exactly 0 argument + raise SyntaxError('Invalid getter. It must take exactly 0 argument.') + # now messy part + res = FUNC_TRANSLATOR('getter', body, args) + res += "%s.define_own_property(%s, {'get': setter})\n" % (lval, repr(prop)) + return res + + +def translate_array(array, lval, obj_count=1, arr_count=1): + """array has to be any js array for example [1,2,3] + lval has to be name of this array. + Returns python code that adds lval to the PY scope it should be put before lval""" + array = array[1:-1] + array, obj_rep, obj_count = remove_objects(array, obj_count) + array, arr_rep, arr_count = remove_arrays(array, arr_count) + #functions can be also defined in arrays, this caused many problems since in Python + # functions cant be defined inside literal + # remove functions (they dont contain arrays or objects so can be translated easily) + # hoisted functions are treated like inline + array, hoisted, inline = functions.remove_functions(array, all_inline=True) + assert not hoisted + arr = [] + # separate elements in array + for e in argsplit(array, ','): + # translate expressions in array PyJsLvalInline will not be translated! + e = exp_translator(e.replace('\n', '')) + arr.append(e if e else 'None') + arr = '%s = Js([%s])\n' % (lval, ','.join(arr)) + #But we can have more code to add to define arrays/objects/functions defined inside this array + # translate nested objects: + # functions: + for nested_name, nested_info in inline.iteritems(): + nested_block, nested_args = nested_info + new_def = FUNC_TRANSLATOR(nested_name, nested_block, nested_args) + arr = new_def + arr + for lval, obj in obj_rep.iteritems(): + new_def, obj_count, arr_count = translate_object( + obj, lval, obj_count, arr_count) + # add object definition BEFORE array definition + arr = new_def + arr + for lval, obj in arr_rep.iteritems(): + new_def, obj_count, arr_count = translate_array( + obj, lval, obj_count, arr_count) + # add object definition BEFORE array definition + arr = new_def + arr + return arr, obj_count, arr_count + + +if __name__ == '__main__': + test = 'a = {404:{494:19}}; b = 303; if () {f={:}; { }}' + + #print remove_objects(test) + #print list(bracket_split(' {}')) + print + print remove_arrays( + 'typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""], [][[5][5]])[1].toLowerCase()])' + ) + print is_object('', ')') diff --git a/libs/js2py/legecy_translators/tokenize.py b/libs/js2py/legecy_translators/tokenize.py new file mode 100644 index 000000000..d6af01958 --- /dev/null +++ b/libs/js2py/legecy_translators/tokenize.py @@ -0,0 +1,4 @@ +from jsparser import * +from utils import * +# maybe I will try rewriting my parser in the future... Tokenizer makes things much easier and faster, unfortunately I +# did not know anything about parsers when I was starting this project so I invented my own. diff --git a/libs/js2py/legecy_translators/translator.py b/libs/js2py/legecy_translators/translator.py new file mode 100644 index 000000000..3573f06c6 --- /dev/null +++ b/libs/js2py/legecy_translators/translator.py @@ -0,0 +1,151 @@ +from flow import translate_flow +from constants import remove_constants, recover_constants +from objects import remove_objects, remove_arrays, translate_object, translate_array, set_func_translator +from functions import remove_functions, reset_inline_count +from jsparser import inject_before_lval, indent, dbg + +TOP_GLOBAL = '''from js2py.pyjs import *\nvar = Scope( JS_BUILTINS )\nset_global_object(var)\n''' + + +def translate_js(js, top=TOP_GLOBAL): + """js has to be a javascript source code. + returns equivalent python code.""" + # Remove constant literals + no_const, constants = remove_constants(js) + #print 'const count', len(constants) + # Remove object literals + no_obj, objects, obj_count = remove_objects(no_const) + #print 'obj count', len(objects) + # Remove arrays + no_arr, arrays, arr_count = remove_arrays(no_obj) + #print 'arr count', len(arrays) + # Here remove and replace functions + reset_inline_count() + no_func, hoisted, inline = remove_functions(no_arr) + + #translate flow and expressions + py_seed, to_register = translate_flow(no_func) + + # register variables and hoisted functions + #top += '# register variables\n' + top += 'var.registers(%s)\n' % str(to_register + hoisted.keys()) + + #Recover functions + # hoisted functions recovery + defs = '' + #defs += '# define hoisted functions\n' + #print len(hoisted) , 'HH'*40 + for nested_name, nested_info in hoisted.iteritems(): + nested_block, nested_args = nested_info + new_code = translate_func('PyJsLvalTempHoisted', nested_block, + nested_args) + new_code += 'PyJsLvalTempHoisted.func_name = %s\n' % repr(nested_name) + defs += new_code + '\nvar.put(%s, PyJsLvalTempHoisted)\n' % repr( + nested_name) + #defs += '# Everting ready!\n' + # inline functions recovery + for nested_name, nested_info in inline.iteritems(): + nested_block, nested_args = nested_info + new_code = translate_func(nested_name, nested_block, nested_args) + py_seed = inject_before_lval(py_seed, + nested_name.split('@')[0], new_code) + # add hoisted definitiond - they have literals that have to be recovered + py_seed = defs + py_seed + + #Recover arrays + for arr_lval, arr_code in arrays.iteritems(): + translation, obj_count, arr_count = translate_array( + arr_code, arr_lval, obj_count, arr_count) + py_seed = inject_before_lval(py_seed, arr_lval, translation) + + #Recover objects + for obj_lval, obj_code in objects.iteritems(): + translation, obj_count, arr_count = translate_object( + obj_code, obj_lval, obj_count, arr_count) + py_seed = inject_before_lval(py_seed, obj_lval, translation) + + #Recover constants + py_code = recover_constants(py_seed, constants) + + return top + py_code + + +def translate_func(name, block, args): + """Translates functions and all nested functions to Python code. + name - name of that function (global functions will be available under var while + inline will be available directly under this name ) + block - code of the function (*with* brackets {} ) + args - arguments that this function takes""" + inline = name.startswith('PyJsLvalInline') + real_name = '' + if inline: + name, real_name = name.split('@') + arglist = ', '.join(args) + ', ' if args else '' + code = '@Js\ndef %s(%sthis, arguments, var=var):\n' % (name, arglist) + # register local variables + scope = "'this':this, 'arguments':arguments" #it will be a simple dictionary + for arg in args: + scope += ', %s:%s' % (repr(arg), arg) + if real_name: + scope += ', %s:%s' % (repr(real_name), name) + code += indent('var = Scope({%s}, var)\n' % scope) + block, nested_hoisted, nested_inline = remove_functions(block) + py_code, to_register = translate_flow(block) + #register variables declared with var and names of hoisted functions. + to_register += nested_hoisted.keys() + if to_register: + code += indent('var.registers(%s)\n' % str(to_register)) + for nested_name, info in nested_hoisted.iteritems(): + nested_block, nested_args = info + new_code = translate_func('PyJsLvalTempHoisted', nested_block, + nested_args) + # Now put definition of hoisted function on the top + code += indent(new_code) + code += indent( + 'PyJsLvalTempHoisted.func_name = %s\n' % repr(nested_name)) + code += indent( + 'var.put(%s, PyJsLvalTempHoisted)\n' % repr(nested_name)) + for nested_name, info in nested_inline.iteritems(): + nested_block, nested_args = info + new_code = translate_func(nested_name, nested_block, nested_args) + # Inject definitions of inline functions just before usage + # nested inline names have this format : LVAL_NAME@REAL_NAME + py_code = inject_before_lval(py_code, + nested_name.split('@')[0], new_code) + if py_code.strip(): + code += indent(py_code) + return code + + +set_func_translator(translate_func) + +#print inject_before_lval(' chuj\n moj\n lval\nelse\n', 'lval', 'siema\njestem piter\n') +import time +#print time.time() +#print translate_js('if (1) console.log("Hello, World!"); else if (5) console.log("Hello world?");') +#print time.time() +t = """ +var x = [1,2,3,4,5,6]; +for (var e in x) {console.log(e); delete x[3];} +console.log(5 in [1,2,3,4,5]); + +""" + +SANDBOX = ''' +import traceback +try: +%s +except: + print traceback.format_exc() +print +raw_input('Press Enter to quit') +''' +if __name__ == '__main__': + # test with jq if works then it really works :) + #with open('jq.js', 'r') as f: + #jq = f.read() + + #res = translate_js(jq) + res = translate_js(t) + dbg(SANDBOX % indent(res)) + print 'Done' diff --git a/libs/js2py/legecy_translators/utils.py b/libs/js2py/legecy_translators/utils.py new file mode 100644 index 000000000..b14e13d83 --- /dev/null +++ b/libs/js2py/legecy_translators/utils.py @@ -0,0 +1,91 @@ +import sys +import unicodedata +from collections import defaultdict + + +def is_lval(t): + """Does not chceck whether t is not resticted or internal""" + if not t: + return False + i = iter(t) + if i.next() not in IDENTIFIER_START: + return False + return all(e in IDENTIFIER_PART for e in i) + + +def is_valid_lval(t): + """Checks whether t is valid JS identifier name (no keyword like var, function, if etc) + Also returns false on internal""" + if not is_internal(t) and is_lval(t) and t not in RESERVED_NAMES: + return True + return False + + +def is_plval(t): + return t.startswith('PyJsLval') + + +def is_marker(t): + return t.startswith('PyJsMarker') or t.startswith('PyJsConstant') + + +def is_internal(t): + return is_plval(t) or is_marker(t) or t == 'var' # var is a scope var + + +def is_property_accessor(t): + return '[' in t or '.' in t + + +def is_reserved(t): + return t in RESERVED_NAMES + + +#http://stackoverflow.com/questions/14245893/efficiently-list-all-characters-in-a-given-unicode-category +BOM = u'\uFEFF' +ZWJ = u'\u200D' +ZWNJ = u'\u200C' +TAB = u'\u0009' +VT = u'\u000B' +FF = u'\u000C' +SP = u'\u0020' +NBSP = u'\u00A0' +LF = u'\u000A' +CR = u'\u000D' +LS = u'\u2028' +PS = u'\u2029' + +U_CATEGORIES = defaultdict(list) # Thank you Martijn Pieters! +for c in map(unichr, range(sys.maxunicode + 1)): + U_CATEGORIES[unicodedata.category(c)].append(c) + +UNICODE_LETTER = set(U_CATEGORIES['Lu'] + U_CATEGORIES['Ll'] + + U_CATEGORIES['Lt'] + U_CATEGORIES['Lm'] + + U_CATEGORIES['Lo'] + U_CATEGORIES['Nl']) +UNICODE_COMBINING_MARK = set(U_CATEGORIES['Mn'] + U_CATEGORIES['Mc']) +UNICODE_DIGIT = set(U_CATEGORIES['Nd']) +UNICODE_CONNECTOR_PUNCTUATION = set(U_CATEGORIES['Pc']) +IDENTIFIER_START = UNICODE_LETTER.union( + {'$', '_'}) # and some fucking unicode escape sequence +IDENTIFIER_PART = IDENTIFIER_START.union(UNICODE_COMBINING_MARK).union( + UNICODE_DIGIT).union(UNICODE_CONNECTOR_PUNCTUATION).union({ZWJ, ZWNJ}) +USP = U_CATEGORIES['Zs'] +KEYWORD = { + 'break', 'do', 'instanceof', 'typeof', 'case', 'else', 'new', 'var', + 'catch', 'finally', 'return', 'void', 'continue', 'for', 'switch', 'while', + 'debugger', 'function', 'this', 'with', 'default', 'if', 'throw', 'delete', + 'in', 'try' +} + +FUTURE_RESERVED_WORD = { + 'class', 'enum', 'extends', 'super', 'const', 'export', 'import' +} +RESERVED_NAMES = KEYWORD.union(FUTURE_RESERVED_WORD).union( + {'null', 'false', 'true'}) + +WHITE = {TAB, VT, FF, SP, NBSP, BOM}.union(USP) +LINE_TERMINATOR = {LF, CR, LS, PS} +LLINE_TERMINATOR = list(LINE_TERMINATOR) +x = ''.join(WHITE) + ''.join(LINE_TERMINATOR) +SPACE = WHITE.union(LINE_TERMINATOR) +LINE_TERMINATOR_SEQUENCE = LINE_TERMINATOR.union({CR + LF}) diff --git a/libs/js2py/node_import.py b/libs/js2py/node_import.py new file mode 100644 index 000000000..a49a1f51e --- /dev/null +++ b/libs/js2py/node_import.py @@ -0,0 +1,113 @@ +__all__ = ['require'] +import subprocess, os, codecs, glob +from .evaljs import translate_js +import six +DID_INIT = False +DIRNAME = os.path.dirname(os.path.abspath(__file__)) +PY_NODE_MODULES_PATH = os.path.join(DIRNAME, 'py_node_modules') + + +def _init(): + global DID_INIT + if DID_INIT: + return + assert subprocess.call( + 'node -v', shell=True, cwd=DIRNAME + ) == 0, 'You must have node installed! run: brew install node' + assert subprocess.call( + 'cd %s;npm install babel-core babel-cli babel-preset-es2015 babel-polyfill babelify browserify' + % repr(DIRNAME), + shell=True, + cwd=DIRNAME) == 0, 'Could not link required node_modules' + DID_INIT = True + + +ADD_TO_GLOBALS_FUNC = ''' +;function addToGlobals(name, obj) { + if (!Object.prototype.hasOwnProperty('_fake_exports')) { + Object.prototype._fake_exports = {}; + } + Object.prototype._fake_exports[name] = obj; +}; + +''' +# subprocess.call("""node -e 'require("browserify")'""", shell=True) +GET_FROM_GLOBALS_FUNC = ''' +;function getFromGlobals(name) { + if (!Object.prototype.hasOwnProperty('_fake_exports')) { + throw Error("Could not find any value named "+name); + } + if (Object.prototype._fake_exports.hasOwnProperty(name)) { + return Object.prototype._fake_exports[name]; + } else { + throw Error("Could not find any value named "+name); + } +}; + +''' + + +def require(module_name, include_polyfill=False, update=False): + assert isinstance(module_name, str), 'module_name must be a string!' + py_name = module_name.replace('-', '_') + module_filename = '%s.py' % py_name + var_name = py_name.rpartition('/')[-1] + if not os.path.exists(os.path.join(PY_NODE_MODULES_PATH, + module_filename)) or update: + _init() + in_file_name = 'tmp0in439341018923js2py.js' + out_file_name = 'tmp0out439341018923js2py.js' + code = ADD_TO_GLOBALS_FUNC + if include_polyfill: + code += "\n;require('babel-polyfill');\n" + code += """ + var module_temp_love_python = require(%s); + addToGlobals(%s, module_temp_love_python); + """ % (repr(module_name), repr(module_name)) + with open(os.path.join(DIRNAME, in_file_name), 'wb') as f: + f.write(code.encode('utf-8') if six.PY3 else code) + + pkg_name = module_name.partition('/')[0] + # make sure the module is installed + assert subprocess.call( + 'cd %s;npm install %s' % (repr(DIRNAME), pkg_name), + shell=True, + cwd=DIRNAME + ) == 0, 'Could not install the required module: ' + pkg_name + + # convert the module + assert subprocess.call( + '''node -e "(require('browserify')('./%s').bundle(function (err,data) {fs.writeFile('%s', require('babel-core').transform(data, {'presets': require('babel-preset-es2015')}).code, ()=>{});}))"''' + % (in_file_name, out_file_name), + shell=True, + cwd=DIRNAME, + ) == 0, 'Error when converting module to the js bundle' + + os.remove(os.path.join(DIRNAME, in_file_name)) + with codecs.open(os.path.join(DIRNAME, out_file_name), "r", + "utf-8") as f: + js_code = f.read() + os.remove(os.path.join(DIRNAME, out_file_name)) + + js_code += GET_FROM_GLOBALS_FUNC + js_code += ';var %s = getFromGlobals(%s);%s' % ( + var_name, repr(module_name), var_name) + print('Please wait, translating...') + py_code = translate_js(js_code) + + dirname = os.path.dirname( + os.path.join(PY_NODE_MODULES_PATH, module_filename)) + if not os.path.isdir(dirname): + os.makedirs(dirname) + with open(os.path.join(PY_NODE_MODULES_PATH, module_filename), + 'wb') as f: + f.write(py_code.encode('utf-8') if six.PY3 else py_code) + else: + with codecs.open( + os.path.join(PY_NODE_MODULES_PATH, module_filename), "r", + "utf-8") as f: + py_code = f.read() + + context = {} + exec (py_code, context) + return context['var'][var_name].to_py() diff --git a/libs/js2py/prototypes/__init__.py b/libs/js2py/prototypes/__init__.py new file mode 100644 index 000000000..8de79cb9d --- /dev/null +++ b/libs/js2py/prototypes/__init__.py @@ -0,0 +1 @@ +__author__ = 'Piotr Dabkowski' diff --git a/libs/js2py/prototypes/jsarray.py b/libs/js2py/prototypes/jsarray.py new file mode 100644 index 000000000..d02e62b25 --- /dev/null +++ b/libs/js2py/prototypes/jsarray.py @@ -0,0 +1,476 @@ +import six + +if six.PY3: + xrange = range + import functools + + +def to_arr(this): + """Returns Python array from Js array""" + return [this.get(str(e)) for e in xrange(len(this))] + + +ARR_STACK = set({}) + + +class ArrayPrototype: + def toString(): + # this function is wrong but I will leave it here fore debugging purposes. + func = this.get('join') + if not func.is_callable(): + + @this.Js + def func(): + return '[object %s]' % this.Class + + return func.call(this, ()) + + def toLocaleString(): + array = this.to_object() + arr_len = array.get('length').to_uint32() + # separator is simply a comma ',' + if not arr_len: + return '' + res = [] + for i in xrange(arr_len): + element = array[str(i)] + if element.is_undefined() or element.is_null(): + res.append('') + else: + cand = element.to_object() + str_func = element.get('toLocaleString') + if not str_func.is_callable(): + raise this.MakeError( + 'TypeError', + 'toLocaleString method of item at index %d is not callable' + % i) + res.append(element.callprop('toLocaleString').value) + return ','.join(res) + + def concat(): + array = this.to_object() + A = this.Js([]) + items = [array] + items.extend(to_arr(arguments)) + n = 0 + for E in items: + if E.Class == 'Array': + k = 0 + e_len = len(E) + while k < e_len: + if E.has_property(str(k)): + A.put(str(n), E.get(str(k))) + n += 1 + k += 1 + else: + A.put(str(n), E) + n += 1 + return A + + def join(separator): + ARR_STACK.add(this) + array = this.to_object() + arr_len = array.get('length').to_uint32() + separator = ',' if separator.is_undefined() else separator.to_string( + ).value + elems = [] + for e in xrange(arr_len): + elem = array.get(str(e)) + if elem in ARR_STACK: + s = '' + else: + s = elem.to_string().value + elems.append( + s if not (elem.is_undefined() or elem.is_null()) else '') + res = separator.join(elems) + ARR_STACK.remove(this) + return res + + def pop(): #todo check + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not arr_len: + array.put('length', this.Js(arr_len)) + return None + ind = str(arr_len - 1) + element = array.get(ind) + array.delete(ind) + array.put('length', this.Js(arr_len - 1)) + return element + + def push(item): # todo check + array = this.to_object() + arr_len = array.get('length').to_uint32() + to_put = arguments.to_list() + i = arr_len + for i, e in enumerate(to_put, arr_len): + array.put(str(i), e) + if to_put: + i += 1 + array.put('length', this.Js(i)) + return i + + def reverse(): + array = this.to_object() # my own algorithm + vals = to_arr(array) + has_props = [array.has_property(str(e)) for e in xrange(len(array))] + vals.reverse() + has_props.reverse() + for i, val in enumerate(vals): + if has_props[i]: + array.put(str(i), val) + else: + array.delete(str(i)) + return array + + def shift(): #todo check + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not arr_len: + array.put('length', this.Js(0)) + return None + first = array.get('0') + for k in xrange(1, arr_len): + from_s, to_s = str(k), str(k - 1) + if array.has_property(from_s): + array.put(to_s, array.get(from_s)) + else: + array.delete(to) + array.delete(str(arr_len - 1)) + array.put('length', this.Js(str(arr_len - 1))) + return first + + def slice(start, end): # todo check + array = this.to_object() + arr_len = array.get('length').to_uint32() + relative_start = start.to_int() + k = max((arr_len + relative_start), 0) if relative_start < 0 else min( + relative_start, arr_len) + relative_end = arr_len if end.is_undefined() else end.to_int() + final = max((arr_len + relative_end), 0) if relative_end < 0 else min( + relative_end, arr_len) + res = [] + n = 0 + while k < final: + pk = str(k) + if array.has_property(pk): + res.append(array.get(pk)) + k += 1 + n += 1 + return res + + def sort(cmpfn): + if not this.Class in ('Array', 'Arguments'): + return this.to_object() # do nothing + arr = [] + for i in xrange(len(this)): + arr.append(this.get(six.text_type(i))) + + if not arr: + return this + if not cmpfn.is_callable(): + cmpfn = None + cmp = lambda a, b: sort_compare(a, b, cmpfn) + if six.PY3: + key = functools.cmp_to_key(cmp) + arr.sort(key=key) + else: + arr.sort(cmp=cmp) + for i in xrange(len(arr)): + this.put(six.text_type(i), arr[i]) + + return this + + def splice(start, deleteCount): + # 1-8 + array = this.to_object() + arr_len = array.get('length').to_uint32() + relative_start = start.to_int() + actual_start = max( + (arr_len + relative_start), 0) if relative_start < 0 else min( + relative_start, arr_len) + actual_delete_count = min( + max(deleteCount.to_int(), 0), arr_len - actual_start) + k = 0 + A = this.Js([]) + # 9 + while k < actual_delete_count: + if array.has_property(str(actual_start + k)): + A.put(str(k), array.get(str(actual_start + k))) + k += 1 + # 10-11 + items = to_arr(arguments)[2:] + items_len = len(items) + # 12 + if items_len < actual_delete_count: + k = actual_start + while k < (arr_len - actual_delete_count): + fr = str(k + actual_delete_count) + to = str(k + items_len) + if array.has_property(fr): + array.put(to, array.get(fr)) + else: + array.delete(to) + k += 1 + k = arr_len + while k > (arr_len - actual_delete_count + items_len): + array.delete(str(k - 1)) + k -= 1 + # 13 + elif items_len > actual_delete_count: + k = arr_len - actual_delete_count + while k > actual_start: + fr = str(k + actual_delete_count - 1) + to = str(k + items_len - 1) + if array.has_property(fr): + array.put(to, array.get(fr)) + else: + array.delete(to) + k -= 1 + # 14-17 + k = actual_start + while items: + E = items.pop(0) + array.put(str(k), E) + k += 1 + array.put('length', this.Js(arr_len - actual_delete_count + items_len)) + return A + + def unshift(): + array = this.to_object() + arr_len = array.get('length').to_uint32() + argCount = len(arguments) + k = arr_len + while k > 0: + fr = str(k - 1) + to = str(k + argCount - 1) + if array.has_property(fr): + array.put(to, array.get(fr)) + else: + array.delete(to) + k -= 1 + j = 0 + items = to_arr(arguments) + while items: + E = items.pop(0) + array.put(str(j), E) + j += 1 + array.put('length', this.Js(arr_len + argCount)) + return arr_len + argCount + + def indexOf(searchElement): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if arr_len == 0: + return -1 + if len(arguments) > 1: + n = arguments[1].to_int() + else: + n = 0 + if n >= arr_len: + return -1 + if n >= 0: + k = n + else: + k = arr_len - abs(n) + if k < 0: + k = 0 + while k < arr_len: + if array.has_property(str(k)): + elementK = array.get(str(k)) + if searchElement.strict_equality_comparison(elementK): + return k + k += 1 + return -1 + + def lastIndexOf(searchElement): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if arr_len == 0: + return -1 + if len(arguments) > 1: + n = arguments[1].to_int() + else: + n = arr_len - 1 + if n >= 0: + k = min(n, arr_len - 1) + else: + k = arr_len - abs(n) + while k >= 0: + if array.has_property(str(k)): + elementK = array.get(str(k)) + if searchElement.strict_equality_comparison(elementK): + return k + k -= 1 + return -1 + + def every(callbackfn): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + k = 0 + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + if not callbackfn.call( + T, (kValue, this.Js(k), array)).to_boolean().value: + return False + k += 1 + return True + + def some(callbackfn): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + k = 0 + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + if callbackfn.call( + T, (kValue, this.Js(k), array)).to_boolean().value: + return True + k += 1 + return False + + def forEach(callbackfn): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + k = 0 + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + callbackfn.call(T, (kValue, this.Js(k), array)) + k += 1 + + def map(callbackfn): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + A = this.Js([]) + k = 0 + while k < arr_len: + Pk = str(k) + if array.has_property(Pk): + kValue = array.get(Pk) + mappedValue = callbackfn.call(T, (kValue, this.Js(k), array)) + A.define_own_property( + Pk, { + 'value': mappedValue, + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + k += 1 + return A + + def filter(callbackfn): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + res = [] + k = 0 + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + if callbackfn.call( + T, (kValue, this.Js(k), array)).to_boolean().value: + res.append(kValue) + k += 1 + return res # converted to js array automatically + + def reduce(callbackfn): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + if not arr_len and len(arguments) < 2: + raise this.MakeError( + 'TypeError', 'Reduce of empty array with no initial value') + k = 0 + if len(arguments) > 1: # initial value present + accumulator = arguments[1] + else: + kPresent = False + while not kPresent and k < arr_len: + kPresent = array.has_property(str(k)) + if kPresent: + accumulator = array.get(str(k)) + k += 1 + if not kPresent: + raise this.MakeError( + 'TypeError', 'Reduce of empty array with no initial value') + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + accumulator = callbackfn.call( + this.undefined, (accumulator, kValue, this.Js(k), array)) + k += 1 + return accumulator + + def reduceRight(callbackfn): + array = this.to_object() + arr_len = array.get('length').to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + if not arr_len and len(arguments) < 2: + raise this.MakeError( + 'TypeError', 'Reduce of empty array with no initial value') + k = arr_len - 1 + if len(arguments) > 1: # initial value present + accumulator = arguments[1] + else: + kPresent = False + while not kPresent and k >= 0: + kPresent = array.has_property(str(k)) + if kPresent: + accumulator = array.get(str(k)) + k -= 1 + if not kPresent: + raise this.MakeError( + 'TypeError', 'Reduce of empty array with no initial value') + while k >= 0: + if array.has_property(str(k)): + kValue = array.get(str(k)) + accumulator = callbackfn.call( + this.undefined, (accumulator, kValue, this.Js(k), array)) + k -= 1 + return accumulator + + +def sort_compare(a, b, comp): + if a is None: + if b is None: + return 0 + return 1 + if b is None: + if a is None: + return 0 + return -1 + if a.is_undefined(): + if b.is_undefined(): + return 0 + return 1 + if b.is_undefined(): + if a.is_undefined(): + return 0 + return -1 + if comp is not None: + res = comp.call(a.undefined, (a, b)) + return res.to_int() + x, y = a.to_string(), b.to_string() + if x < y: + return -1 + elif x > y: + return 1 + return 0 diff --git a/libs/js2py/prototypes/jsarraybuffer.py b/libs/js2py/prototypes/jsarraybuffer.py new file mode 100644 index 000000000..7bcd00fb0 --- /dev/null +++ b/libs/js2py/prototypes/jsarraybuffer.py @@ -0,0 +1,19 @@ +# this is based on jsarray.py + +import six + +if six.PY3: + xrange = range + import functools + + +def to_arr(this): + """Returns Python array from Js array""" + return [this.get(str(e)) for e in xrange(len(this))] + + +ARR_STACK = set({}) + + +class ArrayBufferPrototype: + pass diff --git a/libs/js2py/prototypes/jsboolean.py b/libs/js2py/prototypes/jsboolean.py new file mode 100644 index 000000000..2cacd32da --- /dev/null +++ b/libs/js2py/prototypes/jsboolean.py @@ -0,0 +1,10 @@ +class BooleanPrototype: + def toString(): + if this.Class != 'Boolean': + raise this.Js(TypeError)('this must be a boolean') + return 'true' if this.value else 'false' + + def valueOf(): + if this.Class != 'Boolean': + raise this.Js(TypeError)('this must be a boolean') + return this.value diff --git a/libs/js2py/prototypes/jserror.py b/libs/js2py/prototypes/jserror.py new file mode 100644 index 000000000..c488bf155 --- /dev/null +++ b/libs/js2py/prototypes/jserror.py @@ -0,0 +1,10 @@ +class ErrorPrototype: + def toString(): + if this.TYPE != 'Object': + raise this.MakeError( + 'TypeError', 'Error.prototype.toString called on non-object') + name = this.get('name') + name = 'Error' if name.is_undefined() else name.to_string().value + msg = this.get('message') + msg = '' if msg.is_undefined() else msg.to_string().value + return name + (name and msg and ': ') + msg diff --git a/libs/js2py/prototypes/jsfunction.py b/libs/js2py/prototypes/jsfunction.py new file mode 100644 index 000000000..f9598a317 --- /dev/null +++ b/libs/js2py/prototypes/jsfunction.py @@ -0,0 +1,52 @@ +# python 3 support +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + +# todo fix apply and bind + + +class FunctionPrototype: + def toString(): + if not this.is_callable(): + raise TypeError('toString is not generic!') + args = ', '.join(this.code.__code__.co_varnames[:this.argcount]) + return 'function %s(%s) ' % (this.func_name, args) + this.source + + def call(): + arguments_ = arguments + if not len(arguments): + obj = this.Js(None) + else: + obj = arguments[0] + if len(arguments) <= 1: + args = () + else: + args = tuple([arguments_[e] for e in xrange(1, len(arguments_))]) + return this.call(obj, args) + + def apply(): + if not len(arguments): + obj = this.Js(None) + else: + obj = arguments[0] + if len(arguments) <= 1: + args = () + else: + appl = arguments[1] + args = tuple([appl[e] for e in xrange(len(appl))]) + return this.call(obj, args) + + def bind(thisArg): + target = this + if not target.is_callable(): + raise this.MakeError( + 'Object must be callable in order to be used with bind method') + if len(arguments) <= 1: + args = () + else: + args = tuple([arguments[e] for e in xrange(1, len(arguments))]) + return this.PyJsBoundFunction(target, thisArg, args) diff --git a/libs/js2py/prototypes/jsjson.py b/libs/js2py/prototypes/jsjson.py new file mode 100644 index 000000000..9f7ccbb01 --- /dev/null +++ b/libs/js2py/prototypes/jsjson.py @@ -0,0 +1,219 @@ +import json +from ..base import Js +indent = '' +# python 3 support +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + + +def parse(text): + reviver = arguments[1] + s = text.to_string().value + try: + unfiltered = json.loads(s) + except: + raise this.MakeError('SyntaxError', + 'Could not parse JSON string - Invalid syntax') + unfiltered = to_js(this, unfiltered) + if reviver.is_callable(): + root = this.Js({'': unfiltered}) + return walk(root, '', reviver) + else: + return unfiltered + + +def stringify(value, replacer, space): + global indent + stack = set([]) + indent = '' + property_list = replacer_function = this.undefined + if replacer.is_object(): + if replacer.is_callable(): + replacer_function = replacer + elif replacer.Class == 'Array': + property_list = [] + for e in replacer: + v = replacer[e] + item = this.undefined + if v._type() == 'Number': + item = v.to_string() + elif v._type() == 'String': + item = v + elif v.is_object(): + if v.Class in ('String', 'Number'): + item = v.to_string() + if not item.is_undefined() and item.value not in property_list: + property_list.append(item.value) + if space.is_object(): + if space.Class == 'Number': + space = space.to_number() + elif space.Class == 'String': + space = space.to_string() + if space._type() == 'Number': + space = this.Js(min(10, space.to_int())) + gap = max(int(space.value), 0) * ' ' + elif space._type() == 'String': + gap = space.value[:10] + else: + gap = '' + return this.Js( + Str('', this.Js({ + '': value + }), replacer_function, property_list, gap, stack, space)) + + +def Str(key, holder, replacer_function, property_list, gap, stack, space): + value = holder[key] + if value.is_object(): + to_json = value.get('toJSON') + if to_json.is_callable(): + value = to_json.call(value, (key, )) + if not replacer_function.is_undefined(): + value = replacer_function.call(holder, (key, value)) + + if value.is_object(): + if value.Class == 'String': + value = value.to_string() + elif value.Class == 'Number': + value = value.to_number() + elif value.Class == 'Boolean': + value = value.to_boolean() + if value.is_null(): + return 'null' + elif value.Class == 'Boolean': + return 'true' if value.value else 'false' + elif value._type() == 'String': + return Quote(value) + elif value._type() == 'Number': + if not value.is_infinity(): + return value.to_string() + return 'null' + if value.is_object() and not value.is_callable(): + if value.Class == 'Array': + return ja(value, stack, gap, property_list, replacer_function, + space) + else: + return jo(value, stack, gap, property_list, replacer_function, + space) + return None # undefined + + +def jo(value, stack, gap, property_list, replacer_function, space): + global indent + if value in stack: + raise value.MakeError('TypeError', + 'Converting circular structure to JSON') + stack.add(value) + stepback = indent + indent += gap + if not property_list.is_undefined(): + k = property_list + else: + k = [e.value for e in value] + partial = [] + for p in k: + str_p = value.Js( + Str(p, value, replacer_function, property_list, gap, stack, space)) + if not str_p.is_undefined(): + member = json.dumps(p) + ':' + ( + ' ' if gap else + '') + str_p.value # todo not sure here - what space character? + partial.append(member) + if not partial: + final = '{}' + else: + if not gap: + final = '{%s}' % ','.join(partial) + else: + sep = ',\n' + indent + properties = sep.join(partial) + final = '{\n' + indent + properties + '\n' + stepback + '}' + stack.remove(value) + indent = stepback + return final + + +def ja(value, stack, gap, property_list, replacer_function, space): + global indent + if value in stack: + raise value.MakeError('TypeError', + 'Converting circular structure to JSON') + stack.add(value) + stepback = indent + indent += gap + partial = [] + length = len(value) + for index in xrange(length): + index = str(index) + str_index = value.Js( + Str(index, value, replacer_function, property_list, gap, stack, + space)) + if str_index.is_undefined(): + partial.append('null') + else: + partial.append(str_index.value) + if not partial: + final = '[]' + else: + if not gap: + final = '[%s]' % ','.join(partial) + else: + sep = ',\n' + indent + properties = sep.join(partial) + final = '[\n' + indent + properties + '\n' + stepback + ']' + stack.remove(value) + indent = stepback + return final + + +def Quote(string): + return string.Js(json.dumps(string.value)) + + +def to_js(this, d): + if isinstance(d, dict): + return this.Js(dict((k, this.Js(v)) for k, v in six.iteritems(d))) + return this.Js(d) + + +def walk(holder, name, reviver): + val = holder.get(name) + if val.Class == 'Array': + for i in xrange(len(val)): + i = unicode(i) + new_element = walk(val, i, reviver) + if new_element.is_undefined(): + val.delete(i) + else: + new_element.put(i, new_element) + elif val.is_object(): + for key in val: + new_element = walk(val, key, reviver) + if new_element.is_undefined(): + val.delete(key) + else: + val.put(key, new_element) + return reviver.call(holder, (name, val)) + + +JSON = Js({}) + +JSON.define_own_property( + 'parse', { + 'value': Js(parse), + 'enumerable': False, + 'writable': True, + 'configurable': True + }) + +JSON.define_own_property( + 'stringify', { + 'value': Js(stringify), + 'enumerable': False, + 'writable': True, + 'configurable': True + }) diff --git a/libs/js2py/prototypes/jsnumber.py b/libs/js2py/prototypes/jsnumber.py new file mode 100644 index 000000000..c9905ab01 --- /dev/null +++ b/libs/js2py/prototypes/jsnumber.py @@ -0,0 +1,146 @@ +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + +RADIX_SYMBOLS = { + 0: '0', + 1: '1', + 2: '2', + 3: '3', + 4: '4', + 5: '5', + 6: '6', + 7: '7', + 8: '8', + 9: '9', + 10: 'a', + 11: 'b', + 12: 'c', + 13: 'd', + 14: 'e', + 15: 'f', + 16: 'g', + 17: 'h', + 18: 'i', + 19: 'j', + 20: 'k', + 21: 'l', + 22: 'm', + 23: 'n', + 24: 'o', + 25: 'p', + 26: 'q', + 27: 'r', + 28: 's', + 29: 't', + 30: 'u', + 31: 'v', + 32: 'w', + 33: 'x', + 34: 'y', + 35: 'z' +} + + +def to_str_rep(num): + if num.is_nan(): + return num.Js('NaN') + elif num.is_infinity(): + sign = '-' if num.value < 0 else '' + return num.Js(sign + 'Infinity') + elif isinstance(num.value, + (long, int)) or num.value.is_integer(): # dont print .0 + return num.Js(unicode(int(num.value))) + return num.Js(unicode(num.value)) # accurate enough + + +class NumberPrototype: + def toString(radix): + if this.Class != 'Number': + raise this.MakeError('TypeError', + 'Number.prototype.valueOf is not generic') + if radix.is_undefined(): + return to_str_rep(this) + r = radix.to_int() + if r == 10: + return to_str_rep(this) + if r not in xrange(2, 37): + raise this.MakeError( + 'RangeError', + 'Number.prototype.toString() radix argument must be between 2 and 36' + ) + num = this.to_int() + if num < 0: + num = -num + sign = '-' + else: + sign = '' + res = '' + while num: + s = RADIX_SYMBOLS[num % r] + num = num // r + res = s + res + return sign + (res if res else '0') + + def valueOf(): + if this.Class != 'Number': + raise this.MakeError('TypeError', + 'Number.prototype.valueOf is not generic') + return this.value + + def toLocaleString(): + return this.to_string() + + def toFixed(fractionDigits): + if this.Class != 'Number': + raise this.MakeError( + 'TypeError', + 'Number.prototype.toFixed called on incompatible receiver') + digs = fractionDigits.to_int() + if digs < 0 or digs > 20: + raise this.MakeError( + 'RangeError', + 'toFixed() digits argument must be between 0 and 20') + elif this.is_infinity(): + return 'Infinity' if this.value > 0 else '-Infinity' + elif this.is_nan(): + return 'NaN' + return format(this.value, '-.%df' % digs) + + def toExponential(fractionDigits): + if this.Class != 'Number': + raise this.MakeError( + 'TypeError', + 'Number.prototype.toExponential called on incompatible receiver' + ) + digs = fractionDigits.to_int() + if digs < 0 or digs > 20: + raise this.MakeError( + 'RangeError', + 'toFixed() digits argument must be between 0 and 20') + elif this.is_infinity(): + return 'Infinity' if this.value > 0 else '-Infinity' + elif this.is_nan(): + return 'NaN' + return format(this.value, '-.%de' % digs) + + def toPrecision(precision): + if this.Class != 'Number': + raise this.MakeError( + 'TypeError', + 'Number.prototype.toPrecision called on incompatible receiver') + if precision.is_undefined(): + return this.to_string() + prec = precision.to_int() + if this.is_nan(): + return 'NaN' + elif this.is_infinity(): + return 'Infinity' if this.value > 0 else '-Infinity' + digs = prec - len(str(int(this.value))) + if digs >= 0: + return format(this.value, '-.%df' % digs) + else: + return format(this.value, '-.%df' % (prec - 1)) diff --git a/libs/js2py/prototypes/jsobject.py b/libs/js2py/prototypes/jsobject.py new file mode 100644 index 000000000..aeefe5d37 --- /dev/null +++ b/libs/js2py/prototypes/jsobject.py @@ -0,0 +1,28 @@ +class ObjectPrototype: + def toString(): + return '[object %s]' % this.Class + + def valueOf(): + return this.to_object() + + def toLocaleString(): + return this.callprop('toString') + + def hasOwnProperty(prop): + return this.get_own_property(prop.to_string().value) is not None + + def isPrototypeOf(obj): + #a bit stupid specification but well + # for example Object.prototype.isPrototypeOf.call((5).__proto__, 5) gives false + if not obj.is_object(): + return False + while 1: + obj = obj.prototype + if obj is None or obj.is_null(): + return False + if obj is this: + return True + + def propertyIsEnumerable(prop): + cand = this.own.get(prop.to_string().value) + return cand is not None and cand.get('enumerable') diff --git a/libs/js2py/prototypes/jsregexp.py b/libs/js2py/prototypes/jsregexp.py new file mode 100644 index 000000000..b23f2003b --- /dev/null +++ b/libs/js2py/prototypes/jsregexp.py @@ -0,0 +1,45 @@ +class RegExpPrototype: + def toString(): + flags = u'' + try: + if this.glob: + flags += u'g' + if this.ignore_case: + flags += u'i' + if this.multiline: + flags += u'm' + except: + pass + v = this.value if this.value else '(?:)' + return u'/%s/' % v + flags + + def test(string): + return Exec(this, string) is not this.null + + def exec2(string + ): # will be changed to exec in base.py. cant name it exec here + return Exec(this, string) + + +def Exec(this, string): + if this.Class != 'RegExp': + raise this.MakeError('TypeError', + 'RegExp.prototype.exec is not generic!') + string = string.to_string() + length = len(string) + i = this.get('lastIndex').to_int() if this.glob else 0 + matched = False + while not matched: + if i < 0 or i > length: + this.put('lastIndex', this.Js(0)) + return this.null + matched = this.match(string.value, i) + i += 1 + start, end = matched.span() #[0]+i-1, matched.span()[1]+i-1 + if this.glob: + this.put('lastIndex', this.Js(end)) + arr = this.Js( + [this.Js(e) for e in [matched.group()] + list(matched.groups())]) + arr.put('index', this.Js(start)) + arr.put('input', string) + return arr diff --git a/libs/js2py/prototypes/jsstring.py b/libs/js2py/prototypes/jsstring.py new file mode 100644 index 000000000..ee3207094 --- /dev/null +++ b/libs/js2py/prototypes/jsstring.py @@ -0,0 +1,306 @@ +# -*- coding: utf-8 -*- +from .jsregexp import Exec +import re +DIGS = set('0123456789') +WHITE = u"\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF" + + +def replacement_template(rep, source, span, npar): + """Takes the replacement template and some info about the match and returns filled template + """ + n = 0 + res = '' + while n < len(rep) - 1: + char = rep[n] + if char == '$': + if rep[n + 1] == '$': + res += '$' + n += 2 + continue + elif rep[n + 1] == '`': + # replace with string that is BEFORE match + res += source[:span[0]] + n += 2 + continue + elif rep[n + 1] == '\'': + # replace with string that is AFTER match + res += source[span[1]:] + n += 2 + continue + elif rep[n + 1] in DIGS: + dig = rep[n + 1] + if n + 2 < len(rep) and rep[n + 2] in DIGS: + dig += rep[n + 2] + num = int(dig) + # we will not do any replacements if we dont have this npar or dig is 0 + if not num or num > len(npar): + res += '$' + dig + else: + # None - undefined has to be replaced with '' + res += npar[num - 1] if npar[num - 1] else '' + n += 1 + len(dig) + continue + res += char + n += 1 + if n < len(rep): + res += rep[-1] + return res + + +################################################### + + +class StringPrototype: + def toString(): + if this.Class != 'String': + raise this.MakeError('TypeError', + 'String.prototype.toString is not generic') + return this.value + + def valueOf(): + if this.Class != 'String': + raise this.MakeError('TypeError', + 'String.prototype.valueOf is not generic') + return this.value + + def charAt(pos): + this.cok() + pos = pos.to_int() + s = this.to_string() + if 0 <= pos < len(s.value): + char = s.value[pos] + if char not in s.CHAR_BANK: + s.Js(char) # add char to char bank + return s.CHAR_BANK[char] + return s.CHAR_BANK[''] + + def charCodeAt(pos): + this.cok() + pos = pos.to_int() + s = this.to_string() + if 0 <= pos < len(s.value): + return s.Js(ord(s.value[pos])) + return s.NaN + + def concat(): + this.cok() + s = this.to_string() + res = s.value + for e in arguments.to_list(): + res += e.to_string().value + return res + + def indexOf(searchString, position): + this.cok() + s = this.to_string().value + search = searchString.to_string().value + pos = position.to_int() + return this.Js(s.find(search, min(max(pos, 0), len(s)))) + + def lastIndexOf(searchString, position): + this.cok() + s = this.to_string().value + search = searchString.to_string().value + pos = position.to_number() + pos = 10**15 if pos.is_nan() else pos.to_int() + return s.rfind(search, 0, min(max(pos, 0) + 1, len(s))) + + def localeCompare(that): + this.cok() + s = this.to_string() + that = that.to_string() + if s < that: + return this.Js(-1) + elif s > that: + return this.Js(1) + return this.Js(0) + + def match(regexp): + this.cok() + s = this.to_string() + r = this.RegExp(regexp) if regexp.Class != 'RegExp' else regexp + if not r.glob: + return Exec(r, s) + r.put('lastIndex', this.Js(0)) + found = [] + previous_last_index = 0 + last_match = True + while last_match: + result = Exec(r, s) + if result.is_null(): + last_match = False + else: + this_index = r.get('lastIndex').value + if this_index == previous_last_index: + r.put('lastIndex', this.Js(this_index + 1)) + previous_last_index += 1 + else: + previous_last_index = this_index + matchStr = result.get('0') + found.append(matchStr) + if not found: + return this.null + return found + + def replace(searchValue, replaceValue): + # VERY COMPLICATED. to check again. + this.cok() + string = this.to_string() + s = string.value + res = '' + if not replaceValue.is_callable(): + replaceValue = replaceValue.to_string().value + func = False + else: + func = True + # Replace all ( global ) + if searchValue.Class == 'RegExp' and searchValue.glob: + last = 0 + for e in re.finditer(searchValue.pat, s): + res += s[last:e.span()[0]] + if func: + # prepare arguments for custom func (replaceValue) + args = (e.group(), ) + e.groups() + (e.span()[1], string) + # convert all types to JS + args = map(this.Js, args) + res += replaceValue(*args).to_string().value + else: + res += replacement_template(replaceValue, s, e.span(), + e.groups()) + last = e.span()[1] + res += s[last:] + return this.Js(res) + elif searchValue.Class == 'RegExp': + e = re.search(searchValue.pat, s) + if e is None: + return string + span = e.span() + pars = e.groups() + match = e.group() + else: + match = searchValue.to_string().value + ind = s.find(match) + if ind == -1: + return string + span = ind, ind + len(match) + pars = () + res = s[:span[0]] + if func: + args = (match, ) + pars + (span[1], string) + # convert all types to JS + this_ = this + args = tuple([this_.Js(x) for x in args]) + res += replaceValue(*args).to_string().value + else: + res += replacement_template(replaceValue, s, span, pars) + res += s[span[1]:] + return res + + def search(regexp): + this.cok() + string = this.to_string() + if regexp.Class == 'RegExp': + rx = regexp + else: + rx = this.RegExp(regexp) + res = re.search(rx.pat, string.value) + if res is not None: + return this.Js(res.span()[0]) + return -1 + + def slice(start, end): + this.cok() + s = this.to_string() + start = start.to_int() + length = len(s.value) + end = length if end.is_undefined() else end.to_int() + #From = max(length+start, 0) if start<0 else min(length, start) + #To = max(length+end, 0) if end<0 else min(length, end) + return s.value[start:end] + + def split(separator, limit): + # its a bit different that re.split! + this.cok() + S = this.to_string() + s = S.value + lim = 2**32 - 1 if limit.is_undefined() else limit.to_uint32() + if not lim: + return [] + if separator.is_undefined(): + return [s] + len_s = len(s) + res = [] + R = separator if separator.Class == 'RegExp' else separator.to_string() + if not len_s: + if SplitMatch(s, 0, R) is None: + return [S] + return [] + p = q = 0 + while q != len_s: + e, cap = SplitMatch(s, q, R) + if e is None or e == p: + q += 1 + continue + res.append(s[p:q]) + p = q = e + if len(res) == lim: + return res + for element in cap: + res.append(this.Js(element)) + if len(res) == lim: + return res + res.append(s[p:]) + return res + + def substring(start, end): + this.cok() + s = this.to_string().value + start = start.to_int() + length = len(s) + end = length if end.is_undefined() else end.to_int() + fstart = min(max(start, 0), length) + fend = min(max(end, 0), length) + return this.Js(s[min(fstart, fend):max(fstart, fend)]) + + def substr(start, length): + #I hate this function and its description in specification + r1 = this.to_string().value + r2 = start.to_int() + r3 = 10**20 if length.is_undefined() else length.to_int() + r4 = len(r1) + r5 = r2 if r2 >= 0 else max(0, r2 + r4) + r6 = min(max(r3, 0), r4 - r5) + if r6 <= 0: + return '' + return r1[r5:r5 + r6] + + def toLowerCase(): + this.cok() + return this.Js(this.to_string().value.lower()) + + def toLocaleLowerCase(): + this.cok() + return this.Js(this.to_string().value.lower()) + + def toUpperCase(): + this.cok() + return this.Js(this.to_string().value.upper()) + + def toLocaleUpperCase(): + this.cok() + return this.Js(this.to_string().value.upper()) + + def trim(): + this.cok() + return this.Js(this.to_string().value.strip(WHITE)) + + +def SplitMatch(s, q, R): + # s is Py String to match, q is the py int match start and R is Js RegExp or String. + if R.Class == 'RegExp': + res = R.match(s, q) + return (None, ()) if res is None else (res.span()[1], res.groups()) + # R is just a string + if s[q:].startswith(R.value): + return q + len(R.value), () + return None, () diff --git a/libs/js2py/prototypes/jstypedarray.py b/libs/js2py/prototypes/jstypedarray.py new file mode 100644 index 000000000..43285aaef --- /dev/null +++ b/libs/js2py/prototypes/jstypedarray.py @@ -0,0 +1,344 @@ +# this is based on jsarray.py + +import six +try: + import numpy +except: + pass + +if six.PY3: + xrange = range + import functools + + +def to_arr(this): + """Returns Python array from Js array""" + return [this.get(str(e)) for e in xrange(len(this))] + + +ARR_STACK = set({}) + + +class TypedArrayPrototype: + def toString(): + # this function is wrong + func = this.get('join') + if not func.is_callable(): + + @this.Js + def func(): + return '[object %s]' % this.Class + + return func.call(this, ()) + + def toLocaleString(locales=None, options=None): + array = this.to_object() + arr_len = array.get("length").to_uint32() + # separator is simply a comma ',' + if not arr_len: + return '' + res = [] + for i in xrange(arr_len): + element = array[str(i)] + if element.is_undefined() or element.is_null(): + res.append('') + else: + cand = element.to_object() + str_func = element.get('toLocaleString') + if not str_func.is_callable(): + raise this.MakeError( + 'TypeError', + 'toLocaleString method of item at index %d is not callable' + % i) + res.append(element.callprop('toLocaleString').value) + return ','.join(res) + + def join(separator): + ARR_STACK.add(this) + array = this.to_object() + arr_len = array.get("length").to_uint32() + separator = ',' if separator.is_undefined() else separator.to_string( + ).value + elems = [] + for e in xrange(arr_len): + elem = array.get(str(e)) + if elem in ARR_STACK: + s = '' + else: + s = elem.to_string().value + elems.append( + s if not (elem.is_undefined() or elem.is_null()) else '') + res = separator.join(elems) + ARR_STACK.remove(this) + return res + + def reverse(): + array = this.to_object() # my own algorithm + vals = to_arr(array) + has_props = [array.has_property(str(e)) for e in xrange(len(array))] + vals.reverse() + has_props.reverse() + for i, val in enumerate(vals): + if has_props[i]: + array.put(str(i), val) + else: + array.delete(str(i)) + return array + + def slice(start, end): # todo check + array = this.to_object() + arr_len = array.get("length").to_uint32() + relative_start = start.to_int() + k = max((arr_len + relative_start), 0) if relative_start < 0 else min( + relative_start, arr_len) + relative_end = arr_len if end.is_undefined() else end.to_int() + final = max((arr_len + relative_end), 0) if relative_end < 0 else min( + relative_end, arr_len) + res = [] + n = 0 + while k < final: + pk = str(k) + if array.has_property(pk): + res.append(array.get(pk)) + k += 1 + n += 1 + return res + + def sort(cmpfn): + if not this.Class in ('Array', 'Arguments'): + return this.to_object() # do nothing + arr = [] + for i in xrange(len(this)): + arr.append(this.get(six.text_type(i))) + + if not arr: + return this + if not cmpfn.is_callable(): + cmpfn = None + cmp = lambda a, b: sort_compare(a, b, cmpfn) + if six.PY3: + key = functools.cmp_to_key(cmp) + arr.sort(key=key) + else: + arr.sort(cmp=cmp) + for i in xrange(len(arr)): + this.put(six.text_type(i), arr[i]) + + return this + + def indexOf(searchElement): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if arr_len == 0: + return -1 + if len(arguments) > 1: + n = arguments[1].to_int() + else: + n = 0 + if n >= arr_len: + return -1 + if n >= 0: + k = n + else: + k = arr_len - abs(n) + if k < 0: + k = 0 + while k < arr_len: + if array.has_property(str(k)): + elementK = array.get(str(k)) + if searchElement.strict_equality_comparison(elementK): + return k + k += 1 + return -1 + + def lastIndexOf(searchElement): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if arr_len == 0: + return -1 + if len(arguments) > 1: + n = arguments[1].to_int() + else: + n = arr_len - 1 + if n >= 0: + k = min(n, arr_len - 1) + else: + k = arr_len - abs(n) + while k >= 0: + if array.has_property(str(k)): + elementK = array.get(str(k)) + if searchElement.strict_equality_comparison(elementK): + return k + k -= 1 + return -1 + + def every(callbackfn): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + k = 0 + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + if not callbackfn.call( + T, (kValue, this.Js(k), array)).to_boolean().value: + return False + k += 1 + return True + + def some(callbackfn): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + k = 0 + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + if callbackfn.call( + T, (kValue, this.Js(k), array)).to_boolean().value: + return True + k += 1 + return False + + def forEach(callbackfn): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + k = 0 + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + callbackfn.call(T, (kValue, this.Js(k), array)) + k += 1 + + def map(callbackfn): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + A = this.Js([]) + k = 0 + while k < arr_len: + Pk = str(k) + if array.has_property(Pk): + kValue = array.get(Pk) + mappedValue = callbackfn.call(T, (kValue, this.Js(k), array)) + A.define_own_property( + Pk, { + 'value': mappedValue, + 'writable': True, + 'enumerable': True, + 'configurable': True + }) + k += 1 + return A + + def filter(callbackfn): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + T = arguments[1] + res = [] + k = 0 + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + if callbackfn.call( + T, (kValue, this.Js(k), array)).to_boolean().value: + res.append(kValue) + k += 1 + return res # converted to js array automatically + + def reduce(callbackfn): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + if not arr_len and len(arguments) < 2: + raise this.MakeError( + 'TypeError', 'Reduce of empty array with no initial value') + k = 0 + if len(arguments) > 1: # initial value present + accumulator = arguments[1] + else: + kPresent = False + while not kPresent and k < arr_len: + kPresent = array.has_property(str(k)) + if kPresent: + accumulator = array.get(str(k)) + k += 1 + if not kPresent: + raise this.MakeError( + 'TypeError', 'Reduce of empty array with no initial value') + while k < arr_len: + if array.has_property(str(k)): + kValue = array.get(str(k)) + accumulator = callbackfn.call( + this.undefined, (accumulator, kValue, this.Js(k), array)) + k += 1 + return accumulator + + def reduceRight(callbackfn): + array = this.to_object() + arr_len = array.get("length").to_uint32() + if not callbackfn.is_callable(): + raise this.MakeError('TypeError', 'callbackfn must be a function') + if not arr_len and len(arguments) < 2: + raise this.MakeError( + 'TypeError', 'Reduce of empty array with no initial value') + k = arr_len - 1 + if len(arguments) > 1: # initial value present + accumulator = arguments[1] + else: + kPresent = False + while not kPresent and k >= 0: + kPresent = array.has_property(str(k)) + if kPresent: + accumulator = array.get(str(k)) + k -= 1 + if not kPresent: + raise this.MakeError( + 'TypeError', 'Reduce of empty array with no initial value') + while k >= 0: + if array.has_property(str(k)): + kValue = array.get(str(k)) + accumulator = callbackfn.call( + this.undefined, (accumulator, kValue, this.Js(k), array)) + k -= 1 + return accumulator + + +def sort_compare(a, b, comp): + if a is None: + if b is None: + return 0 + return 1 + if b is None: + if a is None: + return 0 + return -1 + if a.is_undefined(): + if b.is_undefined(): + return 0 + return 1 + if b.is_undefined(): + if a.is_undefined(): + return 0 + return -1 + if comp is not None: + res = comp.call(a.undefined, (a, b)) + return res.to_int() + x, y = a.to_string(), b.to_string() + if x < y: + return -1 + elif x > y: + return 1 + return 0 diff --git a/libs/js2py/py_node_modules/__init__.py b/libs/js2py/py_node_modules/__init__.py new file mode 100644 index 000000000..03b730262 --- /dev/null +++ b/libs/js2py/py_node_modules/__init__.py @@ -0,0 +1 @@ +"""this package contains all the npm modules translated by js2py via node import""" \ No newline at end of file diff --git a/libs/js2py/pyjs.py b/libs/js2py/pyjs.py new file mode 100644 index 000000000..98e106a00 --- /dev/null +++ b/libs/js2py/pyjs.py @@ -0,0 +1,100 @@ +from .base import * +from .constructors.jsmath import Math +from .constructors.jsdate import Date +from .constructors.jsobject import Object +from .constructors.jsfunction import Function +from .constructors.jsstring import String +from .constructors.jsnumber import Number +from .constructors.jsboolean import Boolean +from .constructors.jsregexp import RegExp +from .constructors.jsarray import Array +from .constructors.jsarraybuffer import ArrayBuffer +from .constructors.jsint8array import Int8Array +from .constructors.jsuint8array import Uint8Array +from .constructors.jsuint8clampedarray import Uint8ClampedArray +from .constructors.jsint16array import Int16Array +from .constructors.jsuint16array import Uint16Array +from .constructors.jsint32array import Int32Array +from .constructors.jsuint32array import Uint32Array +from .constructors.jsfloat32array import Float32Array +from .constructors.jsfloat64array import Float64Array +from .prototypes.jsjson import JSON +from .host.console import console +from .host.jseval import Eval +from .host.jsfunctions import parseFloat, parseInt, isFinite, \ + isNaN, escape, unescape, encodeURI, decodeURI, encodeURIComponent, decodeURIComponent + +# Now we have all the necessary items to create global environment for script +__all__ = [ + 'Js', 'PyJsComma', 'PyJsStrictEq', 'PyJsStrictNeq', 'PyJsException', + 'PyJsBshift', 'Scope', 'PyExceptionToJs', 'JsToPyException', 'JS_BUILTINS', + 'appengine', 'set_global_object', 'JsRegExp', 'PyJsException', + 'PyExceptionToJs', 'JsToPyException', 'PyJsSwitchException' +] + +# these were defined in base.py +builtins = ( + 'true', + 'false', + 'null', + 'undefined', + 'Infinity', + 'NaN', + 'console', + 'String', + 'Number', + 'Boolean', + 'RegExp', + 'Math', + 'Date', + 'Object', + 'Function', + 'Array', + 'Int8Array', + 'Uint8Array', + 'Uint8ClampedArray', + 'Int16Array', + 'Uint16Array', + 'Int32Array', + 'Uint32Array', + 'Float32Array', + 'Float64Array', + 'ArrayBuffer', + 'parseFloat', + 'parseInt', + 'isFinite', + 'isNaN', + 'escape', + 'unescape', + 'encodeURI', + 'decodeURI', + 'encodeURIComponent', + 'decodeURIComponent', +) + +#Array, Function, JSON, Error is done later :) +# also some built in functions like eval... + + +def set_global_object(obj): + obj.IS_CHILD_SCOPE = False + this = This({}) + this.own = obj.own + this.prototype = obj.prototype + PyJs.GlobalObject = this + # make this available + obj.register('this') + obj.put('this', this) + # also add window and set it to be a global object for compatibility + obj.register('window') + obj.put('window', this) + + +scope = dict(zip(builtins, [globals()[e] for e in builtins])) +# Now add errors: +for name, error in ERRORS.items(): + scope[name] = error +#add eval +scope['eval'] = Eval +scope['JSON'] = JSON +JS_BUILTINS = dict((k, v) for k, v in scope.items()) diff --git a/libs/js2py/test_internals.py b/libs/js2py/test_internals.py new file mode 100644 index 000000000..12cf4ad7a --- /dev/null +++ b/libs/js2py/test_internals.py @@ -0,0 +1,9 @@ +from internals import byte_trans +from internals import seval +import pyjsparser + +x = r''' +function g() {var h123 = 11; return [function g1() {return h123}, new Function('return h123')]} +g()[1]() +''' +print seval.eval_js_vm(x) diff --git a/libs/js2py/translators/__init__.py b/libs/js2py/translators/__init__.py new file mode 100644 index 000000000..7a1001fd1 --- /dev/null +++ b/libs/js2py/translators/__init__.py @@ -0,0 +1,38 @@ +# The MIT License +# +# Copyright 2014, 2015 Piotr Dabkowski +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the 'Software'), +# to deal in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, subject +# to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all copies or +# substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +# LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE + +__all__ = [ + 'PyJsParser', 'Node', 'WrappingNode', 'node_to_dict', 'parse', + 'translate_js', 'translate', 'syntax_tree_translate', 'DEFAULT_HEADER' +] +__author__ = 'Piotr Dabkowski' +__version__ = '2.2.0' +from pyjsparser import PyJsParser +from .translator import translate_js, trasnlate, syntax_tree_translate, DEFAULT_HEADER + + +def parse(javascript_code): + """Returns syntax tree of javascript_code. + + Syntax tree has the same structure as syntax tree produced by esprima.js + + Same as PyJsParser().parse For your convenience :) """ + p = PyJsParser() + return p.parse(javascript_code) diff --git a/libs/js2py/translators/friendly_nodes.py b/libs/js2py/translators/friendly_nodes.py new file mode 100644 index 000000000..370f85d8a --- /dev/null +++ b/libs/js2py/translators/friendly_nodes.py @@ -0,0 +1,375 @@ +import binascii + +from pyjsparser import PyJsParser +import six +if six.PY3: + basestring = str + long = int + xrange = range + unicode = str + +REGEXP_CONVERTER = PyJsParser() + + +def to_hex(s): + return binascii.hexlify(s.encode('utf8')).decode( + 'utf8') # fucking python 3, I hate it so much + + + # wtf was wrong with s.encode('hex') ??? +def indent(lines, ind=4): + return ind * ' ' + lines.replace('\n', '\n' + ind * ' ').rstrip(' ') + + +def inject_before_lval(source, lval, code): + if source.count(lval) > 1: + print() + print(lval) + raise RuntimeError('To many lvals (%s)' % lval) + elif not source.count(lval): + print() + print(lval) + assert lval not in source + raise RuntimeError('No lval found "%s"' % lval) + end = source.index(lval) + inj = source.rfind('\n', 0, end) + ind = inj + while source[ind + 1] == ' ': + ind += 1 + ind -= inj + return source[:inj + 1] + indent(code, ind) + source[inj + 1:] + + +def get_continue_label(label): + return CONTINUE_LABEL % to_hex(label) + + +def get_break_label(label): + return BREAK_LABEL % to_hex(label) + + +def is_valid_py_name(name): + try: + compile(name + ' = 11', 'a', 'exec') + except: + return False + return True + + +def indent(lines, ind=4): + return ind * ' ' + lines.replace('\n', '\n' + ind * ' ').rstrip(' ') + + +def compose_regex(val): + reg, flags = val + #reg = REGEXP_CONVERTER._unescape_string(reg) + return u'/%s/%s' % (reg, flags) + + +def float_repr(f): + if int(f) == f: + return repr(int(f)) + return repr(f) + + +def argsplit(args, sep=','): + """used to split JS args (it is not that simple as it seems because + sep can be inside brackets). + + pass args *without* brackets! + + Used also to parse array and object elements, and more""" + parsed_len = 0 + last = 0 + splits = [] + for e in bracket_split(args, brackets=['()', '[]', '{}']): + if e[0] not in ('(', '[', '{'): + for i, char in enumerate(e): + if char == sep: + splits.append(args[last:parsed_len + i]) + last = parsed_len + i + 1 + parsed_len += len(e) + splits.append(args[last:]) + return splits + + +def bracket_split(source, brackets=('()', '{}', '[]'), strip=False): + """DOES NOT RETURN EMPTY STRINGS (can only return empty bracket content if strip=True)""" + starts = [e[0] for e in brackets] + in_bracket = 0 + n = 0 + last = 0 + while n < len(source): + e = source[n] + if not in_bracket and e in starts: + in_bracket = 1 + start = n + b_start, b_end = brackets[starts.index(e)] + elif in_bracket: + if e == b_start: + in_bracket += 1 + elif e == b_end: + in_bracket -= 1 + if not in_bracket: + if source[last:start]: + yield source[last:start] + last = n + 1 + yield source[start + strip:n + 1 - strip] + n += 1 + if source[last:]: + yield source[last:] + + +def js_comma(a, b): + return 'PyJsComma(' + a + ',' + b + ')' + + +def js_or(a, b): + return '(' + a + ' or ' + b + ')' + + +def js_bor(a, b): + return '(' + a + '|' + b + ')' + + +def js_bxor(a, b): + return '(' + a + '^' + b + ')' + + +def js_band(a, b): + return '(' + a + '&' + b + ')' + + +def js_and(a, b): + return '(' + a + ' and ' + b + ')' + + +def js_strict_eq(a, b): + return 'PyJsStrictEq(' + a + ',' + b + ')' + + +def js_strict_neq(a, b): + return 'PyJsStrictNeq(' + a + ',' + b + ')' + + +#Not handled by python in the same way like JS. For example 2==2==True returns false. +# In JS above would return true so we need brackets. +def js_abstract_eq(a, b): + return '(' + a + '==' + b + ')' + + +#just like == +def js_abstract_neq(a, b): + return '(' + a + '!=' + b + ')' + + +def js_lt(a, b): + return '(' + a + '<' + b + ')' + + +def js_le(a, b): + return '(' + a + '<=' + b + ')' + + +def js_ge(a, b): + return '(' + a + '>=' + b + ')' + + +def js_gt(a, b): + return '(' + a + '>' + b + ')' + + +def js_in(a, b): + return b + '.contains(' + a + ')' + + +def js_instanceof(a, b): + return a + '.instanceof(' + b + ')' + + +def js_lshift(a, b): + return '(' + a + '<<' + b + ')' + + +def js_rshift(a, b): + return '(' + a + '>>' + b + ')' + + +def js_shit(a, b): + return 'PyJsBshift(' + a + ',' + b + ')' + + +def js_add( + a, + b): # To simplify later process of converting unary operators + and ++ + return '(%s+%s)' % (a, b) + + +def js_sub(a, b): # To simplify + return '(%s-%s)' % (a, b) + + +def js_mul(a, b): + return '(' + a + '*' + b + ')' + + +def js_div(a, b): + return '(' + a + '/' + b + ')' + + +def js_mod(a, b): + return '(' + a + '%' + b + ')' + + +def js_typeof(a): + cand = list(bracket_split(a, ('()', ))) + if len(cand) == 2 and cand[0] == 'var.get': + return cand[0] + cand[1][:-1] + ',throw=False).typeof()' + return a + '.typeof()' + + +def js_void(a): + # eval and return undefined + return 'PyJsComma(%s, Js(None))' % a + + +def js_new(a): + cands = list(bracket_split(a, ('()', ))) + lim = len(cands) + if lim < 2: + return a + '.create()' + n = 0 + while n < lim: + c = cands[n] + if c[0] == '(': + if cands[n - 1].endswith( + '.get') and n + 1 >= lim: # last get operation. + return a + '.create()' + elif cands[n - 1][0] == '(': + return ''.join(cands[:n]) + '.create' + c + ''.join( + cands[n + 1:]) + elif cands[n - 1] == '.callprop': + beg = ''.join(cands[:n - 1]) + args = argsplit(c[1:-1], ',') + prop = args[0] + new_args = ','.join(args[1:]) + create = '.get(%s).create(%s)' % (prop, new_args) + return beg + create + ''.join(cands[n + 1:]) + n += 1 + return a + '.create()' + + +def js_delete(a): + #replace last get with delete. + c = list(bracket_split(a, ['()'])) + beg, arglist = ''.join(c[:-1]).strip(), c[-1].strip( + ) #strips just to make sure... I will remove it later + if beg[-4:] != '.get': + print(a) + raise SyntaxError('Invalid delete operation') + return beg[:-3] + 'delete' + arglist + + +def js_neg(a): + return '(-' + a + ')' + + +def js_pos(a): + return '(+' + a + ')' + + +def js_inv(a): + return '(~' + a + ')' + + +def js_not(a): + return a + '.neg()' + + +def js_postfix(a, inc, post): + bra = list(bracket_split(a, ('()', ))) + meth = bra[-2] + if not meth.endswith('get'): + raise SyntaxError('Invalid ++ or -- operation.') + bra[-2] = bra[-2][:-3] + 'put' + bra[-1] = '(%s,Js(%s.to_number())%sJs(1))' % (bra[-1][1:-1], a, + '+' if inc else '-') + res = ''.join(bra) + return res if not post else '(%s%sJs(1))' % (res, '-' if inc else '+') + + +def js_pre_inc(a): + return js_postfix(a, True, False) + + +def js_post_inc(a): + return js_postfix(a, True, True) + + +def js_pre_dec(a): + return js_postfix(a, False, False) + + +def js_post_dec(a): + return js_postfix(a, False, True) + + +CONTINUE_LABEL = 'JS_CONTINUE_LABEL_%s' +BREAK_LABEL = 'JS_BREAK_LABEL_%s' +PREPARE = '''HOLDER = var.own.get(NAME)\nvar.force_own_put(NAME, PyExceptionToJs(PyJsTempException))\n''' +RESTORE = '''if HOLDER is not None:\n var.own[NAME] = HOLDER\nelse:\n del var.own[NAME]\ndel HOLDER\n''' +TRY_CATCH = '''%stry:\nBLOCKfinally:\n%s''' % (PREPARE, indent(RESTORE)) + +OR = {'||': js_or} +AND = {'&&': js_and} +BOR = {'|': js_bor} +BXOR = {'^': js_bxor} +BAND = {'&': js_band} + +EQS = { + '===': js_strict_eq, + '!==': js_strict_neq, + '==': js_abstract_eq, # we need == and != too. Read a note above method + '!=': js_abstract_neq +} + +#Since JS does not have chained comparisons we need to implement all cmp methods. +COMPS = { + '<': js_lt, + '<=': js_le, + '>=': js_ge, + '>': js_gt, + 'instanceof': js_instanceof, #todo change to validitate + 'in': js_in +} + +BSHIFTS = {'<<': js_lshift, '>>': js_rshift, '>>>': js_shit} + +ADDS = {'+': js_add, '-': js_sub} + +MULTS = {'*': js_mul, '/': js_div, '%': js_mod} +BINARY = {} +BINARY.update(ADDS) +BINARY.update(MULTS) +BINARY.update(BSHIFTS) +BINARY.update(COMPS) +BINARY.update(EQS) +BINARY.update(BAND) +BINARY.update(BXOR) +BINARY.update(BOR) +BINARY.update(AND) +BINARY.update(OR) +#Note they dont contain ++ and -- methods because they both have 2 different methods +# correct method will be found automatically in translate function +UNARY = { + 'typeof': js_typeof, + 'void': js_void, + 'new': js_new, + 'delete': js_delete, + '!': js_not, + '-': js_neg, + '+': js_pos, + '~': js_inv, + '++': None, + '--': None +} diff --git a/libs/js2py/translators/jsregexps.py b/libs/js2py/translators/jsregexps.py new file mode 100644 index 000000000..235d67c78 --- /dev/null +++ b/libs/js2py/translators/jsregexps.py @@ -0,0 +1,211 @@ +from pyjsparser.pyjsparserdata import * + +REGEXP_SPECIAL_SINGLE = {'\\', '^', '$', '*', '+', '?', '.'} + +NOT_PATTERN_CHARS = { + '^', '$', '\\', '.', '*', '+', '?', '(', ')', '[', ']', '|' +} # what about '{', '}', ??? + +CHAR_CLASS_ESCAPE = {'d', 'D', 's', 'S', 'w', 'W'} +CONTROL_ESCAPE_CHARS = {'f', 'n', 'r', 't', 'v'} +CONTROL_LETTERS = { + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', + 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', + 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' +} + + +def SpecialChar(char): + return {'type': 'SpecialChar', 'content': char} + + +def isPatternCharacter(char): + return char not in NOT_PATTERN_CHARS + + +class JsRegExpParser: + def __init__(self, source, flags): + self.source = source + self.flags = flags + self.index = 0 + self.length = len(source) + self.lineNumber = 0 + self.lineStart = 0 + + def parsePattern(self): + '''Perform sctring escape - for regexp literals''' + return {'type': 'Pattern', 'contents': self.parseDisjunction()} + + def parseDisjunction(self): + alternatives = [] + while True: + alternatives.append(self.parseAlternative()) + if not self.isEOF(): + self.expect_character('|') + else: + break + return {'type': 'Disjunction', 'contents': alternatives} + + def isEOF(self): + if self.index >= self.length: + return True + return False + + def expect_character(self, character): + if self.source[self.index] != character: + self.throwUnexpected(character) + self.index += 1 + + def parseAlternative(self): + contents = [] + while not self.isEOF() and self.source[self.index] != '|': + contents.append(self.parseTerm()) + return {'type': 'Alternative', 'contents': contents} + + def follows(self, chars): + for i, c in enumerate(chars): + if self.index + i >= self.length or self.source[self.index + + i] != c: + return False + return True + + def parseTerm(self): + assertion = self.parseAssertion() + if assertion: + return assertion + else: + return { + 'type': 'Term', + 'contents': self.parseAtom() + } # quantifier will go inside atom! + + def parseAssertion(self): + if self.follows('$'): + content = SpecialChar('$') + self.index += 1 + elif self.follows('^'): + content = SpecialChar('^') + self.index += 1 + elif self.follows('\\b'): + content = SpecialChar('\\b') + self.index += 2 + elif self.follows('\\B'): + content = SpecialChar('\\B') + self.index += 2 + elif self.follows('(?='): + self.index += 3 + dis = self.parseDisjunction() + self.expect_character(')') + content = {'type': 'Lookached', 'contents': dis, 'negated': False} + elif self.follows('(?!'): + self.index += 3 + dis = self.parseDisjunction() + self.expect_character(')') + content = {'type': 'Lookached', 'contents': dis, 'negated': True} + else: + return None + return {'type': 'Assertion', 'content': content} + + def parseAtom(self): + if self.follows('.'): + content = SpecialChar('.') + self.index += 1 + elif self.follows('\\'): + self.index += 1 + content = self.parseAtomEscape() + elif self.follows('['): + content = self.parseCharacterClass() + elif self.follows('(?:'): + self.index += 3 + dis = self.parseDisjunction() + self.expect_character(')') + content = 'idk' + elif self.follows('('): + self.index += 1 + dis = self.parseDisjunction() + self.expect_character(')') + content = 'idk' + elif isPatternCharacter(self.source[self.index]): + content = self.source[self.index] + self.index += 1 + else: + return None + quantifier = self.parseQuantifier() + return {'type': 'Atom', 'content': content, 'quantifier': quantifier} + + def parseQuantifier(self): + prefix = self.parseQuantifierPrefix() + if not prefix: + return None + greedy = True + if self.follows('?'): + self.index += 1 + greedy = False + return {'type': 'Quantifier', 'contents': prefix, 'greedy': greedy} + + def parseQuantifierPrefix(self): + if self.isEOF(): + return None + if self.follows('+'): + content = '+' + self.index += 1 + elif self.follows('?'): + content = '?' + self.index += 1 + elif self.follows('*'): + content = '*' + self.index += 1 + elif self.follows( + '{' + ): # try matching otherwise return None and restore the state + i = self.index + self.index += 1 + digs1 = self.scanDecimalDigs() + # if no minimal number of digs provided then return no quantifier + if not digs1: + self.index = i + return None + # scan char limit if provided + if self.follows(','): + self.index += 1 + digs2 = self.scanDecimalDigs() + else: + digs2 = '' + # must be valid! + if not self.follows('}'): + self.index = i + return None + else: + self.expect_character('}') + content = int(digs1), int(digs2) if digs2 else None + else: + return None + return content + + def parseAtomEscape(self): + ch = self.source[self.index] + if isDecimalDigit(ch) and ch != 0: + digs = self.scanDecimalDigs() + elif ch in CHAR_CLASS_ESCAPE: + self.index += 1 + return SpecialChar('\\' + ch) + else: + return self.parseCharacterEscape() + + def parseCharacterEscape(self): + ch = self.source[self.index] + if ch in CONTROL_ESCAPE_CHARS: + return SpecialChar('\\' + ch) + if ch == 'c': + 'ok, fuck this shit.' + + def scanDecimalDigs(self): + s = self.index + while not self.isEOF() and isDecimalDigit(self.source[self.index]): + self.index += 1 + return self.source[s:self.index] + + +a = JsRegExpParser('a(?=x)', '') +print(a.parsePattern()) diff --git a/libs/js2py/translators/translating_nodes.py b/libs/js2py/translators/translating_nodes.py new file mode 100644 index 000000000..286714f91 --- /dev/null +++ b/libs/js2py/translators/translating_nodes.py @@ -0,0 +1,688 @@ +from __future__ import unicode_literals +from pyjsparser.pyjsparserdata import * +from .friendly_nodes import * +import random +import six + +if six.PY3: + from functools import reduce + xrange = range + unicode = str +# number of characters above which expression will be split to multiple lines in order to avoid python parser stack overflow +# still experimental so I suggest to set it to 400 in order to avoid common errors +# set it to smaller value only if you have problems with parser stack overflow +LINE_LEN_LIMIT = 400 # 200 # or any other value - the larger the smaller probability of errors :) + + +class ForController: + def __init__(self): + self.inside = [False] + self.update = '' + + def enter_for(self, update): + self.inside.append(True) + self.update = update + + def leave_for(self): + self.inside.pop() + + def enter_other(self): + self.inside.append(False) + + def leave_other(self): + self.inside.pop() + + def is_inside(self): + return self.inside[-1] + + +class InlineStack: + NAME = 'PyJs_%s_%d_' + + def __init__(self): + self.reps = {} + self.names = [] + + def inject_inlines(self, source): + for lval in self.names: # first in first out! Its important by the way + source = inject_before_lval(source, lval, self.reps[lval]) + return source + + def require(self, typ): + name = self.NAME % (typ, len(self.names)) + self.names.append(name) + return name + + def define(self, name, val): + self.reps[name] = val + + def reset(self): + self.rel = {} + self.names = [] + + +class ContextStack: + def __init__(self): + self.to_register = set([]) + self.to_define = {} + + def reset(self): + self.to_register = set([]) + self.to_define = {} + + def register(self, var): + self.to_register.add(var) + + def define(self, name, code): + self.to_define[name] = code + self.register(name) + + def get_code(self): + code = 'var.registers([%s])\n' % ', '.join( + repr(e) for e in self.to_register) + for name, func_code in six.iteritems(self.to_define): + code += func_code + return code + + +def clean_stacks(): + global Context, inline_stack + Context = ContextStack() + inline_stack = InlineStack() + + +def to_key(literal_or_identifier): + ''' returns string representation of this object''' + if literal_or_identifier['type'] == 'Identifier': + return literal_or_identifier['name'] + elif literal_or_identifier['type'] == 'Literal': + k = literal_or_identifier['value'] + if isinstance(k, float): + return unicode(float_repr(k)) + elif 'regex' in literal_or_identifier: + return compose_regex(k) + elif isinstance(k, bool): + return 'true' if k else 'false' + elif k is None: + return 'null' + else: + return unicode(k) + + +def trans(ele, standard=False): + """Translates esprima syntax tree to python by delegating to appropriate translating node""" + try: + node = globals().get(ele['type']) + if not node: + raise NotImplementedError('%s is not supported!' % ele['type']) + if standard: + node = node.__dict__[ + 'standard'] if 'standard' in node.__dict__ else node + return node(**ele) + except: + #print ele + raise + + +def limited(func): + '''Decorator limiting resulting line length in order to avoid python parser stack overflow - + If expression longer than LINE_LEN_LIMIT characters then it will be moved to upper line + USE ONLY ON EXPRESSIONS!!! ''' + + def f(standard=False, **args): + insert_pos = len( + inline_stack.names + ) # in case line is longer than limit we will have to insert the lval at current position + # this is because calling func will change inline_stack. + # we cant use inline_stack.require here because we dont know whether line overflows yet + res = func(**args) + if len(res) > LINE_LEN_LIMIT: + name = inline_stack.require('LONG') + inline_stack.names.pop() + inline_stack.names.insert(insert_pos, name) + res = 'def %s(var=var):\n return %s\n' % (name, res) + inline_stack.define(name, res) + return name + '()' + else: + return res + + f.__dict__['standard'] = func + return f + + +# ==== IDENTIFIERS AND LITERALS ======= + +inf = float('inf') + + +def Literal(type, value, raw, regex=None): + if regex: # regex + return 'JsRegExp(%s)' % repr(compose_regex(value)) + elif value is None: # null + return 'var.get(u"null")' + # Todo template + # String, Bool, Float + return 'Js(%s)' % repr(value) if value != inf else 'Js(float("inf"))' + + +def Identifier(type, name): + return 'var.get(%s)' % repr(name) + + +@limited +def MemberExpression(type, computed, object, property): + far_left = trans(object) + if computed: # obj[prop] type accessor + # may be literal which is the same in every case so we can save some time on conversion + if property['type'] == 'Literal': + prop = repr(to_key(property)) + else: # worst case + prop = trans(property) + else: # always the same since not computed (obj.prop accessor) + prop = repr(to_key(property)) + return far_left + '.get(%s)' % prop + + +def ThisExpression(type): + return 'var.get(u"this")' + + +@limited +def CallExpression(type, callee, arguments): + arguments = [trans(e) for e in arguments] + if callee['type'] == 'MemberExpression': + far_left = trans(callee['object']) + if callee['computed']: # obj[prop] type accessor + # may be literal which is the same in every case so we can save some time on conversion + if callee['property']['type'] == 'Literal': + prop = repr(to_key(callee['property'])) + else: # worst case + prop = trans( + callee['property']) # its not a string literal! so no repr + else: # always the same since not computed (obj.prop accessor) + prop = repr(to_key(callee['property'])) + arguments.insert(0, prop) + return far_left + '.callprop(%s)' % ', '.join(arguments) + else: # standard call + return trans(callee) + '(%s)' % ', '.join(arguments) + + +# ========== ARRAYS ============ + + +def ArrayExpression(type, elements): # todo fix null inside problem + return 'Js([%s])' % ', '.join(trans(e) if e else 'None' for e in elements) + + +# ========== OBJECTS ============= + + +def ObjectExpression(type, properties): + name = inline_stack.require('Object') + elems = [] + after = '' + for p in properties: + if p['kind'] == 'init': + elems.append('%s:%s' % Property(**p)) + elif p['kind'] == 'set': + k, setter = Property( + **p + ) # setter is just a lval referring to that function, it will be defined in InlineStack automatically + after += '%s.define_own_property(%s, {"set":%s, "configurable":True, "enumerable":True})\n' % ( + name, k, setter) + elif p['kind'] == 'get': + k, getter = Property(**p) + after += '%s.define_own_property(%s, {"get":%s, "configurable":True, "enumerable":True})\n' % ( + name, k, getter) + else: + raise RuntimeError('Unexpected object propery kind') + obj = '%s = Js({%s})\n' % (name, ','.join(elems)) + inline_stack.define(name, obj + after) + return name + + +def Property(type, kind, key, computed, value, method, shorthand): + if shorthand or computed: + raise NotImplementedError( + 'Shorthand and Computed properties not implemented!') + k = to_key(key) + if k is None: + raise SyntaxError('Invalid key in dictionary! Or bug in Js2Py') + v = trans(value) + return repr(k), v + + +# ========== EXPRESSIONS ============ + + +@limited +def UnaryExpression(type, operator, argument, prefix): + a = trans( + argument, standard=True + ) # unary involve some complex operations so we cant use line shorteners here + if operator == 'delete': + if argument['type'] in ('Identifier', 'MemberExpression'): + # means that operation is valid + return js_delete(a) + return 'PyJsComma(%s, Js(True))' % a # otherwise not valid, just perform expression and return true. + elif operator == 'typeof': + return js_typeof(a) + return UNARY[operator](a) + + +@limited +def BinaryExpression(type, operator, left, right): + a = trans(left) + b = trans(right) + # delegate to our friends + return BINARY[operator](a, b) + + +@limited +def UpdateExpression(type, operator, argument, prefix): + a = trans( + argument, standard=True + ) # also complex operation involving parsing of the result so no line length reducing here + return js_postfix(a, operator == '++', not prefix) + + +@limited +def AssignmentExpression(type, operator, left, right): + operator = operator[:-1] + if left['type'] == 'Identifier': + if operator: + return 'var.put(%s, %s, %s)' % (repr(to_key(left)), trans(right), + repr(operator)) + else: + return 'var.put(%s, %s)' % (repr(to_key(left)), trans(right)) + elif left['type'] == 'MemberExpression': + far_left = trans(left['object']) + if left['computed']: # obj[prop] type accessor + # may be literal which is the same in every case so we can save some time on conversion + if left['property']['type'] == 'Literal': + prop = repr(to_key(left['property'])) + else: # worst case + prop = trans( + left['property']) # its not a string literal! so no repr + else: # always the same since not computed (obj.prop accessor) + prop = repr(to_key(left['property'])) + if operator: + return far_left + '.put(%s, %s, %s)' % (prop, trans(right), + repr(operator)) + else: + return far_left + '.put(%s, %s)' % (prop, trans(right)) + else: + raise SyntaxError('Invalid left hand side in assignment!') + + +six + + +@limited +def SequenceExpression(type, expressions): + return reduce(js_comma, (trans(e) for e in expressions)) + + +@limited +def NewExpression(type, callee, arguments): + return trans(callee) + '.create(%s)' % ', '.join( + trans(e) for e in arguments) + + +@limited +def ConditionalExpression( + type, test, consequent, + alternate): # caused plenty of problems in my home-made translator :) + return '(%s if %s else %s)' % (trans(consequent), trans(test), + trans(alternate)) + + +# =========== STATEMENTS ============= + + +def BlockStatement(type, body): + return StatementList( + body) # never returns empty string! In the worst case returns pass\n + + +def ExpressionStatement(type, expression, **ommit): + return trans(expression) + '\n' # end expression space with new line + + +def BreakStatement(type, label): + if label: + return 'raise %s("Breaked")\n' % (get_break_label(label['name'])) + else: + return 'break\n' + + +def ContinueStatement(type, label): + if label: + return 'raise %s("Continued")\n' % (get_continue_label(label['name'])) + else: + return 'continue\n' + + +def ReturnStatement(type, argument): + return 'return %s\n' % (trans(argument) + if argument else "var.get('undefined')") + + +def EmptyStatement(type): + return 'pass\n' + + +def DebuggerStatement(type): + return 'pass\n' + + +def DoWhileStatement(type, body, test): + inside = trans(body) + 'if not %s:\n' % trans(test) + indent('break\n') + result = 'while 1:\n' + indent(inside) + return result + + +def ForStatement(type, init, test, update, body): + update = indent(trans(update)) if update else '' + init = trans(init) if init else '' + if not init.endswith('\n'): + init += '\n' + test = trans(test) if test else '1' + if not update: + result = '#for JS loop\n%swhile %s:\n%s%s\n' % ( + init, test, indent(trans(body)), update) + else: + result = '#for JS loop\n%swhile %s:\n' % (init, test) + body = 'try:\n%sfinally:\n %s\n' % (indent(trans(body)), update) + result += indent(body) + return result + + +def ForInStatement(type, left, right, body, each): + res = 'for PyJsTemp in %s:\n' % trans(right) + if left['type'] == "VariableDeclaration": + addon = trans(left) # make sure variable is registered + if addon != 'pass\n': + res = addon + res # we have to execute this expression :( + # now extract the name + try: + name = left['declarations'][0]['id']['name'] + except: + raise RuntimeError('Unusual ForIn loop') + elif left['type'] == 'Identifier': + name = left['name'] + else: + raise RuntimeError('Unusual ForIn loop') + res += indent('var.put(%s, PyJsTemp)\n' % repr(name) + trans(body)) + return res + + +def IfStatement(type, test, consequent, alternate): + # NOTE we cannot do elif because function definition inside elif statement would not be possible! + IF = 'if %s:\n' % trans(test) + IF += indent(trans(consequent)) + if not alternate: + return IF + ELSE = 'else:\n' + indent(trans(alternate)) + return IF + ELSE + + +def LabeledStatement(type, label, body): + # todo consider using smarter approach! + inside = trans(body) + defs = '' + if inside.startswith('while ') or inside.startswith( + 'for ') or inside.startswith('#for'): + # we have to add contine label as well... + # 3 or 1 since #for loop type has more lines before real for. + sep = 1 if not inside.startswith('#for') else 3 + cont_label = get_continue_label(label['name']) + temp = inside.split('\n') + injected = 'try:\n' + '\n'.join(temp[sep:]) + injected += 'except %s:\n pass\n' % cont_label + inside = '\n'.join(temp[:sep]) + '\n' + indent(injected) + defs += 'class %s(Exception): pass\n' % cont_label + break_label = get_break_label(label['name']) + inside = 'try:\n%sexcept %s:\n pass\n' % (indent(inside), break_label) + defs += 'class %s(Exception): pass\n' % break_label + return defs + inside + + +def StatementList(lis): + if lis: # ensure we don't return empty string because it may ruin indentation! + code = ''.join(trans(e) for e in lis) + return code if code else 'pass\n' + else: + return 'pass\n' + + +def PyimportStatement(type, imp): + lib = imp['name'] + jlib = 'PyImport_%s' % lib + code = 'import %s as %s\n' % (lib, jlib) + #check whether valid lib name... + try: + compile(code, '', 'exec') + except: + raise SyntaxError( + 'Invalid Python module name (%s) in pyimport statement' % lib) + # var.pyimport will handle module conversion to PyJs object + code += 'var.pyimport(%s, %s)\n' % (repr(lib), jlib) + return code + + +def SwitchStatement(type, discriminant, cases): + #TODO there will be a problem with continue in a switch statement.... FIX IT + code = 'while 1:\n' + indent('SWITCHED = False\nCONDITION = (%s)\n') + code = code % trans(discriminant) + for case in cases: + case_code = None + if case['test']: # case (x): + case_code = 'if SWITCHED or PyJsStrictEq(CONDITION, %s):\n' % ( + trans(case['test'])) + else: # default: + case_code = 'if True:\n' + case_code += indent('SWITCHED = True\n') + case_code += indent(StatementList(case['consequent'])) + # one more indent for whole + code += indent(case_code) + # prevent infinite loop and sort out nested switch... + code += indent('SWITCHED = True\nbreak\n') + return code + + +def ThrowStatement(type, argument): + return 'PyJsTempException = JsToPyException(%s)\nraise PyJsTempException\n' % trans( + argument) + + +def TryStatement(type, block, handler, handlers, guardedHandlers, finalizer): + result = 'try:\n%s' % indent(trans(block)) + # complicated catch statement... + if handler: + identifier = handler['param']['name'] + holder = 'PyJsHolder_%s_%d' % (to_hex(identifier), + random.randrange(1e8)) + identifier = repr(identifier) + result += 'except PyJsException as PyJsTempException:\n' + # fill in except ( catch ) block and remember to recover holder variable to its previous state + result += indent( + TRY_CATCH.replace('HOLDER', + holder).replace('NAME', identifier).replace( + 'BLOCK', indent(trans(handler['body'])))) + # translate finally statement if present + if finalizer: + result += 'finally:\n%s' % indent(trans(finalizer)) + return result + + +def LexicalDeclaration(type, declarations, kind): + raise NotImplementedError( + 'let and const not implemented yet but they will be soon! Check github for updates.' + ) + + +def VariableDeclarator(type, id, init): + name = id['name'] + # register the name if not already registered + Context.register(name) + if init: + return 'var.put(%s, %s)\n' % (repr(name), trans(init)) + return '' + + +def VariableDeclaration(type, declarations, kind): + code = ''.join(trans(d) for d in declarations) + return code if code else 'pass\n' + + +def WhileStatement(type, test, body): + result = 'while %s:\n' % trans(test) + indent(trans(body)) + return result + + +def WithStatement(type, object, body): + raise NotImplementedError('With statement not implemented!') + + +def Program(type, body): + inline_stack.reset() + code = ''.join(trans(e) for e in body) + # here add hoisted elements (register variables and define functions) + code = Context.get_code() + code + # replace all inline variables + code = inline_stack.inject_inlines(code) + return code + + +# ======== FUNCTIONS ============ + + +def FunctionDeclaration(type, id, params, defaults, body, generator, + expression): + if generator: + raise NotImplementedError('Generators not supported') + if defaults: + raise NotImplementedError('Defaults not supported') + if not id: + return FunctionExpression(type, id, params, defaults, body, generator, + expression) + '\n' + JsName = id['name'] + PyName = 'PyJsHoisted_%s_' % JsName + PyName = PyName if is_valid_py_name(PyName) else 'PyJsHoistedNonPyName' + # this is quite complicated + global Context + previous_context = Context + # change context to the context of this function + Context = ContextStack() + # translate body within current context + code = trans(body) + # get arg names + vars = [v['name'] for v in params] + # args are automaticaly registered variables + Context.to_register.update(vars) + # add all hoisted elements inside function + code = Context.get_code() + code + # check whether args are valid python names: + used_vars = [] + for v in vars: + if is_valid_py_name(v): + used_vars.append(v) + else: # invalid arg in python, for example $, replace with alternatice arg + used_vars.append('PyJsArg_%s_' % to_hex(v)) + header = '@Js\n' + header += 'def %s(%sthis, arguments, var=var):\n' % ( + PyName, ', '.join(used_vars) + (', ' if vars else '')) + # transfer names from Py scope to Js scope + arg_map = dict(zip(vars, used_vars)) + arg_map.update({'this': 'this', 'arguments': 'arguments'}) + arg_conv = 'var = Scope({%s}, var)\n' % ', '.join( + repr(k) + ':' + v for k, v in six.iteritems(arg_map)) + # and finally set the name of the function to its real name: + footer = '%s.func_name = %s\n' % (PyName, repr(JsName)) + footer += 'var.put(%s, %s)\n' % (repr(JsName), PyName) + whole_code = header + indent(arg_conv + code) + footer + # restore context + Context = previous_context + # define in upper context + Context.define(JsName, whole_code) + return 'pass\n' + + +def FunctionExpression(type, id, params, defaults, body, generator, + expression): + if generator: + raise NotImplementedError('Generators not supported') + if defaults: + raise NotImplementedError('Defaults not supported') + JsName = id['name'] if id else 'anonymous' + if not is_valid_py_name(JsName): + ScriptName = 'InlineNonPyName' + else: + ScriptName = JsName + PyName = inline_stack.require(ScriptName) # this is unique + + # again quite complicated + global Context + previous_context = Context + # change context to the context of this function + Context = ContextStack() + # translate body within current context + code = trans(body) + # get arg names + vars = [v['name'] for v in params] + # args are automaticaly registered variables + Context.to_register.update(vars) + # add all hoisted elements inside function + code = Context.get_code() + code + # check whether args are valid python names: + used_vars = [] + for v in vars: + if is_valid_py_name(v): + used_vars.append(v) + else: # invalid arg in python, for example $, replace with alternatice arg + used_vars.append('PyJsArg_%s_' % to_hex(v)) + header = '@Js\n' + header += 'def %s(%sthis, arguments, var=var):\n' % ( + PyName, ', '.join(used_vars) + (', ' if vars else '')) + # transfer names from Py scope to Js scope + arg_map = dict(zip(vars, used_vars)) + arg_map.update({'this': 'this', 'arguments': 'arguments'}) + if id: # make self available from inside... + if id['name'] not in arg_map: + arg_map[id['name']] = PyName + arg_conv = 'var = Scope({%s}, var)\n' % ', '.join( + repr(k) + ':' + v for k, v in six.iteritems(arg_map)) + # and finally set the name of the function to its real name: + footer = '%s._set_name(%s)\n' % (PyName, repr(JsName)) + whole_code = header + indent(arg_conv + code) + footer + # restore context + Context = previous_context + # define in upper context + inline_stack.define(PyName, whole_code) + return PyName + + +LogicalExpression = BinaryExpression +PostfixExpression = UpdateExpression + +clean_stacks() + +if __name__ == '__main__': + import codecs + import time + import pyjsparser + + c = None #'''`ijfdij`''' + if not c: + with codecs.open("esp.js", "r", "utf-8") as f: + c = f.read() + + print('Started') + t = time.time() + res = trans(pyjsparser.PyJsParser().parse(c)) + dt = time.time() - t + 0.000000001 + print('Translated everyting in', round(dt, 5), 'seconds.') + print('Thats %d characters per second' % int(len(c) / dt)) + with open('res.py', 'w') as f: + f.write(res) diff --git a/libs/js2py/translators/translator.py b/libs/js2py/translators/translator.py new file mode 100644 index 000000000..16ed5bdb6 --- /dev/null +++ b/libs/js2py/translators/translator.py @@ -0,0 +1,189 @@ +import pyjsparser +import pyjsparser.parser +from . import translating_nodes + +import hashlib +import re + +# Enable Js2Py exceptions and pyimport in parser +pyjsparser.parser.ENABLE_PYIMPORT = True + +# the re below is how we'll recognise numeric constants. +# it finds any 'simple numeric that is not preceded with an alphanumeric character +# the numeric can be a float (so a dot is found) but +# it does not recognise notation such as 123e5, 0xFF, infinity or NaN +CP_NUMERIC_RE = re.compile(r'(?= (3, 4): + for inst in dis.Bytecode(code_obj): + yield inst + else: + # otherwise we have to manually parse + code = code_obj.co_code + NewInstruction = namedtuple('Instruction', ('opcode', 'arg')) + if six.PY2: + code = map(ord, code) + i, L = 0, len(code) + extended_arg = 0 + while i < L: + op = code[i] + i += 1 + if op < opcode.HAVE_ARGUMENT: + yield NewInstruction(op, None) + continue + oparg = code[i] + (code[i + 1] << 8) + extended_arg + extended_arg = 0 + i += 2 + if op == opcode.EXTENDED_ARG: + extended_arg = oparg << 16 + continue + yield NewInstruction(op, oparg) + + +def write_instruction(op, arg): + if sys.version_info < (3, 6): + if arg is None: + return [chr(op)] + elif arg <= 65536: + return [chr(op), chr(arg & 255), chr((arg >> 8) & 255)] + elif arg <= 4294967296: + return [ + chr(opcode.EXTENDED_ARG), + chr((arg >> 16) & 255), + chr((arg >> 24) & 255), + chr(op), + chr(arg & 255), + chr((arg >> 8) & 255) + ] + else: + raise ValueError("Invalid oparg: {0} is too large".format(oparg)) + else: # python 3.6+ uses wordcode instead of bytecode and they already supply all the EXTENDEND_ARG ops :) + if arg is None: + return [chr(op), 0] + return [chr(op), arg & 255] + # the code below is for case when extended args are to be determined automatically + # if op == opcode.EXTENDED_ARG: + # return [] # this will be added automatically + # elif arg < 1 << 8: + # return [chr(op), arg] + # elif arg < 1 << 32: + # subs = [1<<24, 1<<16, 1<<8] # allowed op extension sizes + # for sub in subs: + # if arg >= sub: + # fit = int(arg / sub) + # return [chr(opcode.EXTENDED_ARG), fit] + write_instruction(op, arg - fit * sub) + # else: + # raise ValueError("Invalid oparg: {0} is too large".format(oparg)) + + +def check(code_obj): + old_bytecode = code_obj.co_code + insts = list(instructions(code_obj)) + + pos_to_inst = {} + bytelist = [] + + for inst in insts: + pos_to_inst[len(bytelist)] = inst + bytelist.extend(write_instruction(inst.opcode, inst.arg)) + if six.PY2: + new_bytecode = ''.join(bytelist) + else: + new_bytecode = bytes(bytelist) + if new_bytecode != old_bytecode: + print(new_bytecode) + print(old_bytecode) + for i in range(min(len(new_bytecode), len(old_bytecode))): + if old_bytecode[i] != new_bytecode[i]: + while 1: + if i in pos_to_inst: + print(pos_to_inst[i]) + print(pos_to_inst[i - 2]) + print(list(map(chr, old_bytecode))[i - 4:i + 8]) + print(bytelist[i - 4:i + 8]) + break + raise RuntimeError( + 'Your python version made changes to the bytecode') + + +check(six.get_function_code(check)) + +if __name__ == '__main__': + x = 'Wrong' + dick = 3000 + + def func(a): + print(x, y, z, a) + print(dick) + d = (x, ) + for e in (e for e in x): + print(e) + return x, y, z + + func2 = types.FunctionType( + append_arguments(six.get_function_code(func), ('x', 'y', 'z')), + six.get_function_globals(func), + func.__name__, + closure=six.get_function_closure(func)) + args = (2, 2, 3, 4), 3, 4 + assert func2(1, *args) == args diff --git a/libs/pyjsparser/__init__.py b/libs/pyjsparser/__init__.py new file mode 100644 index 000000000..2a9de69e9 --- /dev/null +++ b/libs/pyjsparser/__init__.py @@ -0,0 +1,4 @@ +__all__ = ['PyJsParser', 'parse', 'JsSyntaxError'] +__author__ = 'Piotr Dabkowski' +__version__ = '2.2.0' +from .parser import PyJsParser, parse, JsSyntaxError \ No newline at end of file diff --git a/libs/pyjsparser/parser.py b/libs/pyjsparser/parser.py new file mode 100644 index 000000000..a67869ce8 --- /dev/null +++ b/libs/pyjsparser/parser.py @@ -0,0 +1,2898 @@ +# The MIT License +# +# Copyright 2014, 2015 Piotr Dabkowski +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the 'Software'), +# to deal in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, subject +# to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all copies or +# substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +# LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE +from __future__ import unicode_literals +from .pyjsparserdata import * +from .std_nodes import * +from pprint import pprint +import sys + +__all__ = ['PyJsParser', 'parse', 'ENABLE_JS2PY_ERRORS', 'ENABLE_PYIMPORT', 'JsSyntaxError'] +REGEXP_SPECIAL_SINGLE = ('\\', '^', '$', '*', '+', '?', '.', '[', ']', '(', ')', '{', '{', '|', '-') +ENABLE_PYIMPORT = False +ENABLE_JS2PY_ERRORS = False + +PY3 = sys.version_info >= (3,0) + +if PY3: + basestring = str + long = int + xrange = range + unicode = str + +ESPRIMA_VERSION = '2.2.0' +DEBUG = False +# Small naming convention changes +# len -> leng +# id -> d +# type -> typ +# str -> st +true = True +false = False +null = None + + +class PyJsParser: + """ Usage: + parser = PyJsParser() + parser.parse('var JavaScriptCode = 5.1') + """ + + def __init__(self): + self.clean() + + def test(self, code): + pprint(self.parse(code)) + + def clean(self): + self.strict = None + self.sourceType = None + self.index = 0 + self.lineNumber = 1 + self.lineStart = 0 + self.hasLineTerminator = None + self.lastIndex = None + self.lastLineNumber = None + self.lastLineStart = None + self.startIndex = None + self.startLineNumber = None + self.startLineStart = None + self.scanning = None + self.lookahead = None + self.state = None + self.extra = None + self.isBindingElement = None + self.isAssignmentTarget = None + self.firstCoverInitializedNameError = None + + # 7.4 Comments + + def skipSingleLineComment(self, offset): + start = self.index - offset; + while self.index < self.length: + ch = self.source[self.index]; + self.index += 1 + if isLineTerminator(ch): + if (ord(ch) == 13 and ord(self.source[self.index]) == 10): + self.index += 1 + self.lineNumber += 1 + self.hasLineTerminator = True + self.lineStart = self.index + return + + def skipMultiLineComment(self): + while self.index < self.length: + ch = ord(self.source[self.index]) + if isLineTerminator(ch): + if (ch == 0x0D and ord(self.source[self.index + 1]) == 0x0A): + self.index += 1 + self.lineNumber += 1 + self.index += 1 + self.hasLineTerminator = True + self.lineStart = self.index + elif ch == 0x2A: + # Block comment ends with '*/'. + if ord(self.source[self.index + 1]) == 0x2F: + self.index += 2 + return + self.index += 1 + else: + self.index += 1 + self.tolerateUnexpectedToken() + + def skipComment(self): + self.hasLineTerminator = False + start = (self.index == 0) + while self.index < self.length: + ch = ord(self.source[self.index]) + if isWhiteSpace(ch): + self.index += 1 + elif isLineTerminator(ch): + self.hasLineTerminator = True + self.index += 1 + if (ch == 0x0D and ord(self.source[self.index]) == 0x0A): + self.index += 1 + self.lineNumber += 1 + self.lineStart = self.index + start = True + elif (ch == 0x2F): # U+002F is '/' + ch = ord(self.source[self.index + 1]) + if (ch == 0x2F): + self.index += 2 + self.skipSingleLineComment(2) + start = True + elif (ch == 0x2A): # U+002A is '*' + self.index += 2 + self.skipMultiLineComment() + else: + break + elif (start and ch == 0x2D): # U+002D is '-' + # U+003E is '>' + if (ord(self.source[self.index + 1]) == 0x2D) and (ord(self.source[self.index + 2]) == 0x3E): + # '-->' is a single-line comment + self.index += 3 + self.skipSingleLineComment(3) + else: + break + elif (ch == 0x3C): # U+003C is '<' + if self.source[self.index + 1: self.index + 4] == '!--': + #