commit c9e913260943ae0d0386b61c73cac20f028485fb Author: wangqi <3188864257@qq.com> Date: Wed Nov 20 18:54:53 2024 +0800 feat: 首次添加 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..569ce53 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +**/node_modules +**/dist \ No newline at end of file diff --git a/.env b/.env new file mode 100644 index 0000000..d248e08 --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +VITE_BASE_API_SYSTEM = '/remote/admin-api/system' +VITE_BASE_API_EAM = '/remote/admin-api/eam' +VITE_DEVICE_INFO_INTERVAL = 35000 \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..76f6148 --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +VITE_BASE_URL = 'http://192.168.1.3:48080' +VITE_SOCKET_SERVER = 'http://192.168.1.3:7080' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..07b19a4 --- /dev/null +++ b/.env.production @@ -0,0 +1,2 @@ +VITE_BASE_URL = 'http://62.234.18.176:7080' +VITE_SOCKET_SERVER = 'http://62.234.18.176:7080' \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1af76e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +.DS_Store + +.vscode + +# package manager log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.npm + + +yarn.lock +package-lock.json +pnpm-lock.yaml + +# eslint cache +.eslintcache +# stylelint cache +.stylelintcache + + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +/dist +/docker_output/ +/node_modules/ +/*.tar \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5317a6b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:latest +COPY ./dist/ /etc/nginx/html +COPY nginx.conf /etc/nginx/nginx.conf +# Expose port 80 +EXPOSE 80 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..31e5a2d --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# ChuNeng + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +npm run lint +``` diff --git a/auto-imports.d.ts b/auto-imports.d.ts new file mode 100644 index 0000000..fb0c411 --- /dev/null +++ b/auto-imports.d.ts @@ -0,0 +1,73 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const ElLoading: typeof import('element-plus/es')['ElLoading'] + const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] + const ElNotification: typeof import('element-plus/es')['ElNotification'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const effectScope: typeof import('vue')['effectScope'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useId: typeof import('vue')['useId'] + const useModel: typeof import('vue')['useModel'] + const useSlots: typeof import('vue')['useSlots'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..171404d --- /dev/null +++ b/components.d.ts @@ -0,0 +1,98 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + BdMap: typeof import('./src/components/map_baidu/BdMap.vue')['default'] + ColorTitle: typeof import('./src/components/dashboard/ColorTitle.vue')['default'] + CopperModal: typeof import('./src/components/dashboard/Cropper/src/CopperModal.vue')['default'] + Cropper: typeof import('./src/components/dashboard/Cropper/src/Cropper.vue')['default'] + CropperAvatar: typeof import('./src/components/dashboard/Cropper/src/CropperAvatar.vue')['default'] + DictTag: typeof import('./src/components/dashboard/DictTag/src/DictTag.vue')['default'] + EdfsButton: typeof import('./src/components/dashboard/Edfs-button/index.vue')['default'] + EdfsContextMenu: typeof import('./src/components/dashboard/Edfs-context-menu/index.vue')['default'] + EdfsDialog: typeof import('./src/components/dashboard/Edfs-dialog.vue')['default'] + EdfsException: typeof import('./src/components/dashboard/Edfs-exception.vue')['default'] + EdfsNumberItemInput: typeof import('./src/components/dashboard/Edfs-number-item-input.vue')['default'] + EdfsTable: typeof import('./src/components/dashboard/Edfs-table/index.vue')['default'] + EdfsWrap: typeof import('./src/components/dashboard/Edfs-wrap.vue')['default'] + Editor: typeof import('./src/components/dashboard/Editor/src/Editor.vue')['default'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] + ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCascader: typeof import('element-plus/es')['ElCascader'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElCollapse: typeof import('element-plus/es')['ElCollapse'] + ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] + ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElHeader: typeof import('element-plus/es')['ElHeader'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElLink: typeof import('element-plus/es')['ElLink'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSpace: typeof import('element-plus/es')['ElSpace'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElTextarea: typeof import('element-plus/es')['ElTextarea'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + Form: typeof import('./src/components/dashboard/Form/src/Form.vue')['default'] + FormItemInput: typeof import('./src/components/dashboard/FormItemInput.vue')['default'] + FormItemSelect: typeof import('./src/components/dashboard/FormItemSelect.vue')['default'] + Icon: typeof import('./src/components/dashboard/Icon/src/Icon.vue')['default'] + IconSelect: typeof import('./src/components/dashboard/Icon/src/IconSelect.vue')['default'] + ImageViewer: typeof import('./src/components/dashboard/ImageViewer/src/ImageViewer.vue')['default'] + InputPassword: typeof import('./src/components/dashboard/InputPassword/src/InputPassword.vue')['default'] + LegendItem: typeof import('./src/components/map_tool/legend/LegendItem.vue')['default'] + Option: typeof import('./src/components/map_tool/menu/Option.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + Search: typeof import('./src/components/map_tool/control/Search.vue')['default'] + SizeAndType: typeof import('./src/components/map_tool/control/SizeAndType.vue')['default'] + Summary: typeof import('./src/components/dashboard/Summary.vue')['default'] + Tool: typeof import('./src/components/map_tool/menu/Tool.vue')['default'] + Tooltip: typeof import('./src/components/dashboard/Tooltip/src/Tooltip.vue')['default'] + UploadFile: typeof import('./src/components/dashboard/UploadFile/src/UploadFile.vue')['default'] + UploadImg: typeof import('./src/components/dashboard/UploadFile/src/UploadImg.vue')['default'] + UploadImgs: typeof import('./src/components/dashboard/UploadFile/src/UploadImgs.vue')['default'] + XButton: typeof import('./src/components/dashboard/XButton/src/XButton.vue')['default'] + XTextButton: typeof import('./src/components/dashboard/XButton/src/XTextButton.vue')['default'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/index.html b/index.html new file mode 100644 index 0000000..89cfc03 --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ + + + + + + + 平高储能平台 + + + + + +
+ + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..c21e10a --- /dev/null +++ b/nginx.conf @@ -0,0 +1,135 @@ +#user nobody; +worker_processes 4; + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +#pid logs/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include mime.types; + default_type application/octet-stream; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + + map $http_origin $corsHost { + default 0; + "~http://146.56.233.47:8760" http://146.56.233.47:8760; + } + + server { + listen 80; + server_name localhost; + + #charset koi8-r; + + #access_log logs/host.access.log main; + + location / { + root html; + index index.html index.htm; + } + + # 代理配置,解决跨域问题 + location /remote/ { + add_header 'Access-Control-Allow-origin' $corsHost; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Max-Age' 86400; + add_header 'Access-Control-Allow-Headers' '*'; + add_header 'Access-Control-Allow-Methods' '*'; + + if ($request_method = 'OPTIONS'){ + return 204; + } + proxy_pass http://146.56.233.47:8760/; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} + } + + + # another virtual host using mix of IP-, name-, and port-based configuration + # + #server { + # listen 8000; + # listen somename:8080; + # server_name somename alias another.alias; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + + + # HTTPS server + # + #server { + # listen 443 ssl; + # server_name localhost; + + # ssl_certificate cert.pem; + # ssl_certificate_key cert.key; + + # ssl_session_cache shared:SSL:1m; + # ssl_session_timeout 5m; + + # ssl_ciphers HIGH:!aNULL:!MD5; + # ssl_prefer_server_ciphers on; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0dcda6c --- /dev/null +++ b/package.json @@ -0,0 +1,87 @@ +{ + "name": "chuneng", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "run-p build-only", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "format": "prettier --write src/", + "docker-build": "docker build -t chuneng-web:v0.6 .", + "docker-save": "docker save -o ./docker_output/chuneng-web.tar chuneng-web" + }, + "dependencies": { + "@antv/x6": "^2.16.1", + "@antv/x6-plugin-clipboard": "^2.1.6", + "@antv/x6-plugin-dnd": "^2.1.1", + "@antv/x6-vue-shape": "^2.1.1", + "@element-plus/icons-vue": "^2.3.1", + "@iconify-json/ep": "^1.1.12", + "@iconify/json": "^2.2.217", + "@logicflow/core": "^1.2.17", + "@logicflow/extension": "^1.2.18", + "@purge-icons/generated": "^0.10.0", + "@tanstack/vue-table": "^8.17.3", + "@tanstack/vue-virtual": "^3.5.0", + "@types/cropperjs": "^1.3.0", + "@vueuse/core": "^11.0.1", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "^5.1.10", + "@zxcvbn-ts/core": "^3.0.4", + "big.js": "^6.2.1", + "cropperjs": "^1.6.2", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.11", + "jszmq": "^0.1.2", + "lodash": "^4.17.21", + "mitt": "^3.0.1", + "pinia": "^2.0.36", + "qs": "^6.12.1", + "vue": "^3.3.2", + "vue-echarts": "^6.6.9", + "vue-i18n": "^9.13.1", + "vue-router": "^4.2.0", + "vue-types": "^5.1.2", + "web-storage-cache": "^1.1.1", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@iconify-json/ep": "^1.1.10", + "@rushstack/eslint-patch": "^1.2.0", + "@tsconfig/node18": "^18.2.2", + "@types/big.js": "^6.2.2", + "@types/crypto-js": "^4.2.2", + "@types/lodash": "^4.17.4", + "@types/node": "^18.19.3", + "@types/qs": "^6.9.15", + "@types/three": "^0.152.1", + "@vitejs/plugin-vue": "^5.0.5", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "@vue/eslint-config-prettier": "^7.1.0", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/tsconfig": "^0.4.0", + "axios": "^1.7.2", + "dexie": "^3.2.7", + "dotenv": "^16.4.5", + "echarts": "^5.4.2", + "element-plus": "^2.7.6", + "eslint": "^8.39.0", + "eslint-plugin-vue": "^9.11.0", + "mapvgl": "^1.0.0-beta.179", + "npm-run-all": "^4.1.5", + "prettier": "^2.8.8", + "sass": "^1.62.1", + "three": "^0.152.2", + "typescript": "~5.0.4", + "unplugin-auto-import": "^0.16.7", + "unplugin-icons": "^0.16.6", + "unplugin-vue-components": "^0.25.2", + "uuid": "^9.0.0", + "vite": "^5.2.12", + "vite-plugin-purge-icons": "^0.10.0", + "vue-tsc": "^2.0.19" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..31f82c4 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/lua/convert.lua b/public/lua/convert.lua new file mode 100644 index 0000000..b9855c0 --- /dev/null +++ b/public/lua/convert.lua @@ -0,0 +1,251 @@ +-- local cjson = require("cjson") +function parseRecord(t) + local result = {} + local start = 1 + local type = hex_to_bytes(t, start, 1) + --print("type:", type) + start = start + 2 + local version = hex_to_bytes(t, start, 1) + --print("version:", version) + start = start + 2 + local time = hex_to_bytes(t, start, 8) + --print("time:", time) + start = start + 16 + local pair = hex_to_bytes(t, start, 1) + --print("pair:", pair) + start = start + 2 + local values = {} + for i = 1, tonumber(pair, 16) do + local address = hex_to_bytes(t, start, 2) + + + -- print("startAdd:", address) + start = start + 4 + local size = hex_to_bytes(t, start, 2) + --print("size:", size) + start = start + 4 + for j = 1, tonumber(size, 16) / 2 do + --print(address, hex_to_bytes(t, start, 2)) + values[address] = hex_to_bytes(t, start, 2) + address = string.gsub(string.format("%#x", tonumber(address, 16) + 1), "0x", "") + if string.len(address) < 4 + then + address = string.rep("0", 4 - string.len(address)) .. address + end + start = start + 4 + end + end + result["type"] = type + result["version"] = version + result["time"] = tonumber(time, 16) + result["pair"] = pair + result["values"] = values + -- print(result["type"], result["version"], result["time"], result["pair"]) + for k,v in pairsByKeys(result["values"]) do + -- print(k,v) + end + -- print(table2string(result)) + return table2string(result) +end + +function table2string(tablevalue) + local stringtable = serialize(tablevalue) + -- print(stringtable) + return stringtable +end + +function serialize(obj) + local lua = "" + local t = type(obj) + if t == "number" then + lua = lua .. obj + elseif t == "boolean" then + lua = lua .. tostring(obj) + elseif t == "string" then + lua = lua .. string.format("%q", obj) + elseif t == "table" then + lua = lua .. "{" + for k, v in pairs(obj) do + lua = lua .. serialize(k) .. ":" .. serialize(v) .. "," + end + local metatable = getmetatable(obj) + if metatable ~= nil and type(metatable.__index) == "table" then + for k, v in pairs(metatable.__index) do + lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. "," + end + end + lua = string.sub(lua, 1, -2) + lua = lua .. "}" + elseif t == "nil" then + return nil + else + error("can not serialize a " .. t .. " type.") + end + return lua +end + + +function pairsByKeys(t) + local a = {} + for n in pairs(t) do + a[#a + 1] = n + end + table.sort(a) + local i = 0 + local iter = function() + i = i + 1 + if a[i] == nil + then + return nil + else + return a[i], t[a[i]] + end + end + return iter +end + +function length(t) + local res=0 + for k,v in pairs(t) do + res=res+1 + end + return res +end + +function hex_to_bytes(hex, start, len) + -- print(hex) + local value = hex:sub(start, start + len * 2 - 1) + if len > 1 + then + value = toBigEndian(value) + end + return value +end + +function toBigEndian(value) + --print(string.len(value)) + local hexResult = "" + for i = string.len(value), 1, -2 do + local hex = value:sub(i - 1, i) + hexResult = hexResult .. hex + end + + return hexResult + +end + +-- 将16进制字符串转换为小端格式 +local function hexToLittleEndian(hexString) + local littleEndian = "" + for i = #hexString, 1, -2 do + local byte = hexString:sub(i - 1, i) + littleEndian = littleEndian .. byte + end + return littleEndian +end + + + +function issueOrder(luaTable) + -- print("start") + -- print("luaTable",luaTable) + local result = "" + local timestamp = os.time() + -- print("timestamp",timestamp) + -- print("time",hexToLittleEndian(string.format("%016X",timestamp))) + -- print("version",luaTable["version"]) + -- print("type",luaTable["type"]) + + result = result .. luaTable["type"] .. luaTable["version"] .. hexToLittleEndian(string.format("%016X",timestamp)) + -- print(type(luaTable["values"])) + local values = luaTable["values"] + + local keys = {} + for key in pairs(values) do + table.insert(keys, key) + end + table.sort(keys) + local lastDecimalism = -2 + local totalPairs = 0 + -- 打印排序后的键值对 + + local valueResult = {} + local valueSize = {} + local startPoint = -2 + for _, key in ipairs(keys) do + -- print(key, values[key]) + -- print(key) + local decimalism = key + -- print(tonumber(decimalism) ~= lastDecimalism + 1) + if tonumber(decimalism) ~= lastDecimalism + 1 then + -- print("last + 1",lastDecimalism + 1) + -- print("current",decimalism) + -- print(decimalism) + startPoint = decimalism + totalPairs = totalPairs + 1 + -- print(hexToLittleEndian(string.format("%04X",values[key]))) + valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) + valueSize[startPoint] = 2 + -- print(valueSize[startPoint]) + else + -- print(decimalism) + -- print(valueResult[startPoint]) + valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) + -- print(valueSize[startPoint]) + valueSize[startPoint] = valueSize[startPoint] + 2 + end + lastDecimalism = decimalism + end + -- print(valueSize) + result = result .. string.format("%02X",totalPairs) + + for ke,_ in pairsByKeys(valueSize) do + -- print("jade") + -- print(ke,vl) + result = result .. hexToLittleEndian(string.format("%04X",ke)) .. hexToLittleEndian(string.format("%04X",valueSize[ke])) .. valueResult[ke] + end + local byteArray = {} + -- for i = 1, #result, 2 do + -- local hexByte = string.sub(result, i, i + 1) + -- local decimalValue = tonumber(hexByte, 16) + -- table.insert(byteArray, decimalValue) + -- end + + -- for _, byte in ipairs(byteArray) do + -- print(byte) + -- end + + -- print("result",byteArray) + return result +end + +-- parseRecord("0001A90AE4650000000001020002000100") + +-- local valuess = {} +-- valuess["0002"] = "0001" +-- print (valuess["0002"]) + + +-- valuess = {[0002]="0001"} +-- myTable = {type = "00", version = "01",time = 1709294663000,values = valuess} +-- issueOrder(myTable) + +-- 示例 +-- local json_str = '{"name": "John", "age": 30, "city": "New York"}' +-- local result_table = parse_json(json_str) + +-- -- 输出解析结果 +-- for key, value in pairs(result_table) do +-- print(key, value) +-- end + + +-- function +-- issueOrder('{"version":"01","type":"00","time":"1709284976000","values":{"2":"1","31000":"31000","32003":"32003","31002":"31002","32002":"32002","30002":"30002","1":"1","30003":"30003","32000":"32000","32004":"32004","32001":"32001","0":"1","30004":"30004","31001":"31001"}}') + +-- print("result","0001801a860f0000000004000006000100010001003275060032753375347518790600187919791a79007d0a00007d017d027d037d047d") + +-- 0001801a860f00000000043000010001000133000275327533753433100079187919791a5320007d007d017d027d037d04 +-- 0001801a860f0000000004000006000100010001003275060032753375347518790600187919791a79007d0a00007d017d027d037d047d +-- local result = parseRecord("000177EEE3650000000001020002000100") +-- print(result) diff --git a/public/lua/lua.vm.js b/public/lua/lua.vm.js new file mode 100644 index 0000000..a812534 --- /dev/null +++ b/public/lua/lua.vm.js @@ -0,0 +1,24 @@ +!(function (exports) { + var module; + var Module; if (typeof Module === "undefined") Module = {}; if (!Module.expectedDataFileDownloads) { Module.expectedDataFileDownloads = 0; Module.finishedDataFileDownloads = 0 } Module.expectedDataFileDownloads++; ((function () { var loadPackage = (function (metadata) { function runWithFS() { var fileData0 = []; fileData0.push.apply(fileData0, [45, 45, 32, 77, 97, 107, 101, 32, 119, 105, 110, 100, 111, 119, 32, 111, 98, 106, 101, 99, 116, 32, 97, 32, 103, 108, 111, 98, 97, 108, 10, 119, 105, 110, 100, 111, 119, 32, 61, 32, 106, 115, 46, 103, 108, 111, 98, 97, 108, 59, 10, 10, 100, 111, 32, 45, 45, 32, 67, 114, 101, 97, 116, 101, 32, 106, 115, 46, 105, 112, 97, 105, 114, 115, 32, 97, 110, 100, 32, 106, 115, 46, 112, 97, 105, 114, 115, 32, 102, 117, 110, 99, 116, 105, 111, 110, 115, 46, 32, 97, 116, 116, 97, 99, 104, 32, 97, 115, 32, 95, 95, 112, 97, 105, 114, 115, 32, 97, 110, 100, 32, 95, 95, 105, 112, 97, 105, 114, 115, 32, 111, 110, 32, 74, 83, 32, 117, 115, 101, 114, 100, 97, 116, 97, 32, 111, 98, 106, 101, 99, 116, 115, 46, 10, 9, 108, 111, 99, 97, 108, 32, 95, 80, 82, 79, 88, 89, 95, 77, 84, 32, 61, 32, 100, 101, 98, 117, 103, 46, 103, 101, 116, 114, 101, 103, 105, 115, 116, 114, 121, 40, 41, 46, 95, 80, 82, 79, 88, 89, 95, 77, 84, 10, 10, 9, 45, 45, 32, 73, 116, 101, 114, 97, 116, 101, 115, 32, 102, 114, 111, 109, 32, 48, 32, 116, 111, 32, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 46, 108, 101, 110, 103, 116, 104, 45, 49, 10, 9, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 95, 105, 110, 101, 120, 116, 40, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 44, 32, 105, 41, 10, 9, 9, 105, 32, 61, 32, 105, 32, 43, 32, 49, 10, 9, 9, 105, 102, 32, 105, 32, 62, 61, 32, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 46, 108, 101, 110, 103, 116, 104, 32, 116, 104, 101, 110, 32, 114, 101, 116, 117, 114, 110, 32, 110, 105, 108, 32, 101, 110, 100, 10, 9, 9, 114, 101, 116, 117, 114, 110, 32, 105, 44, 32, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 91, 105, 93, 10, 9, 101, 110, 100, 10, 9, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 46, 105, 112, 97, 105, 114, 115, 40, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 41, 10, 9, 9, 114, 101, 116, 117, 114, 110, 32, 106, 115, 95, 105, 110, 101, 120, 116, 44, 32, 99, 111, 108, 108, 101, 99, 116, 105, 111, 110, 44, 32, 45, 49, 10, 9, 101, 110, 100, 10, 9, 95, 80, 82, 79, 88, 89, 95, 77, 84, 46, 95, 95, 105, 112, 97, 105, 114, 115, 32, 61, 32, 106, 115, 46, 105, 112, 97, 105, 114, 115, 10, 10, 9, 102, 117, 110, 99, 116, 105, 111, 110, 32, 106, 115, 46, 112, 97, 105, 114, 115, 40, 111, 98, 41, 10, 9, 9, 108, 111, 99, 97, 108, 32, 107, 101, 121, 115, 32, 61, 32, 106, 115, 46, 103, 108, 111, 98, 97, 108, 46, 79, 98, 106, 101, 99, 116, 58, 103, 101, 116, 79, 119, 110, 80, 114, 111, 112, 101, 114, 116, 121, 78, 97, 109, 101, 115, 40, 111, 98, 41, 32, 45, 45, 32, 83, 104, 111, 117, 108, 100, 32, 116, 104, 105, 115, 32, 98, 101, 32, 79, 98, 106, 101, 99, 116, 46, 107, 101, 121, 115, 63, 10, 9, 9, 108, 111, 99, 97, 108, 32, 105, 32, 61, 32, 48, 10, 9, 9, 114, 101, 116, 117, 114, 110, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 111, 98, 44, 32, 108, 97, 115, 116, 41, 10, 9, 9, 9, 108, 111, 99, 97, 108, 32, 107, 32, 61, 32, 107, 101, 121, 115, 91, 105, 93, 10, 9, 9, 9, 105, 32, 61, 32, 105, 32, 43, 32, 49, 59, 10, 9, 9, 9, 114, 101, 116, 117, 114, 110, 32, 107, 44, 32, 111, 98, 91, 107, 93, 10, 9, 9, 101, 110, 100, 44, 32, 111, 98, 44, 32, 110, 105, 108, 10, 9, 101, 110, 100, 10, 9, 95, 80, 82, 79, 88, 89, 95, 77, 84, 46, 95, 95, 112, 97, 105, 114, 115, 32, 61, 32, 106, 115, 46, 112, 97, 105, 114, 115, 10, 101, 110, 100, 10, 10, 45, 45, 32, 83, 101, 116, 32, 117, 112, 32, 114, 101, 113, 117, 105, 114, 101, 32, 112, 97, 116, 104, 115, 32, 116, 111, 32, 98, 101, 32, 115, 101, 110, 115, 105, 98, 108, 101, 32, 102, 111, 114, 32, 116, 104, 101, 32, 98, 114, 111, 119, 115, 101, 114, 10, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 111, 97, 100, 95, 108, 117, 97, 95, 111, 118, 101, 114, 95, 104, 116, 116, 112, 40, 117, 114, 108, 41, 10, 9, 108, 111, 99, 97, 108, 32, 120, 104, 114, 32, 61, 32, 106, 115, 46, 110, 101, 119, 40, 119, 105, 110, 100, 111, 119, 46, 88, 77, 76, 72, 116, 116, 112, 82, 101, 113, 117, 101, 115, 116, 41, 10, 9, 120, 104, 114, 58, 111, 112, 101, 110, 40, 34, 71, 69, 84, 34, 44, 32, 117, 114, 108, 44, 32, 102, 97, 108, 115, 101, 41, 32, 45, 45, 32, 83, 121, 110, 99, 104, 114, 111, 110, 111, 117, 115, 10, 9, 45, 45, 32, 78, 101, 101, 100, 32, 116, 111, 32, 112, 99, 97, 108, 108, 32, 120, 104, 114, 58, 115, 101, 110, 100, 40, 41, 44, 32, 97, 115, 32, 105, 116, 32, 99, 97, 110, 32, 116, 104, 114, 111, 119, 32, 97, 32, 78, 101, 116, 119, 111, 114, 107, 69, 114, 114, 111, 114, 32, 105, 102, 32, 67, 79, 82, 83, 32, 102, 97, 105, 108, 115, 10, 9, 108, 111, 99, 97, 108, 32, 111, 107, 44, 32, 101, 114, 114, 32, 61, 32, 112, 99, 97, 108, 108, 40, 120, 104, 114, 46, 115, 101, 110, 100, 44, 32, 120, 104, 114, 41, 10, 9, 105, 102, 32, 110, 111, 116, 32, 111, 107, 32, 116, 104, 101, 110, 10, 9, 9, 114, 101, 116, 117, 114, 110, 32, 110, 105, 108, 44, 32, 116, 111, 115, 116, 114, 105, 110, 103, 40, 101, 114, 114, 41, 10, 9, 101, 108, 115, 101, 105, 102, 32, 120, 104, 114, 46, 115, 116, 97, 116, 117, 115, 32, 126, 61, 32, 50, 48, 48, 32, 116, 104, 101, 110, 10, 9, 9, 114, 101, 116, 117, 114, 110, 32, 110, 105, 108, 44, 32, 34, 72, 84, 84, 80, 32, 71, 69, 84, 32, 34, 32, 46, 46, 32, 120, 104, 114, 46, 115, 116, 97, 116, 117, 115, 84, 101, 120, 116, 32, 46, 46, 32, 34, 58, 32, 34, 32, 46, 46, 32, 117, 114, 108, 10, 9, 101, 110, 100, 10, 9, 114, 101, 116, 117, 114, 110, 32, 108, 111, 97, 100, 40, 120, 104, 114, 46, 114, 101, 115, 112, 111, 110, 115, 101, 84, 101, 120, 116, 44, 32, 117, 114, 108, 41, 10, 101, 110, 100, 10, 112, 97, 99, 107, 97, 103, 101, 46, 112, 97, 116, 104, 32, 61, 32, 34, 34, 10, 112, 97, 99, 107, 97, 103, 101, 46, 99, 112, 97, 116, 104, 32, 61, 32, 34, 34, 10, 116, 97, 98, 108, 101, 46, 105, 110, 115, 101, 114, 116, 40, 112, 97, 99, 107, 97, 103, 101, 46, 115, 101, 97, 114, 99, 104, 101, 114, 115, 44, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 40, 109, 111, 100, 95, 110, 97, 109, 101, 41, 10, 9, 105, 102, 32, 110, 111, 116, 32, 109, 111, 100, 95, 110, 97, 109, 101, 58, 109, 97, 116, 99, 104, 40, 34, 47, 34, 41, 32, 116, 104, 101, 110, 10, 9, 9, 108, 111, 99, 97, 108, 32, 102, 117, 108, 108, 95, 117, 114, 108, 32, 61, 32, 109, 111, 100, 95, 110, 97, 109, 101, 58, 103, 115, 117, 98, 40, 34, 37, 46, 34, 44, 32, 34, 47, 34, 41, 32, 46, 46, 32, 34, 46, 108, 117, 97, 34, 10, 9, 9, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 44, 32, 101, 114, 114, 32, 61, 32, 108, 111, 97, 100, 95, 108, 117, 97, 95, 111, 118, 101, 114, 95, 104, 116, 116, 112, 40, 102, 117, 108, 108, 95, 117, 114, 108, 41, 10, 9, 9, 105, 102, 32, 102, 117, 110, 99, 32, 126, 61, 32, 110, 105, 108, 32, 116, 104, 101, 110, 32, 114, 101, 116, 117, 114, 110, 32, 102, 117, 110, 99, 32, 101, 110, 100, 10, 10, 9, 9, 108, 111, 99, 97, 108, 32, 102, 117, 108, 108, 95, 117, 114, 108, 32, 61, 32, 109, 111, 100, 95, 110, 97, 109, 101, 58, 103, 115, 117, 98, 40, 34, 37, 46, 34, 44, 32, 34, 47, 34, 41, 32, 46, 46, 32, 34, 47, 105, 110, 105, 116, 46, 108, 117, 97, 34, 10, 9, 9, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 44, 32, 101, 114, 114, 50, 32, 61, 32, 108, 111, 97, 100, 95, 108, 117, 97, 95, 111, 118, 101, 114, 95, 104, 116, 116, 112, 40, 102, 117, 108, 108, 95, 117, 114, 108, 41, 10, 9, 9, 105, 102, 32, 102, 117, 110, 99, 32, 126, 61, 32, 110, 105, 108, 32, 116, 104, 101, 110, 32, 114, 101, 116, 117, 114, 110, 32, 102, 117, 110, 99, 32, 101, 110, 100, 10, 10, 9, 9, 114, 101, 116, 117, 114, 110, 32, 34, 92, 110, 32, 32, 32, 32, 34, 32, 46, 46, 32, 101, 114, 114, 32, 46, 46, 32, 34, 92, 110, 32, 32, 32, 32, 34, 32, 46, 46, 32, 101, 114, 114, 50, 10, 9, 101, 110, 100, 10, 101, 110, 100, 41, 10, 116, 97, 98, 108, 101, 46, 105, 110, 115, 101, 114, 116, 40, 112, 97, 99, 107, 97, 103, 101, 46, 115, 101, 97, 114, 99, 104, 101, 114, 115, 44, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 40, 109, 111, 100, 95, 110, 97, 109, 101, 41, 10, 9, 105, 102, 32, 109, 111, 100, 95, 110, 97, 109, 101, 58, 109, 97, 116, 99, 104, 40, 34, 94, 104, 116, 116, 112, 115, 63, 58, 47, 47, 34, 41, 32, 116, 104, 101, 110, 10, 9, 9, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 44, 32, 101, 114, 114, 32, 61, 32, 108, 111, 97, 100, 95, 108, 117, 97, 95, 111, 118, 101, 114, 95, 104, 116, 116, 112, 40, 109, 111, 100, 95, 110, 97, 109, 101, 41, 10, 9, 9, 105, 102, 32, 102, 117, 110, 99, 32, 61, 61, 32, 110, 105, 108, 32, 116, 104, 101, 110, 32, 114, 101, 116, 117, 114, 110, 32, 34, 92, 110, 32, 32, 32, 32, 34, 32, 46, 46, 32, 101, 114, 114, 32, 101, 110, 100, 10, 9, 9, 114, 101, 116, 117, 114, 110, 32, 102, 117, 110, 99, 10, 9, 101, 110, 100, 10, 101, 110, 100, 41, 10]); Module["FS_createDataFile"]("/", "js.lua", fileData0, true, true) } if (Module["calledRun"]) { runWithFS() } else { if (!Module["preRun"]) Module["preRun"] = []; Module["preRun"].push(runWithFS) } }); loadPackage({ "files": [] }) }))(); var Module; if (!Module) Module = (typeof Module !== "undefined" ? Module : null) || {}; var moduleOverrides = {}; for (var key in Module) { if (Module.hasOwnProperty(key)) { moduleOverrides[key] = Module[key] } } var ENVIRONMENT_IS_WEB = false; var ENVIRONMENT_IS_WORKER = false; var ENVIRONMENT_IS_NODE = false; var ENVIRONMENT_IS_SHELL = false; if (Module["ENVIRONMENT"]) { if (Module["ENVIRONMENT"] === "WEB") { ENVIRONMENT_IS_WEB = true } else if (Module["ENVIRONMENT"] === "WORKER") { ENVIRONMENT_IS_WORKER = true } else if (Module["ENVIRONMENT"] === "NODE") { ENVIRONMENT_IS_NODE = true } else if (Module["ENVIRONMENT"] === "SHELL") { ENVIRONMENT_IS_SHELL = true } else { throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.") } } else { ENVIRONMENT_IS_WEB = typeof window === "object"; ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; ENVIRONMENT_IS_NODE = typeof process === "object" && typeof require === "function" && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER; ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER } if (ENVIRONMENT_IS_NODE) { if (!Module["print"]) Module["print"] = console.log; if (!Module["printErr"]) Module["printErr"] = console.warn; var nodeFS; var nodePath; Module["read"] = function read(filename, binary) { if (!nodeFS) nodeFS = require("fs"); if (!nodePath) nodePath = require("path"); filename = nodePath["normalize"](filename); var ret = nodeFS["readFileSync"](filename); return binary ? ret : ret.toString() }; Module["readBinary"] = function readBinary(filename) { var ret = Module["read"](filename, true); if (!ret.buffer) { ret = new Uint8Array(ret) } assert(ret.buffer); return ret }; Module["load"] = function load(f) { globalEval(read(f)) }; if (!Module["thisProgram"]) { if (process["argv"].length > 1) { Module["thisProgram"] = process["argv"][1].replace(/\\/g, "/") } else { Module["thisProgram"] = "unknown-program" } } Module["arguments"] = process["argv"].slice(2); if (typeof module !== "undefined") { module["exports"] = Module } process["on"]("uncaughtException", (function (ex) { if (!(ex instanceof ExitStatus)) { throw ex } })); Module["inspect"] = (function () { return "[Emscripten Module object]" }) } else if (ENVIRONMENT_IS_SHELL) { if (!Module["print"]) Module["print"] = print; if (typeof printErr != "undefined") Module["printErr"] = printErr; if (typeof read != "undefined") { Module["read"] = read } else { Module["read"] = function read() { throw "no read() available (jsc?)" } } Module["readBinary"] = function readBinary(f) { if (typeof readbuffer === "function") { return new Uint8Array(readbuffer(f)) } var data = read(f, "binary"); assert(typeof data === "object"); return data }; if (typeof scriptArgs != "undefined") { Module["arguments"] = scriptArgs } else if (typeof arguments != "undefined") { Module["arguments"] = arguments } } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { Module["read"] = function read(url) { var xhr = new XMLHttpRequest; xhr.open("GET", url, false); xhr.send(null); return xhr.responseText }; Module["readAsync"] = function readAsync(url, onload, onerror) { var xhr = new XMLHttpRequest; xhr.open("GET", url, true); xhr.responseType = "arraybuffer"; xhr.onload = function xhr_onload() { if (xhr.status == 200 || xhr.status == 0 && xhr.response) { onload(xhr.response) } else { onerror() } }; xhr.onerror = onerror; xhr.send(null) }; if (typeof arguments != "undefined") { Module["arguments"] = arguments } if (typeof console !== "undefined") { if (!Module["print"]) Module["print"] = function print(x) { console.log(x) }; if (!Module["printErr"]) Module["printErr"] = function printErr(x) { console.warn(x) } } else { var TRY_USE_DUMP = false; if (!Module["print"]) Module["print"] = TRY_USE_DUMP && typeof dump !== "undefined" ? (function (x) { dump(x) }) : (function (x) { }) } if (ENVIRONMENT_IS_WORKER) { Module["load"] = importScripts } if (typeof Module["setWindowTitle"] === "undefined") { Module["setWindowTitle"] = (function (title) { document.title = title }) } } else { throw "Unknown runtime environment. Where are we?" } function globalEval(x) { eval.call(null, x) } if (!Module["load"] && Module["read"]) { Module["load"] = function load(f) { globalEval(Module["read"](f)) } } if (!Module["print"]) { Module["print"] = (function () { }) } if (!Module["printErr"]) { Module["printErr"] = Module["print"] } if (!Module["arguments"]) { Module["arguments"] = [] } if (!Module["thisProgram"]) { Module["thisProgram"] = "./this.program" } Module.print = Module["print"]; Module.printErr = Module["printErr"]; Module["preRun"] = []; Module["postRun"] = []; for (var key in moduleOverrides) { if (moduleOverrides.hasOwnProperty(key)) { Module[key] = moduleOverrides[key] } } moduleOverrides = undefined; var Runtime = { setTempRet0: (function (value) { tempRet0 = value }), getTempRet0: (function () { return tempRet0 }), stackSave: (function () { return STACKTOP }), stackRestore: (function (stackTop) { STACKTOP = stackTop }), getNativeTypeSize: (function (type) { switch (type) { case "i1": case "i8": return 1; case "i16": return 2; case "i32": return 4; case "i64": return 8; case "float": return 4; case "double": return 8; default: { if (type[type.length - 1] === "*") { return Runtime.QUANTUM_SIZE } else if (type[0] === "i") { var bits = parseInt(type.substr(1)); assert(bits % 8 === 0); return bits / 8 } else { return 0 } } } }), getNativeFieldSize: (function (type) { return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE) }), STACK_ALIGN: 16, prepVararg: (function (ptr, type) { if (type === "double" || type === "i64") { if (ptr & 7) { assert((ptr & 7) === 4); ptr += 4 } } else { assert((ptr & 3) === 0) } return ptr }), getAlignSize: (function (type, size, vararg) { if (!vararg && (type == "i64" || type == "double")) return 8; if (!type) return Math.min(size, 8); return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE) }), dynCall: (function (sig, ptr, args) { if (args && args.length) { return Module["dynCall_" + sig].apply(null, [ptr].concat(args)) } else { return Module["dynCall_" + sig].call(null, ptr) } }), functionPointers: [null, null, null, null, null, null, null, null], addFunction: (function (func) { for (var i = 0; i < Runtime.functionPointers.length; i++) { if (!Runtime.functionPointers[i]) { Runtime.functionPointers[i] = func; return 2 * (1 + i) } } throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS." }), removeFunction: (function (index) { Runtime.functionPointers[(index - 2) / 2] = null }), warnOnce: (function (text) { if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; if (!Runtime.warnOnce.shown[text]) { Runtime.warnOnce.shown[text] = 1; Module.printErr(text) } }), funcWrappers: {}, getFuncWrapper: (function (func, sig) { assert(sig); if (!Runtime.funcWrappers[sig]) { Runtime.funcWrappers[sig] = {} } var sigCache = Runtime.funcWrappers[sig]; if (!sigCache[func]) { if (sig.length === 1) { sigCache[func] = function dynCall_wrapper() { return Runtime.dynCall(sig, func) } } else if (sig.length === 2) { sigCache[func] = function dynCall_wrapper(arg) { return Runtime.dynCall(sig, func, [arg]) } } else { sigCache[func] = function dynCall_wrapper() { return Runtime.dynCall(sig, func, Array.prototype.slice.call(arguments)) } } } return sigCache[func] }), getCompilerSetting: (function (name) { throw "You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work" }), stackAlloc: (function (size) { var ret = STACKTOP; STACKTOP = STACKTOP + size | 0; STACKTOP = STACKTOP + 15 & -16; return ret }), staticAlloc: (function (size) { var ret = STATICTOP; STATICTOP = STATICTOP + size | 0; STATICTOP = STATICTOP + 15 & -16; return ret }), dynamicAlloc: (function (size) { var ret = DYNAMICTOP; DYNAMICTOP = DYNAMICTOP + size | 0; DYNAMICTOP = DYNAMICTOP + 15 & -16; if (DYNAMICTOP >= TOTAL_MEMORY) { var success = enlargeMemory(); if (!success) { DYNAMICTOP = ret; return 0 } } return ret }), alignMemory: (function (size, quantum) { var ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16); return ret }), makeBigInt: (function (low, high, unsigned) { var ret = unsigned ? +(low >>> 0) + +(high >>> 0) * +4294967296 : +(low >>> 0) + +(high | 0) * +4294967296; return ret }), GLOBAL_BASE: 8, QUANTUM_SIZE: 4, __dummy__: 0 }; Module["Runtime"] = Runtime; var ABORT = false; var EXITSTATUS = 0; function assert(condition, text) { if (!condition) { abort("Assertion failed: " + text) } } function getCFunc(ident) { var func = Module["_" + ident]; if (!func) { try { func = eval("_" + ident) } catch (e) { } } assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)"); return func } var cwrap, ccall; ((function () { var JSfuncs = { "stackSave": (function () { Runtime.stackSave() }), "stackRestore": (function () { Runtime.stackRestore() }), "arrayToC": (function (arr) { var ret = Runtime.stackAlloc(arr.length); writeArrayToMemory(arr, ret); return ret }), "stringToC": (function (str) { var ret = 0; if (str !== null && str !== undefined && str !== 0) { ret = Runtime.stackAlloc((str.length << 2) + 1); writeStringToMemory(str, ret) } return ret }) }; var toC = { "string": JSfuncs["stringToC"], "array": JSfuncs["arrayToC"] }; ccall = function ccallFunc(ident, returnType, argTypes, args, opts) { var func = getCFunc(ident); var cArgs = []; var stack = 0; if (args) { for (var i = 0; i < args.length; i++) { var converter = toC[argTypes[i]]; if (converter) { if (stack === 0) stack = Runtime.stackSave(); cArgs[i] = converter(args[i]) } else { cArgs[i] = args[i] } } } var ret = func.apply(null, cArgs); if (returnType === "string") ret = Pointer_stringify(ret); if (stack !== 0) { if (opts && opts.async) { EmterpreterAsync.asyncFinalizers.push((function () { Runtime.stackRestore(stack) })); return } Runtime.stackRestore(stack) } return ret }; var sourceRegex = /^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/; function parseJSFunc(jsfunc) { var parsed = jsfunc.toString().match(sourceRegex).slice(1); return { arguments: parsed[0], body: parsed[1], returnValue: parsed[2] } } var JSsource = null; function ensureJSsource() { if (!JSsource) { JSsource = {}; for (var fun in JSfuncs) { if (JSfuncs.hasOwnProperty(fun)) { JSsource[fun] = parseJSFunc(JSfuncs[fun]) } } } } cwrap = function cwrap(ident, returnType, argTypes) { argTypes = argTypes || []; var cfunc = getCFunc(ident); var numericArgs = argTypes.every((function (type) { return type === "number" })); var numericRet = returnType !== "string"; if (numericRet && numericArgs) { return cfunc } var argNames = argTypes.map((function (x, i) { return "$" + i })); var funcstr = "(function(" + argNames.join(",") + ") {"; var nargs = argTypes.length; if (!numericArgs) { ensureJSsource(); funcstr += "var stack = " + JSsource["stackSave"].body + ";"; for (var i = 0; i < nargs; i++) { var arg = argNames[i], type = argTypes[i]; if (type === "number") continue; var convertCode = JSsource[type + "ToC"]; funcstr += "var " + convertCode.arguments + " = " + arg + ";"; funcstr += convertCode.body + ";"; funcstr += arg + "=(" + convertCode.returnValue + ");" } } var cfuncname = parseJSFunc((function () { return cfunc })).returnValue; funcstr += "var ret = " + cfuncname + "(" + argNames.join(",") + ");"; if (!numericRet) { var strgfy = parseJSFunc((function () { return Pointer_stringify })).returnValue; funcstr += "ret = " + strgfy + "(ret);" } if (!numericArgs) { ensureJSsource(); funcstr += JSsource["stackRestore"].body.replace("()", "(stack)") + ";" } funcstr += "return ret})"; return eval(funcstr) } }))(); Module["ccall"] = ccall; Module["cwrap"] = cwrap; function setValue(ptr, value, type, noSafe) { type = type || "i8"; if (type.charAt(type.length - 1) === "*") type = "i32"; switch (type) { case "i1": HEAP8[ptr >> 0] = value; break; case "i8": HEAP8[ptr >> 0] = value; break; case "i16": HEAP16[ptr >> 1] = value; break; case "i32": HEAP32[ptr >> 2] = value; break; case "i64": tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1]; break; case "float": HEAPF32[ptr >> 2] = value; break; case "double": HEAPF64[ptr >> 3] = value; break; default: abort("invalid type for setValue: " + type) } } Module["setValue"] = setValue; function getValue(ptr, type, noSafe) { type = type || "i8"; if (type.charAt(type.length - 1) === "*") type = "i32"; switch (type) { case "i1": return HEAP8[ptr >> 0]; case "i8": return HEAP8[ptr >> 0]; case "i16": return HEAP16[ptr >> 1]; case "i32": return HEAP32[ptr >> 2]; case "i64": return HEAP32[ptr >> 2]; case "float": return HEAPF32[ptr >> 2]; case "double": return HEAPF64[ptr >> 3]; default: abort("invalid type for setValue: " + type) }return null } Module["getValue"] = getValue; var ALLOC_NORMAL = 0; var ALLOC_STACK = 1; var ALLOC_STATIC = 2; var ALLOC_DYNAMIC = 3; var ALLOC_NONE = 4; Module["ALLOC_NORMAL"] = ALLOC_NORMAL; Module["ALLOC_STACK"] = ALLOC_STACK; Module["ALLOC_STATIC"] = ALLOC_STATIC; Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC; Module["ALLOC_NONE"] = ALLOC_NONE; function allocate(slab, types, allocator, ptr) { var zeroinit, size; if (typeof slab === "number") { zeroinit = true; size = slab } else { zeroinit = false; size = slab.length } var singleType = typeof types === "string" ? types : null; var ret; if (allocator == ALLOC_NONE) { ret = ptr } else { ret = [typeof _malloc === "function" ? _malloc : Runtime.staticAlloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length)) } if (zeroinit) { var ptr = ret, stop; assert((ret & 3) == 0); stop = ret + (size & ~3); for (; ptr < stop; ptr += 4) { HEAP32[ptr >> 2] = 0 } stop = ret + size; while (ptr < stop) { HEAP8[ptr++ >> 0] = 0 } return ret } if (singleType === "i8") { if (slab.subarray || slab.slice) { HEAPU8.set(slab, ret) } else { HEAPU8.set(new Uint8Array(slab), ret) } return ret } var i = 0, type, typeSize, previousType; while (i < size) { var curr = slab[i]; if (typeof curr === "function") { curr = Runtime.getFunctionIndex(curr) } type = singleType || types[i]; if (type === 0) { i++; continue } if (type == "i64") type = "i32"; setValue(ret + i, curr, type); if (previousType !== type) { typeSize = Runtime.getNativeTypeSize(type); previousType = type } i += typeSize } return ret } Module["allocate"] = allocate; function getMemory(size) { if (!staticSealed) return Runtime.staticAlloc(size); if (typeof _sbrk !== "undefined" && !_sbrk.called || !runtimeInitialized) return Runtime.dynamicAlloc(size); return _malloc(size) } Module["getMemory"] = getMemory; function Pointer_stringify(ptr, length) { if (length === 0 || !ptr) return ""; var hasUtf = 0; var t; var i = 0; while (1) { t = HEAPU8[ptr + i >> 0]; hasUtf |= t; if (t == 0 && !length) break; i++; if (length && i == length) break } if (!length) length = i; var ret = ""; if (hasUtf < 128) { var MAX_CHUNK = 1024; var curr; while (length > 0) { curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK))); ret = ret ? ret + curr : curr; ptr += MAX_CHUNK; length -= MAX_CHUNK } return ret } return Module["UTF8ToString"](ptr) } Module["Pointer_stringify"] = Pointer_stringify; function AsciiToString(ptr) { var str = ""; while (1) { var ch = HEAP8[ptr++ >> 0]; if (!ch) return str; str += String.fromCharCode(ch) } } Module["AsciiToString"] = AsciiToString; function stringToAscii(str, outPtr) { return writeAsciiToMemory(str, outPtr, false) } Module["stringToAscii"] = stringToAscii; var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined; function UTF8ArrayToString(u8Array, idx) { var endPtr = idx; while (u8Array[endPtr]) ++endPtr; if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) { return UTF8Decoder.decode(u8Array.subarray(idx, endPtr)) } else { var u0, u1, u2, u3, u4, u5; var str = ""; while (1) { u0 = u8Array[idx++]; if (!u0) return str; if (!(u0 & 128)) { str += String.fromCharCode(u0); continue } u1 = u8Array[idx++] & 63; if ((u0 & 224) == 192) { str += String.fromCharCode((u0 & 31) << 6 | u1); continue } u2 = u8Array[idx++] & 63; if ((u0 & 240) == 224) { u0 = (u0 & 15) << 12 | u1 << 6 | u2 } else { u3 = u8Array[idx++] & 63; if ((u0 & 248) == 240) { u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u3 } else { u4 = u8Array[idx++] & 63; if ((u0 & 252) == 248) { u0 = (u0 & 3) << 24 | u1 << 18 | u2 << 12 | u3 << 6 | u4 } else { u5 = u8Array[idx++] & 63; u0 = (u0 & 1) << 30 | u1 << 24 | u2 << 18 | u3 << 12 | u4 << 6 | u5 } } } if (u0 < 65536) { str += String.fromCharCode(u0) } else { var ch = u0 - 65536; str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023) } } } } Module["UTF8ArrayToString"] = UTF8ArrayToString; function UTF8ToString(ptr) { return UTF8ArrayToString(HEAPU8, ptr) } Module["UTF8ToString"] = UTF8ToString; function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { if (!(maxBytesToWrite > 0)) return 0; var startIdx = outIdx; var endIdx = outIdx + maxBytesToWrite - 1; for (var i = 0; i < str.length; ++i) { var u = str.charCodeAt(i); if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; if (u <= 127) { if (outIdx >= endIdx) break; outU8Array[outIdx++] = u } else if (u <= 2047) { if (outIdx + 1 >= endIdx) break; outU8Array[outIdx++] = 192 | u >> 6; outU8Array[outIdx++] = 128 | u & 63 } else if (u <= 65535) { if (outIdx + 2 >= endIdx) break; outU8Array[outIdx++] = 224 | u >> 12; outU8Array[outIdx++] = 128 | u >> 6 & 63; outU8Array[outIdx++] = 128 | u & 63 } else if (u <= 2097151) { if (outIdx + 3 >= endIdx) break; outU8Array[outIdx++] = 240 | u >> 18; outU8Array[outIdx++] = 128 | u >> 12 & 63; outU8Array[outIdx++] = 128 | u >> 6 & 63; outU8Array[outIdx++] = 128 | u & 63 } else if (u <= 67108863) { if (outIdx + 4 >= endIdx) break; outU8Array[outIdx++] = 248 | u >> 24; outU8Array[outIdx++] = 128 | u >> 18 & 63; outU8Array[outIdx++] = 128 | u >> 12 & 63; outU8Array[outIdx++] = 128 | u >> 6 & 63; outU8Array[outIdx++] = 128 | u & 63 } else { if (outIdx + 5 >= endIdx) break; outU8Array[outIdx++] = 252 | u >> 30; outU8Array[outIdx++] = 128 | u >> 24 & 63; outU8Array[outIdx++] = 128 | u >> 18 & 63; outU8Array[outIdx++] = 128 | u >> 12 & 63; outU8Array[outIdx++] = 128 | u >> 6 & 63; outU8Array[outIdx++] = 128 | u & 63 } } outU8Array[outIdx] = 0; return outIdx - startIdx } Module["stringToUTF8Array"] = stringToUTF8Array; function stringToUTF8(str, outPtr, maxBytesToWrite) { return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) } Module["stringToUTF8"] = stringToUTF8; function lengthBytesUTF8(str) { var len = 0; for (var i = 0; i < str.length; ++i) { var u = str.charCodeAt(i); if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; if (u <= 127) { ++len } else if (u <= 2047) { len += 2 } else if (u <= 65535) { len += 3 } else if (u <= 2097151) { len += 4 } else if (u <= 67108863) { len += 5 } else { len += 6 } } return len } Module["lengthBytesUTF8"] = lengthBytesUTF8; var UTF16Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : undefined; function demangle(func) { var hasLibcxxabi = !!Module["___cxa_demangle"]; if (hasLibcxxabi) { try { var buf = _malloc(func.length); writeStringToMemory(func.substr(1), buf); var status = _malloc(4); var ret = Module["___cxa_demangle"](buf, 0, 0, status); if (getValue(status, "i32") === 0 && ret) { return Pointer_stringify(ret) } } catch (e) { } finally { if (buf) _free(buf); if (status) _free(status); if (ret) _free(ret) } return func } Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"); return func } function demangleAll(text) { return text.replace(/__Z[\w\d_]+/g, (function (x) { var y = demangle(x); return x === y ? x : x + " [" + y + "]" })) } function jsStackTrace() { var err = new Error; if (!err.stack) { try { throw new Error(0) } catch (e) { err = e } if (!err.stack) { return "(no stack trace available)" } } return err.stack.toString() } function stackTrace() { var js = jsStackTrace(); if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"](); return demangleAll(js) } Module["stackTrace"] = stackTrace; function alignMemoryPage(x) { if (x % 4096 > 0) { x += 4096 - x % 4096 } return x } var HEAP; var buffer; var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; function updateGlobalBufferViews() { Module["HEAP8"] = HEAP8 = new Int8Array(buffer); Module["HEAP16"] = HEAP16 = new Int16Array(buffer); Module["HEAP32"] = HEAP32 = new Int32Array(buffer); Module["HEAPU8"] = HEAPU8 = new Uint8Array(buffer); Module["HEAPU16"] = HEAPU16 = new Uint16Array(buffer); Module["HEAPU32"] = HEAPU32 = new Uint32Array(buffer); Module["HEAPF32"] = HEAPF32 = new Float32Array(buffer); Module["HEAPF64"] = HEAPF64 = new Float64Array(buffer) } var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; var DYNAMIC_BASE = 0, DYNAMICTOP = 0; function abortOnCannotGrowMemory() { abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value " + TOTAL_MEMORY + ", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ") } function enlargeMemory() { abortOnCannotGrowMemory() } var TOTAL_STACK = Module["TOTAL_STACK"] || 5242880; var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 134217728; var totalMemory = 64 * 1024; while (totalMemory < TOTAL_MEMORY || totalMemory < 2 * TOTAL_STACK) { if (totalMemory < 16 * 1024 * 1024) { totalMemory *= 2 } else { totalMemory += 16 * 1024 * 1024 } } if (totalMemory !== TOTAL_MEMORY) { TOTAL_MEMORY = totalMemory } if (Module["buffer"]) { buffer = Module["buffer"] } else { buffer = new ArrayBuffer(TOTAL_MEMORY) } updateGlobalBufferViews(); HEAP32[0] = 1668509029; HEAP16[1] = 25459; if (HEAPU8[2] !== 115 || HEAPU8[3] !== 99) throw "Runtime error: expected the system to be little-endian!"; Module["HEAP"] = HEAP; Module["buffer"] = buffer; Module["HEAP8"] = HEAP8; Module["HEAP16"] = HEAP16; Module["HEAP32"] = HEAP32; Module["HEAPU8"] = HEAPU8; Module["HEAPU16"] = HEAPU16; Module["HEAPU32"] = HEAPU32; Module["HEAPF32"] = HEAPF32; Module["HEAPF64"] = HEAPF64; function callRuntimeCallbacks(callbacks) { while (callbacks.length > 0) { var callback = callbacks.shift(); if (typeof callback == "function") { callback(); continue } var func = callback.func; if (typeof func === "number") { if (callback.arg === undefined) { Runtime.dynCall("v", func) } else { Runtime.dynCall("vi", func, [callback.arg]) } } else { func(callback.arg === undefined ? null : callback.arg) } } } var __ATPRERUN__ = []; var __ATINIT__ = []; var __ATMAIN__ = []; var __ATEXIT__ = []; var __ATPOSTRUN__ = []; var runtimeInitialized = false; var runtimeExited = false; function preRun() { if (Module["preRun"]) { if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; while (Module["preRun"].length) { addOnPreRun(Module["preRun"].shift()) } } callRuntimeCallbacks(__ATPRERUN__) } function ensureInitRuntime() { if (runtimeInitialized) return; runtimeInitialized = true; callRuntimeCallbacks(__ATINIT__) } function preMain() { callRuntimeCallbacks(__ATMAIN__) } function exitRuntime() { callRuntimeCallbacks(__ATEXIT__); runtimeExited = true } function postRun() { if (Module["postRun"]) { if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; while (Module["postRun"].length) { addOnPostRun(Module["postRun"].shift()) } } callRuntimeCallbacks(__ATPOSTRUN__) } function addOnPreRun(cb) { __ATPRERUN__.unshift(cb) } Module["addOnPreRun"] = addOnPreRun; function addOnInit(cb) { __ATINIT__.unshift(cb) } Module["addOnInit"] = addOnInit; function addOnPreMain(cb) { __ATMAIN__.unshift(cb) } Module["addOnPreMain"] = addOnPreMain; function addOnExit(cb) { __ATEXIT__.unshift(cb) } Module["addOnExit"] = addOnExit; function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb) } Module["addOnPostRun"] = addOnPostRun; function intArrayFromString(stringy, dontAddNull, length) { var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; var u8array = new Array(len); var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); if (dontAddNull) u8array.length = numBytesWritten; return u8array } Module["intArrayFromString"] = intArrayFromString; function intArrayToString(array) { var ret = []; for (var i = 0; i < array.length; i++) { var chr = array[i]; if (chr > 255) { chr &= 255 } ret.push(String.fromCharCode(chr)) } return ret.join("") } Module["intArrayToString"] = intArrayToString; function writeStringToMemory(string, buffer, dontAddNull) { var array = intArrayFromString(string, dontAddNull); var i = 0; while (i < array.length) { var chr = array[i]; HEAP8[buffer + i >> 0] = chr; i = i + 1 } } Module["writeStringToMemory"] = writeStringToMemory; function writeArrayToMemory(array, buffer) { for (var i = 0; i < array.length; i++) { HEAP8[buffer++ >> 0] = array[i] } } Module["writeArrayToMemory"] = writeArrayToMemory; function writeAsciiToMemory(str, buffer, dontAddNull) { for (var i = 0; i < str.length; ++i) { HEAP8[buffer++ >> 0] = str.charCodeAt(i) } if (!dontAddNull) HEAP8[buffer >> 0] = 0 } Module["writeAsciiToMemory"] = writeAsciiToMemory; if (!Math["imul"] || Math["imul"](4294967295, 5) !== -5) Math["imul"] = function imul(a, b) { var ah = a >>> 16; var al = a & 65535; var bh = b >>> 16; var bl = b & 65535; return al * bl + (ah * bl + al * bh << 16) | 0 }; Math.imul = Math["imul"]; if (!Math["clz32"]) Math["clz32"] = (function (x) { x = x >>> 0; for (var i = 0; i < 32; i++) { if (x & 1 << 31 - i) return i } return 32 }); Math.clz32 = Math["clz32"]; if (!Math["trunc"]) Math["trunc"] = (function (x) { return x < 0 ? Math.ceil(x) : Math.floor(x) }); Math.trunc = Math["trunc"]; var Math_abs = Math.abs; var Math_cos = Math.cos; var Math_sin = Math.sin; var Math_tan = Math.tan; var Math_acos = Math.acos; var Math_asin = Math.asin; var Math_atan = Math.atan; var Math_atan2 = Math.atan2; var Math_exp = Math.exp; var Math_log = Math.log; var Math_sqrt = Math.sqrt; var Math_ceil = Math.ceil; var Math_floor = Math.floor; var Math_pow = Math.pow; var Math_imul = Math.imul; var Math_fround = Math.fround; var Math_min = Math.min; var Math_clz32 = Math.clz32; var Math_trunc = Math.trunc; var runDependencies = 0; var runDependencyWatcher = null; var dependenciesFulfilled = null; function getUniqueRunDependency(id) { return id } function addRunDependency(id) { runDependencies++; if (Module["monitorRunDependencies"]) { Module["monitorRunDependencies"](runDependencies) } } Module["addRunDependency"] = addRunDependency; function removeRunDependency(id) { runDependencies--; if (Module["monitorRunDependencies"]) { Module["monitorRunDependencies"](runDependencies) } if (runDependencies == 0) { if (runDependencyWatcher !== null) { clearInterval(runDependencyWatcher); runDependencyWatcher = null } if (dependenciesFulfilled) { var callback = dependenciesFulfilled; dependenciesFulfilled = null; callback() } } } Module["removeRunDependency"] = removeRunDependency; Module["preloadedImages"] = {}; Module["preloadedAudios"] = {}; var ASM_CONSTS = []; STATIC_BASE = 8; STATICTOP = STATIC_BASE + 15648; __ATINIT__.push(); allocate([0, 0, 0, 0, 0, 96, 127, 64, 21, 13, 0, 0, 100, 16, 0, 0, 25, 13, 0, 0, 28, 13, 0, 0, 33, 13, 0, 0, 220, 29, 0, 0, 86, 21, 0, 0, 40, 13, 0, 0, 82, 19, 0, 0, 44, 13, 0, 0, 49, 13, 0, 0, 52, 13, 0, 0, 55, 13, 0, 0, 92, 21, 0, 0, 61, 13, 0, 0, 65, 13, 0, 0, 68, 13, 0, 0, 164, 27, 0, 0, 75, 13, 0, 0, 81, 21, 0, 0, 80, 13, 0, 0, 86, 13, 0, 0, 92, 13, 0, 0, 43, 16, 0, 0, 95, 13, 0, 0, 98, 13, 0, 0, 101, 13, 0, 0, 104, 13, 0, 0, 107, 13, 0, 0, 110, 13, 0, 0, 116, 13, 0, 0, 125, 13, 0, 0, 132, 13, 0, 0, 159, 34, 0, 0, 92, 21, 0, 0, 58, 19, 0, 0, 66, 19, 0, 0, 75, 19, 0, 0, 179, 39, 0, 0, 167, 39, 0, 0, 82, 19, 0, 0, 66, 19, 0, 0, 91, 19, 0, 0, 98, 19, 0, 0, 104, 19, 0, 0, 126, 39, 0, 0, 110, 19, 0, 0, 153, 36, 0, 0, 152, 27, 0, 0, 121, 19, 0, 0, 127, 19, 0, 0, 132, 19, 0, 0, 138, 19, 0, 0, 144, 19, 0, 0, 150, 19, 0, 0, 156, 19, 0, 0, 162, 19, 0, 0, 168, 19, 0, 0, 174, 19, 0, 0, 179, 19, 0, 0, 184, 19, 0, 0, 193, 19, 0, 0, 95, 23, 0, 0, 18, 0, 0, 0, 102, 23, 0, 0, 19, 0, 0, 0, 117, 23, 0, 0, 20, 0, 0, 0, 124, 23, 0, 0, 21, 0, 0, 0, 234, 26, 0, 0, 22, 0, 0, 0, 130, 23, 0, 0, 23, 0, 0, 0, 137, 23, 0, 0, 24, 0, 0, 0, 146, 23, 0, 0, 25, 0, 0, 0, 151, 23, 0, 0, 25, 0, 0, 0, 162, 23, 0, 0, 26, 0, 0, 0, 167, 23, 0, 0, 27, 0, 0, 0, 173, 23, 0, 0, 28, 0, 0, 0, 179, 23, 0, 0, 29, 0, 0, 0, 185, 23, 0, 0, 30, 0, 0, 0, 194, 23, 0, 0, 31, 0, 0, 0, 201, 23, 0, 0, 32, 0, 0, 0, 208, 23, 0, 0, 33, 0, 0, 0, 215, 23, 0, 0, 34, 0, 0, 0, 54, 27, 0, 0, 35, 0, 0, 0, 222, 23, 0, 0, 36, 0, 0, 0, 231, 23, 0, 0, 37, 0, 0, 0, 96, 30, 0, 0, 38, 0, 0, 0, 240, 23, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 25, 0, 0, 14, 25, 0, 0, 1, 25, 0, 0, 171, 27, 0, 0, 22, 25, 0, 0, 27, 25, 0, 0, 36, 25, 0, 0, 47, 25, 0, 0, 59, 25, 0, 0, 69, 25, 0, 0, 82, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 112, 25, 0, 0, 40, 0, 0, 0, 120, 25, 0, 0, 41, 0, 0, 0, 125, 25, 0, 0, 42, 0, 0, 0, 130, 25, 0, 0, 43, 0, 0, 0, 134, 25, 0, 0, 44, 0, 0, 0, 139, 25, 0, 0, 45, 0, 0, 0, 145, 25, 0, 0, 46, 0, 0, 0, 153, 25, 0, 0, 47, 0, 0, 0, 161, 25, 0, 0, 48, 0, 0, 0, 168, 25, 0, 0, 49, 0, 0, 0, 176, 25, 0, 0, 50, 0, 0, 0, 184, 25, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 26, 0, 0, 52, 0, 0, 0, 25, 26, 0, 0, 53, 0, 0, 0, 32, 26, 0, 0, 54, 0, 0, 0, 40, 26, 0, 0, 55, 0, 0, 0, 47, 26, 0, 0, 56, 0, 0, 0, 52, 26, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 39, 0, 0, 58, 0, 0, 0, 184, 26, 0, 0, 59, 0, 0, 0, 197, 26, 0, 0, 60, 0, 0, 0, 205, 26, 0, 0, 61, 0, 0, 0, 213, 26, 0, 0, 62, 0, 0, 0, 222, 26, 0, 0, 63, 0, 0, 0, 234, 26, 0, 0, 64, 0, 0, 0, 247, 26, 0, 0, 65, 0, 0, 0, 2, 27, 0, 0, 66, 0, 0, 0, 14, 27, 0, 0, 67, 0, 0, 0, 24, 27, 0, 0, 68, 0, 0, 0, 37, 27, 0, 0, 69, 0, 0, 0, 45, 27, 0, 0, 70, 0, 0, 0, 54, 27, 0, 0, 71, 0, 0, 0, 67, 27, 0, 0, 72, 0, 0, 0, 78, 27, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 27, 0, 0, 164, 27, 0, 0, 176, 29, 0, 0, 171, 27, 0, 0, 177, 27, 0, 0, 56, 29, 0, 0, 74, 0, 0, 0, 62, 29, 0, 0, 75, 0, 0, 0, 64, 30, 0, 0, 76, 0, 0, 0, 68, 29, 0, 0, 77, 0, 0, 0, 70, 30, 0, 0, 78, 0, 0, 0, 75, 30, 0, 0, 79, 0, 0, 0, 82, 30, 0, 0, 80, 0, 0, 0, 74, 29, 0, 0, 81, 0, 0, 0, 88, 30, 0, 0, 82, 0, 0, 0, 96, 30, 0, 0, 83, 0, 0, 0, 92, 29, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 29, 0, 0, 74, 0, 0, 0, 62, 29, 0, 0, 85, 0, 0, 0, 68, 29, 0, 0, 86, 0, 0, 0, 74, 29, 0, 0, 87, 0, 0, 0, 79, 29, 0, 0, 88, 0, 0, 0, 84, 29, 0, 0, 89, 0, 0, 0, 92, 29, 0, 0, 90, 0, 0, 0, 153, 36, 0, 0, 91, 0, 0, 0, 98, 29, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 29, 0, 0, 171, 29, 0, 0, 176, 29, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 216, 29, 0, 0, 181, 29, 0, 0, 220, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 217, 30, 0, 0, 93, 0, 0, 0, 221, 30, 0, 0, 94, 0, 0, 0, 226, 30, 0, 0, 95, 0, 0, 0, 231, 30, 0, 0, 96, 0, 0, 0, 237, 30, 0, 0, 97, 0, 0, 0, 242, 30, 0, 0, 98, 0, 0, 0, 247, 30, 0, 0, 99, 0, 0, 0, 252, 30, 0, 0, 100, 0, 0, 0, 0, 31, 0, 0, 101, 0, 0, 0, 4, 31, 0, 0, 102, 0, 0, 0, 8, 31, 0, 0, 103, 0, 0, 0, 14, 31, 0, 0, 104, 0, 0, 0, 19, 31, 0, 0, 105, 0, 0, 0, 25, 31, 0, 0, 106, 0, 0, 0, 31, 31, 0, 0, 107, 0, 0, 0, 37, 31, 0, 0, 108, 0, 0, 0, 41, 31, 0, 0, 109, 0, 0, 0, 254, 31, 0, 0, 110, 0, 0, 0, 45, 31, 0, 0, 111, 0, 0, 0, 50, 31, 0, 0, 112, 0, 0, 0, 54, 31, 0, 0, 113, 0, 0, 0, 58, 31, 0, 0, 114, 0, 0, 0, 65, 31, 0, 0, 115, 0, 0, 0, 76, 31, 0, 0, 116, 0, 0, 0, 81, 31, 0, 0, 117, 0, 0, 0, 85, 31, 0, 0, 118, 0, 0, 0, 90, 31, 0, 0, 119, 0, 0, 0, 95, 31, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 31, 0, 0, 121, 0, 0, 0, 149, 31, 0, 0, 122, 0, 0, 0, 154, 31, 0, 0, 123, 0, 0, 0, 163, 31, 0, 0, 124, 0, 0, 0, 171, 31, 0, 0, 125, 0, 0, 0, 176, 31, 0, 0, 126, 0, 0, 0, 212, 35, 0, 0, 127, 0, 0, 0, 183, 31, 0, 0, 128, 0, 0, 0, 190, 31, 0, 0, 129, 0, 0, 0, 200, 31, 0, 0, 130, 0, 0, 0, 205, 31, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 32, 0, 0, 65, 32, 0, 0, 73, 32, 0, 0, 79, 32, 0, 0, 88, 32, 0, 0, 200, 31, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 171, 32, 0, 0, 132, 0, 0, 0, 176, 32, 0, 0, 133, 0, 0, 0, 181, 32, 0, 0, 134, 0, 0, 0, 186, 32, 0, 0, 135, 0, 0, 0, 191, 32, 0, 0, 136, 0, 0, 0, 198, 32, 0, 0, 137, 0, 0, 0, 205, 32, 0, 0, 138, 0, 0, 0, 210, 32, 0, 0, 139, 0, 0, 0, 214, 32, 0, 0, 140, 0, 0, 0, 220, 32, 0, 0, 141, 0, 0, 0, 226, 32, 0, 0, 142, 0, 0, 0, 230, 32, 0, 0, 143, 0, 0, 0, 238, 32, 0, 0, 144, 0, 0, 0, 242, 32, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 35, 0, 0, 146, 0, 0, 0, 195, 35, 0, 0, 147, 0, 0, 0, 200, 35, 0, 0, 148, 0, 0, 0, 207, 35, 0, 0, 149, 0, 0, 0, 181, 35, 0, 0, 150, 0, 0, 0, 212, 35, 0, 0, 151, 0, 0, 0, 219, 35, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 39, 0, 0, 153, 0, 0, 0, 108, 39, 0, 0, 154, 0, 0, 0, 119, 39, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 37, 0, 0, 156, 0, 0, 0, 232, 37, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 192, 3, 0, 0, 192, 4, 0, 0, 192, 5, 0, 0, 192, 6, 0, 0, 192, 7, 0, 0, 192, 8, 0, 0, 192, 9, 0, 0, 192, 10, 0, 0, 192, 11, 0, 0, 192, 12, 0, 0, 192, 13, 0, 0, 192, 14, 0, 0, 192, 15, 0, 0, 192, 16, 0, 0, 192, 17, 0, 0, 192, 18, 0, 0, 192, 19, 0, 0, 192, 20, 0, 0, 192, 21, 0, 0, 192, 22, 0, 0, 192, 23, 0, 0, 192, 24, 0, 0, 192, 25, 0, 0, 192, 26, 0, 0, 192, 27, 0, 0, 192, 28, 0, 0, 192, 29, 0, 0, 192, 30, 0, 0, 192, 31, 0, 0, 192, 0, 0, 0, 179, 1, 0, 0, 195, 2, 0, 0, 195, 3, 0, 0, 195, 4, 0, 0, 195, 5, 0, 0, 195, 6, 0, 0, 195, 7, 0, 0, 195, 8, 0, 0, 195, 9, 0, 0, 195, 10, 0, 0, 195, 11, 0, 0, 195, 12, 0, 0, 195, 13, 0, 0, 211, 14, 0, 0, 195, 15, 0, 0, 195, 0, 0, 12, 187, 1, 0, 12, 195, 2, 0, 12, 195, 3, 0, 12, 195, 4, 0, 12, 211, 132, 7, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 240, 52, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 7, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 248, 56, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 7, 0, 0, 112, 8, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 49, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 0, 61, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 10, 0, 0, 0, 100, 0, 0, 0, 232, 3, 0, 0, 16, 39, 0, 0, 160, 134, 1, 0, 64, 66, 15, 0, 128, 150, 152, 0, 0, 225, 245, 5, 95, 112, 137, 0, 255, 9, 47, 15, 99, 111, 110, 116, 114, 111, 108, 32, 115, 116, 114, 117, 99, 116, 117, 114, 101, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 111, 112, 99, 111, 100, 101, 115, 0, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 114, 32, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 32, 116, 111, 111, 32, 99, 111, 109, 112, 108, 101, 120, 0, 99, 111, 110, 115, 116, 97, 110, 116, 115, 0, 99, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 4, 4, 4, 4, 4, 4, 4, 21, 21, 21, 21, 21, 21, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 5, 4, 21, 21, 21, 21, 21, 21, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 42, 116, 101, 109, 112, 111, 114, 97, 114, 121, 41, 0, 40, 42, 118, 97, 114, 97, 114, 103, 41, 0, 61, 91, 67, 93, 0, 61, 63, 0, 109, 97, 105, 110, 0, 76, 117, 97, 0, 67, 0, 102, 111, 114, 32, 105, 116, 101, 114, 97, 116, 111, 114, 0, 109, 101, 116, 97, 109, 101, 116, 104, 111, 100, 0, 103, 108, 111, 98, 97, 108, 0, 102, 105, 101, 108, 100, 0, 99, 111, 110, 115, 116, 97, 110, 116, 0, 117, 112, 118, 97, 108, 117, 101, 0, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 37, 115, 32, 37, 115, 32, 39, 37, 115, 39, 32, 40, 97, 32, 37, 115, 32, 118, 97, 108, 117, 101, 41, 0, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 37, 115, 32, 97, 32, 37, 115, 32, 118, 97, 108, 117, 101, 0, 99, 111, 110, 99, 97, 116, 101, 110, 97, 116, 101, 0, 112, 101, 114, 102, 111, 114, 109, 32, 97, 114, 105, 116, 104, 109, 101, 116, 105, 99, 32, 111, 110, 0, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 99, 111, 109, 112, 97, 114, 101, 32, 116, 119, 111, 32, 37, 115, 32, 118, 97, 108, 117, 101, 115, 0, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 99, 111, 109, 112, 97, 114, 101, 32, 37, 115, 32, 119, 105, 116, 104, 32, 37, 115, 0, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 121, 105, 101, 108, 100, 32, 97, 99, 114, 111, 115, 115, 32, 97, 32, 67, 45, 99, 97, 108, 108, 32, 98, 111, 117, 110, 100, 97, 114, 121, 0, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 121, 105, 101, 108, 100, 32, 102, 114, 111, 109, 32, 111, 117, 116, 115, 105, 100, 101, 32, 97, 32, 99, 111, 114, 111, 117, 116, 105, 110, 101, 0, 101, 114, 114, 111, 114, 32, 105, 110, 32, 101, 114, 114, 111, 114, 32, 104, 97, 110, 100, 108, 105, 110, 103, 0, 67, 32, 115, 116, 97, 99, 107, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 99, 97, 110, 110, 111, 116, 32, 114, 101, 115, 117, 109, 101, 32, 110, 111, 110, 45, 115, 117, 115, 112, 101, 110, 100, 101, 100, 32, 99, 111, 114, 111, 117, 116, 105, 110, 101, 0, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 108, 111, 97, 100, 32, 97, 32, 37, 115, 32, 99, 104, 117, 110, 107, 32, 40, 109, 111, 100, 101, 32, 105, 115, 32, 39, 37, 115, 39, 41, 0, 98, 105, 110, 97, 114, 121, 0, 116, 101, 120, 116, 0, 110, 111, 32, 109, 101, 115, 115, 97, 103, 101, 0, 101, 114, 114, 111, 114, 32, 105, 110, 32, 95, 95, 103, 99, 32, 109, 101, 116, 97, 109, 101, 116, 104, 111, 100, 32, 40, 37, 115, 41, 0, 97, 110, 100, 0, 100, 111, 0, 101, 108, 115, 101, 0, 101, 108, 115, 101, 105, 102, 0, 102, 111, 114, 0, 103, 111, 116, 111, 0, 105, 102, 0, 105, 110, 0, 108, 111, 99, 97, 108, 0, 110, 111, 116, 0, 111, 114, 0, 114, 101, 112, 101, 97, 116, 0, 116, 104, 101, 110, 0, 117, 110, 116, 105, 108, 0, 119, 104, 105, 108, 101, 0, 46, 46, 0, 61, 61, 0, 62, 61, 0, 60, 61, 0, 126, 61, 0, 58, 58, 0, 60, 101, 111, 102, 62, 0, 60, 110, 117, 109, 98, 101, 114, 62, 0, 60, 110, 97, 109, 101, 62, 0, 60, 115, 116, 114, 105, 110, 103, 62, 0, 39, 37, 99, 39, 0, 99, 104, 97, 114, 40, 37, 100, 41, 0, 39, 37, 115, 39, 0, 37, 115, 58, 37, 100, 58, 32, 37, 115, 0, 108, 101, 120, 105, 99, 97, 108, 32, 101, 108, 101, 109, 101, 110, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 37, 115, 32, 110, 101, 97, 114, 32, 37, 115, 0, 95, 69, 78, 86, 0, 99, 104, 117, 110, 107, 32, 104, 97, 115, 32, 116, 111, 111, 32, 109, 97, 110, 121, 32, 108, 105, 110, 101, 115, 0, 105, 110, 118, 97, 108, 105, 100, 32, 108, 111, 110, 103, 32, 115, 116, 114, 105, 110, 103, 32, 100, 101, 108, 105, 109, 105, 116, 101, 114, 0, 117, 110, 102, 105, 110, 105, 115, 104, 101, 100, 32, 115, 116, 114, 105, 110, 103, 0, 104, 101, 120, 97, 100, 101, 99, 105, 109, 97, 108, 32, 100, 105, 103, 105, 116, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 105, 110, 118, 97, 108, 105, 100, 32, 101, 115, 99, 97, 112, 101, 32, 115, 101, 113, 117, 101, 110, 99, 101, 0, 100, 101, 99, 105, 109, 97, 108, 32, 101, 115, 99, 97, 112, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 88, 120, 0, 69, 101, 0, 80, 112, 0, 43, 45, 0, 109, 97, 108, 102, 111, 114, 109, 101, 100, 32, 110, 117, 109, 98, 101, 114, 0, 117, 110, 102, 105, 110, 105, 115, 104, 101, 100, 32, 108, 111, 110, 103, 32, 115, 116, 114, 105, 110, 103, 0, 117, 110, 102, 105, 110, 105, 115, 104, 101, 100, 32, 108, 111, 110, 103, 32, 99, 111, 109, 109, 101, 110, 116, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 37, 115, 32, 40, 108, 105, 109, 105, 116, 32, 105, 115, 32, 37, 100, 41, 0, 109, 101, 109, 111, 114, 121, 32, 97, 108, 108, 111, 99, 97, 116, 105, 111, 110, 32, 101, 114, 114, 111, 114, 58, 32, 98, 108, 111, 99, 107, 32, 116, 111, 111, 32, 98, 105, 103, 0, 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 110, 78, 0, 120, 88, 0, 37, 112, 0, 37, 0, 105, 110, 118, 97, 108, 105, 100, 32, 111, 112, 116, 105, 111, 110, 32, 39, 37, 37, 37, 99, 39, 32, 116, 111, 32, 39, 108, 117, 97, 95, 112, 117, 115, 104, 102, 115, 116, 114, 105, 110, 103, 39, 0, 46, 46, 46, 0, 91, 115, 116, 114, 105, 110, 103, 32, 34, 0, 34, 93, 0, 96, 113, 65, 84, 80, 80, 92, 108, 60, 16, 60, 84, 108, 124, 124, 124, 124, 124, 124, 96, 96, 96, 104, 34, 188, 188, 188, 132, 228, 84, 84, 16, 98, 98, 4, 98, 20, 81, 80, 23, 98, 114, 101, 97, 107, 0, 108, 97, 98, 101, 108, 115, 47, 103, 111, 116, 111, 115, 0, 60, 37, 115, 62, 32, 97, 116, 32, 108, 105, 110, 101, 32, 37, 100, 32, 110, 111, 116, 32, 105, 110, 115, 105, 100, 101, 32, 97, 32, 108, 111, 111, 112, 0, 110, 111, 32, 118, 105, 115, 105, 98, 108, 101, 32, 108, 97, 98, 101, 108, 32, 39, 37, 115, 39, 32, 102, 111, 114, 32, 60, 103, 111, 116, 111, 62, 32, 97, 116, 32, 108, 105, 110, 101, 32, 37, 100, 0, 60, 103, 111, 116, 111, 32, 37, 115, 62, 32, 97, 116, 32, 108, 105, 110, 101, 32, 37, 100, 32, 106, 117, 109, 112, 115, 32, 105, 110, 116, 111, 32, 116, 104, 101, 32, 115, 99, 111, 112, 101, 32, 111, 102, 32, 108, 111, 99, 97, 108, 32, 39, 37, 115, 39, 0, 37, 115, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 116, 32, 108, 105, 110, 101, 32, 37, 100, 0, 109, 97, 105, 110, 32, 102, 117, 110, 99, 116, 105, 111, 110, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 37, 115, 32, 40, 108, 105, 109, 105, 116, 32, 105, 115, 32, 37, 100, 41, 32, 105, 110, 32, 37, 115, 0, 67, 32, 108, 101, 118, 101, 108, 115, 0, 37, 115, 32, 101, 120, 112, 101, 99, 116, 101, 100, 32, 40, 116, 111, 32, 99, 108, 111, 115, 101, 32, 37, 115, 32, 97, 116, 32, 108, 105, 110, 101, 32, 37, 100, 41, 0, 40, 102, 111, 114, 32, 105, 110, 100, 101, 120, 41, 0, 40, 102, 111, 114, 32, 108, 105, 109, 105, 116, 41, 0, 40, 102, 111, 114, 32, 115, 116, 101, 112, 41, 0, 40, 102, 111, 114, 32, 103, 101, 110, 101, 114, 97, 116, 111, 114, 41, 0, 40, 102, 111, 114, 32, 115, 116, 97, 116, 101, 41, 0, 40, 102, 111, 114, 32, 99, 111, 110, 116, 114, 111, 108, 41, 0, 39, 61, 39, 32, 111, 114, 32, 39, 105, 110, 39, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 108, 97, 98, 101, 108, 32, 39, 37, 115, 39, 32, 97, 108, 114, 101, 97, 100, 121, 32, 100, 101, 102, 105, 110, 101, 100, 32, 111, 110, 32, 108, 105, 110, 101, 32, 37, 100, 0, 115, 121, 110, 116, 97, 120, 32, 101, 114, 114, 111, 114, 0, 117, 110, 101, 120, 112, 101, 99, 116, 101, 100, 32, 115, 121, 109, 98, 111, 108, 0, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 105, 116, 101, 109, 115, 32, 105, 110, 32, 97, 32, 99, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 0, 102, 117, 110, 99, 116, 105, 111, 110, 115, 0, 115, 101, 108, 102, 0, 60, 110, 97, 109, 101, 62, 32, 111, 114, 32, 39, 46, 46, 46, 39, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 108, 111, 99, 97, 108, 32, 118, 97, 114, 105, 97, 98, 108, 101, 115, 0, 99, 97, 110, 110, 111, 116, 32, 117, 115, 101, 32, 39, 46, 46, 46, 39, 32, 111, 117, 116, 115, 105, 100, 101, 32, 97, 32, 118, 97, 114, 97, 114, 103, 32, 102, 117, 110, 99, 116, 105, 111, 110, 0, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 10, 9, 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 117, 112, 118, 97, 108, 117, 101, 115, 0, 110, 111, 116, 32, 101, 110, 111, 117, 103, 104, 32, 109, 101, 109, 111, 114, 121, 0, 105, 110, 118, 97, 108, 105, 100, 32, 107, 101, 121, 32, 116, 111, 32, 39, 110, 101, 120, 116, 39, 0, 116, 97, 98, 108, 101, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 116, 97, 98, 108, 101, 32, 105, 110, 100, 101, 120, 32, 105, 115, 32, 110, 105, 108, 0, 116, 97, 98, 108, 101, 32, 105, 110, 100, 101, 120, 32, 105, 115, 32, 78, 97, 78, 0, 98, 111, 111, 108, 101, 97, 110, 0, 117, 115, 101, 114, 100, 97, 116, 97, 0, 110, 117, 109, 98, 101, 114, 0, 102, 117, 110, 99, 116, 105, 111, 110, 0, 116, 104, 114, 101, 97, 100, 0, 112, 114, 111, 116, 111, 0, 117, 112, 118, 97, 108, 0, 95, 95, 110, 101, 119, 105, 110, 100, 101, 120, 0, 95, 95, 108, 101, 110, 0, 95, 95, 101, 113, 0, 95, 95, 97, 100, 100, 0, 95, 95, 115, 117, 98, 0, 95, 95, 109, 117, 108, 0, 95, 95, 100, 105, 118, 0, 95, 95, 109, 111, 100, 0, 95, 95, 112, 111, 119, 0, 95, 95, 117, 110, 109, 0, 95, 95, 108, 116, 0, 95, 95, 108, 101, 0, 95, 95, 99, 111, 110, 99, 97, 116, 0, 95, 95, 99, 97, 108, 108, 0, 98, 105, 110, 97, 114, 121, 32, 115, 116, 114, 105, 110, 103, 0, 25, 147, 13, 10, 26, 10, 0, 116, 114, 117, 110, 99, 97, 116, 101, 100, 0, 110, 111, 116, 32, 97, 0, 118, 101, 114, 115, 105, 111, 110, 32, 109, 105, 115, 109, 97, 116, 99, 104, 32, 105, 110, 0, 105, 110, 99, 111, 109, 112, 97, 116, 105, 98, 108, 101, 0, 99, 111, 114, 114, 117, 112, 116, 101, 100, 0, 37, 115, 58, 32, 37, 115, 32, 112, 114, 101, 99, 111, 109, 112, 105, 108, 101, 100, 32, 99, 104, 117, 110, 107, 0, 105, 110, 100, 101, 120, 0, 108, 111, 111, 112, 32, 105, 110, 32, 103, 101, 116, 116, 97, 98, 108, 101, 0, 108, 111, 111, 112, 32, 105, 110, 32, 115, 101, 116, 116, 97, 98, 108, 101, 0, 115, 116, 114, 105, 110, 103, 32, 108, 101, 110, 103, 116, 104, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 103, 101, 116, 32, 108, 101, 110, 103, 116, 104, 32, 111, 102, 0, 39, 102, 111, 114, 39, 32, 105, 110, 105, 116, 105, 97, 108, 32, 118, 97, 108, 117, 101, 32, 109, 117, 115, 116, 32, 98, 101, 32, 97, 32, 110, 117, 109, 98, 101, 114, 0, 39, 102, 111, 114, 39, 32, 108, 105, 109, 105, 116, 32, 109, 117, 115, 116, 32, 98, 101, 32, 97, 32, 110, 117, 109, 98, 101, 114, 0, 39, 102, 111, 114, 39, 32, 115, 116, 101, 112, 32, 109, 117, 115, 116, 32, 98, 101, 32, 97, 32, 110, 117, 109, 98, 101, 114, 0, 83, 108, 0, 37, 115, 58, 37, 100, 58, 32, 0, 115, 116, 97, 99, 107, 32, 116, 114, 97, 99, 101, 98, 97, 99, 107, 58, 0, 10, 9, 46, 46, 46, 0, 83, 108, 110, 116, 0, 10, 9, 37, 115, 58, 0, 37, 100, 58, 0, 32, 105, 110, 32, 0, 102, 117, 110, 99, 116, 105, 111, 110, 32, 39, 37, 115, 39, 0, 109, 97, 105, 110, 32, 99, 104, 117, 110, 107, 0, 102, 117, 110, 99, 116, 105, 111, 110, 32, 60, 37, 115, 58, 37, 100, 62, 0, 10, 9, 40, 46, 46, 46, 116, 97, 105, 108, 32, 99, 97, 108, 108, 115, 46, 46, 46, 41, 0, 116, 114, 117, 101, 0, 102, 97, 108, 115, 101, 0, 110, 105, 108, 0, 37, 115, 58, 32, 37, 112, 0, 115, 116, 97, 99, 107, 32, 111, 118, 101, 114, 102, 108, 111, 119, 32, 40, 37, 115, 41, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 117, 112, 118, 97, 108, 117, 101, 115, 0, 110, 97, 109, 101, 32, 99, 111, 110, 102, 108, 105, 99, 116, 32, 102, 111, 114, 32, 109, 111, 100, 117, 108, 101, 32, 39, 37, 115, 39, 0, 98, 117, 102, 102, 101, 114, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 37, 115, 32, 101, 120, 112, 101, 99, 116, 101, 100, 44, 32, 103, 111, 116, 32, 37, 115, 0, 80, 65, 78, 73, 67, 58, 32, 117, 110, 112, 114, 111, 116, 101, 99, 116, 101, 100, 32, 101, 114, 114, 111, 114, 32, 105, 110, 32, 99, 97, 108, 108, 32, 116, 111, 32, 76, 117, 97, 32, 65, 80, 73, 32, 40, 37, 115, 41, 10, 0, 61, 115, 116, 100, 105, 110, 0, 64, 37, 115, 0, 99, 97, 110, 110, 111, 116, 32, 37, 115, 32, 37, 115, 58, 32, 37, 115, 0, 114, 98, 0, 114, 101, 111, 112, 101, 110, 0, 111, 98, 106, 101, 99, 116, 32, 108, 101, 110, 103, 116, 104, 32, 105, 115, 32, 110, 111, 116, 32, 97, 32, 110, 117, 109, 98, 101, 114, 0, 37, 115, 58, 32, 37, 115, 0, 109, 117, 108, 116, 105, 112, 108, 101, 32, 76, 117, 97, 32, 86, 77, 115, 32, 100, 101, 116, 101, 99, 116, 101, 100, 0, 118, 101, 114, 115, 105, 111, 110, 32, 109, 105, 115, 109, 97, 116, 99, 104, 58, 32, 97, 112, 112, 46, 32, 110, 101, 101, 100, 115, 32, 37, 102, 44, 32, 76, 117, 97, 32, 99, 111, 114, 101, 32, 112, 114, 111, 118, 105, 100, 101, 115, 32, 37, 102, 0, 98, 97, 100, 32, 99, 111, 110, 118, 101, 114, 115, 105, 111, 110, 32, 110, 117, 109, 98, 101, 114, 45, 62, 105, 110, 116, 59, 32, 109, 117, 115, 116, 32, 114, 101, 99, 111, 109, 112, 105, 108, 101, 32, 76, 117, 97, 32, 119, 105, 116, 104, 32, 112, 114, 111, 112, 101, 114, 32, 115, 101, 116, 116, 105, 110, 103, 115, 0, 105, 110, 118, 97, 108, 105, 100, 32, 111, 112, 116, 105, 111, 110, 32, 39, 37, 115, 39, 0, 98, 97, 100, 32, 97, 114, 103, 117, 109, 101, 110, 116, 32, 35, 37, 100, 32, 40, 37, 115, 41, 0, 109, 101, 116, 104, 111, 100, 0, 99, 97, 108, 108, 105, 110, 103, 32, 39, 37, 115, 39, 32, 111, 110, 32, 98, 97, 100, 32, 115, 101, 108, 102, 32, 40, 37, 115, 41, 0, 98, 97, 100, 32, 97, 114, 103, 117, 109, 101, 110, 116, 32, 35, 37, 100, 32, 116, 111, 32, 39, 37, 115, 39, 32, 40, 37, 115, 41, 0, 76, 117, 97, 32, 53, 46, 50, 0, 95, 86, 69, 82, 83, 73, 79, 78, 0, 97, 115, 115, 101, 114, 116, 0, 99, 111, 108, 108, 101, 99, 116, 103, 97, 114, 98, 97, 103, 101, 0, 100, 111, 102, 105, 108, 101, 0, 101, 114, 114, 111, 114, 0, 105, 112, 97, 105, 114, 115, 0, 108, 111, 97, 100, 102, 105, 108, 101, 0, 108, 111, 97, 100, 0, 108, 111, 97, 100, 115, 116, 114, 105, 110, 103, 0, 110, 101, 120, 116, 0, 112, 97, 105, 114, 115, 0, 112, 99, 97, 108, 108, 0, 112, 114, 105, 110, 116, 0, 114, 97, 119, 101, 113, 117, 97, 108, 0, 114, 97, 119, 108, 101, 110, 0, 114, 97, 119, 103, 101, 116, 0, 114, 97, 119, 115, 101, 116, 0, 115, 101, 108, 101, 99, 116, 0, 116, 111, 110, 117, 109, 98, 101, 114, 0, 116, 111, 115, 116, 114, 105, 110, 103, 0, 120, 112, 99, 97, 108, 108, 0, 118, 97, 108, 117, 101, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 98, 97, 115, 101, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 0, 32, 12, 10, 13, 9, 11, 0, 95, 95, 109, 101, 116, 97, 116, 97, 98, 108, 101, 0, 99, 97, 110, 110, 111, 116, 32, 99, 104, 97, 110, 103, 101, 32, 97, 32, 112, 114, 111, 116, 101, 99, 116, 101, 100, 32, 109, 101, 116, 97, 116, 97, 98, 108, 101, 0, 105, 110, 100, 101, 120, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 0, 116, 97, 98, 108, 101, 32, 111, 114, 32, 115, 116, 114, 105, 110, 103, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 39, 116, 111, 115, 116, 114, 105, 110, 103, 39, 32, 109, 117, 115, 116, 32, 114, 101, 116, 117, 114, 110, 32, 97, 32, 115, 116, 114, 105, 110, 103, 32, 116, 111, 32, 39, 112, 114, 105, 110, 116, 39, 0, 95, 95, 112, 97, 105, 114, 115, 0, 98, 116, 0, 61, 40, 108, 111, 97, 100, 41, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 110, 101, 115, 116, 101, 100, 32, 102, 117, 110, 99, 116, 105, 111, 110, 115, 0, 114, 101, 97, 100, 101, 114, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 109, 117, 115, 116, 32, 114, 101, 116, 117, 114, 110, 32, 97, 32, 115, 116, 114, 105, 110, 103, 0, 95, 95, 105, 112, 97, 105, 114, 115, 0, 99, 111, 108, 108, 101, 99, 116, 0, 115, 116, 111, 112, 0, 114, 101, 115, 116, 97, 114, 116, 0, 115, 116, 101, 112, 0, 115, 101, 116, 112, 97, 117, 115, 101, 0, 115, 101, 116, 115, 116, 101, 112, 109, 117, 108, 0, 115, 101, 116, 109, 97, 106, 111, 114, 105, 110, 99, 0, 105, 115, 114, 117, 110, 110, 105, 110, 103, 0, 103, 101, 110, 101, 114, 97, 116, 105, 111, 110, 97, 108, 0, 105, 110, 99, 114, 101, 109, 101, 110, 116, 97, 108, 0, 97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 102, 97, 105, 108, 101, 100, 33, 0, 97, 114, 115, 104, 105, 102, 116, 0, 98, 97, 110, 100, 0, 98, 110, 111, 116, 0, 98, 111, 114, 0, 98, 120, 111, 114, 0, 98, 116, 101, 115, 116, 0, 101, 120, 116, 114, 97, 99, 116, 0, 108, 114, 111, 116, 97, 116, 101, 0, 108, 115, 104, 105, 102, 116, 0, 114, 101, 112, 108, 97, 99, 101, 0, 114, 114, 111, 116, 97, 116, 101, 0, 114, 115, 104, 105, 102, 116, 0, 102, 105, 101, 108, 100, 32, 99, 97, 110, 110, 111, 116, 32, 98, 101, 32, 110, 101, 103, 97, 116, 105, 118, 101, 0, 119, 105, 100, 116, 104, 32, 109, 117, 115, 116, 32, 98, 101, 32, 112, 111, 115, 105, 116, 105, 118, 101, 0, 116, 114, 121, 105, 110, 103, 32, 116, 111, 32, 97, 99, 99, 101, 115, 115, 32, 110, 111, 110, 45, 101, 120, 105, 115, 116, 101, 110, 116, 32, 98, 105, 116, 115, 0, 99, 114, 101, 97, 116, 101, 0, 114, 101, 115, 117, 109, 101, 0, 114, 117, 110, 110, 105, 110, 103, 0, 115, 116, 97, 116, 117, 115, 0, 119, 114, 97, 112, 0, 121, 105, 101, 108, 100, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 32, 116, 111, 32, 114, 101, 115, 117, 109, 101, 0, 99, 97, 110, 110, 111, 116, 32, 114, 101, 115, 117, 109, 101, 32, 100, 101, 97, 100, 32, 99, 111, 114, 111, 117, 116, 105, 110, 101, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 114, 101, 115, 117, 108, 116, 115, 32, 116, 111, 32, 114, 101, 115, 117, 109, 101, 0, 99, 111, 114, 111, 117, 116, 105, 110, 101, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 115, 117, 115, 112, 101, 110, 100, 101, 100, 0, 110, 111, 114, 109, 97, 108, 0, 100, 101, 97, 100, 0, 103, 101, 116, 117, 115, 101, 114, 118, 97, 108, 117, 101, 0, 103, 101, 116, 104, 111, 111, 107, 0, 103, 101, 116, 105, 110, 102, 111, 0, 103, 101, 116, 108, 111, 99, 97, 108, 0, 103, 101, 116, 114, 101, 103, 105, 115, 116, 114, 121, 0, 103, 101, 116, 109, 101, 116, 97, 116, 97, 98, 108, 101, 0, 103, 101, 116, 117, 112, 118, 97, 108, 117, 101, 0, 117, 112, 118, 97, 108, 117, 101, 106, 111, 105, 110, 0, 117, 112, 118, 97, 108, 117, 101, 105, 100, 0, 115, 101, 116, 117, 115, 101, 114, 118, 97, 108, 117, 101, 0, 115, 101, 116, 104, 111, 111, 107, 0, 115, 101, 116, 108, 111, 99, 97, 108, 0, 115, 101, 116, 109, 101, 116, 97, 116, 97, 98, 108, 101, 0, 115, 101, 116, 117, 112, 118, 97, 108, 117, 101, 0, 116, 114, 97, 99, 101, 98, 97, 99, 107, 0, 110, 105, 108, 32, 111, 114, 32, 116, 97, 98, 108, 101, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 108, 101, 118, 101, 108, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 0, 115, 116, 97, 99, 107, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 95, 72, 75, 69, 89, 0, 107, 0, 95, 95, 109, 111, 100, 101, 0, 99, 97, 108, 108, 0, 114, 101, 116, 117, 114, 110, 0, 99, 111, 117, 110, 116, 0, 116, 97, 105, 108, 32, 99, 97, 108, 108, 0, 102, 117, 108, 108, 32, 117, 115, 101, 114, 100, 97, 116, 97, 32, 101, 120, 112, 101, 99, 116, 101, 100, 44, 32, 103, 111, 116, 32, 108, 105, 103, 104, 116, 32, 117, 115, 101, 114, 100, 97, 116, 97, 0, 62, 117, 0, 105, 110, 118, 97, 108, 105, 100, 32, 117, 112, 118, 97, 108, 117, 101, 32, 105, 110, 100, 101, 120, 0, 76, 117, 97, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 102, 108, 110, 83, 116, 117, 0, 62, 37, 115, 0, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 114, 32, 108, 101, 118, 101, 108, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 115, 111, 117, 114, 99, 101, 0, 115, 104, 111, 114, 116, 95, 115, 114, 99, 0, 108, 105, 110, 101, 100, 101, 102, 105, 110, 101, 100, 0, 108, 97, 115, 116, 108, 105, 110, 101, 100, 101, 102, 105, 110, 101, 100, 0, 119, 104, 97, 116, 0, 99, 117, 114, 114, 101, 110, 116, 108, 105, 110, 101, 0, 110, 117, 112, 115, 0, 110, 112, 97, 114, 97, 109, 115, 0, 105, 115, 118, 97, 114, 97, 114, 103, 0, 110, 97, 109, 101, 0, 110, 97, 109, 101, 119, 104, 97, 116, 0, 105, 115, 116, 97, 105, 108, 99, 97, 108, 108, 0, 97, 99, 116, 105, 118, 101, 108, 105, 110, 101, 115, 0, 102, 117, 110, 99, 0, 101, 120, 116, 101, 114, 110, 97, 108, 32, 104, 111, 111, 107, 0, 108, 117, 97, 95, 100, 101, 98, 117, 103, 62, 32, 0, 99, 111, 110, 116, 10, 0, 61, 40, 100, 101, 98, 117, 103, 32, 99, 111, 109, 109, 97, 110, 100, 41, 0, 37, 115, 10, 0, 70, 73, 76, 69, 42, 0, 95, 73, 79, 95, 105, 110, 112, 117, 116, 0, 115, 116, 100, 105, 110, 0, 95, 73, 79, 95, 111, 117, 116, 112, 117, 116, 0, 115, 116, 100, 111, 117, 116, 0, 115, 116, 100, 101, 114, 114, 0, 99, 97, 110, 110, 111, 116, 32, 99, 108, 111, 115, 101, 32, 115, 116, 97, 110, 100, 97, 114, 100, 32, 102, 105, 108, 101, 0, 99, 108, 111, 115, 101, 0, 102, 108, 117, 115, 104, 0, 108, 105, 110, 101, 115, 0, 114, 101, 97, 100, 0, 115, 101, 101, 107, 0, 115, 101, 116, 118, 98, 117, 102, 0, 119, 114, 105, 116, 101, 0, 95, 95, 116, 111, 115, 116, 114, 105, 110, 103, 0, 102, 105, 108, 101, 32, 40, 99, 108, 111, 115, 101, 100, 41, 0, 102, 105, 108, 101, 32, 40, 37, 112, 41, 0, 97, 116, 116, 101, 109, 112, 116, 32, 116, 111, 32, 117, 115, 101, 32, 97, 32, 99, 108, 111, 115, 101, 100, 32, 102, 105, 108, 101, 0, 37, 46, 49, 52, 103, 0, 110, 111, 0, 102, 117, 108, 108, 0, 108, 105, 110, 101, 0, 99, 117, 114, 0, 110, 111, 116, 32, 97, 110, 32, 105, 110, 116, 101, 103, 101, 114, 32, 105, 110, 32, 112, 114, 111, 112, 101, 114, 32, 114, 97, 110, 103, 101, 0, 115, 101, 116, 0, 101, 110, 100, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 0, 105, 110, 118, 97, 108, 105, 100, 32, 111, 112, 116, 105, 111, 110, 0, 37, 108, 102, 0, 105, 110, 118, 97, 108, 105, 100, 32, 102, 111, 114, 109, 97, 116, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 111, 112, 116, 105, 111, 110, 115, 0, 102, 105, 108, 101, 32, 105, 115, 32, 97, 108, 114, 101, 97, 100, 121, 32, 99, 108, 111, 115, 101, 100, 0, 37, 115, 0, 105, 110, 112, 117, 116, 0, 111, 112, 101, 110, 0, 111, 117, 116, 112, 117, 116, 0, 112, 111, 112, 101, 110, 0, 116, 109, 112, 102, 105, 108, 101, 0, 116, 121, 112, 101, 0, 115, 116, 97, 110, 100, 97, 114, 100, 32, 37, 115, 32, 102, 105, 108, 101, 32, 105, 115, 32, 99, 108, 111, 115, 101, 100, 0, 99, 108, 111, 115, 101, 100, 32, 102, 105, 108, 101, 0, 102, 105, 108, 101, 0, 39, 112, 111, 112, 101, 110, 39, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 119, 0, 99, 97, 110, 110, 111, 116, 32, 111, 112, 101, 110, 32, 102, 105, 108, 101, 32, 39, 37, 115, 39, 32, 40, 37, 115, 41, 0, 105, 110, 118, 97, 108, 105, 100, 32, 109, 111, 100, 101, 0, 112, 105, 0, 104, 117, 103, 101, 0, 97, 98, 115, 0, 97, 99, 111, 115, 0, 97, 115, 105, 110, 0, 97, 116, 97, 110, 50, 0, 97, 116, 97, 110, 0, 99, 101, 105, 108, 0, 99, 111, 115, 104, 0, 99, 111, 115, 0, 100, 101, 103, 0, 101, 120, 112, 0, 102, 108, 111, 111, 114, 0, 102, 109, 111, 100, 0, 102, 114, 101, 120, 112, 0, 108, 100, 101, 120, 112, 0, 108, 111, 103, 49, 48, 0, 108, 111, 103, 0, 109, 97, 120, 0, 109, 111, 100, 102, 0, 112, 111, 119, 0, 114, 97, 100, 0, 114, 97, 110, 100, 111, 109, 0, 114, 97, 110, 100, 111, 109, 115, 101, 101, 100, 0, 115, 105, 110, 104, 0, 115, 105, 110, 0, 115, 113, 114, 116, 0, 116, 97, 110, 104, 0, 116, 97, 110, 0, 105, 110, 116, 101, 114, 118, 97, 108, 32, 105, 115, 32, 101, 109, 112, 116, 121, 0, 119, 114, 111, 110, 103, 32, 110, 117, 109, 98, 101, 114, 32, 111, 102, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 0, 99, 108, 111, 99, 107, 0, 100, 97, 116, 101, 0, 100, 105, 102, 102, 116, 105, 109, 101, 0, 101, 120, 101, 99, 117, 116, 101, 0, 101, 120, 105, 116, 0, 103, 101, 116, 101, 110, 118, 0, 114, 101, 110, 97, 109, 101, 0, 115, 101, 116, 108, 111, 99, 97, 108, 101, 0, 116, 105, 109, 101, 0, 116, 109, 112, 110, 97, 109, 101, 0, 117, 110, 97, 98, 108, 101, 32, 116, 111, 32, 103, 101, 110, 101, 114, 97, 116, 101, 32, 97, 32, 117, 110, 105, 113, 117, 101, 32, 102, 105, 108, 101, 110, 97, 109, 101, 0, 115, 101, 99, 0, 109, 105, 110, 0, 104, 111, 117, 114, 0, 100, 97, 121, 0, 102, 105, 101, 108, 100, 32, 39, 37, 115, 39, 32, 109, 105, 115, 115, 105, 110, 103, 32, 105, 110, 32, 100, 97, 116, 101, 32, 116, 97, 98, 108, 101, 0, 109, 111, 110, 116, 104, 0, 121, 101, 97, 114, 0, 105, 115, 100, 115, 116, 0, 97, 108, 108, 0, 99, 111, 108, 108, 97, 116, 101, 0, 99, 116, 121, 112, 101, 0, 109, 111, 110, 101, 116, 97, 114, 121, 0, 110, 117, 109, 101, 114, 105, 99, 0, 37, 99, 0, 42, 116, 0, 119, 100, 97, 121, 0, 121, 100, 97, 121, 0, 97, 65, 98, 66, 99, 100, 72, 73, 106, 109, 77, 112, 83, 85, 119, 87, 120, 88, 121, 89, 122, 37, 0, 105, 110, 118, 97, 108, 105, 100, 32, 99, 111, 110, 118, 101, 114, 115, 105, 111, 110, 32, 115, 112, 101, 99, 105, 102, 105, 101, 114, 32, 39, 37, 37, 37, 115, 39, 0, 98, 121, 116, 101, 0, 99, 104, 97, 114, 0, 100, 117, 109, 112, 0, 102, 105, 110, 100, 0, 102, 111, 114, 109, 97, 116, 0, 103, 109, 97, 116, 99, 104, 0, 103, 115, 117, 98, 0, 108, 101, 110, 0, 108, 111, 119, 101, 114, 0, 109, 97, 116, 99, 104, 0, 114, 101, 112, 0, 114, 101, 118, 101, 114, 115, 101, 0, 115, 117, 98, 0, 117, 112, 112, 101, 114, 0, 114, 101, 115, 117, 108, 116, 105, 110, 103, 32, 115, 116, 114, 105, 110, 103, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 94, 36, 42, 43, 63, 46, 40, 91, 37, 45, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 99, 97, 112, 116, 117, 114, 101, 115, 0, 105, 110, 118, 97, 108, 105, 100, 32, 99, 97, 112, 116, 117, 114, 101, 32, 105, 110, 100, 101, 120, 0, 117, 110, 102, 105, 110, 105, 115, 104, 101, 100, 32, 99, 97, 112, 116, 117, 114, 101, 0, 112, 97, 116, 116, 101, 114, 110, 32, 116, 111, 111, 32, 99, 111, 109, 112, 108, 101, 120, 0, 105, 110, 118, 97, 108, 105, 100, 32, 112, 97, 116, 116, 101, 114, 110, 32, 99, 97, 112, 116, 117, 114, 101, 0, 109, 97, 108, 102, 111, 114, 109, 101, 100, 32, 112, 97, 116, 116, 101, 114, 110, 32, 40, 109, 105, 115, 115, 105, 110, 103, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 32, 116, 111, 32, 39, 37, 37, 98, 39, 41, 0, 109, 105, 115, 115, 105, 110, 103, 32, 39, 91, 39, 32, 97, 102, 116, 101, 114, 32, 39, 37, 37, 102, 39, 32, 105, 110, 32, 112, 97, 116, 116, 101, 114, 110, 0, 109, 97, 108, 102, 111, 114, 109, 101, 100, 32, 112, 97, 116, 116, 101, 114, 110, 32, 40, 101, 110, 100, 115, 32, 119, 105, 116, 104, 32, 39, 37, 37, 39, 41, 0, 109, 97, 108, 102, 111, 114, 109, 101, 100, 32, 112, 97, 116, 116, 101, 114, 110, 32, 40, 109, 105, 115, 115, 105, 110, 103, 32, 39, 93, 39, 41, 0, 105, 110, 118, 97, 108, 105, 100, 32, 99, 97, 112, 116, 117, 114, 101, 32, 105, 110, 100, 101, 120, 32, 37, 37, 37, 100, 0, 115, 116, 114, 105, 110, 103, 47, 102, 117, 110, 99, 116, 105, 111, 110, 47, 116, 97, 98, 108, 101, 32, 101, 120, 112, 101, 99, 116, 101, 100, 0, 105, 110, 118, 97, 108, 105, 100, 32, 117, 115, 101, 32, 111, 102, 32, 39, 37, 99, 39, 32, 105, 110, 32, 114, 101, 112, 108, 97, 99, 101, 109, 101, 110, 116, 32, 115, 116, 114, 105, 110, 103, 0, 105, 110, 118, 97, 108, 105, 100, 32, 114, 101, 112, 108, 97, 99, 101, 109, 101, 110, 116, 32, 118, 97, 108, 117, 101, 32, 40, 97, 32, 37, 115, 41, 0, 110, 111, 32, 118, 97, 108, 117, 101, 0, 45, 43, 32, 35, 48, 0, 105, 110, 118, 97, 108, 105, 100, 32, 102, 111, 114, 109, 97, 116, 32, 40, 114, 101, 112, 101, 97, 116, 101, 100, 32, 102, 108, 97, 103, 115, 41, 0, 105, 110, 118, 97, 108, 105, 100, 32, 102, 111, 114, 109, 97, 116, 32, 40, 119, 105, 100, 116, 104, 32, 111, 114, 32, 112, 114, 101, 99, 105, 115, 105, 111, 110, 32, 116, 111, 111, 32, 108, 111, 110, 103, 41, 0, 110, 111, 116, 32, 97, 32, 110, 117, 109, 98, 101, 114, 32, 105, 110, 32, 112, 114, 111, 112, 101, 114, 32, 114, 97, 110, 103, 101, 0, 110, 111, 116, 32, 97, 32, 110, 111, 110, 45, 110, 101, 103, 97, 116, 105, 118, 101, 32, 110, 117, 109, 98, 101, 114, 32, 105, 110, 32, 112, 114, 111, 112, 101, 114, 32, 114, 97, 110, 103, 101, 0, 92, 37, 100, 0, 92, 37, 48, 51, 100, 0, 105, 110, 118, 97, 108, 105, 100, 32, 111, 112, 116, 105, 111, 110, 32, 39, 37, 37, 37, 99, 39, 32, 116, 111, 32, 39, 102, 111, 114, 109, 97, 116, 39, 0, 117, 110, 97, 98, 108, 101, 32, 116, 111, 32, 100, 117, 109, 112, 32, 103, 105, 118, 101, 110, 32, 102, 117, 110, 99, 116, 105, 111, 110, 0, 118, 97, 108, 117, 101, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 0, 115, 116, 114, 105, 110, 103, 32, 115, 108, 105, 99, 101, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 117, 110, 112, 97, 99, 107, 0, 99, 111, 110, 99, 97, 116, 0, 109, 97, 120, 110, 0, 105, 110, 115, 101, 114, 116, 0, 112, 97, 99, 107, 0, 114, 101, 109, 111, 118, 101, 0, 115, 111, 114, 116, 0, 105, 110, 118, 97, 108, 105, 100, 32, 111, 114, 100, 101, 114, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 111, 114, 32, 115, 111, 114, 116, 105, 110, 103, 0, 112, 111, 115, 105, 116, 105, 111, 110, 32, 111, 117, 116, 32, 111, 102, 32, 98, 111, 117, 110, 100, 115, 0, 116, 111, 111, 32, 109, 97, 110, 121, 32, 114, 101, 115, 117, 108, 116, 115, 32, 116, 111, 32, 117, 110, 112, 97, 99, 107, 0, 110, 0, 119, 114, 111, 110, 103, 32, 110, 117, 109, 98, 101, 114, 32, 111, 102, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 32, 116, 111, 32, 39, 105, 110, 115, 101, 114, 116, 39, 0, 105, 110, 118, 97, 108, 105, 100, 32, 118, 97, 108, 117, 101, 32, 40, 37, 115, 41, 32, 97, 116, 32, 105, 110, 100, 101, 120, 32, 37, 100, 32, 105, 110, 32, 116, 97, 98, 108, 101, 32, 102, 111, 114, 32, 39, 99, 111, 110, 99, 97, 116, 39, 0, 95, 67, 76, 73, 66, 83, 0, 95, 95, 103, 99, 0, 108, 111, 97, 100, 101, 114, 115, 0, 115, 101, 97, 114, 99, 104, 101, 114, 115, 0, 112, 97, 116, 104, 0, 76, 85, 65, 95, 80, 65, 84, 72, 95, 53, 95, 50, 0, 76, 85, 65, 95, 80, 65, 84, 72, 0, 47, 117, 115, 114, 47, 108, 111, 99, 97, 108, 47, 115, 104, 97, 114, 101, 47, 108, 117, 97, 47, 53, 46, 50, 47, 63, 46, 108, 117, 97, 59, 47, 117, 115, 114, 47, 108, 111, 99, 97, 108, 47, 115, 104, 97, 114, 101, 47, 108, 117, 97, 47, 53, 46, 50, 47, 63, 47, 105, 110, 105, 116, 46, 108, 117, 97, 59, 47, 117, 115, 114, 47, 108, 111, 99, 97, 108, 47, 108, 105, 98, 47, 108, 117, 97, 47, 53, 46, 50, 47, 63, 46, 108, 117, 97, 59, 47, 117, 115, 114, 47, 108, 111, 99, 97, 108, 47, 108, 105, 98, 47, 108, 117, 97, 47, 53, 46, 50, 47, 63, 47, 105, 110, 105, 116, 46, 108, 117, 97, 59, 46, 47, 63, 46, 108, 117, 97, 0, 99, 112, 97, 116, 104, 0, 76, 85, 65, 95, 67, 80, 65, 84, 72, 95, 53, 95, 50, 0, 76, 85, 65, 95, 67, 80, 65, 84, 72, 0, 47, 117, 115, 114, 47, 108, 111, 99, 97, 108, 47, 108, 105, 98, 47, 108, 117, 97, 47, 53, 46, 50, 47, 63, 46, 115, 111, 59, 47, 117, 115, 114, 47, 108, 111, 99, 97, 108, 47, 108, 105, 98, 47, 108, 117, 97, 47, 53, 46, 50, 47, 108, 111, 97, 100, 97, 108, 108, 46, 115, 111, 59, 46, 47, 63, 46, 115, 111, 0, 47, 10, 59, 10, 63, 10, 33, 10, 45, 10, 0, 99, 111, 110, 102, 105, 103, 0, 95, 76, 79, 65, 68, 69, 68, 0, 108, 111, 97, 100, 101, 100, 0, 112, 114, 101, 108, 111, 97, 100, 0, 109, 111, 100, 117, 108, 101, 0, 114, 101, 113, 117, 105, 114, 101, 0, 39, 112, 97, 99, 107, 97, 103, 101, 46, 115, 101, 97, 114, 99, 104, 101, 114, 115, 39, 32, 109, 117, 115, 116, 32, 98, 101, 32, 97, 32, 116, 97, 98, 108, 101, 0, 109, 111, 100, 117, 108, 101, 32, 39, 37, 115, 39, 32, 110, 111, 116, 32, 102, 111, 117, 110, 100, 58, 37, 115, 0, 95, 78, 65, 77, 69, 0, 95, 77, 0, 95, 80, 65, 67, 75, 65, 71, 69, 0, 102, 0, 39, 109, 111, 100, 117, 108, 101, 39, 32, 110, 111, 116, 32, 99, 97, 108, 108, 101, 100, 32, 102, 114, 111, 109, 32, 97, 32, 76, 117, 97, 32, 102, 117, 110, 99, 116, 105, 111, 110, 0, 76, 85, 65, 95, 78, 79, 69, 78, 86, 0, 59, 59, 0, 59, 1, 59, 0, 1, 0, 39, 112, 97, 99, 107, 97, 103, 101, 46, 37, 115, 39, 32, 109, 117, 115, 116, 32, 98, 101, 32, 97, 32, 115, 116, 114, 105, 110, 103, 0, 47, 0, 101, 114, 114, 111, 114, 32, 108, 111, 97, 100, 105, 110, 103, 32, 109, 111, 100, 117, 108, 101, 32, 39, 37, 115, 39, 32, 102, 114, 111, 109, 32, 102, 105, 108, 101, 32, 39, 37, 115, 39, 58, 10, 9, 37, 115, 0, 10, 9, 110, 111, 32, 109, 111, 100, 117, 108, 101, 32, 39, 37, 115, 39, 32, 105, 110, 32, 102, 105, 108, 101, 32, 39, 37, 115, 39, 0, 95, 0, 108, 117, 97, 111, 112, 101, 110, 95, 37, 115, 0, 100, 121, 110, 97, 109, 105, 99, 32, 108, 105, 98, 114, 97, 114, 105, 101, 115, 32, 110, 111, 116, 32, 101, 110, 97, 98, 108, 101, 100, 59, 32, 99, 104, 101, 99, 107, 32, 121, 111, 117, 114, 32, 76, 117, 97, 32, 105, 110, 115, 116, 97, 108, 108, 97, 116, 105, 111, 110, 0, 63, 0, 114, 0, 10, 9, 110, 111, 32, 102, 105, 108, 101, 32, 39, 37, 115, 39, 0, 10, 9, 110, 111, 32, 102, 105, 101, 108, 100, 32, 112, 97, 99, 107, 97, 103, 101, 46, 112, 114, 101, 108, 111, 97, 100, 91, 39, 37, 115, 39, 93, 0, 108, 111, 97, 100, 108, 105, 98, 0, 115, 101, 97, 114, 99, 104, 112, 97, 116, 104, 0, 115, 101, 101, 97, 108, 108, 0, 95, 95, 105, 110, 100, 101, 120, 0, 97, 98, 115, 101, 110, 116, 0, 105, 110, 105, 116, 0, 95, 71, 0, 112, 97, 99, 107, 97, 103, 101, 0, 99, 111, 114, 111, 117, 116, 105, 110, 101, 0, 116, 97, 98, 108, 101, 0, 105, 111, 0, 111, 115, 0, 115, 116, 114, 105, 110, 103, 0, 98, 105, 116, 51, 50, 0, 109, 97, 116, 104, 0, 100, 101, 98, 117, 103, 0, 95, 80, 82, 69, 76, 79, 65, 68, 0, 67, 46, 85, 84, 70, 45, 56, 0, 17, 0, 10, 0, 17, 17, 17, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 15, 10, 17, 17, 17, 3, 10, 7, 0, 1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); allocate([19, 9, 11, 11, 0, 0, 9, 6, 11, 0, 0, 11, 0, 6, 17, 0, 0, 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 10, 10, 17, 17, 17, 0, 10, 0, 0, 2, 0, 9, 11, 0, 0, 0, 9, 0, 11, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 4, 13, 0, 0, 0, 0, 9, 14, 0, 0, 0, 0, 0, 14, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 0, 18, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 9, 11, 0, 0, 0, 0, 0, 11, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 45, 43, 32, 32, 32, 48, 88, 48, 120, 0, 40, 110, 117, 108, 108, 41, 0, 45, 48, 88, 43, 48, 88, 32, 48, 88, 45, 48, 120, 43, 48, 120, 32, 48, 120, 0, 105, 110, 102, 0, 73, 78, 70, 0, 78, 65, 78, 0, 84, 33, 34, 25, 13, 1, 2, 3, 17, 75, 28, 12, 16, 4, 11, 29, 18, 30, 39, 104, 110, 111, 112, 113, 98, 32, 5, 6, 15, 19, 20, 21, 26, 8, 22, 7, 40, 36, 23, 24, 9, 10, 14, 27, 31, 37, 35, 131, 130, 125, 38, 42, 43, 60, 61, 62, 63, 67, 71, 74, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 105, 106, 107, 108, 114, 115, 116, 121, 122, 123, 124, 0, 73, 108, 108, 101, 103, 97, 108, 32, 98, 121, 116, 101, 32, 115, 101, 113, 117, 101, 110, 99, 101, 0, 68, 111, 109, 97, 105, 110, 32, 101, 114, 114, 111, 114, 0, 82, 101, 115, 117, 108, 116, 32, 110, 111, 116, 32, 114, 101, 112, 114, 101, 115, 101, 110, 116, 97, 98, 108, 101, 0, 78, 111, 116, 32, 97, 32, 116, 116, 121, 0, 80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 32, 100, 101, 110, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 110, 111, 116, 32, 112, 101, 114, 109, 105, 116, 116, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 102, 105, 108, 101, 32, 111, 114, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 78, 111, 32, 115, 117, 99, 104, 32, 112, 114, 111, 99, 101, 115, 115, 0, 70, 105, 108, 101, 32, 101, 120, 105, 115, 116, 115, 0, 86, 97, 108, 117, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 32, 102, 111, 114, 32, 100, 97, 116, 97, 32, 116, 121, 112, 101, 0, 78, 111, 32, 115, 112, 97, 99, 101, 32, 108, 101, 102, 116, 32, 111, 110, 32, 100, 101, 118, 105, 99, 101, 0, 79, 117, 116, 32, 111, 102, 32, 109, 101, 109, 111, 114, 121, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 98, 117, 115, 121, 0, 73, 110, 116, 101, 114, 114, 117, 112, 116, 101, 100, 32, 115, 121, 115, 116, 101, 109, 32, 99, 97, 108, 108, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 116, 101, 109, 112, 111, 114, 97, 114, 105, 108, 121, 32, 117, 110, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 73, 110, 118, 97, 108, 105, 100, 32, 115, 101, 101, 107, 0, 67, 114, 111, 115, 115, 45, 100, 101, 118, 105, 99, 101, 32, 108, 105, 110, 107, 0, 82, 101, 97, 100, 45, 111, 110, 108, 121, 32, 102, 105, 108, 101, 32, 115, 121, 115, 116, 101, 109, 0, 68, 105, 114, 101, 99, 116, 111, 114, 121, 32, 110, 111, 116, 32, 101, 109, 112, 116, 121, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 112, 101, 101, 114, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 116, 105, 109, 101, 100, 32, 111, 117, 116, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 102, 117, 115, 101, 100, 0, 72, 111, 115, 116, 32, 105, 115, 32, 100, 111, 119, 110, 0, 72, 111, 115, 116, 32, 105, 115, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 65, 100, 100, 114, 101, 115, 115, 32, 105, 110, 32, 117, 115, 101, 0, 66, 114, 111, 107, 101, 110, 32, 112, 105, 112, 101, 0, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 32, 111, 114, 32, 97, 100, 100, 114, 101, 115, 115, 0, 66, 108, 111, 99, 107, 32, 100, 101, 118, 105, 99, 101, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 0, 78, 111, 116, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 73, 115, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 84, 101, 120, 116, 32, 102, 105, 108, 101, 32, 98, 117, 115, 121, 0, 69, 120, 101, 99, 32, 102, 111, 114, 109, 97, 116, 32, 101, 114, 114, 111, 114, 0, 73, 110, 118, 97, 108, 105, 100, 32, 97, 114, 103, 117, 109, 101, 110, 116, 0, 65, 114, 103, 117, 109, 101, 110, 116, 32, 108, 105, 115, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 83, 121, 109, 98, 111, 108, 105, 99, 32, 108, 105, 110, 107, 32, 108, 111, 111, 112, 0, 70, 105, 108, 101, 110, 97, 109, 101, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 111, 112, 101, 110, 32, 102, 105, 108, 101, 115, 32, 105, 110, 32, 115, 121, 115, 116, 101, 109, 0, 78, 111, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 66, 97, 100, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 0, 78, 111, 32, 99, 104, 105, 108, 100, 32, 112, 114, 111, 99, 101, 115, 115, 0, 66, 97, 100, 32, 97, 100, 100, 114, 101, 115, 115, 0, 70, 105, 108, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 108, 105, 110, 107, 115, 0, 78, 111, 32, 108, 111, 99, 107, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 100, 101, 97, 100, 108, 111, 99, 107, 32, 119, 111, 117, 108, 100, 32, 111, 99, 99, 117, 114, 0, 83, 116, 97, 116, 101, 32, 110, 111, 116, 32, 114, 101, 99, 111, 118, 101, 114, 97, 98, 108, 101, 0, 80, 114, 101, 118, 105, 111, 117, 115, 32, 111, 119, 110, 101, 114, 32, 100, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 99, 97, 110, 99, 101, 108, 101, 100, 0, 70, 117, 110, 99, 116, 105, 111, 110, 32, 110, 111, 116, 32, 105, 109, 112, 108, 101, 109, 101, 110, 116, 101, 100, 0, 78, 111, 32, 109, 101, 115, 115, 97, 103, 101, 32, 111, 102, 32, 100, 101, 115, 105, 114, 101, 100, 32, 116, 121, 112, 101, 0, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 114, 101, 109, 111, 118, 101, 100, 0, 68, 101, 118, 105, 99, 101, 32, 110, 111, 116, 32, 97, 32, 115, 116, 114, 101, 97, 109, 0, 78, 111, 32, 100, 97, 116, 97, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 68, 101, 118, 105, 99, 101, 32, 116, 105, 109, 101, 111, 117, 116, 0, 79, 117, 116, 32, 111, 102, 32, 115, 116, 114, 101, 97, 109, 115, 32, 114, 101, 115, 111, 117, 114, 99, 101, 115, 0, 76, 105, 110, 107, 32, 104, 97, 115, 32, 98, 101, 101, 110, 32, 115, 101, 118, 101, 114, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 101, 114, 114, 111, 114, 0, 66, 97, 100, 32, 109, 101, 115, 115, 97, 103, 101, 0, 70, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 32, 105, 110, 32, 98, 97, 100, 32, 115, 116, 97, 116, 101, 0, 78, 111, 116, 32, 97, 32, 115, 111, 99, 107, 101, 116, 0, 68, 101, 115, 116, 105, 110, 97, 116, 105, 111, 110, 32, 97, 100, 100, 114, 101, 115, 115, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 77, 101, 115, 115, 97, 103, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 119, 114, 111, 110, 103, 32, 116, 121, 112, 101, 32, 102, 111, 114, 32, 115, 111, 99, 107, 101, 116, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 116, 121, 112, 101, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 78, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 65, 100, 100, 114, 101, 115, 115, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 98, 121, 32, 112, 114, 111, 116, 111, 99, 111, 108, 0, 65, 100, 100, 114, 101, 115, 115, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 78, 101, 116, 119, 111, 114, 107, 32, 105, 115, 32, 100, 111, 119, 110, 0, 78, 101, 116, 119, 111, 114, 107, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 110, 101, 116, 119, 111, 114, 107, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 97, 98, 111, 114, 116, 101, 100, 0, 78, 111, 32, 98, 117, 102, 102, 101, 114, 32, 115, 112, 97, 99, 101, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 83, 111, 99, 107, 101, 116, 32, 105, 115, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 110, 111, 116, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 67, 97, 110, 110, 111, 116, 32, 115, 101, 110, 100, 32, 97, 102, 116, 101, 114, 32, 115, 111, 99, 107, 101, 116, 32, 115, 104, 117, 116, 100, 111, 119, 110, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 108, 114, 101, 97, 100, 121, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 83, 116, 97, 108, 101, 32, 102, 105, 108, 101, 32, 104, 97, 110, 100, 108, 101, 0, 82, 101, 109, 111, 116, 101, 32, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 81, 117, 111, 116, 97, 32, 101, 120, 99, 101, 101, 100, 101, 100, 0, 78, 111, 32, 109, 101, 100, 105, 117, 109, 32, 102, 111, 117, 110, 100, 0, 87, 114, 111, 110, 103, 32, 109, 101, 100, 105, 117, 109, 32, 116, 121, 112, 101, 0, 78, 111, 32, 101, 114, 114, 111, 114, 32, 105, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 0, 0, 46, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 4, 7, 3, 6, 5, 0, 105, 110, 102, 105, 110, 105, 116, 121, 0, 110, 97, 110, 0, 114, 119, 97, 0, 47, 116, 109, 112, 0, 47, 116, 109, 112, 47, 116, 37, 120, 45, 37, 120, 0, 119, 43, 0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 10240); var tempDoublePtr = STATICTOP; STATICTOP += 16; Module["_i64Subtract"] = _i64Subtract; Module["_i64Add"] = _i64Add; var ERRNO_CODES = { EPERM: 1, ENOENT: 2, ESRCH: 3, EINTR: 4, EIO: 5, ENXIO: 6, E2BIG: 7, ENOEXEC: 8, EBADF: 9, ECHILD: 10, EAGAIN: 11, EWOULDBLOCK: 11, ENOMEM: 12, EACCES: 13, EFAULT: 14, ENOTBLK: 15, EBUSY: 16, EEXIST: 17, EXDEV: 18, ENODEV: 19, ENOTDIR: 20, EISDIR: 21, EINVAL: 22, ENFILE: 23, EMFILE: 24, ENOTTY: 25, ETXTBSY: 26, EFBIG: 27, ENOSPC: 28, ESPIPE: 29, EROFS: 30, EMLINK: 31, EPIPE: 32, EDOM: 33, ERANGE: 34, ENOMSG: 42, EIDRM: 43, ECHRNG: 44, EL2NSYNC: 45, EL3HLT: 46, EL3RST: 47, ELNRNG: 48, EUNATCH: 49, ENOCSI: 50, EL2HLT: 51, EDEADLK: 35, ENOLCK: 37, EBADE: 52, EBADR: 53, EXFULL: 54, ENOANO: 55, EBADRQC: 56, EBADSLT: 57, EDEADLOCK: 35, EBFONT: 59, ENOSTR: 60, ENODATA: 61, ETIME: 62, ENOSR: 63, ENONET: 64, ENOPKG: 65, EREMOTE: 66, ENOLINK: 67, EADV: 68, ESRMNT: 69, ECOMM: 70, EPROTO: 71, EMULTIHOP: 72, EDOTDOT: 73, EBADMSG: 74, ENOTUNIQ: 76, EBADFD: 77, EREMCHG: 78, ELIBACC: 79, ELIBBAD: 80, ELIBSCN: 81, ELIBMAX: 82, ELIBEXEC: 83, ENOSYS: 38, ENOTEMPTY: 39, ENAMETOOLONG: 36, ELOOP: 40, EOPNOTSUPP: 95, EPFNOSUPPORT: 96, ECONNRESET: 104, ENOBUFS: 105, EAFNOSUPPORT: 97, EPROTOTYPE: 91, ENOTSOCK: 88, ENOPROTOOPT: 92, ESHUTDOWN: 108, ECONNREFUSED: 111, EADDRINUSE: 98, ECONNABORTED: 103, ENETUNREACH: 101, ENETDOWN: 100, ETIMEDOUT: 110, EHOSTDOWN: 112, EHOSTUNREACH: 113, EINPROGRESS: 115, EALREADY: 114, EDESTADDRREQ: 89, EMSGSIZE: 90, EPROTONOSUPPORT: 93, ESOCKTNOSUPPORT: 94, EADDRNOTAVAIL: 99, ENETRESET: 102, EISCONN: 106, ENOTCONN: 107, ETOOMANYREFS: 109, EUSERS: 87, EDQUOT: 122, ESTALE: 116, ENOTSUP: 95, ENOMEDIUM: 123, EILSEQ: 84, EOVERFLOW: 75, ECANCELED: 125, ENOTRECOVERABLE: 131, EOWNERDEAD: 130, ESTRPIPE: 86 }; var ERRNO_MESSAGES = { 0: "Success", 1: "Not super-user", 2: "No such file or directory", 3: "No such process", 4: "Interrupted system call", 5: "I/O error", 6: "No such device or address", 7: "Arg list too long", 8: "Exec format error", 9: "Bad file number", 10: "No children", 11: "No more processes", 12: "Not enough core", 13: "Permission denied", 14: "Bad address", 15: "Block device required", 16: "Mount device busy", 17: "File exists", 18: "Cross-device link", 19: "No such device", 20: "Not a directory", 21: "Is a directory", 22: "Invalid argument", 23: "Too many open files in system", 24: "Too many open files", 25: "Not a typewriter", 26: "Text file busy", 27: "File too large", 28: "No space left on device", 29: "Illegal seek", 30: "Read only file system", 31: "Too many links", 32: "Broken pipe", 33: "Math arg out of domain of func", 34: "Math result not representable", 35: "File locking deadlock error", 36: "File or path name too long", 37: "No record locks available", 38: "Function not implemented", 39: "Directory not empty", 40: "Too many symbolic links", 42: "No message of desired type", 43: "Identifier removed", 44: "Channel number out of range", 45: "Level 2 not synchronized", 46: "Level 3 halted", 47: "Level 3 reset", 48: "Link number out of range", 49: "Protocol driver not attached", 50: "No CSI structure available", 51: "Level 2 halted", 52: "Invalid exchange", 53: "Invalid request descriptor", 54: "Exchange full", 55: "No anode", 56: "Invalid request code", 57: "Invalid slot", 59: "Bad font file fmt", 60: "Device not a stream", 61: "No data (for no delay io)", 62: "Timer expired", 63: "Out of streams resources", 64: "Machine is not on the network", 65: "Package not installed", 66: "The object is remote", 67: "The link has been severed", 68: "Advertise error", 69: "Srmount error", 70: "Communication error on send", 71: "Protocol error", 72: "Multihop attempted", 73: "Cross mount point (not really error)", 74: "Trying to read unreadable message", 75: "Value too large for defined data type", 76: "Given log. name not unique", 77: "f.d. invalid for this operation", 78: "Remote address changed", 79: "Can access a needed shared lib", 80: "Accessing a corrupted shared lib", 81: ".lib section in a.out corrupted", 82: "Attempting to link in too many libs", 83: "Attempting to exec a shared library", 84: "Illegal byte sequence", 86: "Streams pipe error", 87: "Too many users", 88: "Socket operation on non-socket", 89: "Destination address required", 90: "Message too long", 91: "Protocol wrong type for socket", 92: "Protocol not available", 93: "Unknown protocol", 94: "Socket type not supported", 95: "Not supported", 96: "Protocol family not supported", 97: "Address family not supported by protocol family", 98: "Address already in use", 99: "Address not available", 100: "Network interface is not configured", 101: "Network is unreachable", 102: "Connection reset by network", 103: "Connection aborted", 104: "Connection reset by peer", 105: "No buffer space available", 106: "Socket is already connected", 107: "Socket is not connected", 108: "Can't send after socket shutdown", 109: "Too many references", 110: "Connection timed out", 111: "Connection refused", 112: "Host is down", 113: "Host is unreachable", 114: "Socket already connected", 115: "Connection already in progress", 116: "Stale file handle", 122: "Quota exceeded", 123: "No medium (in tape drive)", 125: "Operation canceled", 130: "Previous owner died", 131: "State not recoverable" }; function ___setErrNo(value) { if (Module["___errno_location"]) HEAP32[Module["___errno_location"]() >> 2] = value; return value } var PATH = { splitPath: (function (filename) { var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; return splitPathRe.exec(filename).slice(1) }), normalizeArray: (function (parts, allowAboveRoot) { var up = 0; for (var i = parts.length - 1; i >= 0; i--) { var last = parts[i]; if (last === ".") { parts.splice(i, 1) } else if (last === "..") { parts.splice(i, 1); up++ } else if (up) { parts.splice(i, 1); up-- } } if (allowAboveRoot) { for (; up--; up) { parts.unshift("..") } } return parts }), normalize: (function (path) { var isAbsolute = path.charAt(0) === "/", trailingSlash = path.substr(-1) === "/"; path = PATH.normalizeArray(path.split("/").filter((function (p) { return !!p })), !isAbsolute).join("/"); if (!path && !isAbsolute) { path = "." } if (path && trailingSlash) { path += "/" } return (isAbsolute ? "/" : "") + path }), dirname: (function (path) { var result = PATH.splitPath(path), root = result[0], dir = result[1]; if (!root && !dir) { return "." } if (dir) { dir = dir.substr(0, dir.length - 1) } return root + dir }), basename: (function (path) { if (path === "/") return "/"; var lastSlash = path.lastIndexOf("/"); if (lastSlash === -1) return path; return path.substr(lastSlash + 1) }), extname: (function (path) { return PATH.splitPath(path)[3] }), join: (function () { var paths = Array.prototype.slice.call(arguments, 0); return PATH.normalize(paths.join("/")) }), join2: (function (l, r) { return PATH.normalize(l + "/" + r) }), resolve: (function () { var resolvedPath = "", resolvedAbsolute = false; for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { var path = i >= 0 ? arguments[i] : FS.cwd(); if (typeof path !== "string") { throw new TypeError("Arguments to path.resolve must be strings") } else if (!path) { return "" } resolvedPath = path + "/" + resolvedPath; resolvedAbsolute = path.charAt(0) === "/" } resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter((function (p) { return !!p })), !resolvedAbsolute).join("/"); return (resolvedAbsolute ? "/" : "") + resolvedPath || "." }), relative: (function (from, to) { from = PATH.resolve(from).substr(1); to = PATH.resolve(to).substr(1); function trim(arr) { var start = 0; for (; start < arr.length; start++) { if (arr[start] !== "") break } var end = arr.length - 1; for (; end >= 0; end--) { if (arr[end] !== "") break } if (start > end) return []; return arr.slice(start, end - start + 1) } var fromParts = trim(from.split("/")); var toParts = trim(to.split("/")); var length = Math.min(fromParts.length, toParts.length); var samePartsLength = length; for (var i = 0; i < length; i++) { if (fromParts[i] !== toParts[i]) { samePartsLength = i; break } } var outputParts = []; for (var i = samePartsLength; i < fromParts.length; i++) { outputParts.push("..") } outputParts = outputParts.concat(toParts.slice(samePartsLength)); return outputParts.join("/") }) }; var TTY = { ttys: [], init: (function () { }), shutdown: (function () { }), register: (function (dev, ops) { TTY.ttys[dev] = { input: [], output: [], ops: ops }; FS.registerDevice(dev, TTY.stream_ops) }), stream_ops: { open: (function (stream) { var tty = TTY.ttys[stream.node.rdev]; if (!tty) { throw new FS.ErrnoError(ERRNO_CODES.ENODEV) } stream.tty = tty; stream.seekable = false }), close: (function (stream) { stream.tty.ops.flush(stream.tty) }), flush: (function (stream) { stream.tty.ops.flush(stream.tty) }), read: (function (stream, buffer, offset, length, pos) { if (!stream.tty || !stream.tty.ops.get_char) { throw new FS.ErrnoError(ERRNO_CODES.ENXIO) } var bytesRead = 0; for (var i = 0; i < length; i++) { var result; try { result = stream.tty.ops.get_char(stream.tty) } catch (e) { throw new FS.ErrnoError(ERRNO_CODES.EIO) } if (result === undefined && bytesRead === 0) { throw new FS.ErrnoError(ERRNO_CODES.EAGAIN) } if (result === null || result === undefined) break; bytesRead++; buffer[offset + i] = result } if (bytesRead) { stream.node.timestamp = Date.now() } return bytesRead }), write: (function (stream, buffer, offset, length, pos) { if (!stream.tty || !stream.tty.ops.put_char) { throw new FS.ErrnoError(ERRNO_CODES.ENXIO) } for (var i = 0; i < length; i++) { try { stream.tty.ops.put_char(stream.tty, buffer[offset + i]) } catch (e) { throw new FS.ErrnoError(ERRNO_CODES.EIO) } } if (length) { stream.node.timestamp = Date.now() } return i }) }, default_tty_ops: { get_char: (function (tty) { if (!tty.input.length) { var result = null; if (ENVIRONMENT_IS_NODE) { var BUFSIZE = 256; var buf = new Buffer(BUFSIZE); var bytesRead = 0; var isPosixPlatform = process.platform != "win32"; var fd = process.stdin.fd; if (isPosixPlatform) { var usingDevice = false; try { fd = fs.openSync("/dev/stdin", "r"); usingDevice = true } catch (e) { } } try { bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null) } catch (e) { if (e.toString().indexOf("EOF") != -1) bytesRead = 0; else throw e } if (usingDevice) { fs.closeSync(fd) } if (bytesRead > 0) { result = buf.slice(0, bytesRead).toString("utf-8") } else { result = null } } else if (typeof window != "undefined" && typeof window.prompt == "function") { result = window.prompt("Input: "); if (result !== null) { result += "\n" } } else if (typeof readline == "function") { result = readline(); if (result !== null) { result += "\n" } } if (!result) { return null } tty.input = intArrayFromString(result, true) } return tty.input.shift() }), put_char: (function (tty, val) { if (val === null || val === 10) { Module["print"](UTF8ArrayToString(tty.output, 0)); tty.output = [] } else { if (val != 0) tty.output.push(val) } }), flush: (function (tty) { if (tty.output && tty.output.length > 0) { Module["print"](UTF8ArrayToString(tty.output, 0)); tty.output = [] } }) }, default_tty1_ops: { put_char: (function (tty, val) { if (val === null || val === 10) { Module["printErr"](UTF8ArrayToString(tty.output, 0)); tty.output = [] } else { if (val != 0) tty.output.push(val) } }), flush: (function (tty) { if (tty.output && tty.output.length > 0) { Module["printErr"](UTF8ArrayToString(tty.output, 0)); tty.output = [] } }) } }; var MEMFS = { ops_table: null, mount: (function (mount) { return MEMFS.createNode(null, "/", 16384 | 511, 0) }), createNode: (function (parent, name, mode, dev) { if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } if (!MEMFS.ops_table) { MEMFS.ops_table = { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, allocate: MEMFS.stream_ops.allocate, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } } } var node = FS.createNode(parent, name, mode, dev); if (FS.isDir(node.mode)) { node.node_ops = MEMFS.ops_table.dir.node; node.stream_ops = MEMFS.ops_table.dir.stream; node.contents = {} } else if (FS.isFile(node.mode)) { node.node_ops = MEMFS.ops_table.file.node; node.stream_ops = MEMFS.ops_table.file.stream; node.usedBytes = 0; node.contents = null } else if (FS.isLink(node.mode)) { node.node_ops = MEMFS.ops_table.link.node; node.stream_ops = MEMFS.ops_table.link.stream } else if (FS.isChrdev(node.mode)) { node.node_ops = MEMFS.ops_table.chrdev.node; node.stream_ops = MEMFS.ops_table.chrdev.stream } node.timestamp = Date.now(); if (parent) { parent.contents[name] = node } return node }), getFileDataAsRegularArray: (function (node) { if (node.contents && node.contents.subarray) { var arr = []; for (var i = 0; i < node.usedBytes; ++i)arr.push(node.contents[i]); return arr } return node.contents }), getFileDataAsTypedArray: (function (node) { if (!node.contents) return new Uint8Array; if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); return new Uint8Array(node.contents) }), expandFileStorage: (function (node, newCapacity) { if (node.contents && node.contents.subarray && newCapacity > node.contents.length) { node.contents = MEMFS.getFileDataAsRegularArray(node); node.usedBytes = node.contents.length } if (!node.contents || node.contents.subarray) { var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0; if (prevCapacity >= newCapacity) return; var CAPACITY_DOUBLING_MAX = 1024 * 1024; newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0); if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); var oldContents = node.contents; node.contents = new Uint8Array(newCapacity); if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); return } if (!node.contents && newCapacity > 0) node.contents = []; while (node.contents.length < newCapacity) node.contents.push(0) }), resizeFileStorage: (function (node, newSize) { if (node.usedBytes == newSize) return; if (newSize == 0) { node.contents = null; node.usedBytes = 0; return } if (!node.contents || node.contents.subarray) { var oldContents = node.contents; node.contents = new Uint8Array(new ArrayBuffer(newSize)); if (oldContents) { node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))) } node.usedBytes = newSize; return } if (!node.contents) node.contents = []; if (node.contents.length > newSize) node.contents.length = newSize; else while (node.contents.length < newSize) node.contents.push(0); node.usedBytes = newSize }), node_ops: { getattr: (function (node) { var attr = {}; attr.dev = FS.isChrdev(node.mode) ? node.id : 1; attr.ino = node.id; attr.mode = node.mode; attr.nlink = 1; attr.uid = 0; attr.gid = 0; attr.rdev = node.rdev; if (FS.isDir(node.mode)) { attr.size = 4096 } else if (FS.isFile(node.mode)) { attr.size = node.usedBytes } else if (FS.isLink(node.mode)) { attr.size = node.link.length } else { attr.size = 0 } attr.atime = new Date(node.timestamp); attr.mtime = new Date(node.timestamp); attr.ctime = new Date(node.timestamp); attr.blksize = 4096; attr.blocks = Math.ceil(attr.size / attr.blksize); return attr }), setattr: (function (node, attr) { if (attr.mode !== undefined) { node.mode = attr.mode } if (attr.timestamp !== undefined) { node.timestamp = attr.timestamp } if (attr.size !== undefined) { MEMFS.resizeFileStorage(node, attr.size) } }), lookup: (function (parent, name) { throw FS.genericErrors[ERRNO_CODES.ENOENT] }), mknod: (function (parent, name, mode, dev) { return MEMFS.createNode(parent, name, mode, dev) }), rename: (function (old_node, new_dir, new_name) { if (FS.isDir(old_node.mode)) { var new_node; try { new_node = FS.lookupNode(new_dir, new_name) } catch (e) { } if (new_node) { for (var i in new_node.contents) { throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY) } } } delete old_node.parent.contents[old_node.name]; old_node.name = new_name; new_dir.contents[new_name] = old_node; old_node.parent = new_dir }), unlink: (function (parent, name) { delete parent.contents[name] }), rmdir: (function (parent, name) { var node = FS.lookupNode(parent, name); for (var i in node.contents) { throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY) } delete parent.contents[name] }), readdir: (function (node) { var entries = [".", ".."]; for (var key in node.contents) { if (!node.contents.hasOwnProperty(key)) { continue } entries.push(key) } return entries }), symlink: (function (parent, newname, oldpath) { var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); node.link = oldpath; return node }), readlink: (function (node) { if (!FS.isLink(node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } return node.link }) }, stream_ops: { read: (function (stream, buffer, offset, length, position) { var contents = stream.node.contents; if (position >= stream.node.usedBytes) return 0; var size = Math.min(stream.node.usedBytes - position, length); assert(size >= 0); if (size > 8 && contents.subarray) { buffer.set(contents.subarray(position, position + size), offset) } else { for (var i = 0; i < size; i++)buffer[offset + i] = contents[position + i] } return size }), write: (function (stream, buffer, offset, length, position, canOwn) { if (!length) return 0; var node = stream.node; node.timestamp = Date.now(); if (buffer.subarray && (!node.contents || node.contents.subarray)) { if (canOwn) { node.contents = buffer.subarray(offset, offset + length); node.usedBytes = length; return length } else if (node.usedBytes === 0 && position === 0) { node.contents = new Uint8Array(buffer.subarray(offset, offset + length)); node.usedBytes = length; return length } else if (position + length <= node.usedBytes) { node.contents.set(buffer.subarray(offset, offset + length), position); return length } } MEMFS.expandFileStorage(node, position + length); if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); else { for (var i = 0; i < length; i++) { node.contents[position + i] = buffer[offset + i] } } node.usedBytes = Math.max(node.usedBytes, position + length); return length }), llseek: (function (stream, offset, whence) { var position = offset; if (whence === 1) { position += stream.position } else if (whence === 2) { if (FS.isFile(stream.node.mode)) { position += stream.node.usedBytes } } if (position < 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } return position }), allocate: (function (stream, offset, length) { MEMFS.expandFileStorage(stream.node, offset + length); stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length) }), mmap: (function (stream, buffer, offset, length, position, prot, flags) { if (!FS.isFile(stream.node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.ENODEV) } var ptr; var allocated; var contents = stream.node.contents; if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) { allocated = false; ptr = contents.byteOffset } else { if (position > 0 || position + length < stream.node.usedBytes) { if (contents.subarray) { contents = contents.subarray(position, position + length) } else { contents = Array.prototype.slice.call(contents, position, position + length) } } allocated = true; ptr = _malloc(length); if (!ptr) { throw new FS.ErrnoError(ERRNO_CODES.ENOMEM) } buffer.set(contents, ptr) } return { ptr: ptr, allocated: allocated } }), msync: (function (stream, buffer, offset, length, mmapFlags) { if (!FS.isFile(stream.node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.ENODEV) } if (mmapFlags & 2) { return 0 } var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); return 0 }) } }; var IDBFS = { dbs: {}, indexedDB: (function () { if (typeof indexedDB !== "undefined") return indexedDB; var ret = null; if (typeof window === "object") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; assert(ret, "IDBFS used, but indexedDB not supported"); return ret }), DB_VERSION: 21, DB_STORE_NAME: "FILE_DATA", mount: (function (mount) { return MEMFS.mount.apply(null, arguments) }), syncfs: (function (mount, populate, callback) { IDBFS.getLocalSet(mount, (function (err, local) { if (err) return callback(err); IDBFS.getRemoteSet(mount, (function (err, remote) { if (err) return callback(err); var src = populate ? remote : local; var dst = populate ? local : remote; IDBFS.reconcile(src, dst, callback) })) })) }), getDB: (function (name, callback) { var db = IDBFS.dbs[name]; if (db) { return callback(null, db) } var req; try { req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION) } catch (e) { return callback(e) } if (!req) { return callback("Unable to connect to IndexedDB") } req.onupgradeneeded = (function (e) { var db = e.target.result; var transaction = e.target.transaction; var fileStore; if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME) } else { fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME) } if (!fileStore.indexNames.contains("timestamp")) { fileStore.createIndex("timestamp", "timestamp", { unique: false }) } }); req.onsuccess = (function () { db = req.result; IDBFS.dbs[name] = db; callback(null, db) }); req.onerror = (function (e) { callback(this.error); e.preventDefault() }) }), getLocalSet: (function (mount, callback) { var entries = {}; function isRealDir(p) { return p !== "." && p !== ".." } function toAbsolute(root) { return (function (p) { return PATH.join2(root, p) }) } var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); while (check.length) { var path = check.pop(); var stat; try { stat = FS.stat(path) } catch (e) { return callback(e) } if (FS.isDir(stat.mode)) { check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))) } entries[path] = { timestamp: stat.mtime } } return callback(null, { type: "local", entries: entries }) }), getRemoteSet: (function (mount, callback) { var entries = {}; IDBFS.getDB(mount.mountpoint, (function (err, db) { if (err) return callback(err); var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readonly"); transaction.onerror = (function (e) { callback(this.error); e.preventDefault() }); var store = transaction.objectStore(IDBFS.DB_STORE_NAME); var index = store.index("timestamp"); index.openKeyCursor().onsuccess = (function (event) { var cursor = event.target.result; if (!cursor) { return callback(null, { type: "remote", db: db, entries: entries }) } entries[cursor.primaryKey] = { timestamp: cursor.key }; cursor.continue() }) })) }), loadLocalEntry: (function (path, callback) { var stat, node; try { var lookup = FS.lookupPath(path); node = lookup.node; stat = FS.stat(path) } catch (e) { return callback(e) } if (FS.isDir(stat.mode)) { return callback(null, { timestamp: stat.mtime, mode: stat.mode }) } else if (FS.isFile(stat.mode)) { node.contents = MEMFS.getFileDataAsTypedArray(node); return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }) } else { return callback(new Error("node type not supported")) } }), storeLocalEntry: (function (path, entry, callback) { try { if (FS.isDir(entry.mode)) { FS.mkdir(path, entry.mode) } else if (FS.isFile(entry.mode)) { FS.writeFile(path, entry.contents, { encoding: "binary", canOwn: true }) } else { return callback(new Error("node type not supported")) } FS.chmod(path, entry.mode); FS.utime(path, entry.timestamp, entry.timestamp) } catch (e) { return callback(e) } callback(null) }), removeLocalEntry: (function (path, callback) { try { var lookup = FS.lookupPath(path); var stat = FS.stat(path); if (FS.isDir(stat.mode)) { FS.rmdir(path) } else if (FS.isFile(stat.mode)) { FS.unlink(path) } } catch (e) { return callback(e) } callback(null) }), loadRemoteEntry: (function (store, path, callback) { var req = store.get(path); req.onsuccess = (function (event) { callback(null, event.target.result) }); req.onerror = (function (e) { callback(this.error); e.preventDefault() }) }), storeRemoteEntry: (function (store, path, entry, callback) { var req = store.put(entry, path); req.onsuccess = (function () { callback(null) }); req.onerror = (function (e) { callback(this.error); e.preventDefault() }) }), removeRemoteEntry: (function (store, path, callback) { var req = store.delete(path); req.onsuccess = (function () { callback(null) }); req.onerror = (function (e) { callback(this.error); e.preventDefault() }) }), reconcile: (function (src, dst, callback) { var total = 0; var create = []; Object.keys(src.entries).forEach((function (key) { var e = src.entries[key]; var e2 = dst.entries[key]; if (!e2 || e.timestamp > e2.timestamp) { create.push(key); total++ } })); var remove = []; Object.keys(dst.entries).forEach((function (key) { var e = dst.entries[key]; var e2 = src.entries[key]; if (!e2) { remove.push(key); total++ } })); if (!total) { return callback(null) } var completed = 0; var db = src.type === "remote" ? src.db : dst.db; var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readwrite"); var store = transaction.objectStore(IDBFS.DB_STORE_NAME); function done(err) { if (err) { if (!done.errored) { done.errored = true; return callback(err) } return } if (++completed >= total) { return callback(null) } } transaction.onerror = (function (e) { done(this.error); e.preventDefault() }); create.sort().forEach((function (path) { if (dst.type === "local") { IDBFS.loadRemoteEntry(store, path, (function (err, entry) { if (err) return done(err); IDBFS.storeLocalEntry(path, entry, done) })) } else { IDBFS.loadLocalEntry(path, (function (err, entry) { if (err) return done(err); IDBFS.storeRemoteEntry(store, path, entry, done) })) } })); remove.sort().reverse().forEach((function (path) { if (dst.type === "local") { IDBFS.removeLocalEntry(path, done) } else { IDBFS.removeRemoteEntry(store, path, done) } })) }) }; var NODEFS = { isWindows: false, staticInit: (function () { NODEFS.isWindows = !!process.platform.match(/^win/) }), mount: (function (mount) { assert(ENVIRONMENT_IS_NODE); return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0) }), createNode: (function (parent, name, mode, dev) { if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } var node = FS.createNode(parent, name, mode); node.node_ops = NODEFS.node_ops; node.stream_ops = NODEFS.stream_ops; return node }), getMode: (function (path) { var stat; try { stat = fs.lstatSync(path); if (NODEFS.isWindows) { stat.mode = stat.mode | (stat.mode & 146) >> 1 } } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } return stat.mode }), realPath: (function (node) { var parts = []; while (node.parent !== node) { parts.push(node.name); node = node.parent } parts.push(node.mount.opts.root); parts.reverse(); return PATH.join.apply(null, parts) }), flagsToPermissionStringMap: { 0: "r", 1: "r+", 2: "r+", 64: "r", 65: "r+", 66: "r+", 129: "rx+", 193: "rx+", 514: "w+", 577: "w", 578: "w+", 705: "wx", 706: "wx+", 1024: "a", 1025: "a", 1026: "a+", 1089: "a", 1090: "a+", 1153: "ax", 1154: "ax+", 1217: "ax", 1218: "ax+", 4096: "rs", 4098: "rs+" }, flagsToPermissionString: (function (flags) { flags &= ~2097152; flags &= ~2048; flags &= ~32768; flags &= ~524288; if (flags in NODEFS.flagsToPermissionStringMap) { return NODEFS.flagsToPermissionStringMap[flags] } else { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } }), node_ops: { getattr: (function (node) { var path = NODEFS.realPath(node); var stat; try { stat = fs.lstatSync(path) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } if (NODEFS.isWindows && !stat.blksize) { stat.blksize = 4096 } if (NODEFS.isWindows && !stat.blocks) { stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0 } return { dev: stat.dev, ino: stat.ino, mode: stat.mode, nlink: stat.nlink, uid: stat.uid, gid: stat.gid, rdev: stat.rdev, size: stat.size, atime: stat.atime, mtime: stat.mtime, ctime: stat.ctime, blksize: stat.blksize, blocks: stat.blocks } }), setattr: (function (node, attr) { var path = NODEFS.realPath(node); try { if (attr.mode !== undefined) { fs.chmodSync(path, attr.mode); node.mode = attr.mode } if (attr.timestamp !== undefined) { var date = new Date(attr.timestamp); fs.utimesSync(path, date, date) } if (attr.size !== undefined) { fs.truncateSync(path, attr.size) } } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), lookup: (function (parent, name) { var path = PATH.join2(NODEFS.realPath(parent), name); var mode = NODEFS.getMode(path); return NODEFS.createNode(parent, name, mode) }), mknod: (function (parent, name, mode, dev) { var node = NODEFS.createNode(parent, name, mode, dev); var path = NODEFS.realPath(node); try { if (FS.isDir(node.mode)) { fs.mkdirSync(path, node.mode) } else { fs.writeFileSync(path, "", { mode: node.mode }) } } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } return node }), rename: (function (oldNode, newDir, newName) { var oldPath = NODEFS.realPath(oldNode); var newPath = PATH.join2(NODEFS.realPath(newDir), newName); try { fs.renameSync(oldPath, newPath) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), unlink: (function (parent, name) { var path = PATH.join2(NODEFS.realPath(parent), name); try { fs.unlinkSync(path) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), rmdir: (function (parent, name) { var path = PATH.join2(NODEFS.realPath(parent), name); try { fs.rmdirSync(path) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), readdir: (function (node) { var path = NODEFS.realPath(node); try { return fs.readdirSync(path) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), symlink: (function (parent, newName, oldPath) { var newPath = PATH.join2(NODEFS.realPath(parent), newName); try { fs.symlinkSync(oldPath, newPath) } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), readlink: (function (node) { var path = NODEFS.realPath(node); try { path = fs.readlinkSync(path); path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path); return path } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }) }, stream_ops: { open: (function (stream) { var path = NODEFS.realPath(stream.node); try { if (FS.isFile(stream.node.mode)) { stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)) } } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), close: (function (stream) { try { if (FS.isFile(stream.node.mode) && stream.nfd) { fs.closeSync(stream.nfd) } } catch (e) { if (!e.code) throw e; throw new FS.ErrnoError(ERRNO_CODES[e.code]) } }), read: (function (stream, buffer, offset, length, position) { if (length === 0) return 0; var nbuffer = new Buffer(length); var res; try { res = fs.readSync(stream.nfd, nbuffer, 0, length, position) } catch (e) { throw new FS.ErrnoError(ERRNO_CODES[e.code]) } if (res > 0) { for (var i = 0; i < res; i++) { buffer[offset + i] = nbuffer[i] } } return res }), write: (function (stream, buffer, offset, length, position) { var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); var res; try { res = fs.writeSync(stream.nfd, nbuffer, 0, length, position) } catch (e) { throw new FS.ErrnoError(ERRNO_CODES[e.code]) } return res }), llseek: (function (stream, offset, whence) { var position = offset; if (whence === 1) { position += stream.position } else if (whence === 2) { if (FS.isFile(stream.node.mode)) { try { var stat = fs.fstatSync(stream.nfd); position += stat.size } catch (e) { throw new FS.ErrnoError(ERRNO_CODES[e.code]) } } } if (position < 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } return position }) } }; var WORKERFS = { DIR_MODE: 16895, FILE_MODE: 33279, reader: null, mount: (function (mount) { assert(ENVIRONMENT_IS_WORKER); if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync; var root = WORKERFS.createNode(null, "/", WORKERFS.DIR_MODE, 0); var createdParents = {}; function ensureParent(path) { var parts = path.split("/"); var parent = root; for (var i = 0; i < parts.length - 1; i++) { var curr = parts.slice(0, i + 1).join("/"); if (!createdParents[curr]) { createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0) } parent = createdParents[curr] } return parent } function base(path) { var parts = path.split("/"); return parts[parts.length - 1] } Array.prototype.forEach.call(mount.opts["files"] || [], (function (file) { WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate) })); (mount.opts["blobs"] || []).forEach((function (obj) { WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]) })); (mount.opts["packages"] || []).forEach((function (pack) { pack["metadata"].files.forEach((function (file) { var name = file.filename.substr(1); WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack["blob"].slice(file.start, file.end)) })) })); return root }), createNode: (function (parent, name, mode, dev, contents, mtime) { var node = FS.createNode(parent, name, mode); node.mode = mode; node.node_ops = WORKERFS.node_ops; node.stream_ops = WORKERFS.stream_ops; node.timestamp = (mtime || new Date).getTime(); assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE); if (mode === WORKERFS.FILE_MODE) { node.size = contents.size; node.contents = contents } else { node.size = 4096; node.contents = {} } if (parent) { parent.contents[name] = node } return node }), node_ops: { getattr: (function (node) { return { dev: 1, ino: undefined, mode: node.mode, nlink: 1, uid: 0, gid: 0, rdev: undefined, size: node.size, atime: new Date(node.timestamp), mtime: new Date(node.timestamp), ctime: new Date(node.timestamp), blksize: 4096, blocks: Math.ceil(node.size / 4096) } }), setattr: (function (node, attr) { if (attr.mode !== undefined) { node.mode = attr.mode } if (attr.timestamp !== undefined) { node.timestamp = attr.timestamp } }), lookup: (function (parent, name) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) }), mknod: (function (parent, name, mode, dev) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), rename: (function (oldNode, newDir, newName) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), unlink: (function (parent, name) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), rmdir: (function (parent, name) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), readdir: (function (node) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), symlink: (function (parent, newName, oldPath) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }), readlink: (function (node) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) }) }, stream_ops: { read: (function (stream, buffer, offset, length, position) { if (position >= stream.node.size) return 0; var chunk = stream.node.contents.slice(position, position + length); var ab = WORKERFS.reader.readAsArrayBuffer(chunk); buffer.set(new Uint8Array(ab), offset); return chunk.size }), write: (function (stream, buffer, offset, length, position) { throw new FS.ErrnoError(ERRNO_CODES.EIO) }), llseek: (function (stream, offset, whence) { var position = offset; if (whence === 1) { position += stream.position } else if (whence === 2) { if (FS.isFile(stream.node.mode)) { position += stream.node.size } } if (position < 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } return position }) } }; STATICTOP += 16; STATICTOP += 16; STATICTOP += 16; var FS = { root: null, mounts: [], devices: [null], streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: false, ignorePermissions: true, trackingDelegate: {}, tracking: { openFlags: { READ: 1, WRITE: 2 } }, ErrnoError: null, genericErrors: {}, filesystems: null, syncFSRequests: 0, handleFSError: (function (e) { if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace(); return ___setErrNo(e.errno) }), lookupPath: (function (path, opts) { path = PATH.resolve(FS.cwd(), path); opts = opts || {}; if (!path) return { path: "", node: null }; var defaults = { follow_mount: true, recurse_count: 0 }; for (var key in defaults) { if (opts[key] === undefined) { opts[key] = defaults[key] } } if (opts.recurse_count > 8) { throw new FS.ErrnoError(ERRNO_CODES.ELOOP) } var parts = PATH.normalizeArray(path.split("/").filter((function (p) { return !!p })), false); var current = FS.root; var current_path = "/"; for (var i = 0; i < parts.length; i++) { var islast = i === parts.length - 1; if (islast && opts.parent) { break } current = FS.lookupNode(current, parts[i]); current_path = PATH.join2(current_path, parts[i]); if (FS.isMountpoint(current)) { if (!islast || islast && opts.follow_mount) { current = current.mounted.root } } if (!islast || opts.follow) { var count = 0; while (FS.isLink(current.mode)) { var link = FS.readlink(current_path); current_path = PATH.resolve(PATH.dirname(current_path), link); var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); current = lookup.node; if (count++ > 40) { throw new FS.ErrnoError(ERRNO_CODES.ELOOP) } } } } return { path: current_path, node: current } }), getPath: (function (node) { var path; while (true) { if (FS.isRoot(node)) { var mount = node.mount.mountpoint; if (!path) return mount; return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path } path = path ? node.name + "/" + path : node.name; node = node.parent } }), hashName: (function (parentid, name) { var hash = 0; for (var i = 0; i < name.length; i++) { hash = (hash << 5) - hash + name.charCodeAt(i) | 0 } return (parentid + hash >>> 0) % FS.nameTable.length }), hashAddNode: (function (node) { var hash = FS.hashName(node.parent.id, node.name); node.name_next = FS.nameTable[hash]; FS.nameTable[hash] = node }), hashRemoveNode: (function (node) { var hash = FS.hashName(node.parent.id, node.name); if (FS.nameTable[hash] === node) { FS.nameTable[hash] = node.name_next } else { var current = FS.nameTable[hash]; while (current) { if (current.name_next === node) { current.name_next = node.name_next; break } current = current.name_next } } }), lookupNode: (function (parent, name) { var err = FS.mayLookup(parent); if (err) { throw new FS.ErrnoError(err, parent) } var hash = FS.hashName(parent.id, name); for (var node = FS.nameTable[hash]; node; node = node.name_next) { var nodeName = node.name; if (node.parent.id === parent.id && nodeName === name) { return node } } return FS.lookup(parent, name) }), createNode: (function (parent, name, mode, rdev) { if (!FS.FSNode) { FS.FSNode = (function (parent, name, mode, rdev) { if (!parent) { parent = this } this.parent = parent; this.mount = parent.mount; this.mounted = null; this.id = FS.nextInode++; this.name = name; this.mode = mode; this.node_ops = {}; this.stream_ops = {}; this.rdev = rdev }); FS.FSNode.prototype = {}; var readMode = 292 | 73; var writeMode = 146; Object.defineProperties(FS.FSNode.prototype, { read: { get: (function () { return (this.mode & readMode) === readMode }), set: (function (val) { val ? this.mode |= readMode : this.mode &= ~readMode }) }, write: { get: (function () { return (this.mode & writeMode) === writeMode }), set: (function (val) { val ? this.mode |= writeMode : this.mode &= ~writeMode }) }, isFolder: { get: (function () { return FS.isDir(this.mode) }) }, isDevice: { get: (function () { return FS.isChrdev(this.mode) }) } }) } var node = new FS.FSNode(parent, name, mode, rdev); FS.hashAddNode(node); return node }), destroyNode: (function (node) { FS.hashRemoveNode(node) }), isRoot: (function (node) { return node === node.parent }), isMountpoint: (function (node) { return !!node.mounted }), isFile: (function (mode) { return (mode & 61440) === 32768 }), isDir: (function (mode) { return (mode & 61440) === 16384 }), isLink: (function (mode) { return (mode & 61440) === 40960 }), isChrdev: (function (mode) { return (mode & 61440) === 8192 }), isBlkdev: (function (mode) { return (mode & 61440) === 24576 }), isFIFO: (function (mode) { return (mode & 61440) === 4096 }), isSocket: (function (mode) { return (mode & 49152) === 49152 }), flagModes: { "r": 0, "rs": 1052672, "r+": 2, "w": 577, "wx": 705, "xw": 705, "w+": 578, "wx+": 706, "xw+": 706, "a": 1089, "ax": 1217, "xa": 1217, "a+": 1090, "ax+": 1218, "xa+": 1218 }, modeStringToFlags: (function (str) { var flags = FS.flagModes[str]; if (typeof flags === "undefined") { throw new Error("Unknown file open mode: " + str) } return flags }), flagsToPermissionString: (function (flag) { var perms = ["r", "w", "rw"][flag & 3]; if (flag & 512) { perms += "w" } return perms }), nodePermissions: (function (node, perms) { if (FS.ignorePermissions) { return 0 } if (perms.indexOf("r") !== -1 && !(node.mode & 292)) { return ERRNO_CODES.EACCES } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) { return ERRNO_CODES.EACCES } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) { return ERRNO_CODES.EACCES } return 0 }), mayLookup: (function (dir) { var err = FS.nodePermissions(dir, "x"); if (err) return err; if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES; return 0 }), mayCreate: (function (dir, name) { try { var node = FS.lookupNode(dir, name); return ERRNO_CODES.EEXIST } catch (e) { } return FS.nodePermissions(dir, "wx") }), mayDelete: (function (dir, name, isdir) { var node; try { node = FS.lookupNode(dir, name) } catch (e) { return e.errno } var err = FS.nodePermissions(dir, "wx"); if (err) { return err } if (isdir) { if (!FS.isDir(node.mode)) { return ERRNO_CODES.ENOTDIR } if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { return ERRNO_CODES.EBUSY } } else { if (FS.isDir(node.mode)) { return ERRNO_CODES.EISDIR } } return 0 }), mayOpen: (function (node, flags) { if (!node) { return ERRNO_CODES.ENOENT } if (FS.isLink(node.mode)) { return ERRNO_CODES.ELOOP } else if (FS.isDir(node.mode)) { if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { return ERRNO_CODES.EISDIR } } return FS.nodePermissions(node, FS.flagsToPermissionString(flags)) }), MAX_OPEN_FDS: 4096, nextfd: (function (fd_start, fd_end) { fd_start = fd_start || 0; fd_end = fd_end || FS.MAX_OPEN_FDS; for (var fd = fd_start; fd <= fd_end; fd++) { if (!FS.streams[fd]) { return fd } } throw new FS.ErrnoError(ERRNO_CODES.EMFILE) }), getStream: (function (fd) { return FS.streams[fd] }), createStream: (function (stream, fd_start, fd_end) { if (!FS.FSStream) { FS.FSStream = (function () { }); FS.FSStream.prototype = {}; Object.defineProperties(FS.FSStream.prototype, { object: { get: (function () { return this.node }), set: (function (val) { this.node = val }) }, isRead: { get: (function () { return (this.flags & 2097155) !== 1 }) }, isWrite: { get: (function () { return (this.flags & 2097155) !== 0 }) }, isAppend: { get: (function () { return this.flags & 1024 }) } }) } var newStream = new FS.FSStream; for (var p in stream) { newStream[p] = stream[p] } stream = newStream; var fd = FS.nextfd(fd_start, fd_end); stream.fd = fd; FS.streams[fd] = stream; return stream }), closeStream: (function (fd) { FS.streams[fd] = null }), chrdev_stream_ops: { open: (function (stream) { var device = FS.getDevice(stream.node.rdev); stream.stream_ops = device.stream_ops; if (stream.stream_ops.open) { stream.stream_ops.open(stream) } }), llseek: (function () { throw new FS.ErrnoError(ERRNO_CODES.ESPIPE) }) }, major: (function (dev) { return dev >> 8 }), minor: (function (dev) { return dev & 255 }), makedev: (function (ma, mi) { return ma << 8 | mi }), registerDevice: (function (dev, ops) { FS.devices[dev] = { stream_ops: ops } }), getDevice: (function (dev) { return FS.devices[dev] }), getMounts: (function (mount) { var mounts = []; var check = [mount]; while (check.length) { var m = check.pop(); mounts.push(m); check.push.apply(check, m.mounts) } return mounts }), syncfs: (function (populate, callback) { if (typeof populate === "function") { callback = populate; populate = false } FS.syncFSRequests++; if (FS.syncFSRequests > 1) { console.log("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work") } var mounts = FS.getMounts(FS.root.mount); var completed = 0; function doCallback(err) { assert(FS.syncFSRequests > 0); FS.syncFSRequests--; return callback(err) } function done(err) { if (err) { if (!done.errored) { done.errored = true; return doCallback(err) } return } if (++completed >= mounts.length) { doCallback(null) } } mounts.forEach((function (mount) { if (!mount.type.syncfs) { return done(null) } mount.type.syncfs(mount, populate, done) })) }), mount: (function (type, opts, mountpoint) { var root = mountpoint === "/"; var pseudo = !mountpoint; var node; if (root && FS.root) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } else if (!root && !pseudo) { var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); mountpoint = lookup.path; node = lookup.node; if (FS.isMountpoint(node)) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } if (!FS.isDir(node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR) } } var mount = { type: type, opts: opts, mountpoint: mountpoint, mounts: [] }; var mountRoot = type.mount(mount); mountRoot.mount = mount; mount.root = mountRoot; if (root) { FS.root = mountRoot } else if (node) { node.mounted = mount; if (node.mount) { node.mount.mounts.push(mount) } } return mountRoot }), unmount: (function (mountpoint) { var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); if (!FS.isMountpoint(lookup.node)) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } var node = lookup.node; var mount = node.mounted; var mounts = FS.getMounts(mount); Object.keys(FS.nameTable).forEach((function (hash) { var current = FS.nameTable[hash]; while (current) { var next = current.name_next; if (mounts.indexOf(current.mount) !== -1) { FS.destroyNode(current) } current = next } })); node.mounted = null; var idx = node.mount.mounts.indexOf(mount); assert(idx !== -1); node.mount.mounts.splice(idx, 1) }), lookup: (function (parent, name) { return parent.node_ops.lookup(parent, name) }), mknod: (function (path, mode, dev) { var lookup = FS.lookupPath(path, { parent: true }); var parent = lookup.node; var name = PATH.basename(path); if (!name || name === "." || name === "..") { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } var err = FS.mayCreate(parent, name); if (err) { throw new FS.ErrnoError(err) } if (!parent.node_ops.mknod) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } return parent.node_ops.mknod(parent, name, mode, dev) }), create: (function (path, mode) { mode = mode !== undefined ? mode : 438; mode &= 4095; mode |= 32768; return FS.mknod(path, mode, 0) }), mkdir: (function (path, mode) { mode = mode !== undefined ? mode : 511; mode &= 511 | 512; mode |= 16384; return FS.mknod(path, mode, 0) }), mkdev: (function (path, mode, dev) { if (typeof dev === "undefined") { dev = mode; mode = 438 } mode |= 8192; return FS.mknod(path, mode, dev) }), symlink: (function (oldpath, newpath) { if (!PATH.resolve(oldpath)) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } var lookup = FS.lookupPath(newpath, { parent: true }); var parent = lookup.node; if (!parent) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } var newname = PATH.basename(newpath); var err = FS.mayCreate(parent, newname); if (err) { throw new FS.ErrnoError(err) } if (!parent.node_ops.symlink) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } return parent.node_ops.symlink(parent, newname, oldpath) }), rename: (function (old_path, new_path) { var old_dirname = PATH.dirname(old_path); var new_dirname = PATH.dirname(new_path); var old_name = PATH.basename(old_path); var new_name = PATH.basename(new_path); var lookup, old_dir, new_dir; try { lookup = FS.lookupPath(old_path, { parent: true }); old_dir = lookup.node; lookup = FS.lookupPath(new_path, { parent: true }); new_dir = lookup.node } catch (e) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); if (old_dir.mount !== new_dir.mount) { throw new FS.ErrnoError(ERRNO_CODES.EXDEV) } var old_node = FS.lookupNode(old_dir, old_name); var relative = PATH.relative(old_path, new_dirname); if (relative.charAt(0) !== ".") { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } relative = PATH.relative(new_path, old_dirname); if (relative.charAt(0) !== ".") { throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY) } var new_node; try { new_node = FS.lookupNode(new_dir, new_name) } catch (e) { } if (old_node === new_node) { return } var isdir = FS.isDir(old_node.mode); var err = FS.mayDelete(old_dir, old_name, isdir); if (err) { throw new FS.ErrnoError(err) } err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name); if (err) { throw new FS.ErrnoError(err) } if (!old_dir.node_ops.rename) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } if (new_dir !== old_dir) { err = FS.nodePermissions(old_dir, "w"); if (err) { throw new FS.ErrnoError(err) } } try { if (FS.trackingDelegate["willMovePath"]) { FS.trackingDelegate["willMovePath"](old_path, new_path) } } catch (e) { console.log("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message) } FS.hashRemoveNode(old_node); try { old_dir.node_ops.rename(old_node, new_dir, new_name) } catch (e) { throw e } finally { FS.hashAddNode(old_node) } try { if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path) } catch (e) { console.log("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message) } }), rmdir: (function (path) { var lookup = FS.lookupPath(path, { parent: true }); var parent = lookup.node; var name = PATH.basename(path); var node = FS.lookupNode(parent, name); var err = FS.mayDelete(parent, name, true); if (err) { throw new FS.ErrnoError(err) } if (!parent.node_ops.rmdir) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } if (FS.isMountpoint(node)) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } try { if (FS.trackingDelegate["willDeletePath"]) { FS.trackingDelegate["willDeletePath"](path) } } catch (e) { console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message) } parent.node_ops.rmdir(parent, name); FS.destroyNode(node); try { if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path) } catch (e) { console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message) } }), readdir: (function (path) { var lookup = FS.lookupPath(path, { follow: true }); var node = lookup.node; if (!node.node_ops.readdir) { throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR) } return node.node_ops.readdir(node) }), unlink: (function (path) { var lookup = FS.lookupPath(path, { parent: true }); var parent = lookup.node; var name = PATH.basename(path); var node = FS.lookupNode(parent, name); var err = FS.mayDelete(parent, name, false); if (err) { throw new FS.ErrnoError(err) } if (!parent.node_ops.unlink) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } if (FS.isMountpoint(node)) { throw new FS.ErrnoError(ERRNO_CODES.EBUSY) } try { if (FS.trackingDelegate["willDeletePath"]) { FS.trackingDelegate["willDeletePath"](path) } } catch (e) { console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message) } parent.node_ops.unlink(parent, name); FS.destroyNode(node); try { if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path) } catch (e) { console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message) } }), readlink: (function (path) { var lookup = FS.lookupPath(path); var link = lookup.node; if (!link) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } if (!link.node_ops.readlink) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)) }), stat: (function (path, dontFollow) { var lookup = FS.lookupPath(path, { follow: !dontFollow }); var node = lookup.node; if (!node) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } if (!node.node_ops.getattr) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } return node.node_ops.getattr(node) }), lstat: (function (path) { return FS.stat(path, true) }), chmod: (function (path, mode, dontFollow) { var node; if (typeof path === "string") { var lookup = FS.lookupPath(path, { follow: !dontFollow }); node = lookup.node } else { node = path } if (!node.node_ops.setattr) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } node.node_ops.setattr(node, { mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now() }) }), lchmod: (function (path, mode) { FS.chmod(path, mode, true) }), fchmod: (function (fd, mode) { var stream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) } FS.chmod(stream.node, mode) }), chown: (function (path, uid, gid, dontFollow) { var node; if (typeof path === "string") { var lookup = FS.lookupPath(path, { follow: !dontFollow }); node = lookup.node } else { node = path } if (!node.node_ops.setattr) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } node.node_ops.setattr(node, { timestamp: Date.now() }) }), lchown: (function (path, uid, gid) { FS.chown(path, uid, gid, true) }), fchown: (function (fd, uid, gid) { var stream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) } FS.chown(stream.node, uid, gid) }), truncate: (function (path, len) { if (len < 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } var node; if (typeof path === "string") { var lookup = FS.lookupPath(path, { follow: true }); node = lookup.node } else { node = path } if (!node.node_ops.setattr) { throw new FS.ErrnoError(ERRNO_CODES.EPERM) } if (FS.isDir(node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.EISDIR) } if (!FS.isFile(node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } var err = FS.nodePermissions(node, "w"); if (err) { throw new FS.ErrnoError(err) } node.node_ops.setattr(node, { size: len, timestamp: Date.now() }) }), ftruncate: (function (fd, len) { var stream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) } if ((stream.flags & 2097155) === 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } FS.truncate(stream.node, len) }), utime: (function (path, atime, mtime) { var lookup = FS.lookupPath(path, { follow: true }); var node = lookup.node; node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }) }), open: (function (path, flags, mode, fd_start, fd_end) { if (path === "") { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags; mode = typeof mode === "undefined" ? 438 : mode; if (flags & 64) { mode = mode & 4095 | 32768 } else { mode = 0 } var node; if (typeof path === "object") { node = path } else { path = PATH.normalize(path); try { var lookup = FS.lookupPath(path, { follow: !(flags & 131072) }); node = lookup.node } catch (e) { } } var created = false; if (flags & 64) { if (node) { if (flags & 128) { throw new FS.ErrnoError(ERRNO_CODES.EEXIST) } } else { node = FS.mknod(path, mode, 0); created = true } } if (!node) { throw new FS.ErrnoError(ERRNO_CODES.ENOENT) } if (FS.isChrdev(node.mode)) { flags &= ~512 } if (flags & 65536 && !FS.isDir(node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR) } if (!created) { var err = FS.mayOpen(node, flags); if (err) { throw new FS.ErrnoError(err) } } if (flags & 512) { FS.truncate(node, 0) } flags &= ~(128 | 512); var stream = FS.createStream({ node: node, path: FS.getPath(node), flags: flags, seekable: true, position: 0, stream_ops: node.stream_ops, ungotten: [], error: false }, fd_start, fd_end); if (stream.stream_ops.open) { stream.stream_ops.open(stream) } if (Module["logReadFiles"] && !(flags & 1)) { if (!FS.readFiles) FS.readFiles = {}; if (!(path in FS.readFiles)) { FS.readFiles[path] = 1; Module["printErr"]("read file: " + path) } } try { if (FS.trackingDelegate["onOpenFile"]) { var trackingFlags = 0; if ((flags & 2097155) !== 1) { trackingFlags |= FS.tracking.openFlags.READ } if ((flags & 2097155) !== 0) { trackingFlags |= FS.tracking.openFlags.WRITE } FS.trackingDelegate["onOpenFile"](path, trackingFlags) } } catch (e) { console.log("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message) } return stream }), close: (function (stream) { if (stream.getdents) stream.getdents = null; try { if (stream.stream_ops.close) { stream.stream_ops.close(stream) } } catch (e) { throw e } finally { FS.closeStream(stream.fd) } }), llseek: (function (stream, offset, whence) { if (!stream.seekable || !stream.stream_ops.llseek) { throw new FS.ErrnoError(ERRNO_CODES.ESPIPE) } stream.position = stream.stream_ops.llseek(stream, offset, whence); stream.ungotten = []; return stream.position }), read: (function (stream, buffer, offset, length, position) { if (length < 0 || position < 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } if ((stream.flags & 2097155) === 1) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) } if (FS.isDir(stream.node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.EISDIR) } if (!stream.stream_ops.read) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } var seeking = true; if (typeof position === "undefined") { position = stream.position; seeking = false } else if (!stream.seekable) { throw new FS.ErrnoError(ERRNO_CODES.ESPIPE) } var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); if (!seeking) stream.position += bytesRead; return bytesRead }), write: (function (stream, buffer, offset, length, position, canOwn) { if (length < 0 || position < 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } if ((stream.flags & 2097155) === 0) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) } if (FS.isDir(stream.node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.EISDIR) } if (!stream.stream_ops.write) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } if (stream.flags & 1024) { FS.llseek(stream, 0, 2) } var seeking = true; if (typeof position === "undefined") { position = stream.position; seeking = false } else if (!stream.seekable) { throw new FS.ErrnoError(ERRNO_CODES.ESPIPE) } var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); if (!seeking) stream.position += bytesWritten; try { if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path) } catch (e) { console.log("FS.trackingDelegate['onWriteToFile']('" + path + "') threw an exception: " + e.message) } return bytesWritten }), allocate: (function (stream, offset, length) { if (offset < 0 || length <= 0) { throw new FS.ErrnoError(ERRNO_CODES.EINVAL) } if ((stream.flags & 2097155) === 0) { throw new FS.ErrnoError(ERRNO_CODES.EBADF) } if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.ENODEV) } if (!stream.stream_ops.allocate) { throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP) } stream.stream_ops.allocate(stream, offset, length) }), mmap: (function (stream, buffer, offset, length, position, prot, flags) { if ((stream.flags & 2097155) === 1) { throw new FS.ErrnoError(ERRNO_CODES.EACCES) } if (!stream.stream_ops.mmap) { throw new FS.ErrnoError(ERRNO_CODES.ENODEV) } return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags) }), msync: (function (stream, buffer, offset, length, mmapFlags) { if (!stream || !stream.stream_ops.msync) { return 0 } return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags) }), munmap: (function (stream) { return 0 }), ioctl: (function (stream, cmd, arg) { if (!stream.stream_ops.ioctl) { throw new FS.ErrnoError(ERRNO_CODES.ENOTTY) } return stream.stream_ops.ioctl(stream, cmd, arg) }), readFile: (function (path, opts) { opts = opts || {}; opts.flags = opts.flags || "r"; opts.encoding = opts.encoding || "binary"; if (opts.encoding !== "utf8" && opts.encoding !== "binary") { throw new Error('Invalid encoding type "' + opts.encoding + '"') } var ret; var stream = FS.open(path, opts.flags); var stat = FS.stat(path); var length = stat.size; var buf = new Uint8Array(length); FS.read(stream, buf, 0, length, 0); if (opts.encoding === "utf8") { ret = UTF8ArrayToString(buf, 0) } else if (opts.encoding === "binary") { ret = buf } FS.close(stream); return ret }), writeFile: (function (path, data, opts) { opts = opts || {}; opts.flags = opts.flags || "w"; opts.encoding = opts.encoding || "utf8"; if (opts.encoding !== "utf8" && opts.encoding !== "binary") { throw new Error('Invalid encoding type "' + opts.encoding + '"') } var stream = FS.open(path, opts.flags, opts.mode); if (opts.encoding === "utf8") { var buf = new Uint8Array(lengthBytesUTF8(data) + 1); var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn) } else if (opts.encoding === "binary") { FS.write(stream, data, 0, data.length, 0, opts.canOwn) } FS.close(stream) }), cwd: (function () { return FS.currentPath }), chdir: (function (path) { var lookup = FS.lookupPath(path, { follow: true }); if (!FS.isDir(lookup.node.mode)) { throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR) } var err = FS.nodePermissions(lookup.node, "x"); if (err) { throw new FS.ErrnoError(err) } FS.currentPath = lookup.path }), createDefaultDirectories: (function () { FS.mkdir("/tmp"); FS.mkdir("/home"); FS.mkdir("/home/web_user") }), createDefaultDevices: (function () { FS.mkdir("/dev"); FS.registerDevice(FS.makedev(1, 3), { read: (function () { return 0 }), write: (function (stream, buffer, offset, length, pos) { return length }) }); FS.mkdev("/dev/null", FS.makedev(1, 3)); TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); FS.mkdev("/dev/tty", FS.makedev(5, 0)); FS.mkdev("/dev/tty1", FS.makedev(6, 0)); var random_device; if (typeof crypto !== "undefined") { var randomBuffer = new Uint8Array(1); random_device = (function () { crypto.getRandomValues(randomBuffer); return randomBuffer[0] }) } else if (ENVIRONMENT_IS_NODE) { random_device = (function () { return require("crypto").randomBytes(1)[0] }) } else { random_device = (function () { return Math.random() * 256 | 0 }) } FS.createDevice("/dev", "random", random_device); FS.createDevice("/dev", "urandom", random_device); FS.mkdir("/dev/shm"); FS.mkdir("/dev/shm/tmp") }), createSpecialDirectories: (function () { FS.mkdir("/proc"); FS.mkdir("/proc/self"); FS.mkdir("/proc/self/fd"); FS.mount({ mount: (function () { var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73); node.node_ops = { lookup: (function (parent, name) { var fd = +name; var stream = FS.getStream(fd); if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF); var ret = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: (function () { return stream.path }) } }; ret.parent = ret; return ret }) }; return node }) }, {}, "/proc/self/fd") }), createStandardStreams: (function () { if (Module["stdin"]) { FS.createDevice("/dev", "stdin", Module["stdin"]) } else { FS.symlink("/dev/tty", "/dev/stdin") } if (Module["stdout"]) { FS.createDevice("/dev", "stdout", null, Module["stdout"]) } else { FS.symlink("/dev/tty", "/dev/stdout") } if (Module["stderr"]) { FS.createDevice("/dev", "stderr", null, Module["stderr"]) } else { FS.symlink("/dev/tty1", "/dev/stderr") } var stdin = FS.open("/dev/stdin", "r"); assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")"); var stdout = FS.open("/dev/stdout", "w"); assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")"); var stderr = FS.open("/dev/stderr", "w"); assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")") }), ensureErrnoError: (function () { if (FS.ErrnoError) return; FS.ErrnoError = function ErrnoError(errno, node) { this.node = node; this.setErrno = (function (errno) { this.errno = errno; for (var key in ERRNO_CODES) { if (ERRNO_CODES[key] === errno) { this.code = key; break } } }); this.setErrno(errno); this.message = ERRNO_MESSAGES[errno] }; FS.ErrnoError.prototype = new Error; FS.ErrnoError.prototype.constructor = FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function (code) { FS.genericErrors[code] = new FS.ErrnoError(code); FS.genericErrors[code].stack = "" })) }), staticInit: (function () { FS.ensureErrnoError(); FS.nameTable = new Array(4096); FS.mount(MEMFS, {}, "/"); FS.createDefaultDirectories(); FS.createDefaultDevices(); FS.createSpecialDirectories(); FS.filesystems = { "MEMFS": MEMFS, "IDBFS": IDBFS, "NODEFS": NODEFS, "WORKERFS": WORKERFS } }), init: (function (input, output, error) { assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"); FS.init.initialized = true; FS.ensureErrnoError(); Module["stdin"] = input || Module["stdin"]; Module["stdout"] = output || Module["stdout"]; Module["stderr"] = error || Module["stderr"]; FS.createStandardStreams() }), quit: (function () { FS.init.initialized = false; var fflush = Module["_fflush"]; if (fflush) fflush(0); for (var i = 0; i < FS.streams.length; i++) { var stream = FS.streams[i]; if (!stream) { continue } FS.close(stream) } }), getMode: (function (canRead, canWrite) { var mode = 0; if (canRead) mode |= 292 | 73; if (canWrite) mode |= 146; return mode }), joinPath: (function (parts, forceRelative) { var path = PATH.join.apply(null, parts); if (forceRelative && path[0] == "/") path = path.substr(1); return path }), absolutePath: (function (relative, base) { return PATH.resolve(base, relative) }), standardizePath: (function (path) { return PATH.normalize(path) }), findObject: (function (path, dontResolveLastLink) { var ret = FS.analyzePath(path, dontResolveLastLink); if (ret.exists) { return ret.object } else { ___setErrNo(ret.error); return null } }), analyzePath: (function (path, dontResolveLastLink) { try { var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); path = lookup.path } catch (e) { } var ret = { isRoot: false, exists: false, error: 0, name: null, path: null, object: null, parentExists: false, parentPath: null, parentObject: null }; try { var lookup = FS.lookupPath(path, { parent: true }); ret.parentExists = true; ret.parentPath = lookup.path; ret.parentObject = lookup.node; ret.name = PATH.basename(path); lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); ret.exists = true; ret.path = lookup.path; ret.object = lookup.node; ret.name = lookup.node.name; ret.isRoot = lookup.path === "/" } catch (e) { ret.error = e.errno } return ret }), createFolder: (function (parent, name, canRead, canWrite) { var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); var mode = FS.getMode(canRead, canWrite); return FS.mkdir(path, mode) }), createPath: (function (parent, path, canRead, canWrite) { parent = typeof parent === "string" ? parent : FS.getPath(parent); var parts = path.split("/").reverse(); while (parts.length) { var part = parts.pop(); if (!part) continue; var current = PATH.join2(parent, part); try { FS.mkdir(current) } catch (e) { } parent = current } return current }), createFile: (function (parent, name, properties, canRead, canWrite) { var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); var mode = FS.getMode(canRead, canWrite); return FS.create(path, mode) }), createDataFile: (function (parent, name, data, canRead, canWrite, canOwn) { var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent; var mode = FS.getMode(canRead, canWrite); var node = FS.create(path, mode); if (data) { if (typeof data === "string") { var arr = new Array(data.length); for (var i = 0, len = data.length; i < len; ++i)arr[i] = data.charCodeAt(i); data = arr } FS.chmod(node, mode | 146); var stream = FS.open(node, "w"); FS.write(stream, data, 0, data.length, 0, canOwn); FS.close(stream); FS.chmod(node, mode) } return node }), createDevice: (function (parent, name, input, output) { var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); var mode = FS.getMode(!!input, !!output); if (!FS.createDevice.major) FS.createDevice.major = 64; var dev = FS.makedev(FS.createDevice.major++, 0); FS.registerDevice(dev, { open: (function (stream) { stream.seekable = false }), close: (function (stream) { if (output && output.buffer && output.buffer.length) { output(10) } }), read: (function (stream, buffer, offset, length, pos) { var bytesRead = 0; for (var i = 0; i < length; i++) { var result; try { result = input() } catch (e) { throw new FS.ErrnoError(ERRNO_CODES.EIO) } if (result === undefined && bytesRead === 0) { throw new FS.ErrnoError(ERRNO_CODES.EAGAIN) } if (result === null || result === undefined) break; bytesRead++; buffer[offset + i] = result } if (bytesRead) { stream.node.timestamp = Date.now() } return bytesRead }), write: (function (stream, buffer, offset, length, pos) { for (var i = 0; i < length; i++) { try { output(buffer[offset + i]) } catch (e) { throw new FS.ErrnoError(ERRNO_CODES.EIO) } } if (length) { stream.node.timestamp = Date.now() } return i }) }); return FS.mkdev(path, mode, dev) }), createLink: (function (parent, name, target, canRead, canWrite) { var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); return FS.symlink(target, path) }), forceLoadFile: (function (obj) { if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; var success = true; if (typeof XMLHttpRequest !== "undefined") { throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.") } else if (Module["read"]) { try { obj.contents = intArrayFromString(Module["read"](obj.url), true); obj.usedBytes = obj.contents.length } catch (e) { success = false } } else { throw new Error("Cannot load without read() or XMLHttpRequest.") } if (!success) ___setErrNo(ERRNO_CODES.EIO); return success }), createLazyFile: (function (parent, name, url, canRead, canWrite) { function LazyUint8Array() { this.lengthKnown = false; this.chunks = [] } LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { if (idx > this.length - 1 || idx < 0) { return undefined } var chunkOffset = idx % this.chunkSize; var chunkNum = idx / this.chunkSize | 0; return this.getter(chunkNum)[chunkOffset] }; LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { this.getter = getter }; LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { var xhr = new XMLHttpRequest; xhr.open("HEAD", url, false); xhr.send(null); if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); var datalength = Number(xhr.getResponseHeader("Content-length")); var header; var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; var chunkSize = 1024 * 1024; if (!hasByteServing) chunkSize = datalength; var doXHR = (function (from, to) { if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); var xhr = new XMLHttpRequest; xhr.open("GET", url, false); if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer"; if (xhr.overrideMimeType) { xhr.overrideMimeType("text/plain; charset=x-user-defined") } xhr.send(null); if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); if (xhr.response !== undefined) { return new Uint8Array(xhr.response || []) } else { return intArrayFromString(xhr.responseText || "", true) } }); var lazyArray = this; lazyArray.setDataGetter((function (chunkNum) { var start = chunkNum * chunkSize; var end = (chunkNum + 1) * chunkSize - 1; end = Math.min(end, datalength - 1); if (typeof lazyArray.chunks[chunkNum] === "undefined") { lazyArray.chunks[chunkNum] = doXHR(start, end) } if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!"); return lazyArray.chunks[chunkNum] })); if (usesGzip || !datalength) { chunkSize = datalength = 1; datalength = this.getter(0).length; chunkSize = datalength; console.log("LazyFiles on gzip forces download of the whole file when length is accessed") } this._length = datalength; this._chunkSize = chunkSize; this.lengthKnown = true }; if (typeof XMLHttpRequest !== "undefined") { if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; var lazyArray = new LazyUint8Array; Object.defineProperties(lazyArray, { length: { get: (function () { if (!this.lengthKnown) { this.cacheLength() } return this._length }) }, chunkSize: { get: (function () { if (!this.lengthKnown) { this.cacheLength() } return this._chunkSize }) } }); var properties = { isDevice: false, contents: lazyArray } } else { var properties = { isDevice: false, url: url } } var node = FS.createFile(parent, name, properties, canRead, canWrite); if (properties.contents) { node.contents = properties.contents } else if (properties.url) { node.contents = null; node.url = properties.url } Object.defineProperties(node, { usedBytes: { get: (function () { return this.contents.length }) } }); var stream_ops = {}; var keys = Object.keys(node.stream_ops); keys.forEach((function (key) { var fn = node.stream_ops[key]; stream_ops[key] = function forceLoadLazyFile() { if (!FS.forceLoadFile(node)) { throw new FS.ErrnoError(ERRNO_CODES.EIO) } return fn.apply(null, arguments) } })); stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { if (!FS.forceLoadFile(node)) { throw new FS.ErrnoError(ERRNO_CODES.EIO) } var contents = stream.node.contents; if (position >= contents.length) return 0; var size = Math.min(contents.length - position, length); assert(size >= 0); if (contents.slice) { for (var i = 0; i < size; i++) { buffer[offset + i] = contents[position + i] } } else { for (var i = 0; i < size; i++) { buffer[offset + i] = contents.get(position + i) } } return size }; node.stream_ops = stream_ops; return node }), createPreloadedFile: (function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { Browser.init(); var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; var dep = getUniqueRunDependency("cp " + fullname); function processData(byteArray) { function finish(byteArray) { if (preFinish) preFinish(); if (!dontCreateFile) { FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn) } if (onload) onload(); removeRunDependency(dep) } var handled = false; Module["preloadPlugins"].forEach((function (plugin) { if (handled) return; if (plugin["canHandle"](fullname)) { plugin["handle"](byteArray, fullname, finish, (function () { if (onerror) onerror(); removeRunDependency(dep) })); handled = true } })); if (!handled) finish(byteArray) } addRunDependency(dep); if (typeof url == "string") { Browser.asyncLoad(url, (function (byteArray) { processData(byteArray) }), onerror) } else { processData(url) } }), indexedDB: (function () { return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB }), DB_NAME: (function () { return "EM_FS_" + window.location.pathname }), DB_VERSION: 20, DB_STORE_NAME: "FILE_DATA", saveFilesToDB: (function (paths, onload, onerror) { onload = onload || (function () { }); onerror = onerror || (function () { }); var indexedDB = FS.indexedDB(); try { var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) } catch (e) { return onerror(e) } openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { console.log("creating db"); var db = openRequest.result; db.createObjectStore(FS.DB_STORE_NAME) }; openRequest.onsuccess = function openRequest_onsuccess() { var db = openRequest.result; var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite"); var files = transaction.objectStore(FS.DB_STORE_NAME); var ok = 0, fail = 0, total = paths.length; function finish() { if (fail == 0) onload(); else onerror() } paths.forEach((function (path) { var putRequest = files.put(FS.analyzePath(path).object.contents, path); putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() } })); transaction.onerror = onerror }; openRequest.onerror = onerror }), loadFilesFromDB: (function (paths, onload, onerror) { onload = onload || (function () { }); onerror = onerror || (function () { }); var indexedDB = FS.indexedDB(); try { var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) } catch (e) { return onerror(e) } openRequest.onupgradeneeded = onerror; openRequest.onsuccess = function openRequest_onsuccess() { var db = openRequest.result; try { var transaction = db.transaction([FS.DB_STORE_NAME], "readonly") } catch (e) { onerror(e); return } var files = transaction.objectStore(FS.DB_STORE_NAME); var ok = 0, fail = 0, total = paths.length; function finish() { if (fail == 0) onload(); else onerror() } paths.forEach((function (path) { var getRequest = files.get(path); getRequest.onsuccess = function getRequest_onsuccess() { if (FS.analyzePath(path).exists) { FS.unlink(path) } FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); ok++; if (ok + fail == total) finish() }; getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() } })); transaction.onerror = onerror }; openRequest.onerror = onerror }) }; var SYSCALLS = { DEFAULT_POLLMASK: 5, mappings: {}, umask: 511, calculateAt: (function (dirfd, path) { if (path[0] !== "/") { var dir; if (dirfd === -100) { dir = FS.cwd() } else { var dirstream = FS.getStream(dirfd); if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF); dir = dirstream.path } path = PATH.join2(dir, path) } return path }), doStat: (function (func, path, buf) { try { var stat = func(path) } catch (e) { if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { return -ERRNO_CODES.ENOTDIR } throw e } HEAP32[buf >> 2] = stat.dev; HEAP32[buf + 4 >> 2] = 0; HEAP32[buf + 8 >> 2] = stat.ino; HEAP32[buf + 12 >> 2] = stat.mode; HEAP32[buf + 16 >> 2] = stat.nlink; HEAP32[buf + 20 >> 2] = stat.uid; HEAP32[buf + 24 >> 2] = stat.gid; HEAP32[buf + 28 >> 2] = stat.rdev; HEAP32[buf + 32 >> 2] = 0; HEAP32[buf + 36 >> 2] = stat.size; HEAP32[buf + 40 >> 2] = 4096; HEAP32[buf + 44 >> 2] = stat.blocks; HEAP32[buf + 48 >> 2] = stat.atime.getTime() / 1e3 | 0; HEAP32[buf + 52 >> 2] = 0; HEAP32[buf + 56 >> 2] = stat.mtime.getTime() / 1e3 | 0; HEAP32[buf + 60 >> 2] = 0; HEAP32[buf + 64 >> 2] = stat.ctime.getTime() / 1e3 | 0; HEAP32[buf + 68 >> 2] = 0; HEAP32[buf + 72 >> 2] = stat.ino; return 0 }), doMsync: (function (addr, stream, len, flags) { var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len)); FS.msync(stream, buffer, 0, len, flags) }), doMkdir: (function (path, mode) { path = PATH.normalize(path); if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1); FS.mkdir(path, mode, 0); return 0 }), doMknod: (function (path, mode, dev) { switch (mode & 61440) { case 32768: case 8192: case 24576: case 4096: case 49152: break; default: return -ERRNO_CODES.EINVAL }FS.mknod(path, mode, dev); return 0 }), doReadlink: (function (path, buf, bufsize) { if (bufsize <= 0) return -ERRNO_CODES.EINVAL; var ret = FS.readlink(path); ret = ret.slice(0, Math.max(0, bufsize)); writeStringToMemory(ret, buf, true); return ret.length }), doAccess: (function (path, amode) { if (amode & ~7) { return -ERRNO_CODES.EINVAL } var node; var lookup = FS.lookupPath(path, { follow: true }); node = lookup.node; var perms = ""; if (amode & 4) perms += "r"; if (amode & 2) perms += "w"; if (amode & 1) perms += "x"; if (perms && FS.nodePermissions(node, perms)) { return -ERRNO_CODES.EACCES } return 0 }), doDup: (function (path, flags, suggestFD) { var suggest = FS.getStream(suggestFD); if (suggest) FS.close(suggest); return FS.open(path, flags, 0, suggestFD, suggestFD).fd }), doReadv: (function (stream, iov, iovcnt, offset) { var ret = 0; for (var i = 0; i < iovcnt; i++) { var ptr = HEAP32[iov + i * 8 >> 2]; var len = HEAP32[iov + (i * 8 + 4) >> 2]; var curr = FS.read(stream, HEAP8, ptr, len, offset); if (curr < 0) return -1; ret += curr; if (curr < len) break } return ret }), doWritev: (function (stream, iov, iovcnt, offset) { var ret = 0; for (var i = 0; i < iovcnt; i++) { var ptr = HEAP32[iov + i * 8 >> 2]; var len = HEAP32[iov + (i * 8 + 4) >> 2]; var curr = FS.write(stream, HEAP8, ptr, len, offset); if (curr < 0) return -1; ret += curr } return ret }), varargs: 0, get: (function (varargs) { SYSCALLS.varargs += 4; var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; return ret }), getStr: (function () { var ret = Pointer_stringify(SYSCALLS.get()); return ret }), getStreamFromFD: (function () { var stream = FS.getStream(SYSCALLS.get()); if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF); return stream }), getSocketFromFD: (function () { var socket = SOCKFS.getSocket(SYSCALLS.get()); if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF); return socket }), getSocketAddress: (function (allowNull) { var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get(); if (allowNull && addrp === 0) return null; var info = __read_sockaddr(addrp, addrlen); if (info.errno) throw new FS.ErrnoError(info.errno); info.addr = DNS.lookup_addr(info.addr) || info.addr; return info }), get64: (function () { var low = SYSCALLS.get(), high = SYSCALLS.get(); if (low >= 0) assert(high === 0); else assert(high === -1); return low }), getZero: (function () { assert(SYSCALLS.get() === 0) }) }; function ___syscall63(which, varargs) { SYSCALLS.varargs = varargs; try { var old = SYSCALLS.getStreamFromFD(), suggestFD = SYSCALLS.get(); if (old.fd === suggestFD) return suggestFD; return SYSCALLS.doDup(old.path, old.flags, suggestFD) } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } Module["_memset"] = _memset; Module["_bitshift64Shl"] = _bitshift64Shl; function _abort() { Module["abort"]() } function ___lock() { } function ___unlock() { } function _clock() { if (_clock.start === undefined) _clock.start = Date.now(); return (Date.now() - _clock.start) * (1e6 / 1e3) | 0 } function _system(command) { ___setErrNo(ERRNO_CODES.EAGAIN); return -1 } function __isLeapYear(year) { return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) } function __arraySum(array, index) { var sum = 0; for (var i = 0; i <= index; sum += array[i++]); return sum } var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; function __addDays(date, days) { var newDate = new Date(date.getTime()); while (days > 0) { var leap = __isLeapYear(newDate.getFullYear()); var currentMonth = newDate.getMonth(); var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; if (days > daysInCurrentMonth - newDate.getDate()) { days -= daysInCurrentMonth - newDate.getDate() + 1; newDate.setDate(1); if (currentMonth < 11) { newDate.setMonth(currentMonth + 1) } else { newDate.setMonth(0); newDate.setFullYear(newDate.getFullYear() + 1) } } else { newDate.setDate(newDate.getDate() + days); return newDate } } return newDate } function _strftime(s, maxsize, format, tm) { var tm_zone = HEAP32[tm + 40 >> 2]; var date = { tm_sec: HEAP32[tm >> 2], tm_min: HEAP32[tm + 4 >> 2], tm_hour: HEAP32[tm + 8 >> 2], tm_mday: HEAP32[tm + 12 >> 2], tm_mon: HEAP32[tm + 16 >> 2], tm_year: HEAP32[tm + 20 >> 2], tm_wday: HEAP32[tm + 24 >> 2], tm_yday: HEAP32[tm + 28 >> 2], tm_isdst: HEAP32[tm + 32 >> 2], tm_gmtoff: HEAP32[tm + 36 >> 2], tm_zone: tm_zone ? Pointer_stringify(tm_zone) : "" }; var pattern = Pointer_stringify(format); var EXPANSION_RULES_1 = { "%c": "%a %b %d %H:%M:%S %Y", "%D": "%m/%d/%y", "%F": "%Y-%m-%d", "%h": "%b", "%r": "%I:%M:%S %p", "%R": "%H:%M", "%T": "%H:%M:%S", "%x": "%m/%d/%y", "%X": "%H:%M:%S" }; for (var rule in EXPANSION_RULES_1) { pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]) } var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; function leadingSomething(value, digits, character) { var str = typeof value === "number" ? value.toString() : value || ""; while (str.length < digits) { str = character[0] + str } return str } function leadingNulls(value, digits) { return leadingSomething(value, digits, "0") } function compareByDay(date1, date2) { function sgn(value) { return value < 0 ? -1 : value > 0 ? 1 : 0 } var compare; if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) { if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) { compare = sgn(date1.getDate() - date2.getDate()) } } return compare } function getFirstWeekStartDate(janFourth) { switch (janFourth.getDay()) { case 0: return new Date(janFourth.getFullYear() - 1, 11, 29); case 1: return janFourth; case 2: return new Date(janFourth.getFullYear(), 0, 3); case 3: return new Date(janFourth.getFullYear(), 0, 2); case 4: return new Date(janFourth.getFullYear(), 0, 1); case 5: return new Date(janFourth.getFullYear() - 1, 11, 31); case 6: return new Date(janFourth.getFullYear() - 1, 11, 30) } } function getWeekBasedYear(date) { var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4); var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { return thisDate.getFullYear() + 1 } else { return thisDate.getFullYear() } } else { return thisDate.getFullYear() - 1 } } var EXPANSION_RULES_2 = { "%a": (function (date) { return WEEKDAYS[date.tm_wday].substring(0, 3) }), "%A": (function (date) { return WEEKDAYS[date.tm_wday] }), "%b": (function (date) { return MONTHS[date.tm_mon].substring(0, 3) }), "%B": (function (date) { return MONTHS[date.tm_mon] }), "%C": (function (date) { var year = date.tm_year + 1900; return leadingNulls(year / 100 | 0, 2) }), "%d": (function (date) { return leadingNulls(date.tm_mday, 2) }), "%e": (function (date) { return leadingSomething(date.tm_mday, 2, " ") }), "%g": (function (date) { return getWeekBasedYear(date).toString().substring(2) }), "%G": (function (date) { return getWeekBasedYear(date) }), "%H": (function (date) { return leadingNulls(date.tm_hour, 2) }), "%I": (function (date) { var twelveHour = date.tm_hour; if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12; return leadingNulls(twelveHour, 2) }), "%j": (function (date) { return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3) }), "%m": (function (date) { return leadingNulls(date.tm_mon + 1, 2) }), "%M": (function (date) { return leadingNulls(date.tm_min, 2) }), "%n": (function () { return "\n" }), "%p": (function (date) { if (date.tm_hour >= 0 && date.tm_hour < 12) { return "AM" } else { return "PM" } }), "%S": (function (date) { return leadingNulls(date.tm_sec, 2) }), "%t": (function () { return "\t" }), "%u": (function (date) { var day = new Date(date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, 0, 0, 0, 0); return day.getDay() || 7 }), "%U": (function (date) { var janFirst = new Date(date.tm_year + 1900, 0, 1); var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7 - janFirst.getDay()); var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday); if (compareByDay(firstSunday, endDate) < 0) { var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31; var firstSundayUntilEndJanuary = 31 - firstSunday.getDate(); var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate(); return leadingNulls(Math.ceil(days / 7), 2) } return compareByDay(firstSunday, janFirst) === 0 ? "01" : "00" }), "%V": (function (date) { var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4); var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4); var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); var endDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); if (compareByDay(endDate, firstWeekStartThisYear) < 0) { return "53" } if (compareByDay(firstWeekStartNextYear, endDate) <= 0) { return "01" } var daysDifference; if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) { daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate() } else { daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate() } return leadingNulls(Math.ceil(daysDifference / 7), 2) }), "%w": (function (date) { var day = new Date(date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, 0, 0, 0, 0); return day.getDay() }), "%W": (function (date) { var janFirst = new Date(date.tm_year, 0, 1); var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1); var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday); if (compareByDay(firstMonday, endDate) < 0) { var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31; var firstMondayUntilEndJanuary = 31 - firstMonday.getDate(); var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate(); return leadingNulls(Math.ceil(days / 7), 2) } return compareByDay(firstMonday, janFirst) === 0 ? "01" : "00" }), "%y": (function (date) { return (date.tm_year + 1900).toString().substring(2) }), "%Y": (function (date) { return date.tm_year + 1900 }), "%z": (function (date) { var off = date.tm_gmtoff; var ahead = off >= 0; off = Math.abs(off) / 60; off = off / 60 * 100 + off % 60; return (ahead ? "+" : "-") + String("0000" + off).slice(-4) }), "%Z": (function (date) { return date.tm_zone }), "%%": (function () { return "%" }) }; for (var rule in EXPANSION_RULES_2) { if (pattern.indexOf(rule) >= 0) { pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date)) } } var bytes = intArrayFromString(pattern, false); if (bytes.length > maxsize) { return 0 } writeArrayToMemory(bytes, s); return bytes.length - 1 } function _realloc() { throw "bad" } Module["_realloc"] = _realloc; Module["_saveSetjmp"] = _saveSetjmp; var _tzname = STATICTOP; STATICTOP += 16; var _daylight = STATICTOP; STATICTOP += 16; var _timezone = STATICTOP; STATICTOP += 16; function _tzset() { if (_tzset.called) return; _tzset.called = true; HEAP32[_timezone >> 2] = -(new Date).getTimezoneOffset() * 60; var winter = new Date(2e3, 0, 1); var summer = new Date(2e3, 6, 1); HEAP32[_daylight >> 2] = Number(winter.getTimezoneOffset() != summer.getTimezoneOffset()); function extractZone(date) { var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); return match ? match[1] : "GMT" } var winterName = extractZone(winter); var summerName = extractZone(summer); var winterNamePtr = allocate(intArrayFromString(winterName), "i8", ALLOC_NORMAL); var summerNamePtr = allocate(intArrayFromString(summerName), "i8", ALLOC_NORMAL); if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) { HEAP32[_tzname >> 2] = winterNamePtr; HEAP32[_tzname + 4 >> 2] = summerNamePtr } else { HEAP32[_tzname >> 2] = summerNamePtr; HEAP32[_tzname + 4 >> 2] = winterNamePtr } } function _mktime(tmPtr) { _tzset(); var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0); var dst = HEAP32[tmPtr + 32 >> 2]; var guessedOffset = date.getTimezoneOffset(); var start = new Date(date.getFullYear(), 0, 1); var summerOffset = (new Date(2e3, 6, 1)).getTimezoneOffset(); var winterOffset = start.getTimezoneOffset(); var dstOffset = Math.min(winterOffset, summerOffset); if (dst < 0) { HEAP32[tmPtr + 32 >> 2] = Number(dstOffset == guessedOffset) } else if (dst > 0 != (dstOffset == guessedOffset)) { var nonDstOffset = Math.max(winterOffset, summerOffset); var trueOffset = dst > 0 ? dstOffset : nonDstOffset; date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4) } HEAP32[tmPtr + 24 >> 2] = date.getDay(); var yday = (date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24) | 0; HEAP32[tmPtr + 28 >> 2] = yday; return date.getTime() / 1e3 | 0 } function __exit(status) { Module["exit"](status) } function _exit(status) { __exit(status) } function ___syscall330(which, varargs) { SYSCALLS.varargs = varargs; try { var old = SYSCALLS.getStreamFromFD(), suggestFD = SYSCALLS.get(), flags = SYSCALLS.get(); assert(!flags); if (old.fd === suggestFD) return -ERRNO_CODES.EINVAL; return SYSCALLS.doDup(old.path, old.flags, suggestFD) } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function ___syscall54(which, varargs) { SYSCALLS.varargs = varargs; try { var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get(); switch (op) { case 21505: { if (!stream.tty) return -ERRNO_CODES.ENOTTY; return 0 }; case 21506: { if (!stream.tty) return -ERRNO_CODES.ENOTTY; return 0 }; case 21519: { if (!stream.tty) return -ERRNO_CODES.ENOTTY; var argp = SYSCALLS.get(); HEAP32[argp >> 2] = 0; return 0 }; case 21520: { if (!stream.tty) return -ERRNO_CODES.ENOTTY; return -ERRNO_CODES.EINVAL }; case 21531: { var argp = SYSCALLS.get(); return FS.ioctl(stream, op, argp) }; default: abort("bad ioctl syscall " + op) } } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } var ___tm_current = STATICTOP; STATICTOP += 48; var ___tm_timezone = allocate(intArrayFromString("GMT"), "i8", ALLOC_STATIC); function _localtime_r(time, tmPtr) { _tzset(); var date = new Date(HEAP32[time >> 2] * 1e3); HEAP32[tmPtr >> 2] = date.getSeconds(); HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); HEAP32[tmPtr + 8 >> 2] = date.getHours(); HEAP32[tmPtr + 12 >> 2] = date.getDate(); HEAP32[tmPtr + 16 >> 2] = date.getMonth(); HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900; HEAP32[tmPtr + 24 >> 2] = date.getDay(); var start = new Date(date.getFullYear(), 0, 1); var yday = (date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24) | 0; HEAP32[tmPtr + 28 >> 2] = yday; HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60); var summerOffset = (new Date(2e3, 6, 1)).getTimezoneOffset(); var winterOffset = start.getTimezoneOffset(); var dst = date.getTimezoneOffset() == Math.min(winterOffset, summerOffset) | 0; HEAP32[tmPtr + 32 >> 2] = dst; var zonePtr = HEAP32[_tzname + (dst ? Runtime.QUANTUM_SIZE : 0) >> 2]; HEAP32[tmPtr + 40 >> 2] = zonePtr; return tmPtr } function _localtime(time) { return _localtime_r(time, ___tm_current) } Module["_bitshift64Lshr"] = _bitshift64Lshr; function ___syscall38(which, varargs) { SYSCALLS.varargs = varargs; try { var old_path = SYSCALLS.getStr(), new_path = SYSCALLS.getStr(); FS.rename(old_path, new_path); return 0 } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } Module["_testSetjmp"] = _testSetjmp; function _longjmp(env, value) { asm["setThrew"](env, value || 1); throw "longjmp" } function ___syscall33(which, varargs) { SYSCALLS.varargs = varargs; try { var path = SYSCALLS.getStr(), amode = SYSCALLS.get(); return SYSCALLS.doAccess(path, amode) } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function _pthread_cleanup_push(routine, arg) { __ATEXIT__.push((function () { Runtime.dynCall("vi", routine, [arg]) })); _pthread_cleanup_push.level = __ATEXIT__.length } function _gmtime_r(time, tmPtr) { var date = new Date(HEAP32[time >> 2] * 1e3); HEAP32[tmPtr >> 2] = date.getUTCSeconds(); HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes(); HEAP32[tmPtr + 8 >> 2] = date.getUTCHours(); HEAP32[tmPtr + 12 >> 2] = date.getUTCDate(); HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth(); HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900; HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); HEAP32[tmPtr + 36 >> 2] = 0; HEAP32[tmPtr + 32 >> 2] = 0; var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; HEAP32[tmPtr + 28 >> 2] = yday; HEAP32[tmPtr + 40 >> 2] = ___tm_timezone; return tmPtr } function _gmtime(time) { return _gmtime_r(time, ___tm_current) } var _environ = STATICTOP; STATICTOP += 16; function ___buildEnvironment(env) { var MAX_ENV_VALUES = 64; var TOTAL_ENV_SIZE = 1024; var poolPtr; var envPtr; if (!___buildEnvironment.called) { ___buildEnvironment.called = true; ENV["USER"] = ENV["LOGNAME"] = "web_user"; ENV["PATH"] = "/"; ENV["PWD"] = "/"; ENV["HOME"] = "/home/web_user"; ENV["LANG"] = "C"; ENV["_"] = Module["thisProgram"]; poolPtr = allocate(TOTAL_ENV_SIZE, "i8", ALLOC_STATIC); envPtr = allocate(MAX_ENV_VALUES * 4, "i8*", ALLOC_STATIC); HEAP32[envPtr >> 2] = poolPtr; HEAP32[_environ >> 2] = envPtr } else { envPtr = HEAP32[_environ >> 2]; poolPtr = HEAP32[envPtr >> 2] } var strings = []; var totalSize = 0; for (var key in env) { if (typeof env[key] === "string") { var line = key + "=" + env[key]; strings.push(line); totalSize += line.length } } if (totalSize > TOTAL_ENV_SIZE) { throw new Error("Environment size exceeded TOTAL_ENV_SIZE!") } var ptrSize = 4; for (var i = 0; i < strings.length; i++) { var line = strings[i]; writeAsciiToMemory(line, poolPtr); HEAP32[envPtr + i * ptrSize >> 2] = poolPtr; poolPtr += line.length + 1 } HEAP32[envPtr + strings.length * ptrSize >> 2] = 0 } var ENV = {}; function _getenv(name) { if (name === 0) return 0; name = Pointer_stringify(name); if (!ENV.hasOwnProperty(name)) return 0; if (_getenv.ret) _free(_getenv.ret); _getenv.ret = allocate(intArrayFromString(ENV[name]), "i8", ALLOC_NORMAL); return _getenv.ret } function _pthread_cleanup_pop() { assert(_pthread_cleanup_push.level == __ATEXIT__.length, "cannot pop if something else added meanwhile!"); __ATEXIT__.pop(); _pthread_cleanup_push.level = __ATEXIT__.length } function ___syscall5(which, varargs) { SYSCALLS.varargs = varargs; try { var pathname = SYSCALLS.getStr(), flags = SYSCALLS.get(), mode = SYSCALLS.get(); var stream = FS.open(pathname, flags, mode); return stream.fd } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function _emscripten_memcpy_big(dest, src, num) { HEAPU8.set(HEAPU8.subarray(src, src + num), dest); return dest } Module["_memcpy"] = _memcpy; function ___syscall6(which, varargs) { SYSCALLS.varargs = varargs; try { var stream = SYSCALLS.getStreamFromFD(); FS.close(stream); return 0 } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } var cttz_i8 = allocate([8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0], "i8", ALLOC_STATIC); Module["_llvm_cttz_i32"] = _llvm_cttz_i32; Module["___udivmoddi4"] = ___udivmoddi4; Module["___udivdi3"] = ___udivdi3; function ___syscall10(which, varargs) { SYSCALLS.varargs = varargs; try { var path = SYSCALLS.getStr(); FS.unlink(path); return 0 } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } Module["___muldsi3"] = ___muldsi3; Module["___muldi3"] = ___muldi3; var _llvm_pow_f64 = Math_pow; function _sbrk(bytes) { var self = _sbrk; if (!self.called) { DYNAMICTOP = alignMemoryPage(DYNAMICTOP); self.called = true; assert(Runtime.dynamicAlloc); self.alloc = Runtime.dynamicAlloc; Runtime.dynamicAlloc = (function () { abort("cannot dynamically allocate, sbrk now has control") }) } var ret = DYNAMICTOP; if (bytes != 0) { var success = self.alloc(bytes); if (!success) return -1 >>> 0 } return ret } function _difftime(time1, time0) { return time1 - time0 } Module["___uremdi3"] = ___uremdi3; function ___syscall40(which, varargs) { SYSCALLS.varargs = varargs; try { var path = SYSCALLS.getStr(); FS.rmdir(path); return 0 } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function ___syscall265(which, varargs) { SYSCALLS.varargs = varargs; try { return 0 } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function _time(ptr) { var ret = Date.now() / 1e3 | 0; if (ptr) { HEAP32[ptr >> 2] = ret } return ret } Module["_pthread_self"] = _pthread_self; function ___syscall140(which, varargs) { SYSCALLS.varargs = varargs; try { var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get(); var offset = offset_low; assert(offset_high === 0); FS.llseek(stream, offset, whence); HEAP32[result >> 2] = stream.position; if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; return 0 } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function ___syscall146(which, varargs) { SYSCALLS.varargs = varargs; try { var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get(); return SYSCALLS.doWritev(stream, iov, iovcnt) } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function ___syscall221(which, varargs) { SYSCALLS.varargs = varargs; try { var stream = SYSCALLS.getStreamFromFD(), cmd = SYSCALLS.get(); switch (cmd) { case 0: { var arg = SYSCALLS.get(); if (arg < 0) { return -ERRNO_CODES.EINVAL } var newStream; newStream = FS.open(stream.path, stream.flags, 0, arg); return newStream.fd }; case 1: case 2: return 0; case 3: return stream.flags; case 4: { var arg = SYSCALLS.get(); stream.flags |= arg; return 0 }; case 12: case 12: { var arg = SYSCALLS.get(); var offset = 0; HEAP16[arg + offset >> 1] = 2; return 0 }; case 13: case 14: case 13: case 14: return 0; case 16: case 8: return -ERRNO_CODES.EINVAL; case 9: ___setErrNo(ERRNO_CODES.EINVAL); return -1; default: { return -ERRNO_CODES.EINVAL } } } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } function ___syscall145(which, varargs) { SYSCALLS.varargs = varargs; try { var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get(); return SYSCALLS.doReadv(stream, iov, iovcnt) } catch (e) { if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } FS.staticInit(); __ATINIT__.unshift((function () { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() })); __ATMAIN__.push((function () { FS.ignorePermissions = false })); __ATEXIT__.push((function () { FS.quit() })); Module["FS_createFolder"] = FS.createFolder; Module["FS_createPath"] = FS.createPath; Module["FS_createDataFile"] = FS.createDataFile; Module["FS_createPreloadedFile"] = FS.createPreloadedFile; Module["FS_createLazyFile"] = FS.createLazyFile; Module["FS_createLink"] = FS.createLink; Module["FS_createDevice"] = FS.createDevice; Module["FS_unlink"] = FS.unlink; __ATINIT__.unshift((function () { TTY.init() })); __ATEXIT__.push((function () { TTY.shutdown() })); if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit() } ___buildEnvironment(ENV); STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); staticSealed = true; STACK_MAX = STACK_BASE + TOTAL_STACK; DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); function invoke_iiii(index, a1, a2, a3) { try { return Module["dynCall_iiii"](index, a1, a2, a3) } catch (e) { if (typeof e !== "number" && e !== "longjmp") throw e; asm["setThrew"](1, 0) } } function jsCall_iiii(index, a1, a2, a3) { return Runtime.functionPointers[index](a1, a2, a3) } function invoke_vi(index, a1) { try { Module["dynCall_vi"](index, a1) } catch (e) { if (typeof e !== "number" && e !== "longjmp") throw e; asm["setThrew"](1, 0) } } function jsCall_vi(index, a1) { Runtime.functionPointers[index](a1) } function invoke_vii(index, a1, a2) { try { Module["dynCall_vii"](index, a1, a2) } catch (e) { if (typeof e !== "number" && e !== "longjmp") throw e; asm["setThrew"](1, 0) } } function jsCall_vii(index, a1, a2) { Runtime.functionPointers[index](a1, a2) } function invoke_ii(index, a1) { try { return Module["dynCall_ii"](index, a1) } catch (e) { if (typeof e !== "number" && e !== "longjmp") throw e; asm["setThrew"](1, 0) } } function jsCall_ii(index, a1) { return Runtime.functionPointers[index](a1) } function invoke_iiiii(index, a1, a2, a3, a4) { try { return Module["dynCall_iiiii"](index, a1, a2, a3, a4) } catch (e) { if (typeof e !== "number" && e !== "longjmp") throw e; asm["setThrew"](1, 0) } } function jsCall_iiiii(index, a1, a2, a3, a4) { return Runtime.functionPointers[index](a1, a2, a3, a4) } function invoke_iii(index, a1, a2) { try { return Module["dynCall_iii"](index, a1, a2) } catch (e) { if (typeof e !== "number" && e !== "longjmp") throw e; asm["setThrew"](1, 0) } } function jsCall_iii(index, a1, a2) { return Runtime.functionPointers[index](a1, a2) } Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity }; Module.asmLibraryArg = { "abort": abort, "assert": assert, "invoke_iiii": invoke_iiii, "jsCall_iiii": jsCall_iiii, "invoke_vi": invoke_vi, "jsCall_vi": jsCall_vi, "invoke_vii": invoke_vii, "jsCall_vii": jsCall_vii, "invoke_ii": invoke_ii, "jsCall_ii": jsCall_ii, "invoke_iiiii": invoke_iiiii, "jsCall_iiiii": jsCall_iiiii, "invoke_iii": invoke_iii, "jsCall_iii": jsCall_iii, "_pthread_cleanup_pop": _pthread_cleanup_pop, "___syscall221": ___syscall221, "_llvm_pow_f64": _llvm_pow_f64, "___syscall265": ___syscall265, "___syscall63": ___syscall63, "_abort": _abort, "___syscall40": ___syscall40, "_pthread_cleanup_push": _pthread_cleanup_push, "_difftime": _difftime, "_system": _system, "___buildEnvironment": ___buildEnvironment, "_longjmp": _longjmp, "__addDays": __addDays, "_localtime_r": _localtime_r, "_tzset": _tzset, "___setErrNo": ___setErrNo, "_sbrk": _sbrk, "___syscall330": ___syscall330, "_emscripten_memcpy_big": _emscripten_memcpy_big, "__exit": __exit, "_mktime": _mktime, "_strftime": _strftime, "_clock": _clock, "__arraySum": __arraySum, "_gmtime": _gmtime, "_getenv": _getenv, "___syscall33": ___syscall33, "___syscall54": ___syscall54, "___unlock": ___unlock, "__isLeapYear": __isLeapYear, "___syscall38": ___syscall38, "___syscall10": ___syscall10, "_gmtime_r": _gmtime_r, "___lock": ___lock, "___syscall6": ___syscall6, "___syscall5": ___syscall5, "_time": _time, "___syscall140": ___syscall140, "_localtime": _localtime, "_exit": _exit, "___syscall145": ___syscall145, "___syscall146": ___syscall146, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8 };// EMSCRIPTEN_START_ASM + var asm = (function (global, env, buffer) { + "use asm"; var a = new global.Int8Array(buffer); var b = new global.Int16Array(buffer); var c = new global.Int32Array(buffer); var d = new global.Uint8Array(buffer); var e = new global.Uint16Array(buffer); var f = new global.Uint32Array(buffer); var g = new global.Float32Array(buffer); var h = new global.Float64Array(buffer); var i = env.STACKTOP | 0; var j = env.STACK_MAX | 0; var k = env.tempDoublePtr | 0; var l = env.ABORT | 0; var m = env.cttz_i8 | 0; var n = 0; var o = 0; var p = 0; var q = 0; var r = global.NaN, s = global.Infinity; var t = 0, u = 0, v = 0, w = 0, x = 0.0, y = 0, z = 0, A = 0, B = 0.0; var C = 0; var D = global.Math.floor; var E = global.Math.abs; var F = global.Math.sqrt; var G = global.Math.pow; var H = global.Math.cos; var I = global.Math.sin; var J = global.Math.tan; var K = global.Math.acos; var L = global.Math.asin; var M = global.Math.atan; var N = global.Math.atan2; var O = global.Math.exp; var P = global.Math.log; var Q = global.Math.ceil; var R = global.Math.imul; var S = global.Math.min; var T = global.Math.max; var U = global.Math.clz32; var V = env.abort; var W = env.assert; var X = env.invoke_iiii; var Y = env.jsCall_iiii; var Z = env.invoke_vi; var _ = env.jsCall_vi; var $ = env.invoke_vii; var aa = env.jsCall_vii; var ba = env.invoke_ii; var ca = env.jsCall_ii; var da = env.invoke_iiiii; var ea = env.jsCall_iiiii; var fa = env.invoke_iii; var ga = env.jsCall_iii; var ha = env._pthread_cleanup_pop; var ia = env.___syscall221; var ja = env._llvm_pow_f64; var ka = env.___syscall265; var la = env.___syscall63; var ma = env._abort; var na = env.___syscall40; var oa = env._pthread_cleanup_push; var pa = env._difftime; var qa = env._system; var ra = env.___buildEnvironment; var sa = env._longjmp; var ta = env.__addDays; var ua = env._localtime_r; var va = env._tzset; var wa = env.___setErrNo; var xa = env._sbrk; var ya = env.___syscall330; var za = env._emscripten_memcpy_big; var Aa = env.__exit; var Ba = env._mktime; var Ca = env._strftime; var Da = env._clock; var Ea = env.__arraySum; var Fa = env._gmtime; var Ga = env._getenv; var Ha = env.___syscall33; var Ia = env.___syscall54; var Ja = env.___unlock; var Ka = env.__isLeapYear; var La = env.___syscall38; var Ma = env.___syscall10; var Na = env._gmtime_r; var Oa = env.___lock; var Pa = env.___syscall6; var Qa = env.___syscall5; var Ra = env._time; var Sa = env.___syscall140; var Ta = env._localtime; var Ua = env._exit; var Va = env.___syscall145; var Wa = env.___syscall146; var Xa = 0.0; + // EMSCRIPTEN_START_FUNCS + function Me(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0; K = i; i = i + 16 | 0; B = K; J = b + 60 | 0; c[(c[J >> 2] | 0) + 4 >> 2] = 0; I = b + 56 | 0; A = b + 4 | 0; a: while (1) { z = c[b >> 2] | 0; b: while (1) { switch (z | 0) { case 91: { E = 35; break a } case 61: { E = 39; break a } case 60: { E = 47; break a } case 62: { E = 55; break a } case 126: { E = 63; break a } case 58: { E = 71; break a } case 39: case 34: { E = 79; break a } case 46: { E = 203; break a } case 57: case 56: case 55: case 54: case 53: case 52: case 51: case 50: case 49: case 48: { m = z; break a } case -1: { f = 286; E = 348; break a } case 13: case 10: { E = 4; break b } case 45: break b; case 11: case 9: case 12: case 32: break; default: { E = 325; break a } }f = c[I >> 2] | 0; z = c[f >> 2] | 0; c[f >> 2] = z + -1; if (!z) f = tg(f) | 0; else { z = f + 4 | 0; f = c[z >> 2] | 0; c[z >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; z = f } if ((E | 0) == 4) { E = 0; f = c[I >> 2] | 0; l = c[f >> 2] | 0; c[f >> 2] = l + -1; if (!l) f = tg(f) | 0; else { l = f + 4 | 0; f = c[l >> 2] | 0; c[l >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; switch (f | 0) { case 13: case 10: { if ((f | 0) != (z | 0)) { f = c[I >> 2] | 0; z = c[f >> 2] | 0; c[f >> 2] = z + -1; if (!z) f = tg(f) | 0; else { z = f + 4 | 0; f = c[z >> 2] | 0; c[z >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f } break } default: { } }z = c[A >> 2] | 0; c[A >> 2] = z + 1; if ((z | 0) > 2147483643) { E = 14; break } else continue } f = c[I >> 2] | 0; z = c[f >> 2] | 0; c[f >> 2] = z + -1; if (!z) f = tg(f) | 0; else { z = f + 4 | 0; f = c[z >> 2] | 0; c[z >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if ((f | 0) != 45) { f = 45; E = 348; break } f = c[I >> 2] | 0; z = c[f >> 2] | 0; c[f >> 2] = z + -1; if (!z) f = tg(f) | 0; else { z = f + 4 | 0; f = c[z >> 2] | 0; c[z >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; do if ((f | 0) == 91) { f = Ne(b) | 0; c[(c[J >> 2] | 0) + 4 >> 2] = 0; if ((f | 0) > -1) { Oe(b, 0, f); c[(c[J >> 2] | 0) + 4 >> 2] = 0; continue a } else { f = c[b >> 2] | 0; break } } while (0); while (1) { switch (f | 0) { case -1: case 13: case 10: continue a; default: { } }f = c[I >> 2] | 0; z = c[f >> 2] | 0; c[f >> 2] = z + -1; if (!z) f = tg(f) | 0; else { z = f + 4 | 0; f = c[z >> 2] | 0; c[z >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f } } switch (E | 0) { case 14: { Ie(b, 3539, 0); break } case 35: { f = Ne(b) | 0; if ((f | 0) > -1) { Oe(b, e, f); b = 289; i = K; return b | 0 } if ((f | 0) == -1) { b = 91; i = K; return b | 0 } else Ie(b, 3564, 289); break } case 39: { f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if ((f | 0) != 61) { b = 61; i = K; return b | 0 } f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; b = 281; i = K; return b | 0 } case 47: { f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if ((f | 0) != 61) { b = 60; i = K; return b | 0 } f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; b = 283; i = K; return b | 0 } case 55: { f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if ((f | 0) != 61) { b = 62; i = K; return b | 0 } f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; b = 282; i = K; return b | 0 } case 63: { f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if ((f | 0) != 61) { b = 126; i = K; return b | 0 } f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; b = 284; i = K; return b | 0 } case 71: { f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if ((f | 0) != 58) { b = 58; i = K; return b | 0 } f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; b = 285; i = K; return b | 0 } case 79: { h = c[J >> 2] | 0; l = h + 4 | 0; f = c[l >> 2] | 0; j = h + 8 | 0; k = c[j >> 2] | 0; do if ((f + 1 | 0) >>> 0 > k >>> 0) { if (k >>> 0 > 2147483645) Ie(b, 3498, 0); f = k << 1; g = c[b + 52 >> 2] | 0; if ((f | 0) == -2) Te(g); else { q = Ue(g, c[h >> 2] | 0, k, f) | 0; c[h >> 2] = q; c[j >> 2] = f; p = c[l >> 2] | 0; break } } else { p = f; q = c[h >> 2] | 0 } while (0); r = z & 255; c[l >> 2] = p + 1; a[q + p >> 0] = r; f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; c: do if ((f | 0) != (z | 0)) { n = b + 52 | 0; o = B + 4 | 0; p = B + 8 | 0; d: while (1) { e: do switch (f | 0) { case -1: { E = 92; break d } case 13: case 10: { E = 93; break d } case 92: { f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; do switch (f | 0) { case -1: { f = -1; break e } case 97: { f = 7; E = 164; break } case 98: { f = 8; E = 164; break } case 102: { f = 12; E = 164; break } case 110: { f = 10; E = 164; break } case 114: { f = 13; E = 164; break } case 116: { f = 9; E = 164; break } case 118: { f = 11; E = 164; break } case 120: { c[B >> 2] = 120; f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; c[o >> 2] = f; if (!(a[2581 + (f + 1) >> 0] & 16)) { f = 2; E = 108; break d } g = Ze(f) | 0; f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; c[p >> 2] = f; if (!(a[2581 + (f + 1) >> 0] & 16)) { f = 3; E = 108; break d } f = (Ze(f) | 0) + (g << 4) | 0; E = 164; break } case 13: case 10: { g = c[I >> 2] | 0; H = c[g >> 2] | 0; c[g >> 2] = H + -1; if (!H) g = tg(g) | 0; else { H = g + 4 | 0; g = c[H >> 2] | 0; c[H >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g; switch (g | 0) { case 13: case 10: { if ((g | 0) != (f | 0)) { f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f } break } default: { } }H = c[A >> 2] | 0; c[A >> 2] = H + 1; if ((H | 0) > 2147483643) { E = 124; break d } else f = 10; break } case 39: case 34: case 92: { E = 164; break } case 122: { f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if (!(a[2581 + (f + 1) >> 0] & 8)) break e; while (1) { switch (f | 0) { case 13: case 10: { g = c[I >> 2] | 0; H = c[g >> 2] | 0; c[g >> 2] = H + -1; if (!H) g = tg(g) | 0; else { H = g + 4 | 0; g = c[H >> 2] | 0; c[H >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g; switch (g | 0) { case 13: case 10: { if ((g | 0) != (f | 0)) { f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f } break } default: f = g }H = c[A >> 2] | 0; c[A >> 2] = H + 1; if ((H | 0) > 2147483643) { E = 141; break d } break } default: { f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f } }if (!(a[2581 + (f + 1) >> 0] & 8)) break e } } default: { if (!(a[2581 + (f + 1) >> 0] & 2)) { E = 148; break d } c[B >> 2] = f; f = f + -48 | 0; g = c[I >> 2] | 0; H = c[g >> 2] | 0; c[g >> 2] = H + -1; if (!H) g = tg(g) | 0; else { H = g + 4 | 0; g = c[H >> 2] | 0; c[H >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g; if (a[2581 + (g + 1) >> 0] & 2) { c[o >> 2] = g; f = (f * 10 | 0) + -48 + g | 0; g = c[I >> 2] | 0; H = c[g >> 2] | 0; c[g >> 2] = H + -1; if (!H) h = tg(g) | 0; else { H = g + 4 | 0; h = c[H >> 2] | 0; c[H >> 2] = h + 1; h = d[h >> 0] | 0 } c[b >> 2] = h; if (!(a[2581 + (h + 1) >> 0] & 2)) g = 2; else { c[p >> 2] = h; g = c[I >> 2] | 0; H = c[g >> 2] | 0; c[g >> 2] = H + -1; if (!H) g = tg(g) | 0; else { H = g + 4 | 0; g = c[H >> 2] | 0; c[H >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g; f = (f * 10 | 0) + -48 + h | 0; g = 3 } } else g = 1; if ((f | 0) > 255) { E = 154; break d } } } while (0); if ((E | 0) == 164) { E = 0; g = c[I >> 2] | 0; H = c[g >> 2] | 0; c[g >> 2] = H + -1; if (!H) g = tg(g) | 0; else { H = g + 4 | 0; g = c[H >> 2] | 0; c[H >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g } l = c[J >> 2] | 0; m = l + 4 | 0; h = c[m >> 2] | 0; j = l + 8 | 0; k = c[j >> 2] | 0; if ((h + 1 | 0) >>> 0 > k >>> 0) { if (k >>> 0 > 2147483645) { E = 171; break d } g = k << 1; h = c[n >> 2] | 0; if ((g | 0) == -2) { E = 173; break d } H = Ue(h, c[l >> 2] | 0, k, g) | 0; c[l >> 2] = H; c[j >> 2] = g; h = c[m >> 2] | 0; g = H } else g = c[l >> 2] | 0; c[m >> 2] = h + 1; a[g + h >> 0] = f; f = c[b >> 2] | 0; break } default: { l = c[J >> 2] | 0; m = l + 4 | 0; h = c[m >> 2] | 0; j = l + 8 | 0; k = c[j >> 2] | 0; if ((h + 1 | 0) >>> 0 > k >>> 0) { if (k >>> 0 > 2147483645) { E = 179; break d } g = k << 1; h = c[n >> 2] | 0; if ((g | 0) == -2) { E = 181; break d } H = Ue(h, c[l >> 2] | 0, k, g) | 0; c[l >> 2] = H; c[j >> 2] = g; h = c[m >> 2] | 0; g = H } else g = c[l >> 2] | 0; c[m >> 2] = h + 1; a[g + h >> 0] = f; f = c[I >> 2] | 0; H = c[f >> 2] | 0; c[f >> 2] = H + -1; if (!H) f = tg(f) | 0; else { H = f + 4 | 0; f = c[H >> 2] | 0; c[H >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f } } while (0); if ((f | 0) == (z | 0)) break c } switch (E | 0) { case 92: { Ie(b, 3594, 286); break } case 93: { Ie(b, 3594, 289); break } case 108: { Pe(b, B, f, 3612); break } case 124: { Ie(b, 3539, 0); break } case 141: { Ie(b, 3539, 0); break } case 148: { Pe(b, b, 1, 3639); break } case 154: { Pe(b, B, g, 3663); break } case 171: { Ie(b, 3498, 0); break } case 173: { Te(h); break } case 179: { Ie(b, 3498, 0); break } case 181: { Te(h); break } } } while (0); h = c[J >> 2] | 0; j = h + 4 | 0; f = c[j >> 2] | 0; k = h + 8 | 0; l = c[k >> 2] | 0; do if ((f + 1 | 0) >>> 0 > l >>> 0) { if (l >>> 0 > 2147483645) Ie(b, 3498, 0); f = l << 1; g = c[b + 52 >> 2] | 0; if ((f | 0) == -2) Te(g); else { D = Ue(g, c[h >> 2] | 0, l, f) | 0; c[h >> 2] = D; c[k >> 2] = f; C = c[j >> 2] | 0; break } } else { C = f; D = c[h >> 2] | 0 } while (0); c[j >> 2] = C + 1; a[D + C >> 0] = r; f = c[I >> 2] | 0; I = c[f >> 2] | 0; c[f >> 2] = I + -1; if (!I) f = tg(f) | 0; else { I = f + 4 | 0; f = c[I >> 2] | 0; c[I >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; f = c[J >> 2] | 0; j = c[b + 52 >> 2] | 0; f = Mf(j, (c[f >> 2] | 0) + 1 | 0, (c[f + 4 >> 2] | 0) + -2 | 0) | 0; k = j + 8 | 0; g = c[k >> 2] | 0; c[k >> 2] = g + 16; c[g >> 2] = f; c[g + 8 >> 2] = d[f + 4 >> 0] | 64; g = Vf(j, c[(c[b + 48 >> 2] | 0) + 4 >> 2] | 0, (c[k >> 2] | 0) + -16 | 0) | 0; h = g + 8 | 0; if (!(c[h >> 2] | 0)) { c[g >> 2] = 1; c[h >> 2] = 1; if ((c[(c[j + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(j) } else f = c[g + 16 >> 2] | 0; c[k >> 2] = (c[k >> 2] | 0) + -16; c[e >> 2] = f; b = 289; i = K; return b | 0 } case 203: { h = c[J >> 2] | 0; j = h + 4 | 0; f = c[j >> 2] | 0; k = h + 8 | 0; l = c[k >> 2] | 0; do if ((f + 1 | 0) >>> 0 > l >>> 0) { if (l >>> 0 > 2147483645) Ie(b, 3498, 0); f = l << 1; g = c[b + 52 >> 2] | 0; if ((f | 0) == -2) Te(g); else { o = Ue(g, c[h >> 2] | 0, l, f) | 0; c[h >> 2] = o; c[k >> 2] = f; n = c[j >> 2] | 0; break } } else { n = f; o = c[h >> 2] | 0 } while (0); c[j >> 2] = n + 1; a[o + n >> 0] = 46; f = c[I >> 2] | 0; E = c[f >> 2] | 0; c[f >> 2] = E + -1; if (!E) m = tg(f) | 0; else { E = f + 4 | 0; m = c[E >> 2] | 0; c[E >> 2] = m + 1; m = d[m >> 0] | 0 } c[b >> 2] = m; if (m | 0 ? Kl(12624, m, 2) | 0 : 0) { h = c[J >> 2] | 0; j = h + 4 | 0; f = c[j >> 2] | 0; k = h + 8 | 0; l = c[k >> 2] | 0; do if ((f + 1 | 0) >>> 0 > l >>> 0) { if (l >>> 0 > 2147483645) Ie(b, 3498, 0); f = l << 1; g = c[b + 52 >> 2] | 0; if ((f | 0) == -2) Te(g); else { s = Ue(g, c[h >> 2] | 0, l, f) | 0; c[h >> 2] = s; c[k >> 2] = f; r = c[j >> 2] | 0; break } } else { r = f; s = c[h >> 2] | 0 } while (0); c[j >> 2] = r + 1; a[s + r >> 0] = m; f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) m = tg(f) | 0; else { e = f + 4 | 0; m = c[e >> 2] | 0; c[e >> 2] = m + 1; m = d[m >> 0] | 0 } c[b >> 2] = m; if (!m) { b = 279; i = K; return b | 0 } if (!(Kl(12624, m, 2) | 0)) { b = 279; i = K; return b | 0 } h = c[J >> 2] | 0; j = h + 4 | 0; f = c[j >> 2] | 0; k = h + 8 | 0; l = c[k >> 2] | 0; do if ((f + 1 | 0) >>> 0 > l >>> 0) { if (l >>> 0 > 2147483645) Ie(b, 3498, 0); f = l << 1; g = c[b + 52 >> 2] | 0; if ((f | 0) == -2) Te(g); else { u = Ue(g, c[h >> 2] | 0, l, f) | 0; c[h >> 2] = u; c[k >> 2] = f; t = c[j >> 2] | 0; break } } else { t = f; u = c[h >> 2] | 0 } while (0); c[j >> 2] = t + 1; a[u + t >> 0] = m; f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; b = 280; i = K; return b | 0 } if (!(a[2581 + (m + 1) >> 0] & 2)) { b = 46; i = K; return b | 0 } break } case 325: { if (!(a[2581 + (z + 1) >> 0] & 1)) { f = c[I >> 2] | 0; e = c[f >> 2] | 0; c[f >> 2] = e + -1; if (!e) f = tg(f) | 0; else { e = f + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; b = z; i = K; return b | 0 } o = b + 52 | 0; f = z; while (1) { l = c[J >> 2] | 0; n = l + 4 | 0; h = c[n >> 2] | 0; j = l + 8 | 0; k = c[j >> 2] | 0; if ((h + 1 | 0) >>> 0 > k >>> 0) { if (k >>> 0 > 2147483645) { E = 330; break } g = k << 1; h = c[o >> 2] | 0; if ((g | 0) == -2) { E = 332; break } E = Ue(h, c[l >> 2] | 0, k, g) | 0; c[l >> 2] = E; c[j >> 2] = g; h = c[n >> 2] | 0; g = E } else g = c[l >> 2] | 0; c[n >> 2] = h + 1; a[g + h >> 0] = f; f = c[I >> 2] | 0; E = c[f >> 2] | 0; c[f >> 2] = E + -1; if (!E) f = tg(f) | 0; else { E = f + 4 | 0; f = c[E >> 2] | 0; c[E >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if (!(a[2581 + (f + 1) >> 0] & 3)) { E = 338; break } } if ((E | 0) == 330) Ie(b, 3498, 0); else if ((E | 0) == 332) Te(h); else if ((E | 0) == 338) { f = c[J >> 2] | 0; j = c[o >> 2] | 0; f = Mf(j, c[f >> 2] | 0, c[f + 4 >> 2] | 0) | 0; k = j + 8 | 0; g = c[k >> 2] | 0; c[k >> 2] = g + 16; c[g >> 2] = f; c[g + 8 >> 2] = d[f + 4 >> 0] | 64; g = Vf(j, c[(c[b + 48 >> 2] | 0) + 4 >> 2] | 0, (c[k >> 2] | 0) + -16 | 0) | 0; h = g + 8 | 0; if (!(c[h >> 2] | 0)) { c[g >> 2] = 1; c[h >> 2] = 1; if ((c[(c[j + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(j) } else f = c[g + 16 >> 2] | 0; c[k >> 2] = (c[k >> 2] | 0) + -16; c[e >> 2] = f; b = c[f + 4 >> 2] | 0; f = b >>> 16; if ((b & 255) << 24 >> 24 == 4) { i = K; return ((f & 255) << 24 >> 24 == 0 ? 288 : f & 255 | 256) | 0 } else { b = 288; i = K; return b | 0 } } break } case 348: { i = K; return f | 0 } }h = c[J >> 2] | 0; j = h + 4 | 0; f = c[j >> 2] | 0; k = h + 8 | 0; l = c[k >> 2] | 0; do if ((f + 1 | 0) >>> 0 > l >>> 0) { if (l >>> 0 > 2147483645) Ie(b, 3498, 0); f = l << 1; g = c[b + 52 >> 2] | 0; if ((f | 0) == -2) Te(g); else { w = Ue(g, c[h >> 2] | 0, l, f) | 0; c[h >> 2] = w; c[k >> 2] = f; v = c[j >> 2] | 0; break } } else { v = f; w = c[h >> 2] | 0 } while (0); c[j >> 2] = v + 1; a[w + v >> 0] = m; f = c[I >> 2] | 0; E = c[f >> 2] | 0; c[f >> 2] = E + -1; if (!E) f = tg(f) | 0; else { E = f + 4 | 0; f = c[E >> 2] | 0; c[E >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if ((m | 0) == 48) if (f) if (!(Kl(3688, f, 3) | 0)) n = 3691; else { j = c[J >> 2] | 0; k = j + 4 | 0; g = c[k >> 2] | 0; l = j + 8 | 0; m = c[l >> 2] | 0; do if ((g + 1 | 0) >>> 0 > m >>> 0) { if (m >>> 0 > 2147483645) Ie(b, 3498, 0); g = m << 1; h = c[b + 52 >> 2] | 0; if ((g | 0) == -2) Te(h); else { y = Ue(h, c[j >> 2] | 0, m, g) | 0; c[j >> 2] = y; c[l >> 2] = g; x = c[k >> 2] | 0; break } } else { x = g; y = c[j >> 2] | 0 } while (0); c[k >> 2] = x + 1; a[y + x >> 0] = f; f = c[I >> 2] | 0; E = c[f >> 2] | 0; c[f >> 2] = E + -1; if (!E) f = tg(f) | 0; else { E = f + 4 | 0; f = c[E >> 2] | 0; c[E >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; n = 3694 } else { n = 3691; f = 0 } else n = 3691; o = b + 52 | 0; while (1) { if (f) { if (Kl(n, f, 3) | 0) { l = c[J >> 2] | 0; m = l + 4 | 0; h = c[m >> 2] | 0; j = l + 8 | 0; k = c[j >> 2] | 0; if ((h + 1 | 0) >>> 0 > k >>> 0) { if (k >>> 0 > 2147483645) { E = 269; break } g = k << 1; h = c[o >> 2] | 0; if ((g | 0) == -2) { E = 271; break } E = Ue(h, c[l >> 2] | 0, k, g) | 0; c[l >> 2] = E; c[j >> 2] = g; h = c[m >> 2] | 0; g = E } else g = c[l >> 2] | 0; c[m >> 2] = h + 1; a[g + h >> 0] = f; f = c[I >> 2] | 0; E = c[f >> 2] | 0; c[f >> 2] = E + -1; if (!E) f = tg(f) | 0; else { E = f + 4 | 0; f = c[E >> 2] | 0; c[E >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f; if (f) { if (Kl(3697, f, 3) | 0) { l = c[J >> 2] | 0; m = l + 4 | 0; h = c[m >> 2] | 0; j = l + 8 | 0; k = c[j >> 2] | 0; if ((h + 1 | 0) >>> 0 > k >>> 0) { if (k >>> 0 > 2147483645) { E = 281; break } g = k << 1; h = c[o >> 2] | 0; if ((g | 0) == -2) { E = 283; break } E = Ue(h, c[l >> 2] | 0, k, g) | 0; c[l >> 2] = E; c[j >> 2] = g; h = c[m >> 2] | 0; g = E } else g = c[l >> 2] | 0; c[m >> 2] = h + 1; a[g + h >> 0] = f; f = c[I >> 2] | 0; E = c[f >> 2] | 0; c[f >> 2] = E + -1; if (!E) f = tg(f) | 0; else { E = f + 4 | 0; f = c[E >> 2] | 0; c[E >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f } } else f = 0 } } else f = 0; l = c[J >> 2] | 0; m = l + 4 | 0; h = c[m >> 2] | 0; j = l + 8 | 0; k = c[j >> 2] | 0; g = (h + 1 | 0) >>> 0 > k >>> 0; if (!((f | 0) == 46 ? 1 : (a[2581 + (f + 1) >> 0] & 16) != 0)) { E = 301; break } if (g) { if (k >>> 0 > 2147483645) { E = 293; break } g = k << 1; h = c[o >> 2] | 0; if ((g | 0) == -2) { E = 295; break } E = Ue(h, c[l >> 2] | 0, k, g) | 0; c[l >> 2] = E; c[j >> 2] = g; h = c[m >> 2] | 0; g = E } else g = c[l >> 2] | 0; c[m >> 2] = h + 1; a[g + h >> 0] = f; f = c[I >> 2] | 0; E = c[f >> 2] | 0; c[f >> 2] = E + -1; if (!E) f = tg(f) | 0; else { E = f + 4 | 0; f = c[E >> 2] | 0; c[E >> 2] = f + 1; f = d[f >> 0] | 0 } c[b >> 2] = f } if ((E | 0) == 269) Ie(b, 3498, 0); else if ((E | 0) == 271) Te(h); else if ((E | 0) == 281) Ie(b, 3498, 0); else if ((E | 0) == 283) Te(h); else if ((E | 0) == 293) Ie(b, 3498, 0); else if ((E | 0) == 295) Te(h); else if ((E | 0) == 301) { do if (g) { if (k >>> 0 > 2147483645) Ie(b, 3498, 0); g = k << 1; f = c[o >> 2] | 0; if ((g | 0) == -2) Te(f); else { G = Ue(f, c[l >> 2] | 0, k, g) | 0; c[l >> 2] = G; c[j >> 2] = g; F = c[m >> 2] | 0; break } } else { F = h; G = c[l >> 2] | 0 } while (0); c[m >> 2] = F + 1; a[G + F >> 0] = 0; l = b + 76 | 0; j = a[l >> 0] | 0; g = c[J >> 2] | 0; f = c[g >> 2] | 0; g = c[g + 4 >> 2] | 0; if (!g) g = -1; else { do { g = g + -1 | 0; h = f + g | 0; if ((a[h >> 0] | 0) == 46) a[h >> 0] = j } while ((g | 0) != 0); g = c[J >> 2] | 0; f = c[g >> 2] | 0; g = (c[g + 4 >> 2] | 0) + -1 | 0 } if (_e(f, g, e) | 0) { b = 287; i = K; return b | 0 } j = a[l >> 0] | 0; k = a[c[(Xl() | 0) >> 2] >> 0] | 0; a[l >> 0] = k; g = c[J >> 2] | 0; f = c[g >> 2] | 0; g = c[g + 4 >> 2] | 0; if (!g) g = -1; else { do { g = g + -1 | 0; h = f + g | 0; if ((a[h >> 0] | 0) == j << 24 >> 24) a[h >> 0] = k } while ((g | 0) != 0); g = c[J >> 2] | 0; f = c[g >> 2] | 0; g = (c[g + 4 >> 2] | 0) + -1 | 0 } if (_e(f, g, e) | 0) { b = 287; i = K; return b | 0 } h = a[l >> 0] | 0; f = c[J >> 2] | 0; g = c[f >> 2] | 0; f = c[f + 4 >> 2] | 0; if (!f) Ie(b, 3700, 287); else H = f; do { H = H + -1 | 0; f = g + H | 0; if ((a[f >> 0] | 0) == h << 24 >> 24) a[f >> 0] = 46 } while ((H | 0) != 0); Ie(b, 3700, 287) } return 0 } function Ne(b) { b = b | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; p = c[b >> 2] | 0; o = b + 60 | 0; i = c[o >> 2] | 0; j = i + 4 | 0; e = c[j >> 2] | 0; k = i + 8 | 0; l = c[k >> 2] | 0; do if ((e + 1 | 0) >>> 0 > l >>> 0) { if (l >>> 0 > 2147483645) Ie(b, 3498, 0); e = l << 1; f = c[b + 52 >> 2] | 0; if ((e | 0) == -2) Te(f); else { h = Ue(f, c[i >> 2] | 0, l, e) | 0; c[i >> 2] = h; c[k >> 2] = e; g = c[j >> 2] | 0; break } } else { g = e; h = c[i >> 2] | 0 } while (0); c[j >> 2] = g + 1; a[h + g >> 0] = p; n = b + 56 | 0; e = c[n >> 2] | 0; m = c[e >> 2] | 0; c[e >> 2] = m + -1; if (!m) e = tg(e) | 0; else { m = e + 4 | 0; e = c[m >> 2] | 0; c[m >> 2] = e + 1; e = d[e >> 0] | 0 } c[b >> 2] = e; if ((e | 0) != 61) { b = 0; o = e; p = (o | 0) != (p | 0); p = p << 31 >> 31; p = p ^ b; return p | 0 } m = b + 52 | 0; f = 0; while (1) { k = c[o >> 2] | 0; l = k + 4 | 0; g = c[l >> 2] | 0; h = k + 8 | 0; i = c[h >> 2] | 0; if ((g + 1 | 0) >>> 0 > i >>> 0) { if (i >>> 0 > 2147483645) { g = 16; break } e = i << 1; j = c[m >> 2] | 0; if ((e | 0) == -2) { g = 18; break } j = Ue(j, c[k >> 2] | 0, i, e) | 0; c[k >> 2] = j; c[h >> 2] = e; g = c[l >> 2] | 0; e = j } else e = c[k >> 2] | 0; c[l >> 2] = g + 1; a[e + g >> 0] = 61; e = c[n >> 2] | 0; l = c[e >> 2] | 0; c[e >> 2] = l + -1; if (!l) e = tg(e) | 0; else { l = e + 4 | 0; e = c[l >> 2] | 0; c[l >> 2] = e + 1; e = d[e >> 0] | 0 } c[b >> 2] = e; f = f + 1 | 0; if ((e | 0) != 61) { g = 24; break } } if ((g | 0) == 16) Ie(b, 3498, 0); else if ((g | 0) == 18) Te(j); else if ((g | 0) == 24) { p = (e | 0) != (p | 0); p = p << 31 >> 31; p = p ^ f; return p | 0 } return 0 } function Oe(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0; l = c[b >> 2] | 0; v = b + 60 | 0; m = c[v >> 2] | 0; n = m + 4 | 0; g = c[n >> 2] | 0; o = m + 8 | 0; i = c[o >> 2] | 0; do if ((g + 1 | 0) >>> 0 > i >>> 0) { if (i >>> 0 > 2147483645) Ie(b, 3498, 0); g = i << 1; h = c[b + 52 >> 2] | 0; if ((g | 0) == -2) Te(h); else { k = Ue(h, c[m >> 2] | 0, i, g) | 0; c[m >> 2] = k; c[o >> 2] = g; j = c[n >> 2] | 0; break } } else { j = g; k = c[m >> 2] | 0 } while (0); c[n >> 2] = j + 1; a[k + j >> 0] = l; r = b + 56 | 0; g = c[r >> 2] | 0; q = c[g >> 2] | 0; c[g >> 2] = q + -1; if (!q) g = tg(g) | 0; else { q = g + 4 | 0; g = c[q >> 2] | 0; c[q >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g; switch (g | 0) { case 13: case 10: { h = c[r >> 2] | 0; q = c[h >> 2] | 0; c[h >> 2] = q + -1; if (!q) h = tg(h) | 0; else { q = h + 4 | 0; h = c[q >> 2] | 0; c[q >> 2] = h + 1; h = d[h >> 0] | 0 } c[b >> 2] = h; switch (h | 0) { case 13: case 10: { if ((h | 0) != (g | 0)) { g = c[r >> 2] | 0; q = c[g >> 2] | 0; c[g >> 2] = q + -1; if (!q) g = tg(g) | 0; else { q = g + 4 | 0; g = c[q >> 2] | 0; c[q >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g } break } default: g = h }o = b + 4 | 0; q = c[o >> 2] | 0; c[o >> 2] = q + 1; if ((q | 0) > 2147483643) Ie(b, 3539, 0); else p = g; break } default: p = g }o = (e | 0) == 0; q = b + 52 | 0; n = b + 4 | 0; g = p; a: while (1) { b: do if (o) while (1) { switch (g | 0) { case -1: { s = 31; break a } case 93: { s = 32; break b } case 13: case 10: break b; default: { } }g = c[r >> 2] | 0; p = c[g >> 2] | 0; c[g >> 2] = p + -1; if (!p) g = tg(g) | 0; else { p = g + 4 | 0; g = c[p >> 2] | 0; c[p >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g } else while (1) { switch (g | 0) { case -1: { s = 31; break a } case 93: { s = 32; break b } case 13: case 10: break b; default: { } }l = c[v >> 2] | 0; m = l + 4 | 0; i = c[m >> 2] | 0; j = l + 8 | 0; k = c[j >> 2] | 0; if ((i + 1 | 0) >>> 0 > k >>> 0) { if (k >>> 0 > 2147483645) { s = 67; break a } h = k << 1; i = c[q >> 2] | 0; if ((h | 0) == -2) { s = 69; break a } p = Ue(i, c[l >> 2] | 0, k, h) | 0; c[l >> 2] = p; c[j >> 2] = h; i = c[m >> 2] | 0; h = p } else h = c[l >> 2] | 0; c[m >> 2] = i + 1; a[h + i >> 0] = g; g = c[r >> 2] | 0; p = c[g >> 2] | 0; c[g >> 2] = p + -1; if (!p) g = tg(g) | 0; else { p = g + 4 | 0; g = c[p >> 2] | 0; c[p >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g } while (0); if ((s | 0) == 32) { s = 0; p = (Ne(b) | 0) == (f | 0); g = c[b >> 2] | 0; if (p) { s = 33; break } else continue } k = c[v >> 2] | 0; l = k + 4 | 0; h = c[l >> 2] | 0; i = k + 8 | 0; j = c[i >> 2] | 0; if ((h + 1 | 0) >>> 0 > j >>> 0) { if (j >>> 0 > 2147483645) { s = 47; break } g = j << 1; h = c[q >> 2] | 0; if ((g | 0) == -2) { s = 49; break } p = Ue(h, c[k >> 2] | 0, j, g) | 0; c[k >> 2] = p; c[i >> 2] = g; h = c[l >> 2] | 0; g = p } else g = c[k >> 2] | 0; c[l >> 2] = h + 1; a[g + h >> 0] = 10; g = c[b >> 2] | 0; h = c[r >> 2] | 0; p = c[h >> 2] | 0; c[h >> 2] = p + -1; if (!p) h = tg(h) | 0; else { p = h + 4 | 0; h = c[p >> 2] | 0; c[p >> 2] = h + 1; h = d[h >> 0] | 0 } c[b >> 2] = h; switch (h | 0) { case 13: case 10: { if ((h | 0) != (g | 0)) { g = c[r >> 2] | 0; p = c[g >> 2] | 0; c[g >> 2] = p + -1; if (!p) g = tg(g) | 0; else { p = g + 4 | 0; g = c[p >> 2] | 0; c[p >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g } break } default: g = h }p = c[n >> 2] | 0; c[n >> 2] = p + 1; if ((p | 0) > 2147483643) { s = 61; break } if (!o) continue; c[(c[v >> 2] | 0) + 4 >> 2] = 0 } if ((s | 0) == 31) Ie(b, e | 0 ? 3717 : 3740, 286); else if ((s | 0) == 33) { j = c[v >> 2] | 0; k = j + 4 | 0; h = c[k >> 2] | 0; l = j + 8 | 0; m = c[l >> 2] | 0; do if ((h + 1 | 0) >>> 0 > m >>> 0) { if (m >>> 0 > 2147483645) Ie(b, 3498, 0); h = m << 1; i = c[q >> 2] | 0; if ((h | 0) == -2) Te(i); else { t = Ue(i, c[j >> 2] | 0, m, h) | 0; c[j >> 2] = t; c[l >> 2] = h; u = c[k >> 2] | 0; break } } else { t = c[j >> 2] | 0; u = h } while (0); c[k >> 2] = u + 1; a[t + u >> 0] = g; g = c[r >> 2] | 0; u = c[g >> 2] | 0; c[g >> 2] = u + -1; if (!u) g = tg(g) | 0; else { u = g + 4 | 0; g = c[u >> 2] | 0; c[u >> 2] = g + 1; g = d[g >> 0] | 0 } c[b >> 2] = g; if (o) return; k = c[v >> 2] | 0; g = f + 2 | 0; j = c[q >> 2] | 0; g = Mf(j, (c[k >> 2] | 0) + g | 0, (c[k + 4 >> 2] | 0) - (g << 1) | 0) | 0; k = j + 8 | 0; h = c[k >> 2] | 0; c[k >> 2] = h + 16; c[h >> 2] = g; c[h + 8 >> 2] = d[g + 4 >> 0] | 0 | 64; h = Vf(j, c[(c[b + 48 >> 2] | 0) + 4 >> 2] | 0, (c[k >> 2] | 0) + -16 | 0) | 0; i = h + 8 | 0; if (!(c[i >> 2] | 0)) { c[h >> 2] = 1; c[i >> 2] = 1; if ((c[(c[j + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(j) } else g = c[h + 16 >> 2] | 0; c[k >> 2] = (c[k >> 2] | 0) + -16; c[e >> 2] = g; return } else if ((s | 0) == 47) Ie(b, 3498, 0); else if ((s | 0) == 49) Te(h); else if ((s | 0) == 61) Ie(b, 3539, 0); else if ((s | 0) == 67) Ie(b, 3498, 0); else if ((s | 0) == 69) Te(i) } function Pe(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0; c[(c[a + 60 >> 2] | 0) + 4 >> 2] = 0; Qe(a, 92); a: do if ((d | 0) > 0) { f = 0; do { g = c[b + (f << 2) >> 2] | 0; if ((g | 0) == -1) break a; Qe(a, g); f = f + 1 | 0 } while ((f | 0) < (d | 0)) } while (0); Ie(a, e, 289) } function Qe(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0; g = c[b + 60 >> 2] | 0; h = g + 4 | 0; e = c[h >> 2] | 0; i = g + 8 | 0; j = c[i >> 2] | 0; if ((e + 1 | 0) >>> 0 <= j >>> 0) { j = e; g = c[g >> 2] | 0; i = d & 255; d = j + 1 | 0; c[h >> 2] = d; j = g + j | 0; a[j >> 0] = i; return } if (j >>> 0 > 2147483645) Ie(b, 3498, 0); f = j << 1; e = c[b + 52 >> 2] | 0; if ((f | 0) == -2) Te(e); b = Ue(e, c[g >> 2] | 0, j, f) | 0; c[g >> 2] = b; c[i >> 2] = f; j = c[h >> 2] | 0; g = b; i = d & 255; d = j + 1 | 0; c[h >> 2] = d; j = g + j | 0; a[j >> 0] = i; return } function Re(a) { a = a | 0; var b = 0; b = Me(a, a + 40 | 0) | 0; c[a + 32 >> 2] = b; return b | 0 } function Se(b, d, e, f, g, h) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; g = g | 0; h = h | 0; var j = 0, k = 0, l = 0, m = 0, n = 0; n = i; i = i + 16 | 0; k = n; j = c[e >> 2] | 0; if ((j | 0) >= ((g | 0) / 2 | 0 | 0)) if ((j | 0) < (g | 0)) m = g; else { c[k >> 2] = h; c[k + 4 >> 2] = g; Ed(b, 3764, k) } else { m = j << 1; m = (m | 0) < 4 ? 4 : m } if ((m + 1 | 0) >>> 0 > (4294967293 / (f >>> 0) | 0) >>> 0) Te(b); l = R(j, f) | 0; j = R(m, f) | 0; k = c[b + 12 >> 2] | 0; f = (d | 0) != 0; g = k + 4 | 0; h = ab[c[k >> 2] & 31](c[g >> 2] | 0, d, l, j) | 0; if (!((j | 0) != 0 & (h | 0) == 0)) { b = h; d = k + 12 | 0; k = c[d >> 2] | 0; l = 0 - l | 0; l = f ? l : 0; l = l + j | 0; l = l + k | 0; c[d >> 2] = l; c[e >> 2] = m; i = n; return b | 0 } if (!(a[k + 63 >> 0] | 0)) Ld(b, 4); De(b, 1); g = ab[c[k >> 2] & 31](c[g >> 2] | 0, d, l, j) | 0; if (!g) Ld(b, 4); else { b = g; d = k + 12 | 0; k = c[d >> 2] | 0; l = 0 - l | 0; l = f ? l : 0; l = l + j | 0; l = l + k | 0; c[d >> 2] = l; c[e >> 2] = m; i = n; return b | 0 } return 0 } function Te(a) { a = a | 0; var b = 0; b = i; i = i + 16 | 0; Ed(a, 3790, b) } function Ue(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0; j = c[b + 12 >> 2] | 0; k = (d | 0) != 0; h = j + 4 | 0; g = ab[c[j >> 2] & 31](c[h >> 2] | 0, d, e, f) | 0; if ((f | 0) != 0 & (g | 0) == 0) { if (!(a[j + 63 >> 0] | 0)) Ld(b, 4); De(b, 1); d = ab[c[j >> 2] & 31](c[h >> 2] | 0, d, e, f) | 0; if (!d) Ld(b, 4); else i = d } else i = g; j = j + 12 | 0; c[j >> 2] = (k ? 0 - e | 0 : 0) + f + (c[j >> 2] | 0); return i | 0 } function Ve(a) { a = a | 0; var b = 0, c = 0; if (a >>> 0 < 8) { b = a; return b | 0 } if (a >>> 0 > 15) { b = 1; do { c = a + 1 | 0; a = c >>> 1; b = b + 1 | 0 } while (c >>> 0 > 31); b = b << 3 } else b = 8; c = b | a + -8; return c | 0 } function We(a) { a = a | 0; var b = 0; b = a >>> 3 & 31; return ((b | 0) == 0 ? a : (a & 7 | 8) << b + -1) | 0 } function Xe(a) { a = a | 0; var b = 0, c = 0; a = a + -1 | 0; if (a >>> 0 > 255) { b = 0; while (1) { b = b + 8 | 0; c = a >>> 8; if (a >>> 0 > 65535) a = c; else { a = c; break } } } else b = 0; return (d[3829 + a >> 0] | 0) + b | 0 } function Ye(a, b, c) { a = a | 0; b = +b; c = +c; switch (a | 0) { case 0: { b = b + c; break } case 1: { b = b - c; break } case 2: { b = b * c; break } case 3: { b = b / c; break } case 4: { b = b - +D(+(b / c)) * c; break } case 5: { b = +G(+b, +c); break } case 6: { b = -b; break } default: b = 0.0 }return +b } function Ze(b) { b = b | 0; return ((a[2581 + (b + 1) >> 0] & 2) == 0 ? (b | 32) + -87 | 0 : b + -48 | 0) | 0 } function _e(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, j = 0.0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0; s = i; i = i + 16 | 0; r = s; if (Hm(b, 4085) | 0) { e = 0; i = s; return e | 0 } a: do if (!(Hm(b, 4088) | 0)) { j = +jm(b, r); g = c[r >> 2] | 0 } else { g = b; c[r >> 2] = g; k = a[b >> 0] | 0; if (!(a[2581 + ((k & 255) + 1) >> 0] & 8)) m = b; else { l = b; do { l = l + 1 | 0; g = a[l >> 0] | 0 } while ((a[2581 + ((g & 255) + 1) >> 0] & 8) != 0); k = g; m = l; g = l } switch (k << 24 >> 24) { case 45: { p = 1; g = m + 1 | 0; break } case 43: { p = 0; g = m + 1 | 0; break } default: p = 0 }b: do if ((a[g >> 0] | 0) == 48) { switch (a[g + 1 >> 0] | 0) { case 88: case 120: break; default: break b }g = g + 2 | 0; k = a[g >> 0] | 0; m = k & 255; l = a[2581 + (m + 1) >> 0] | 0; if (!(l & 16)) { j = 0.0; n = 0 } else { j = 0.0; k = 0; while (1) { j = j * 16.0 + +(((l & 2) == 0 ? (m | 32) + -87 | 0 : m + -48 | 0) | 0); n = k + 1 | 0; g = g + 1 | 0; k = a[g >> 0] | 0; m = k & 255; l = a[2581 + (m + 1) >> 0] | 0; if (!(l & 16)) break; else k = n } } if (k << 24 >> 24 == 46) { g = g + 1 | 0; l = d[g >> 0] | 0; k = a[2581 + (l + 1) >> 0] | 0; if (!(k & 16)) k = 0; else { m = 0; do { j = j * 16.0 + +(((k & 2) == 0 ? (l | 32) + -87 | 0 : l + -48 | 0) | 0); m = m + 1 | 0; g = g + 1 | 0; l = d[g >> 0] | 0; k = a[2581 + (l + 1) >> 0] | 0 } while ((k & 16) != 0); k = m } } else k = 0; l = g; if (k | n | 0) { k = R(k, -4) | 0; c[r >> 2] = l; switch (a[g >> 0] | 0) { case 80: case 112: { l = g + 1 | 0; switch (a[l >> 0] | 0) { case 45: { o = 1; n = g + 2 | 0; break } case 43: { o = 0; n = g + 2 | 0; break } default: { o = 0; n = l } }l = a[n >> 0] | 0; if (a[2581 + ((l & 255) + 1) >> 0] & 2) { m = 0; g = n; do { g = g + 1 | 0; m = (l << 24 >> 24) + -48 + (m * 10 | 0) | 0; l = a[g >> 0] | 0 } while ((a[2581 + ((l & 255) + 1) >> 0] & 2) != 0); k = ((o | 0) == 0 ? m : 0 - m | 0) + k | 0; q = 24 } break } default: { g = l; q = 24 } }if ((q | 0) == 24) c[r >> 2] = g; j = +ql((p | 0) == 0 ? j : -j, k); break a } } while (0); h[f >> 3] = 0.0; e = 0; i = s; return e | 0 } while (0); h[f >> 3] = j; if ((g | 0) == (b | 0)) { e = 0; i = s; return e | 0 } if (a[2581 + ((d[g >> 0] | 0) + 1) >> 0] & 8) { do g = g + 1 | 0; while ((a[2581 + ((d[g >> 0] | 0) + 1) >> 0] & 8) != 0); c[r >> 2] = g } e = (g | 0) == (b + e | 0) & 1; i = s; return e | 0 } function $e(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0.0; v = i; i = i + 48 | 0; r = v + 8 | 0; q = v; o = v + 16 | 0; m = pm(e, 37) | 0; p = b + 24 | 0; u = b + 8 | 0; j = c[u >> 2] | 0; l = (c[p >> 2] | 0) - j | 0; a: do if (!m) { s = e; t = 0; n = l; g = j } else { k = 0; b: while (1) { if ((l | 0) < 48) { Td(b, 2); j = c[u >> 2] | 0 } c[u >> 2] = j + 16; l = Mf(b, e, m - e | 0) | 0; c[j >> 2] = l; c[j + 8 >> 2] = d[l + 4 >> 0] | 64; j = a[m + 1 >> 0] | 0; switch (j | 0) { case 115: { e = (c[f >> 2] | 0) + (4 - 1) & ~(4 - 1); j = c[e >> 2] | 0; c[f >> 2] = e + 4; j = (j | 0) == 0 ? 10694 : j; e = Vl(j) | 0; l = c[u >> 2] | 0; c[u >> 2] = l + 16; e = Mf(b, j, e) | 0; c[l >> 2] = e; c[l + 8 >> 2] = d[e + 4 >> 0] | 64; break } case 99: { e = (c[f >> 2] | 0) + (4 - 1) & ~(4 - 1); l = c[e >> 2] | 0; c[f >> 2] = e + 4; a[o >> 0] = l; l = c[u >> 2] | 0; c[u >> 2] = l + 16; e = Mf(b, o, 1) | 0; c[l >> 2] = e; c[l + 8 >> 2] = d[e + 4 >> 0] | 64; break } case 100: { l = c[u >> 2] | 0; c[u >> 2] = l + 16; j = (c[f >> 2] | 0) + (4 - 1) & ~(4 - 1); e = c[j >> 2] | 0; c[f >> 2] = j + 4; h[l >> 3] = +(e | 0); c[l + 8 >> 2] = 3; break } case 102: { l = c[u >> 2] | 0; c[u >> 2] = l + 16; e = (c[f >> 2] | 0) + (8 - 1) & ~(8 - 1); w = +h[e >> 3]; c[f >> 2] = e + 8; h[l >> 3] = w; c[l + 8 >> 2] = 3; break } case 112: { l = (c[f >> 2] | 0) + (4 - 1) & ~(4 - 1); e = c[l >> 2] | 0; c[f >> 2] = l + 4; c[q >> 2] = e; e = em(o, 4091, q) | 0; l = c[u >> 2] | 0; c[u >> 2] = l + 16; e = Mf(b, o, e) | 0; c[l >> 2] = e; c[l + 8 >> 2] = d[e + 4 >> 0] | 64; break } case 37: { l = c[u >> 2] | 0; c[u >> 2] = l + 16; e = Mf(b, 4094, 1) | 0; c[l >> 2] = e; c[l + 8 >> 2] = d[e + 4 >> 0] | 64; break } default: break b }k = k + 2 | 0; e = m + 2 | 0; m = pm(e, 37) | 0; j = c[u >> 2] | 0; l = (c[p >> 2] | 0) - j | 0; if (!m) { s = e; t = k; n = l; g = j; break a } } c[r >> 2] = j; Ed(b, 4096, r) } while (0); if ((n | 0) < 32) { Td(b, 1); g = c[u >> 2] | 0 } r = Vl(s) | 0; c[u >> 2] = g + 16; s = Mf(b, s, r) | 0; c[g >> 2] = s; c[g + 8 >> 2] = d[s + 4 >> 0] | 64; if ((t | 0) <= 0) { u = c[u >> 2] | 0; u = u + -16 | 0; u = c[u >> 2] | 0; u = u + 16 | 0; i = v; return u | 0 } og(b, t | 1); u = c[u >> 2] | 0; u = u + -16 | 0; u = c[u >> 2] | 0; u = u + 16 | 0; i = v; return u | 0 } function af(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; e = i; i = i + 16 | 0; f = e; c[f >> 2] = d; d = $e(a, b, f) | 0; i = e; return d | 0 } function bf(b, c, d) { b = b | 0; c = c | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0; i = Vl(c) | 0; switch (a[c >> 0] | 0) { case 61: { e = c + 1 | 0; if (i >>> 0 > d >>> 0) { i = d + -1 | 0; nn(b | 0, e | 0, i | 0) | 0; a[b + i >> 0] = 0; return } else { nn(b | 0, e | 0, i | 0) | 0; return } } case 64: if (i >>> 0 > d >>> 0) { a[b >> 0] = a[4139] | 0; a[b + 1 >> 0] = a[4140] | 0; a[b + 2 >> 0] = a[4141] | 0; nn(b + 3 | 0, c + 1 + i + (3 - d) | 0, d + -3 | 0) | 0; return } else { nn(b | 0, c + 1 | 0, i | 0) | 0; return } default: { h = pm(c, 10) | 0; e = b; f = 4143; g = e + 9 | 0; do { a[e >> 0] = a[f >> 0] | 0; e = e + 1 | 0; f = f + 1 | 0 } while ((e | 0) < (g | 0)); g = b + 9 | 0; e = d + -15 | 0; f = (h | 0) == 0; if (i >>> 0 < e >>> 0 & f) { nn(g | 0, c | 0, i | 0) | 0; e = g + i | 0 } else { i = f ? i : h - c | 0; e = i >>> 0 > e >>> 0 ? e : i; nn(g | 0, c | 0, e | 0) | 0; e = g + e | 0; a[e >> 0] = a[4139] | 0; a[e + 1 >> 0] = a[4140] | 0; a[e + 2 >> 0] = a[4141] | 0; e = e + 3 | 0 }; a[e >> 0] = a[4153] | 0; a[e + 1 >> 0] = a[4154] | 0; a[e + 2 >> 0] = a[4155] | 0; return } } } function cf(d, e, f, g, h, j) { d = d | 0; e = e | 0; f = f | 0; g = g | 0; h = h | 0; j = j | 0; var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0; q = i; i = i + 176 | 0; k = q + 156 | 0; l = q + 80 | 0; o = q; m = q + 104 | 0; n = be(d, 1) | 0; s = d + 8 | 0; r = c[s >> 2] | 0; c[r >> 2] = n; c[r + 8 >> 2] = 70; r = (c[s >> 2] | 0) + 16 | 0; c[s >> 2] = r; if (((c[d + 24 >> 2] | 0) - r | 0) < 16) Td(d, 0); r = ge(d) | 0; c[n + 12 >> 2] = r; c[m >> 2] = r; h = Nf(d, h) | 0; s = r + 36 | 0; c[s >> 2] = h; c[o + 60 >> 2] = f; f = o + 64 | 0; c[f >> 2] = g; c[g + 28 >> 2] = 0; c[g + 16 >> 2] = 0; c[g + 4 >> 2] = 0; Ke(d, o, e, h, j); d = c[o + 52 >> 2] | 0; j = o + 48 | 0; c[m + 8 >> 2] = c[j >> 2]; e = m + 12 | 0; c[e >> 2] = o; c[j >> 2] = m; c[m + 20 >> 2] = 0; c[m + 24 >> 2] = 0; c[m + 28 >> 2] = -1; c[m + 32 >> 2] = 0; c[m + 36 >> 2] = 0; j = m + 44 | 0; c[j >> 2] = 0; a[j + 4 >> 0] = 0; c[m + 40 >> 2] = c[(c[f >> 2] | 0) + 4 >> 2]; f = m + 16 | 0; c[f >> 2] = 0; c[s >> 2] = c[o + 68 >> 2]; a[r + 78 >> 0] = 2; j = Xf(d) | 0; c[m + 4 >> 2] = j; r = d + 8 | 0; s = c[r >> 2] | 0; c[s >> 2] = j; c[s + 8 >> 2] = 69; s = (c[r >> 2] | 0) + 16 | 0; c[r >> 2] = s; if (((c[d + 24 >> 2] | 0) - s | 0) < 16) Td(d, 0); a[k + 10 >> 0] = 0; a[k + 8 >> 0] = a[m + 46 >> 0] | 0; e = c[(c[e >> 2] | 0) + 64 >> 2] | 0; b[k + 4 >> 1] = c[e + 28 >> 2]; b[k + 6 >> 1] = c[e + 16 >> 2]; a[k + 9 >> 0] = 0; c[k >> 2] = c[f >> 2]; c[f >> 2] = k; a[(c[m >> 2] | 0) + 77 >> 0] = 1; c[l + 16 >> 2] = -1; c[l + 20 >> 2] = -1; c[l >> 2] = 7; c[l + 8 >> 2] = 0; df(m, c[o + 72 >> 2] | 0, l) | 0; Le(o); e = o + 16 | 0; a: while (1) { d = c[e >> 2] | 0; switch (d | 0) { case 277: case 286: case 262: case 261: case 260: break a; default: { } }ef(o); if ((d | 0) == 274) { p = 8; break } } if ((p | 0) == 8) d = c[e >> 2] | 0; if ((d | 0) == 286) { gf(o); i = q; return n | 0 } else ff(o, 286); return 0 } function df(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0; r = i; i = i + 32 | 0; o = r + 8 | 0; n = r; p = c[b >> 2] | 0; l = p + 40 | 0; g = c[l >> 2] | 0; q = b + 47 | 0; m = d[q >> 0] | 0; if ((m + 1 | 0) >>> 0 > 255) { h = b + 12 | 0; j = c[(c[h >> 2] | 0) + 52 >> 2] | 0; k = c[p + 64 >> 2] | 0; if (!k) { t = 4381; c[o >> 2] = 4820; s = o + 4 | 0; c[s >> 2] = 255; s = o + 8 | 0; c[s >> 2] = t; s = af(j, 4395, o) | 0; t = c[h >> 2] | 0; He(t, s) } c[n >> 2] = k; s = af(j, 4361, n) | 0; c[o >> 2] = 4820; t = o + 4 | 0; c[t >> 2] = 255; t = o + 8 | 0; c[t >> 2] = s; t = af(j, 4395, o) | 0; s = c[h >> 2] | 0; He(s, t) } if ((m | 0) < (g | 0)) h = g; else { h = p + 28 | 0; c[h >> 2] = Se(c[(c[b + 12 >> 2] | 0) + 52 >> 2] | 0, c[h >> 2] | 0, l, 8, 255, 4820) | 0; h = c[l >> 2] | 0 } j = c[p + 28 >> 2] | 0; if ((g | 0) < (h | 0)) do { c[j + (g << 3) >> 2] = 0; g = g + 1 | 0 } while ((g | 0) < (h | 0)); g = a[q >> 0] | 0; t = g & 255; a[j + (t << 3) + 4 >> 0] = (c[f >> 2] | 0) == 7 & 1; a[j + (t << 3) + 5 >> 0] = c[f + 8 >> 2]; c[j + (t << 3) >> 2] = e; if (!(a[e + 5 >> 0] & 3)) { t = g; s = t + 1 << 24 >> 24; a[q >> 0] = s; t = t & 255; i = r; return t | 0 } if (!(a[p + 5 >> 0] & 4)) { t = g; s = t + 1 << 24 >> 24; a[q >> 0] = s; t = t & 255; i = r; return t | 0 } je(c[(c[b + 12 >> 2] | 0) + 52 >> 2] | 0, p, e); t = a[q >> 0] | 0; s = t + 1 << 24 >> 24; a[q >> 0] = s; t = t & 255; i = r; return t | 0 } function ef(e) { e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0; F = i; i = i + 192 | 0; t = F + 184 | 0; p = F + 168 | 0; w = F + 152 | 0; m = F + 136 | 0; n = F + 120 | 0; o = F + 104 | 0; l = F + 88 | 0; k = F + 80 | 0; A = F + 48 | 0; u = F + 24 | 0; q = F; y = e + 4 | 0; B = c[y >> 2] | 0; D = e + 48 | 0; x = c[D >> 2] | 0; E = e + 52 | 0; j = (c[E >> 2] | 0) + 38 | 0; C = (b[j >> 1] | 0) + 1 << 16 >> 16; b[j >> 1] = C; if ((C & 65535) > 200) { f = x + 12 | 0; h = c[(c[f >> 2] | 0) + 52 >> 2] | 0; j = c[(c[x >> 2] | 0) + 64 >> 2] | 0; if (!j) { G = 4381; c[l >> 2] = 4427; C = l + 4 | 0; c[C >> 2] = 200; C = l + 8 | 0; c[C >> 2] = G; C = af(h, 4395, l) | 0; G = c[f >> 2] | 0; He(G, C) } c[k >> 2] = j; C = af(h, 4361, k) | 0; c[l >> 2] = 4427; G = l + 4 | 0; c[G >> 2] = 200; G = l + 8 | 0; c[G >> 2] = C; G = af(h, 4395, l) | 0; C = c[f >> 2] | 0; He(C, G) } C = e + 16 | 0; do switch (c[C >> 2] | 0) { case 59: { Le(e); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } case 267: { c[u >> 2] = -1; nf(e, u); a: while (1) { f = c[C >> 2] | 0; switch (f | 0) { case 260: { z = 10; break a } case 261: break; default: break a }nf(e, u) } if ((z | 0) == 10) { Le(e); g = c[D >> 2] | 0; a[A + 10 >> 0] = 0; a[A + 8 >> 0] = a[g + 46 >> 0] | 0; G = c[(c[g + 12 >> 2] | 0) + 64 >> 2] | 0; b[A + 4 >> 1] = c[G + 28 >> 2]; b[A + 6 >> 1] = c[G + 16 >> 2]; a[A + 9 >> 0] = 0; G = g + 16 | 0; c[A >> 2] = c[G >> 2]; c[G >> 2] = A; b: do { f = c[C >> 2] | 0; switch (f | 0) { case 277: case 286: case 262: case 261: case 260: break b; default: { } }ef(e) } while ((f | 0) != 274); hf(g); f = c[C >> 2] | 0 } if ((f | 0) == 262) { Le(e); Sc(x, c[u >> 2] | 0); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } if ((c[y >> 2] | 0) == (B | 0)) ff(e, 262); else { G = c[E >> 2] | 0; E = Ge(e, 262) | 0; F = Ge(e, 267) | 0; c[o >> 2] = E; c[o + 4 >> 2] = F; c[o + 8 >> 2] = B; He(e, af(G, 4436, o) | 0) } break } case 278: { Le(e); h = Qc(x) | 0; of(e, A, 0) | 0; if ((c[A >> 2] | 0) == 1) c[A >> 2] = 3; kd(c[D >> 2] | 0, A); j = c[A + 20 >> 2] | 0; a[u + 10 >> 0] = 1; a[u + 8 >> 0] = a[x + 46 >> 0] | 0; G = c[(c[x + 12 >> 2] | 0) + 64 >> 2] | 0; b[u + 4 >> 1] = c[G + 28 >> 2]; b[u + 6 >> 1] = c[G + 16 >> 2]; a[u + 9 >> 0] = 0; G = x + 16 | 0; c[u >> 2] = c[G >> 2]; c[G >> 2] = u; if ((c[C >> 2] | 0) != 259) ff(e, 259); Le(e); g = c[D >> 2] | 0; a[A + 10 >> 0] = 0; a[A + 8 >> 0] = a[g + 46 >> 0] | 0; G = c[(c[g + 12 >> 2] | 0) + 64 >> 2] | 0; b[A + 4 >> 1] = c[G + 28 >> 2]; b[A + 6 >> 1] = c[G + 16 >> 2]; a[A + 9 >> 0] = 0; G = g + 16 | 0; c[A >> 2] = c[G >> 2]; c[G >> 2] = A; c: do { f = c[C >> 2] | 0; switch (f | 0) { case 277: case 286: case 262: case 261: case 260: break c; default: { } }ef(e) } while ((f | 0) != 274); hf(g); Rc(x, Mc(x) | 0, h); if ((c[C >> 2] | 0) == 262) { Le(e); hf(x); Sc(x, j); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } if ((c[y >> 2] | 0) == (B | 0)) ff(e, 262); else { G = c[E >> 2] | 0; E = Ge(e, 262) | 0; F = Ge(e, 278) | 0; c[n >> 2] = E; c[n + 4 >> 2] = F; c[n + 8 >> 2] = B; He(e, af(G, 4436, n) | 0) } break } case 259: { Le(e); g = c[D >> 2] | 0; a[A + 10 >> 0] = 0; a[A + 8 >> 0] = a[g + 46 >> 0] | 0; G = c[(c[g + 12 >> 2] | 0) + 64 >> 2] | 0; b[A + 4 >> 1] = c[G + 28 >> 2]; b[A + 6 >> 1] = c[G + 16 >> 2]; a[A + 9 >> 0] = 0; G = g + 16 | 0; c[A >> 2] = c[G >> 2]; c[G >> 2] = A; d: do { f = c[C >> 2] | 0; switch (f | 0) { case 277: case 286: case 262: case 261: case 260: break d; default: { } }ef(e) } while ((f | 0) != 274); hf(g); if ((c[C >> 2] | 0) == 262) { Le(e); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } if ((c[y >> 2] | 0) == (B | 0)) ff(e, 262); else { G = c[E >> 2] | 0; E = Ge(e, 262) | 0; F = Ge(e, 259) | 0; c[m >> 2] = E; c[m + 4 >> 2] = F; c[m + 8 >> 2] = B; He(e, af(G, 4436, m) | 0) } break } case 264: { a[u + 10 >> 0] = 1; a[u + 8 >> 0] = a[x + 46 >> 0] | 0; G = c[(c[x + 12 >> 2] | 0) + 64 >> 2] | 0; b[u + 4 >> 1] = c[G + 28 >> 2]; b[u + 6 >> 1] = c[G + 16 >> 2]; a[u + 9 >> 0] = 0; G = x + 16 | 0; c[u >> 2] = c[G >> 2]; c[G >> 2] = u; Le(e); if ((c[C >> 2] | 0) != 288) ff(e, 288); h = e + 24 | 0; j = c[h >> 2] | 0; Le(e); switch (c[C >> 2] | 0) { case 61: { f = c[D >> 2] | 0; g = f + 48 | 0; h = d[g >> 0] | 0; pf(e, Je(e, 4473, 11) | 0); pf(e, Je(e, 4485, 11) | 0); pf(e, Je(e, 4497, 10) | 0); pf(e, j); if ((c[C >> 2] | 0) != 61) ff(e, 61); Le(e); of(e, A, 0) | 0; bd(c[D >> 2] | 0, A); if ((c[C >> 2] | 0) != 44) ff(e, 44); Le(e); of(e, A, 0) | 0; bd(c[D >> 2] | 0, A); if ((c[C >> 2] | 0) == 44) { Le(e); of(e, A, 0) | 0; bd(c[D >> 2] | 0, A) } else { G = d[g >> 0] | 0; Uc(f, G, Zc(f, 1.0) | 0) | 0; Wc(f, 1) } qf(e, h, B, 1, 1); break } case 268: case 44: { k = c[D >> 2] | 0; l = d[k + 48 >> 0] | 0; pf(e, Je(e, 4508, 15) | 0); pf(e, Je(e, 4524, 11) | 0); pf(e, Je(e, 4536, 13) | 0); pf(e, j); f = c[C >> 2] | 0; do if ((f | 0) == 44) { f = 4; while (1) { Le(e); if ((c[C >> 2] | 0) != 288) { z = 52; break } g = c[h >> 2] | 0; Le(e); pf(e, g); g = c[C >> 2] | 0; if ((g | 0) == 44) f = f + 1 | 0; else { z = 54; break } } if ((z | 0) == 52) ff(e, 288); else if ((z | 0) == 54) { v = f + -2 | 0; r = g; break } } else { v = 1; r = f } while (0); if ((r | 0) != 268) ff(e, 268); Le(e); j = c[y >> 2] | 0; of(e, A, 0) | 0; if ((c[C >> 2] | 0) == 44) { f = 1; do { Le(e); bd(c[D >> 2] | 0, A); of(e, A, 0) | 0; f = f + 1 | 0 } while ((c[C >> 2] | 0) == 44) } else f = 1; h = c[D >> 2] | 0; g = 3 - f | 0; switch (c[A >> 2] | 0) { case 13: case 12: { f = g + 1 | 0; f = (f | 0) < 0 ? 0 : f; _c(h, A, f); if ((f | 0) > 1) Wc(h, f + -1 | 0); break } case 0: { z = 63; break } default: { bd(h, A); z = 63 } }if ((z | 0) == 63 ? (g | 0) > 0 : 0) { G = d[h + 48 >> 0] | 0; Wc(h, g); Jc(h, G, g) } Vc(k, 3); qf(e, l, j, v, 0); break } default: He(e, 4550) }if ((c[C >> 2] | 0) == 262) { Le(e); hf(x); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } if ((c[y >> 2] | 0) == (B | 0)) ff(e, 262); else { G = c[E >> 2] | 0; E = Ge(e, 262) | 0; F = Ge(e, 264) | 0; c[w >> 2] = E; c[w + 4 >> 2] = F; c[w + 8 >> 2] = B; He(e, af(G, 4436, w) | 0) } break } case 273: { g = Qc(x) | 0; a[u + 10 >> 0] = 1; v = a[x + 46 >> 0] | 0; a[u + 8 >> 0] = v; j = c[(c[x + 12 >> 2] | 0) + 64 >> 2] | 0; w = c[j + 28 >> 2] & 65535; b[u + 4 >> 1] = w; j = c[j + 16 >> 2] & 65535; b[u + 6 >> 1] = j; a[u + 9 >> 0] = 0; G = x + 16 | 0; c[u >> 2] = c[G >> 2]; a[q + 10 >> 0] = 0; h = q + 8 | 0; a[h >> 0] = v; b[q + 4 >> 1] = w; b[q + 6 >> 1] = j; j = q + 9 | 0; a[j >> 0] = 0; c[q >> 2] = u; c[G >> 2] = q; Le(e); e: while (1) { f = c[C >> 2] | 0; switch (f | 0) { case 277: case 286: case 262: case 261: case 260: break e; default: { } }ef(e); if ((f | 0) == 274) { z = 75; break } } if ((z | 0) == 75) f = c[C >> 2] | 0; if ((f | 0) != 277) if ((c[y >> 2] | 0) == (B | 0)) ff(e, 277); else { G = c[E >> 2] | 0; z = Ge(e, 277) | 0; C = Ge(e, 273) | 0; c[p >> 2] = z; c[p + 4 >> 2] = C; c[p + 8 >> 2] = B; He(e, af(G, 4436, p) | 0) } Le(e); of(e, A, 0) | 0; if ((c[A >> 2] | 0) == 1) c[A >> 2] = 3; kd(c[D >> 2] | 0, A); f = c[A + 20 >> 2] | 0; if (a[j >> 0] | 0) Tc(x, f, d[h >> 0] | 0); hf(x); Rc(x, f, g); hf(x); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } case 265: { Le(e); if ((c[C >> 2] | 0) != 288) ff(e, 288); f = c[e + 24 >> 2] | 0; Le(e); g = c[D >> 2] | 0; if (!(rf(g, f, u, 1) | 0)) { rf(g, c[e + 72 >> 2] | 0, u, 1) | 0; G = Xc(c[D >> 2] | 0, f) | 0; c[A + 16 >> 2] = -1; c[A + 20 >> 2] = -1; c[A >> 2] = 4; c[A + 8 >> 2] = G; md(g, u, A) } f: while (1) { switch (c[C >> 2] | 0) { case 58: { z = 91; break f } case 46: break; default: { f = 0; break f } }sf(e, u) } if ((z | 0) == 91) { sf(e, u); f = 1 } tf(e, q, f, B); id(c[D >> 2] | 0, u, q); sd(c[D >> 2] | 0, B); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } case 269: { Le(e); f = c[C >> 2] | 0; if ((f | 0) == 265) { Le(e); f = c[D >> 2] | 0; if ((c[C >> 2] | 0) != 288) ff(e, 288); C = c[e + 24 >> 2] | 0; Le(e); pf(e, C); C = c[D >> 2] | 0; B = C + 46 | 0; G = (d[B >> 0] | 0) + 1 | 0; a[B >> 0] = G; c[(c[(c[C >> 2] | 0) + 24 >> 2] | 0) + ((b[(c[c[(c[C + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((c[C + 40 >> 2] | 0) + (G & 255) + -1 << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = c[C + 20 >> 2]; tf(e, A, 0, c[y >> 2] | 0); c[(c[(c[f >> 2] | 0) + 24 >> 2] | 0) + ((b[(c[c[(c[f + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((c[f + 40 >> 2] | 0) + (c[A + 8 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = c[f + 20 >> 2]; G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } if ((f | 0) != 288) ff(e, 288); h = e + 24 | 0; f = 0; g: while (1) { G = c[h >> 2] | 0; Le(e); pf(e, G); f = f + 1 | 0; switch (c[C >> 2] | 0) { case 61: { z = 102; break g } case 44: break; default: { z = 104; break g } }Le(e); if ((c[C >> 2] | 0) != 288) { z = 99; break } } if ((z | 0) == 99) ff(e, 288); else if ((z | 0) == 102) { Le(e); of(e, A, 0) | 0; if ((c[C >> 2] | 0) == 44) { g = 1; do { Le(e); bd(c[D >> 2] | 0, A); of(e, A, 0) | 0; g = g + 1 | 0 } while ((c[C >> 2] | 0) == 44) } else g = 1 } else if ((z | 0) == 104) { c[A >> 2] = 0; g = 0 } j = c[D >> 2] | 0; h = f - g | 0; switch (c[A >> 2] | 0) { case 13: case 12: { g = h + 1 | 0; g = (g | 0) < 0 ? 0 : g; _c(j, A, g); if ((g | 0) > 1) Wc(j, g + -1 | 0); break } case 0: { z = 109; break } default: { bd(j, A); z = 109 } }if ((z | 0) == 109 ? (h | 0) > 0 : 0) { G = d[j + 48 >> 0] | 0; Wc(j, h); Jc(j, G, h) } G = c[D >> 2] | 0; j = G + 46 | 0; k = (d[j >> 0] | 0) + f | 0; a[j >> 0] = k; j = c[G + 20 >> 2] | 0; g = c[(c[G >> 2] | 0) + 24 >> 2] | 0; h = c[c[(c[G + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0; k = (c[G + 40 >> 2] | 0) + (k & 255) | 0; do { c[g + ((b[h + (k - f << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = j; f = f + -1 | 0 } while ((f | 0) != 0); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } case 285: { Le(e); if ((c[C >> 2] | 0) != 288) ff(e, 288); l = c[e + 24 >> 2] | 0; Le(e); g = c[D >> 2] | 0; p = e + 64 | 0; j = c[p >> 2] | 0; n = j + 24 | 0; o = g + 16 | 0; f = b[(c[o >> 2] | 0) + 4 >> 1] | 0; m = j + 28 | 0; h: do if ((f | 0) < (c[m >> 2] | 0)) { while (1) { if (Jf(l, c[(c[n >> 2] | 0) + (f << 4) >> 2] | 0) | 0) break; f = f + 1 | 0; if ((f | 0) >= (c[m >> 2] | 0)) break h } A = g + 12 | 0; G = c[(c[A >> 2] | 0) + 52 >> 2] | 0; z = c[(c[n >> 2] | 0) + (f << 4) + 8 >> 2] | 0; c[t >> 2] = l + 16; c[t + 4 >> 2] = z; G = af(G, 4571, t) | 0; lf(c[A >> 2] | 0, G) } while (0); if ((c[C >> 2] | 0) != 285) ff(e, 285); Le(e); h = c[g + 20 >> 2] | 0; k = c[m >> 2] | 0; f = j + 32 | 0; if ((k | 0) < (c[f >> 2] | 0)) { f = c[n >> 2] | 0; g = k } else { f = Se(c[E >> 2] | 0, c[n >> 2] | 0, f, 16, 32767, 4202) | 0; c[n >> 2] = f; g = c[m >> 2] | 0 } c[f + (k << 4) >> 2] = l; c[f + (k << 4) + 8 >> 2] = B; a[f + (k << 4) + 12 >> 0] = a[(c[D >> 2] | 0) + 46 >> 0] | 0; c[f + (k << 4) + 4 >> 2] = h; c[m >> 2] = g + 1; i: while (1) { switch (c[C >> 2] | 0) { case 286: case 262: case 261: case 260: { z = 130; break i } case 285: case 59: break; default: { z = 129; break i } }ef(e) } if ((z | 0) == 129) f = c[n >> 2] | 0; else if ((z | 0) == 130) { f = c[n >> 2] | 0; a[f + (k << 4) + 12 >> 0] = a[(c[o >> 2] | 0) + 8 >> 0] | 0 } j = f + (k << 4) | 0; g = c[p >> 2] | 0; f = b[(c[(c[D >> 2] | 0) + 16 >> 2] | 0) + 6 >> 1] | 0; h = g + 16 | 0; if ((f | 0) >= (c[h >> 2] | 0)) { G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } g = g + 12 | 0; j: while (1) { while (1) { if (!(Jf(c[(c[g >> 2] | 0) + (f << 4) >> 2] | 0, c[j >> 2] | 0) | 0)) break; jf(e, f, j); if ((f | 0) >= (c[h >> 2] | 0)) { z = 165; break j } } f = f + 1 | 0; if ((f | 0) >= (c[h >> 2] | 0)) { z = 165; break } } if ((z | 0) == 165) { G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } break } case 274: { Le(e); h = c[D >> 2] | 0; k: do switch (c[C >> 2] | 0) { case 59: case 277: case 286: case 262: case 261: case 260: { f = 0; g = 0; break } default: { of(e, A, 0) | 0; if ((c[C >> 2] | 0) == 44) { f = 1; do { Le(e); bd(c[D >> 2] | 0, A); of(e, A, 0) | 0; f = f + 1 | 0 } while ((c[C >> 2] | 0) == 44) } else f = 1; if ((c[A >> 2] & -2 | 0) != 12) if ((f | 0) == 1) { f = 1; g = ed(h, A) | 0; break k } else { bd(h, A); g = d[h + 46 >> 0] | 0; break k } else { _c(h, A, -1); if ((f | 0) == 1 & (c[A >> 2] | 0) == 12) { G = (c[(c[h >> 2] | 0) + 12 >> 2] | 0) + (c[A + 8 >> 2] << 2) | 0; c[G >> 2] = c[G >> 2] & -64 | 30 } f = -1; g = d[h + 46 >> 0] | 0; break k } } } while (0); Pc(h, g, f); if ((c[C >> 2] | 0) == 59) Le(e); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } case 266: case 258: { l = Mc(x) | 0; k = c[y >> 2] | 0; G = (c[C >> 2] | 0) == 266; Le(e); do if (G) if ((c[C >> 2] | 0) == 288) { s = c[e + 24 >> 2] | 0; Le(e); break } else ff(e, 288); else s = Nf(c[E >> 2] | 0, 4196) | 0; while (0); g = c[e + 64 >> 2] | 0; f = g + 12 | 0; h = g + 16 | 0; j = c[h >> 2] | 0; g = g + 20 | 0; if ((j | 0) < (c[g >> 2] | 0)) { f = c[f >> 2] | 0; g = j } else { g = Se(c[E >> 2] | 0, c[f >> 2] | 0, g, 16, 32767, 4202) | 0; c[f >> 2] = g; f = g; g = c[h >> 2] | 0 } c[f + (j << 4) >> 2] = s; c[f + (j << 4) + 8 >> 2] = k; a[f + (j << 4) + 12 >> 0] = a[(c[D >> 2] | 0) + 46 >> 0] | 0; c[f + (j << 4) + 4 >> 2] = l; c[h >> 2] = g + 1; kf(e, j) | 0; G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } default: { f = A + 8 | 0; uf(e, f); l: do switch (c[C >> 2] | 0) { case 44: case 61: { c[A >> 2] = 0; vf(e, A, 1); break } default: if ((c[f >> 2] | 0) == 12) { G = (c[(c[x >> 2] | 0) + 12 >> 2] | 0) + (c[A + 16 >> 2] << 2) | 0; c[G >> 2] = c[G >> 2] & -8372225 | 16384; break l } else He(e, 4609) } while (0); G = c[D >> 2] | 0; D = G + 46 | 0; D = a[D >> 0] | 0; G = G + 48 | 0; a[G >> 0] = D; G = c[E >> 2] | 0; G = G + 38 | 0; E = b[G >> 1] | 0; E = E + -1 << 16 >> 16; b[G >> 1] = E; i = F; return } } while (0) } function ff(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0; d = i; i = i + 16 | 0; e = c[a + 52 >> 2] | 0; c[d >> 2] = Ge(a, b) | 0; He(a, af(e, 4349, d) | 0) } function gf(a) { a = a | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0; g = c[a + 52 >> 2] | 0; h = a + 48 | 0; i = c[h >> 2] | 0; j = c[i >> 2] | 0; Pc(i, 0, 0); hf(i); f = i + 20 | 0; e = c[f >> 2] | 0; if ((e + 1 | 0) >>> 0 > 1073741823) Te(g); l = j + 12 | 0; k = j + 48 | 0; c[l >> 2] = Ue(g, c[l >> 2] | 0, c[k >> 2] << 2, e << 2) | 0; e = c[f >> 2] | 0; c[k >> 2] = e; if ((e + 1 | 0) >>> 0 > 1073741823) Te(g); k = j + 20 | 0; l = j + 52 | 0; c[k >> 2] = Ue(g, c[k >> 2] | 0, c[l >> 2] << 2, e << 2) | 0; c[l >> 2] = c[f >> 2]; e = i + 32 | 0; f = c[e >> 2] | 0; if ((f + 1 | 0) >>> 0 > 268435455) Te(g); k = j + 8 | 0; l = j + 44 | 0; c[k >> 2] = Ue(g, c[k >> 2] | 0, c[l >> 2] << 4, f << 4) | 0; c[l >> 2] = c[e >> 2]; e = i + 36 | 0; f = c[e >> 2] | 0; if ((f + 1 | 0) >>> 0 > 1073741823) Te(g); k = j + 16 | 0; l = j + 56 | 0; c[k >> 2] = Ue(g, c[k >> 2] | 0, c[l >> 2] << 2, f << 2) | 0; c[l >> 2] = c[e >> 2]; e = i + 44 | 0; f = b[e >> 1] | 0; if ((f + 1 | 0) >>> 0 > 357913941) Te(g); l = j + 24 | 0; k = j + 60 | 0; c[l >> 2] = Ue(g, c[l >> 2] | 0, (c[k >> 2] | 0) * 12 | 0, f * 12 | 0) | 0; f = c[e >> 2] | 0; c[k >> 2] = f << 16 >> 16; k = j + 28 | 0; l = j + 40 | 0; c[k >> 2] = Ue(g, c[k >> 2] | 0, c[l >> 2] << 3, f >>> 24 << 3) | 0; c[l >> 2] = d[i + 47 >> 0]; c[h >> 2] = c[i + 8 >> 2]; if ((c[a + 16 >> 2] & -2 | 0) == 288) { l = c[a + 24 >> 2] | 0; Je(a, l + 16 | 0, c[l + 12 >> 2] | 0) | 0 } l = g + 8 | 0; c[l >> 2] = (c[l >> 2] | 0) + -16; if ((c[(c[g + 12 >> 2] | 0) + 12 >> 2] | 0) <= 0) return; Ee(g); return } function hf(e) { e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0; w = i; i = i + 16 | 0; u = w; r = e + 16 | 0; s = c[r >> 2] | 0; v = e + 12 | 0; t = c[v >> 2] | 0; if (c[s >> 2] | 0 ? a[s + 9 >> 0] | 0 : 0) { q = Mc(e) | 0; Tc(e, q, d[s + 8 >> 0] | 0); Sc(e, q) } a: do if (a[s + 10 >> 0] | 0) { f = t + 52 | 0; n = Nf(c[f >> 2] | 0, 4196) | 0; m = t + 64 | 0; k = c[m >> 2] | 0; g = k + 24 | 0; j = t + 48 | 0; l = c[j >> 2] | 0; o = c[l + 20 >> 2] | 0; p = k + 28 | 0; q = c[p >> 2] | 0; h = k + 32 | 0; if ((q | 0) < (c[h >> 2] | 0)) { h = c[g >> 2] | 0; g = l; f = q } else { h = Se(c[f >> 2] | 0, c[g >> 2] | 0, h, 16, 32767, 4202) | 0; c[g >> 2] = h; g = c[j >> 2] | 0; f = c[p >> 2] | 0; k = c[m >> 2] | 0 } c[h + (q << 4) >> 2] = n; c[h + (q << 4) + 8 >> 2] = 0; a[h + (q << 4) + 12 >> 0] = a[g + 46 >> 0] | 0; c[h + (q << 4) + 4 >> 2] = o; c[p >> 2] = f + 1; j = (c[k + 24 >> 2] | 0) + (q << 4) | 0; f = b[(c[g + 16 >> 2] | 0) + 6 >> 1] | 0; h = k + 16 | 0; if ((f | 0) < (c[h >> 2] | 0)) { g = k + 12 | 0; do { while (1) { if (!(Jf(c[(c[g >> 2] | 0) + (f << 4) >> 2] | 0, c[j >> 2] | 0) | 0)) break; jf(t, f, j); if ((f | 0) >= (c[h >> 2] | 0)) break a } f = f + 1 | 0 } while ((f | 0) < (c[h >> 2] | 0)) } } while (0); o = c[s >> 2] | 0; c[r >> 2] = o; q = s + 8 | 0; f = a[q >> 0] | 0; n = e + 46 | 0; g = a[n >> 0] | 0; l = g & 255; p = c[(c[v >> 2] | 0) + 64 >> 2] | 0; r = p + 4 | 0; c[r >> 2] = (f & 255) - l + (c[r >> 2] | 0); if ((f & 255) < (g & 255)) { m = c[e + 20 >> 2] | 0; k = c[e + 40 >> 2] | 0; h = c[(c[e >> 2] | 0) + 24 >> 2] | 0; j = c[p >> 2] | 0; g = l; while (1) { r = (g & 255) + -1 << 24 >> 24; c[h + ((b[j + ((r & 255) + k << 1) >> 1] | 0) * 12 | 0) + 8 >> 2] = m; if ((r & 255) > (f & 255)) g = g + -1 | 0; else break } a[n >> 0] = f } else f = g; a[e + 48 >> 0] = f; g = c[s + 4 >> 2] | 0; f = c[t + 64 >> 2] | 0; c[f + 28 >> 2] = g << 16 >> 16; g = g >> 16; if (!o) if ((g | 0) < (c[f + 16 >> 2] | 0)) { o = c[f + 12 >> 2] | 0; n = c[o + (g << 4) >> 2] | 0; s = c[n + 4 >> 2] | 0; r = c[t + 52 >> 2] | 0; o = c[o + (g << 4) + 8 >> 2] | 0; c[u >> 2] = n + 16; c[u + 4 >> 2] = o; lf(t, af(r, (s & 255) << 24 >> 24 == 4 & (s & 16711680 | 0) != 0 ? 4215 : 4249, u) | 0) } else { i = w; return } n = p + 16 | 0; if ((g | 0) >= (c[n >> 2] | 0)) { i = w; return } m = p + 12 | 0; do { h = c[m >> 2] | 0; l = h + (g << 4) + 12 | 0; j = b[q >> 1] | 0; f = j & 255; k = j & 255; if ((d[l >> 0] | 0) > (f & 255)) { if ((j & 65535) >= 256) { Tc(e, c[h + (g << 4) + 4 >> 2] | 0, k); f = a[q >> 0] | 0 } a[l >> 0] = f } g = ((kf(c[v >> 2] | 0, g) | 0) == 0 & 1) + g | 0 } while ((g | 0) < (c[n >> 2] | 0)); i = w; return } function jf(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; n = i; i = i + 16 | 0; l = n; h = c[b + 48 >> 2] | 0; j = c[b + 64 >> 2] | 0; m = j + 12 | 0; k = c[m >> 2] | 0; g = a[k + (e << 4) + 12 >> 0] | 0; if ((g & 255) < (d[f + 12 >> 0] | 0)) { o = c[(mf(c[(c[h >> 2] | 0) + 24 >> 2] | 0, c[c[(c[h + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0, c[h + 40 >> 2] | 0, g & 255) | 0) >> 2] | 0; g = c[b + 52 >> 2] | 0; p = c[k + (e << 4) + 8 >> 2] | 0; c[l >> 2] = (c[k + (e << 4) >> 2] | 0) + 16; c[l + 4 >> 2] = p; c[l + 8 >> 2] = o + 16; lf(b, af(g, 4293, l) | 0) } Rc(h, c[k + (e << 4) + 4 >> 2] | 0, c[f + 4 >> 2] | 0); g = j + 16 | 0; b = (c[g >> 2] | 0) + -1 | 0; if ((b | 0) <= (e | 0)) { p = b; c[g >> 2] = p; i = n; return } do { p = c[m >> 2] | 0; b = p + (e << 4) | 0; e = e + 1 | 0; p = p + (e << 4) | 0; c[b >> 2] = c[p >> 2]; c[b + 4 >> 2] = c[p + 4 >> 2]; c[b + 8 >> 2] = c[p + 8 >> 2]; c[b + 12 >> 2] = c[p + 12 >> 2]; b = (c[g >> 2] | 0) + -1 | 0 } while ((e | 0) < (b | 0)); c[g >> 2] = b; i = n; return } function kf(e, f) { e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; n = e + 48 | 0; o = c[(c[n >> 2] | 0) + 16 >> 2] | 0; g = c[e + 64 >> 2] | 0; p = c[g + 12 >> 2] | 0; l = o + 4 | 0; h = b[l >> 1] | 0; m = g + 28 | 0; if ((h | 0) >= (c[m >> 2] | 0)) { q = 0; return q | 0 } j = g + 24 | 0; k = p + (f << 4) | 0; g = h; while (1) { h = c[j >> 2] | 0; i = h + (g << 4) | 0; if (Jf(c[i >> 2] | 0, c[k >> 2] | 0) | 0) break; g = g + 1 | 0; if ((g | 0) >= (c[m >> 2] | 0)) { g = 0; q = 10; break } } if ((q | 0) == 10) return g | 0; g = a[h + (g << 4) + 12 >> 0] | 0; do if ((d[p + (f << 4) + 12 >> 0] | 0) > (g & 255)) { if ((a[o + 9 >> 0] | 0) == 0 ? (c[m >> 2] | 0) <= (b[l >> 1] | 0) : 0) break; Tc(c[n >> 2] | 0, c[p + (f << 4) + 4 >> 2] | 0, g & 255) } while (0); jf(e, f, i); q = 1; return q | 0 } function lf(a, b) { a = a | 0; b = b | 0; c[a + 16 >> 2] = 0; He(a, b) } function mf(a, c, d, e) { a = a | 0; c = c | 0; d = d | 0; e = e | 0; return a + ((b[c + (e + d << 1) >> 1] | 0) * 12 | 0) | 0 } function nf(d, e) { d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0; r = i; i = i + 48 | 0; f = r + 24 | 0; g = r; n = d + 48 | 0; p = c[n >> 2] | 0; Le(d); of(d, g, 0) | 0; q = d + 16 | 0; if ((c[q >> 2] | 0) != 275) ff(d, 275); Le(d); a: do switch (c[q >> 2] | 0) { case 258: case 266: { ld(c[n >> 2] | 0, g); a[f + 10 >> 0] = 0; a[f + 8 >> 0] = a[p + 46 >> 0] | 0; h = c[(c[p + 12 >> 2] | 0) + 64 >> 2] | 0; b[f + 4 >> 1] = c[h + 28 >> 2]; b[f + 6 >> 1] = c[h + 16 >> 2]; a[f + 9 >> 0] = 0; h = p + 16 | 0; c[f >> 2] = c[h >> 2]; c[h >> 2] = f; h = c[g + 16 >> 2] | 0; j = c[d + 4 >> 2] | 0; l = (c[q >> 2] | 0) == 266; Le(d); do if (l) if ((c[q >> 2] | 0) == 288) { m = c[d + 24 >> 2] | 0; Le(d); break } else ff(d, 288); else m = Nf(c[d + 52 >> 2] | 0, 4196) | 0; while (0); g = c[d + 64 >> 2] | 0; f = g + 12 | 0; k = g + 16 | 0; l = c[k >> 2] | 0; g = g + 20 | 0; if ((l | 0) < (c[g >> 2] | 0)) { f = c[f >> 2] | 0; g = l } else { g = Se(c[d + 52 >> 2] | 0, c[f >> 2] | 0, g, 16, 32767, 4202) | 0; c[f >> 2] = g; f = g; g = c[k >> 2] | 0 } c[f + (l << 4) >> 2] = m; c[f + (l << 4) + 8 >> 2] = j; a[f + (l << 4) + 12 >> 0] = a[(c[n >> 2] | 0) + 46 >> 0] | 0; c[f + (l << 4) + 4 >> 2] = h; c[k >> 2] = g + 1; kf(d, l) | 0; b: while (1) { switch (c[q >> 2] | 0) { case 286: case 262: case 261: case 260: break b; case 285: case 59: break; default: { o = 16; break b } }ef(d) } if ((o | 0) == 16) { f = Mc(p) | 0; break a } hf(p); i = r; return } default: { kd(c[n >> 2] | 0, g); a[f + 10 >> 0] = 0; a[f + 8 >> 0] = a[p + 46 >> 0] | 0; o = c[(c[p + 12 >> 2] | 0) + 64 >> 2] | 0; b[f + 4 >> 1] = c[o + 28 >> 2]; b[f + 6 >> 1] = c[o + 16 >> 2]; a[f + 9 >> 0] = 0; o = p + 16 | 0; c[f >> 2] = c[o >> 2]; c[o >> 2] = f; f = c[g + 20 >> 2] | 0 } } while (0); c: do { g = c[q >> 2] | 0; switch (g | 0) { case 277: case 286: case 262: case 261: case 260: break c; default: { } }ef(d) } while ((g | 0) != 274); hf(p); if ((c[q >> 2] & -2 | 0) == 260) Oc(p, e, Mc(p) | 0); Sc(p, f); i = r; return } function of(e, f, g) { e = e | 0; f = f | 0; g = g | 0; var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0; t = i; i = i + 48 | 0; n = t + 32 | 0; m = t + 24 | 0; r = t; q = e + 48 | 0; o = c[q >> 2] | 0; s = e + 52 | 0; k = (c[s >> 2] | 0) + 38 | 0; l = (b[k >> 1] | 0) + 1 << 16 >> 16; b[k >> 1] = l; if ((l & 65535) > 200) { l = o + 12 | 0; j = c[(c[l >> 2] | 0) + 52 >> 2] | 0; k = c[(c[o >> 2] | 0) + 64 >> 2] | 0; if (!k) { v = 4381; c[n >> 2] = 4427; u = n + 4 | 0; c[u >> 2] = 200; u = n + 8 | 0; c[u >> 2] = v; u = af(j, 4395, n) | 0; v = c[l >> 2] | 0; He(v, u) } c[m >> 2] = k; u = af(j, 4361, m) | 0; c[n >> 2] = 4427; v = n + 4 | 0; c[v >> 2] = 200; v = n + 8 | 0; c[v >> 2] = u; v = af(j, 4395, n) | 0; u = c[l >> 2] | 0; He(u, v) } k = e + 16 | 0; a: do switch (c[k >> 2] | 0) { case 271: { j = 1; p = 8; break } case 45: { j = 0; p = 8; break } case 35: { j = 2; p = 8; break } case 287: { c[f + 16 >> 2] = -1; c[f + 20 >> 2] = -1; c[f >> 2] = 5; c[f + 8 >> 2] = 0; h[f + 8 >> 3] = +h[e + 24 >> 3]; p = 20; break } case 289: { p = Xc(o, c[e + 24 >> 2] | 0) | 0; c[f + 16 >> 2] = -1; c[f + 20 >> 2] = -1; c[f >> 2] = 4; c[f + 8 >> 2] = p; p = 20; break } case 270: { c[f + 16 >> 2] = -1; c[f + 20 >> 2] = -1; c[f >> 2] = 1; c[f + 8 >> 2] = 0; p = 20; break } case 276: { c[f + 16 >> 2] = -1; c[f + 20 >> 2] = -1; c[f >> 2] = 2; c[f + 8 >> 2] = 0; p = 20; break } case 263: { c[f + 16 >> 2] = -1; c[f + 20 >> 2] = -1; c[f >> 2] = 3; c[f + 8 >> 2] = 0; p = 20; break } case 280: { if (!(a[(c[o >> 2] | 0) + 77 >> 0] | 0)) He(e, 4747); else { p = Lc(o, 38, 0, 1, 0) | 0; c[f + 16 >> 2] = -1; c[f + 20 >> 2] = -1; c[f >> 2] = 13; c[f + 8 >> 2] = p; p = 20; break a } break } case 123: { xf(e, f); break } case 265: { Le(e); tf(e, f, 0, c[e + 4 >> 2] | 0); break } default: uf(e, f) } while (0); if ((p | 0) == 8) { v = c[e + 4 >> 2] | 0; Le(e); of(e, f, 8) | 0; nd(c[q >> 2] | 0, j, f, v) } else if ((p | 0) == 20) Le(e); do switch (c[k >> 2] | 0) { case 43: { j = 0; break } case 45: { j = 1; break } case 42: { j = 2; break } case 47: { j = 3; break } case 37: { j = 4; break } case 94: { j = 5; break } case 279: { j = 6; break } case 284: { j = 10; break } case 281: { j = 7; break } case 60: { j = 8; break } case 283: { j = 9; break } case 62: { j = 11; break } case 282: { j = 12; break } case 257: { j = 13; break } case 272: { j = 14; break } default: { v = 15; u = c[s >> 2] | 0; u = u + 38 | 0; s = b[u >> 1] | 0; s = s + -1 << 16 >> 16; b[u >> 1] = s; i = t; return v | 0 } } while (0); k = e + 4 | 0; while (1) { if ((d[4790 + (j << 1) >> 0] | 0) <= (g | 0)) { p = 39; break } v = c[k >> 2] | 0; Le(e); pd(c[q >> 2] | 0, j, f); u = j; j = of(e, r, d[4790 + (j << 1) + 1 >> 0] | 0) | 0; qd(c[q >> 2] | 0, u, f, r, v); if ((j | 0) == 15) { j = 15; p = 39; break } } if ((p | 0) == 39) { v = c[s >> 2] | 0; v = v + 38 | 0; u = b[v >> 1] | 0; u = u + -1 << 16 >> 16; b[v >> 1] = u; i = t; return j | 0 } return 0 } function pf(d, e) { d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; q = i; i = i + 32 | 0; o = q + 8 | 0; n = q; m = c[d + 48 >> 2] | 0; p = c[d + 64 >> 2] | 0; k = c[m >> 2] | 0; f = k + 60 | 0; h = c[f >> 2] | 0; l = m + 44 | 0; if ((b[l >> 1] | 0) < (h | 0)) { g = h; j = c[k + 24 >> 2] | 0 } else { g = k + 24 | 0; j = Se(c[d + 52 >> 2] | 0, c[g >> 2] | 0, f, 12, 32767, 4731) | 0; c[g >> 2] = j; g = c[f >> 2] | 0 } if ((h | 0) < (g | 0)) { f = h; do { c[j + (f * 12 | 0) >> 2] = 0; f = f + 1 | 0 } while ((f | 0) != (g | 0)) } f = b[l >> 1] | 0; c[j + ((f << 16 >> 16) * 12 | 0) >> 2] = e; if ((a[e + 5 >> 0] & 3) != 0 ? (a[k + 5 >> 0] & 4) != 0 : 0) { je(c[d + 52 >> 2] | 0, k, e); k = b[l >> 1] | 0 } else k = f; b[l >> 1] = k + 1 << 16 >> 16; j = p + 4 | 0; e = c[j >> 2] | 0; if ((e + 1 - (c[m + 40 >> 2] | 0) | 0) > 200) { g = m + 12 | 0; h = c[(c[g >> 2] | 0) + 52 >> 2] | 0; f = c[(c[m >> 2] | 0) + 64 >> 2] | 0; if (!f) { l = 4381; c[o >> 2] = 4731; m = o + 4 | 0; c[m >> 2] = 200; m = o + 8 | 0; c[m >> 2] = l; m = af(h, 4395, o) | 0; l = c[g >> 2] | 0; He(l, m) } c[n >> 2] = f; m = af(h, 4361, n) | 0; c[o >> 2] = 4731; n = o + 4 | 0; c[n >> 2] = 200; n = o + 8 | 0; c[n >> 2] = m; o = af(h, 4395, o) | 0; n = c[g >> 2] | 0; He(n, o) } f = p + 8 | 0; if ((e + 2 | 0) > (c[f >> 2] | 0)) { d = Se(c[d + 52 >> 2] | 0, c[p >> 2] | 0, f, 2, 2147483645, 4731) | 0; c[p >> 2] = d; p = c[j >> 2] | 0; o = p + 1 | 0; c[j >> 2] = o; p = d + (p << 1) | 0; b[p >> 1] = k; i = q; return } else { d = e; p = c[p >> 2] | 0; o = d + 1 | 0; c[j >> 2] = o; p = p + (d << 1) | 0; b[p >> 1] = k; i = q; return } } function qf(e, f, g, h, j) { e = e | 0; f = f | 0; g = g | 0; h = h | 0; j = j | 0; var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0; u = i; i = i + 32 | 0; q = u + 12 | 0; l = u; o = e + 48 | 0; t = c[o >> 2] | 0; m = t + 46 | 0; s = (d[m >> 0] | 0) + 3 | 0; a[m >> 0] = s; n = c[t + 20 >> 2] | 0; k = t + 12 | 0; p = c[(c[t >> 2] | 0) + 24 >> 2] | 0; r = c[c[(c[k >> 2] | 0) + 64 >> 2] >> 2] | 0; s = (c[t + 40 >> 2] | 0) + (s & 255) | 0; c[p + ((b[r + (s + -3 << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = n; c[p + ((b[r + (s + -2 << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = n; c[p + ((b[r + (s + -1 << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = n; s = e + 16 | 0; if ((c[s >> 2] | 0) != 259) ff(e, 259); Le(e); p = (j | 0) != 0; if (p) r = Nc(t, 33, f, 131070) | 0; else r = Mc(t) | 0; a[l + 10 >> 0] = 0; a[l + 8 >> 0] = a[m >> 0] | 0; j = c[(c[k >> 2] | 0) + 64 >> 2] | 0; b[l + 4 >> 1] = c[j + 28 >> 2]; b[l + 6 >> 1] = c[j + 16 >> 2]; a[l + 9 >> 0] = 0; j = t + 16 | 0; c[l >> 2] = c[j >> 2]; c[j >> 2] = l; j = c[o >> 2] | 0; n = j + 46 | 0; k = (d[n >> 0] | 0) + h | 0; a[n >> 0] = k; if (h | 0) { n = c[j + 20 >> 2] | 0; l = c[(c[j >> 2] | 0) + 24 >> 2] | 0; m = c[c[(c[j + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0; k = (c[j + 40 >> 2] | 0) + (k & 255) | 0; j = h; do { c[l + ((b[m + (k - j << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = n; j = j + -1 | 0 } while ((j | 0) != 0) } Wc(t, h); k = c[o >> 2] | 0; a[q + 10 >> 0] = 0; a[q + 8 >> 0] = a[k + 46 >> 0] | 0; o = c[(c[k + 12 >> 2] | 0) + 64 >> 2] | 0; b[q + 4 >> 1] = c[o + 28 >> 2]; b[q + 6 >> 1] = c[o + 16 >> 2]; a[q + 9 >> 0] = 0; o = k + 16 | 0; c[q >> 2] = c[o >> 2]; c[o >> 2] = q; a: do { j = c[s >> 2] | 0; switch (j | 0) { case 277: case 286: case 262: case 261: case 260: break a; default: { } }ef(e) } while ((j | 0) != 274); hf(k); hf(t); Sc(t, r); if (p) { h = Nc(t, 32, f, 131070) | 0; s = r + 1 | 0; Rc(t, h, s); sd(t, g); i = u; return } else { Lc(t, 34, f, 0, h) | 0; sd(t, g); h = Nc(t, 35, f + 2 | 0, 131070) | 0; s = r + 1 | 0; Rc(t, h, s); sd(t, g); i = u; return } } function rf(e, f, g, h) { e = e | 0; f = f | 0; g = g | 0; h = h | 0; var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0; if (!e) { n = 0; return n | 0 } k = e + 12 | 0; l = e + 40 | 0; m = d[e + 46 >> 0] | 0; while (1) { i = m + -1 | 0; j = c[e >> 2] | 0; if ((m | 0) <= 0) break; if (!(Jf(f, c[(c[j + 24 >> 2] | 0) + ((b[(c[c[(c[k >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((c[l >> 2] | 0) + i << 1) >> 1] | 0) * 12 | 0) >> 2] | 0) | 0)) m = i; else { n = 5; break } } if ((n | 0) == 5) { c[g + 16 >> 2] = -1; c[g + 20 >> 2] = -1; c[g >> 2] = 7; c[g + 8 >> 2] = i; if (h | 0) { n = 7; return n | 0 } i = e + 16 | 0; do i = c[i >> 2] | 0; while ((d[i + 8 >> 0] | 0) >= (m | 0)); a[i + 9 >> 0] = 1; n = 7; return n | 0 } j = c[j + 28 >> 2] | 0; k = e + 47 | 0; a: do if (a[k >> 0] | 0) { i = 0; while (1) { if (Jf(c[j + (i << 3) >> 2] | 0, f) | 0) break; i = i + 1 | 0; if ((i | 0) >= (d[k >> 0] | 0)) { n = 13; break a } } if ((i | 0) < 0) n = 13 } else n = 13; while (0); do if ((n | 0) == 13) if (!(rf(c[e + 8 >> 2] | 0, f, g, 0) | 0)) { n = 0; return n | 0 } else { i = df(e, f, g) | 0; break } while (0); c[g + 16 >> 2] = -1; c[g + 20 >> 2] = -1; c[g >> 2] = 8; c[g + 8 >> 2] = i; n = 8; return n | 0 } function sf(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0; g = i; i = i + 32 | 0; d = g; e = a + 48 | 0; f = c[e >> 2] | 0; fd(f, b); Le(a); if ((c[a + 16 >> 2] | 0) == 288) { h = c[a + 24 >> 2] | 0; Le(a); e = Xc(c[e >> 2] | 0, h) | 0; c[d + 16 >> 2] = -1; c[d + 20 >> 2] = -1; c[d >> 2] = 4; c[d + 8 >> 2] = e; md(f, b, d); i = g; return } else ff(a, 288) } function tf(e, f, g, h) { e = e | 0; f = f | 0; g = g | 0; h = h | 0; var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0; z = i; i = i + 80 | 0; y = z; x = z + 24 | 0; s = z + 12 | 0; v = e + 48 | 0; r = c[v >> 2] | 0; w = e + 52 | 0; o = c[w >> 2] | 0; q = c[r >> 2] | 0; r = r + 36 | 0; m = q + 56 | 0; k = c[m >> 2] | 0; p = q + 16 | 0; if (((c[r >> 2] | 0) >= (k | 0) ? (l = Se(o, c[p >> 2] | 0, m, 4, 262143, 4691) | 0, c[p >> 2] = l, n = c[m >> 2] | 0, (k | 0) < (n | 0)) : 0) ? (j = k + 1 | 0, c[l + (k << 2) >> 2] = 0, (j | 0) < (n | 0)) : 0) do { c[(c[p >> 2] | 0) + (j << 2) >> 2] = 0; j = j + 1 | 0 } while ((j | 0) != (n | 0)); m = ge(o) | 0; n = c[r >> 2] | 0; c[r >> 2] = n + 1; c[(c[p >> 2] | 0) + (n << 2) >> 2] = m; if (a[m + 5 >> 0] & 3 ? a[q + 5 >> 0] & 4 : 0) je(o, q, m); c[x >> 2] = m; c[m + 64 >> 2] = h; j = c[w >> 2] | 0; c[x + 8 >> 2] = c[v >> 2]; k = x + 12 | 0; c[k >> 2] = e; c[v >> 2] = x; c[x + 20 >> 2] = 0; c[x + 24 >> 2] = 0; c[x + 28 >> 2] = -1; c[x + 32 >> 2] = 0; c[x + 36 >> 2] = 0; l = x + 44 | 0; c[l >> 2] = 0; a[l + 4 >> 0] = 0; c[x + 40 >> 2] = c[(c[e + 64 >> 2] | 0) + 4 >> 2]; l = x + 16 | 0; c[l >> 2] = 0; c[m + 36 >> 2] = c[e + 68 >> 2]; a[m + 78 >> 0] = 2; p = Xf(j) | 0; c[x + 4 >> 2] = p; q = j + 8 | 0; r = c[q >> 2] | 0; c[r >> 2] = p; c[r + 8 >> 2] = 69; r = (c[q >> 2] | 0) + 16 | 0; c[q >> 2] = r; if (((c[j + 24 >> 2] | 0) - r | 0) < 16) Td(j, 0); a[s + 10 >> 0] = 0; a[s + 8 >> 0] = a[x + 46 >> 0] | 0; q = c[(c[k >> 2] | 0) + 64 >> 2] | 0; b[s + 4 >> 1] = c[q + 28 >> 2]; b[s + 6 >> 1] = c[q + 16 >> 2]; a[s + 9 >> 0] = 0; c[s >> 2] = c[l >> 2]; c[l >> 2] = s; q = e + 16 | 0; if ((c[q >> 2] | 0) != 40) ff(e, 40); Le(e); if (!g) { p = c[v >> 2] | 0; o = c[p >> 2] | 0 } else { pf(e, Je(e, 4701, 4) | 0); p = c[v >> 2] | 0; o = p + 46 | 0; g = (d[o >> 0] | 0) + 1 | 0; a[o >> 0] = g; o = c[p >> 2] | 0; c[(c[o + 24 >> 2] | 0) + ((b[(c[c[(c[p + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((c[p + 40 >> 2] | 0) + (g & 255) + -1 << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = c[p + 20 >> 2] } l = o + 77 | 0; a[l >> 0] = 0; k = c[q >> 2] | 0; a: do if ((k | 0) != 41) { m = e + 24 | 0; j = 0; b: while (1) { switch (k | 0) { case 280: { u = 19; break b } case 288: break; default: { u = 20; break b } }g = c[m >> 2] | 0; Le(e); pf(e, g); j = j + 1 | 0; if (a[l >> 0] | 0) { t = j; break a } if ((c[q >> 2] | 0) != 44) { t = j; break a } Le(e); k = c[q >> 2] | 0 } if ((u | 0) == 19) { Le(e); a[l >> 0] = 1; t = j; break } else if ((u | 0) == 20) He(e, 4706) } else t = 0; while (0); j = c[v >> 2] | 0; g = j + 46 | 0; k = (d[g >> 0] | 0) + t | 0; a[g >> 0] = k; if (t | 0) { n = c[j + 20 >> 2] | 0; l = c[(c[j >> 2] | 0) + 24 >> 2] | 0; m = c[c[(c[j + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0; k = (c[j + 40 >> 2] | 0) + (k & 255) | 0; j = t; do { c[l + ((b[m + (k - j << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = n; j = j + -1 | 0 } while ((j | 0) != 0) } t = a[p + 46 >> 0] | 0; a[o + 76 >> 0] = t; Wc(p, t & 255); if ((c[q >> 2] | 0) != 41) ff(e, 41); Le(e); c: while (1) { j = c[q >> 2] | 0; switch (j | 0) { case 277: case 286: case 262: case 261: case 260: { k = j; break c } default: { } }ef(e); if ((j | 0) == 274) { u = 31; break } } if ((u | 0) == 31) k = c[q >> 2] | 0; j = c[e + 4 >> 2] | 0; c[(c[x >> 2] | 0) + 68 >> 2] = j; if ((k | 0) == 262) { Le(e); y = c[(c[v >> 2] | 0) + 8 >> 2] | 0; x = Nc(y, 37, 0, (c[y + 36 >> 2] | 0) + -1 | 0) | 0; c[f + 16 >> 2] = -1; c[f + 20 >> 2] = -1; c[f >> 2] = 11; c[f + 8 >> 2] = x; bd(y, f); gf(e); i = z; return } if ((j | 0) == (h | 0)) ff(e, 262); else { z = c[w >> 2] | 0; f = Ge(e, 262) | 0; x = Ge(e, 265) | 0; c[y >> 2] = f; c[y + 4 >> 2] = x; c[y + 8 >> 2] = h; He(e, af(z, 4436, y) | 0) } } function uf(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; n = i; i = i + 48 | 0; f = n + 24 | 0; h = n; j = a + 48 | 0; k = c[j >> 2] | 0; e = a + 4 | 0; l = c[e >> 2] | 0; m = a + 16 | 0; a: do switch (c[m >> 2] | 0) { case 40: { Le(a); of(a, b, 0) | 0; if ((c[m >> 2] | 0) == 41) { Le(a); ad(c[j >> 2] | 0, b); d = a + 24 | 0; break a } if ((c[e >> 2] | 0) == (l | 0)) ff(a, 41); else { g = c[a + 52 >> 2] | 0; o = Ge(a, 41) | 0; e = Ge(a, 40) | 0; c[f >> 2] = o; c[f + 4 >> 2] = e; c[f + 8 >> 2] = l; He(a, af(g, 4436, f) | 0) } break } case 288: { d = a + 24 | 0; e = c[d >> 2] | 0; Le(a); f = c[j >> 2] | 0; if (!(rf(f, e, b, 1) | 0)) { rf(f, c[a + 72 >> 2] | 0, b, 1) | 0; o = Xc(c[j >> 2] | 0, e) | 0; c[h + 16 >> 2] = -1; c[h + 20 >> 2] = -1; c[h >> 2] = 4; c[h + 8 >> 2] = o; md(f, b, h) } break } default: He(a, 4622) } while (0); e = h + 16 | 0; f = h + 20 | 0; g = h + 8 | 0; b: while (1) switch (c[m >> 2] | 0) { case 46: { sf(a, b); continue b } case 91: { fd(k, b); Le(a); of(a, h, 0) | 0; gd(c[j >> 2] | 0, h); if ((c[m >> 2] | 0) != 93) { d = 14; break b } Le(a); md(k, b, h); continue b } case 58: { Le(a); if ((c[m >> 2] | 0) != 288) { d = 17; break b } o = c[d >> 2] | 0; Le(a); o = Xc(c[j >> 2] | 0, o) | 0; c[e >> 2] = -1; c[f >> 2] = -1; c[h >> 2] = 4; c[g >> 2] = o; jd(k, b, h); wf(a, b, l); continue b } case 123: case 289: case 40: { bd(k, b); wf(a, b, l); continue b } default: { d = 20; break b } }if ((d | 0) == 14) ff(a, 93); else if ((d | 0) == 17) ff(a, 288); else if ((d | 0) == 20) { i = n; return } } function vf(f, g, h) { f = f | 0; g = g | 0; h = h | 0; var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0; F = i; i = i + 80 | 0; B = F + 64 | 0; A = F + 56 | 0; D = F + 32 | 0; z = F; E = g + 8 | 0; if (((c[E >> 2] | 0) + -7 | 0) >>> 0 >= 3) He(f, 4609); k = f + 16 | 0; a: do switch (c[k >> 2] | 0) { case 44: { Le(f); c[z >> 2] = g; l = z + 8 | 0; uf(f, l); l = c[l >> 2] | 0; y = f + 48 | 0; if ((l | 0) != 9) { u = c[y >> 2] | 0; s = a[u + 48 >> 0] | 0; v = s & 255; w = z + 16 | 0; n = s & 255; t = c[w >> 2] | 0; x = (l | 0) == 7; if (x) { j = 0; do { if ((c[g + 8 >> 2] | 0) == 9) { l = g + 16 | 0; k = l + 3 | 0; if ((a[k >> 0] | 0) == 7 ? (r = l + 2 | 0, (d[r >> 0] | 0) == (t | 0)) : 0) { a[k >> 0] = 7; a[r >> 0] = s; j = 1 } if ((b[l >> 1] | 0) == (t | 0)) { b[l >> 1] = n; j = 1 } } g = c[g >> 2] | 0 } while ((g | 0) != 0) } else { k = g; j = 0; do { if (((c[k + 8 >> 2] | 0) == 9 ? (o = k + 16 | 0, p = o + 3 | 0, (d[p >> 0] | 0) == (l | 0)) : 0) ? (q = o + 2 | 0, (d[q >> 0] | 0) == (t | 0)) : 0) { a[p >> 0] = 7; a[q >> 0] = s; j = 1 } k = c[k >> 2] | 0 } while ((k | 0) != 0) } if (j | 0) { Lc(u, x ? 0 : 5, v, c[w >> 2] | 0, 0) | 0; Wc(u, 1) } } j = c[y >> 2] | 0; if (((e[(c[f + 52 >> 2] | 0) + 38 >> 1] | 0) + h | 0) <= 200) { vf(f, z, h + 1 | 0); C = D; m = y; break a } k = j + 12 | 0; l = c[(c[k >> 2] | 0) + 52 >> 2] | 0; j = c[(c[j >> 2] | 0) + 64 >> 2] | 0; if (!j) { f = 4381; c[B >> 2] = 4427; h = B + 4 | 0; c[h >> 2] = 200; h = B + 8 | 0; c[h >> 2] = f; h = af(l, 4395, B) | 0; f = c[k >> 2] | 0; He(f, h) } c[A >> 2] = j; A = af(l, 4361, A) | 0; c[B >> 2] = 4427; h = B + 4 | 0; c[h >> 2] = 200; h = B + 8 | 0; c[h >> 2] = A; h = af(l, 4395, B) | 0; B = c[k >> 2] | 0; He(B, h); break } case 61: { Le(f); of(f, D, 0) | 0; m = f + 48 | 0; if ((c[k >> 2] | 0) == 44) { j = 1; do { Le(f); bd(c[m >> 2] | 0, D); of(f, D, 0) | 0; j = j + 1 | 0 } while ((c[k >> 2] | 0) == 44) } else j = 1; l = c[m >> 2] | 0; if ((j | 0) == (h | 0)) { $c(l, D); id(c[m >> 2] | 0, E, D); i = F; return } g = h - j | 0; switch (c[D >> 2] | 0) { case 13: case 12: { k = g + 1 | 0; k = (k | 0) < 0 ? 0 : k; _c(l, D, k); if ((k | 0) > 1) Wc(l, k + -1 | 0); break } case 0: { n = 33; break } default: { bd(l, D); n = 33 } }if ((n | 0) == 33 ? (g | 0) > 0 : 0) { C = d[l + 48 >> 0] | 0; Wc(l, g); Jc(l, C, g) } if ((j | 0) > (h | 0)) { C = (c[m >> 2] | 0) + 48 | 0; a[C >> 0] = (d[C >> 0] | 0) + g; C = D } else C = D; break } default: ff(f, 61) } while (0); h = c[m >> 2] | 0; B = (d[h + 48 >> 0] | 0) + -1 | 0; c[D + 16 >> 2] = -1; c[D + 20 >> 2] = -1; c[C >> 2] = 6; c[D + 8 >> 2] = B; id(h, E, D); i = F; return } function wf(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0; m = i; i = i + 48 | 0; j = m + 24 | 0; k = m; g = b + 48 | 0; l = c[g >> 2] | 0; h = b + 16 | 0; switch (c[h >> 2] | 0) { case 40: { Le(b); if ((c[h >> 2] | 0) != 41) { of(b, k, 0) | 0; if ((c[h >> 2] | 0) == 44) do { Le(b); bd(c[g >> 2] | 0, k); of(b, k, 0) | 0 } while ((c[h >> 2] | 0) == 44); _c(l, k, -1); if ((c[h >> 2] | 0) != 41) if ((c[b + 4 >> 2] | 0) == (f | 0)) ff(b, 41); else { h = c[b + 52 >> 2] | 0; n = Ge(b, 41) | 0; g = Ge(b, 40) | 0; c[j >> 2] = n; c[j + 4 >> 2] = g; c[j + 8 >> 2] = f; He(b, af(h, 4436, j) | 0) } } else c[k >> 2] = 0; Le(b); break } case 123: { xf(b, k); break } case 289: { n = Xc(l, c[b + 24 >> 2] | 0) | 0; c[k + 16 >> 2] = -1; c[k + 20 >> 2] = -1; c[k >> 2] = 4; c[k + 8 >> 2] = n; Le(b); break } default: He(b, 4640) }b = e + 8 | 0; g = c[b >> 2] | 0; switch (c[k >> 2] | 0) { case 0: break; case 13: case 12: { k = 0; k = Lc(l, 29, g, k, 2) | 0; n = e + 16 | 0; c[n >> 2] = -1; n = e + 20 | 0; c[n >> 2] = -1; c[e >> 2] = 12; c[b >> 2] = k; sd(l, f); k = g + 1 | 0; k = k & 255; n = l + 48 | 0; a[n >> 0] = k; i = m; return } default: bd(l, k) }k = (d[l + 48 >> 0] | 0) - g | 0; k = Lc(l, 29, g, k, 2) | 0; n = e + 16 | 0; c[n >> 2] = -1; n = e + 20 | 0; c[n >> 2] = -1; c[e >> 2] = 12; c[b >> 2] = k; sd(l, f); k = g + 1 | 0; k = k & 255; n = l + 48 | 0; a[n >> 0] = k; i = m; return } function xf(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0; v = i; i = i + 112 | 0; j = v + 88 | 0; n = v + 72 | 0; m = v + 64 | 0; l = v + 48 | 0; k = v + 40 | 0; o = v; e = a + 48 | 0; s = c[e >> 2] | 0; g = a + 4 | 0; h = c[g >> 2] | 0; t = Lc(s, 11, 0, 0, 0) | 0; p = o + 36 | 0; c[p >> 2] = 0; u = o + 28 | 0; c[u >> 2] = 0; q = o + 32 | 0; c[q >> 2] = 0; r = o + 24 | 0; c[r >> 2] = b; c[b + 16 >> 2] = -1; c[b + 20 >> 2] = -1; c[b >> 2] = 11; c[b + 8 >> 2] = t; c[o + 16 >> 2] = -1; c[o + 20 >> 2] = -1; c[o >> 2] = 0; c[o + 8 >> 2] = 0; bd(c[e >> 2] | 0, b); d = a + 16 | 0; if ((c[d >> 2] | 0) != 123) ff(a, 123); Le(a); a: do if ((c[d >> 2] | 0) != 125) { b = 0; b: while (1) { if (b | 0 ? (bd(s, o), c[o >> 2] = 0, (c[p >> 2] | 0) == 50) : 0) { td(s, c[(c[r >> 2] | 0) + 8 >> 2] | 0, c[q >> 2] | 0, 50); c[p >> 2] = 0 } c: do switch (c[d >> 2] | 0) { case 288: { if ((Re(a) | 0) == 61) { yf(a, o); break c } of(a, o, 0) | 0; f = c[e >> 2] | 0; b = c[q >> 2] | 0; if ((b | 0) > 2147483645) { b = 10; break b } c[q >> 2] = b + 1; c[p >> 2] = (c[p >> 2] | 0) + 1; break } case 91: { yf(a, o); break } default: { of(a, o, 0) | 0; f = c[e >> 2] | 0; b = c[q >> 2] | 0; if ((b | 0) > 2147483645) { b = 17; break b } c[q >> 2] = b + 1; c[p >> 2] = (c[p >> 2] | 0) + 1 } } while (0); switch (c[d >> 2] | 0) { case 125: break a; case 44: { Le(a); break } case 59: { Le(a); break } default: { b = 26; break b } }if ((c[d >> 2] | 0) == 125) break a; b = c[o >> 2] | 0 } if ((b | 0) == 10) { d = f + 12 | 0; e = c[(c[d >> 2] | 0) + 52 >> 2] | 0; b = c[(c[f >> 2] | 0) + 64 >> 2] | 0; if (!b) { m = 4381; c[l >> 2] = 4668; n = l + 4 | 0; c[n >> 2] = 2147483645; n = l + 8 | 0; c[n >> 2] = m; n = af(e, 4395, l) | 0; m = c[d >> 2] | 0; He(m, n) } c[k >> 2] = b; m = af(e, 4361, k) | 0; c[l >> 2] = 4668; n = l + 4 | 0; c[n >> 2] = 2147483645; n = l + 8 | 0; c[n >> 2] = m; n = af(e, 4395, l) | 0; m = c[d >> 2] | 0; He(m, n) } else if ((b | 0) == 17) { d = f + 12 | 0; e = c[(c[d >> 2] | 0) + 52 >> 2] | 0; b = c[(c[f >> 2] | 0) + 64 >> 2] | 0; if (!b) { k = 4381; c[n >> 2] = 4668; l = n + 4 | 0; c[l >> 2] = 2147483645; l = n + 8 | 0; c[l >> 2] = k; l = af(e, 4395, n) | 0; k = c[d >> 2] | 0; He(k, l) } c[m >> 2] = b; l = af(e, 4361, m) | 0; c[n >> 2] = 4668; m = n + 4 | 0; c[m >> 2] = 2147483645; m = n + 8 | 0; c[m >> 2] = l; n = af(e, 4395, n) | 0; m = c[d >> 2] | 0; He(m, n) } else if ((b | 0) == 26) if ((c[g >> 2] | 0) == (h | 0)) ff(a, 125); else { n = c[a + 52 >> 2] | 0; l = Ge(a, 125) | 0; m = Ge(a, 123) | 0; c[j >> 2] = l; c[j + 4 >> 2] = m; c[j + 8 >> 2] = h; He(a, af(n, 4436, j) | 0) } } while (0); Le(a); b = c[p >> 2] | 0; d: do if (b | 0) { switch (c[o >> 2] | 0) { case 13: case 12: { _c(s, o, -1); td(s, c[(c[r >> 2] | 0) + 8 >> 2] | 0, c[q >> 2] | 0, -1); c[q >> 2] = (c[q >> 2] | 0) + -1; break d } case 0: break; default: { bd(s, o); b = c[p >> 2] | 0 } }td(s, c[(c[r >> 2] | 0) + 8 >> 2] | 0, c[q >> 2] | 0, b) } while (0); r = c[(c[(c[s >> 2] | 0) + 12 >> 2] | 0) + (t << 2) >> 2] & 8388607; r = (Ve(c[q >> 2] | 0) | 0) << 23 | r; c[(c[(c[s >> 2] | 0) + 12 >> 2] | 0) + (t << 2) >> 2] = r; u = (Ve(c[u >> 2] | 0) | 0) << 14 & 8372224 | r & -8372225; c[(c[(c[s >> 2] | 0) + 12 >> 2] | 0) + (t << 2) >> 2] = u; i = v; return } function yf(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0; r = i; i = i + 80 | 0; q = r + 56 | 0; p = r + 48 | 0; j = r + 24 | 0; k = r; f = b + 48 | 0; l = c[f >> 2] | 0; m = l + 48 | 0; n = a[m >> 0] | 0; o = b + 16 | 0; do if ((c[o >> 2] | 0) != 288) { Le(b); of(b, j, 0) | 0; gd(c[f >> 2] | 0, j); if ((c[o >> 2] | 0) == 93) { Le(b); h = d + 28 | 0; break } else ff(b, 93) } else { e = d + 28 | 0; if ((c[e >> 2] | 0) <= 2147483645) { h = c[b + 24 >> 2] | 0; Le(b); h = Xc(c[f >> 2] | 0, h) | 0; c[j + 16 >> 2] = -1; c[j + 20 >> 2] = -1; c[j >> 2] = 4; c[j + 8 >> 2] = h; h = e; break } e = l + 12 | 0; f = c[(c[e >> 2] | 0) + 52 >> 2] | 0; g = c[(c[l >> 2] | 0) + 64 >> 2] | 0; if (!g) { t = 4381; c[q >> 2] = 4668; s = q + 4 | 0; c[s >> 2] = 2147483645; s = q + 8 | 0; c[s >> 2] = t; s = af(f, 4395, q) | 0; t = c[e >> 2] | 0; He(t, s) } c[p >> 2] = g; s = af(f, 4361, p) | 0; c[q >> 2] = 4668; t = q + 4 | 0; c[t >> 2] = 2147483645; t = q + 8 | 0; c[t >> 2] = s; t = af(f, 4395, q) | 0; s = c[e >> 2] | 0; He(s, t) } while (0); c[h >> 2] = (c[h >> 2] | 0) + 1; if ((c[o >> 2] | 0) == 61) { Le(b); t = hd(l, j) | 0; of(b, k, 0) | 0; s = c[(c[d + 24 >> 2] | 0) + 8 >> 2] | 0; Lc(l, 10, s, t, hd(l, k) | 0) | 0; a[m >> 0] = n; i = r; return } else ff(b, 61) } function zf(a) { a = a | 0; Df(c[(c[a + 12 >> 2] | 0) + 172 >> 2] | 0); return } function Af(d, e) { d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0; j = i; i = i + 32 | 0; f = j + 8 | 0; g = j; h = ab[d & 31](e, 0, 8, 400) | 0; if (!h) { h = 0; i = j; return h | 0 } k = h + 112 | 0; c[h >> 2] = 0; a[h + 4 >> 0] = 8; a[h + 172 >> 0] = 33; a[h + 5 >> 0] = 1; a[h + 174 >> 0] = 0; c[h + 12 >> 2] = k; c[h + 28 >> 2] = 0; c[h + 16 >> 2] = 0; c[h + 32 >> 2] = 0; c[h + 64 >> 2] = 0; b[h + 38 >> 1] = 0; c[h + 52 >> 2] = 0; a[h + 40 >> 0] = 0; c[h + 44 >> 2] = 0; a[h + 41 >> 0] = 1; c[h + 48 >> 2] = 0; c[h + 56 >> 2] = 0; b[h + 36 >> 1] = 1; a[h + 6 >> 0] = 0; c[h + 68 >> 2] = 0; c[k >> 2] = d; c[h + 116 >> 2] = e; c[h + 284 >> 2] = h; d = Ra(0) | 0; c[g >> 2] = d; c[f >> 2] = h; c[f + 4 >> 2] = g; c[f + 8 >> 2] = 12936; c[f + 12 >> 2] = 18; c[h + 168 >> 2] = Kf(f, 16, d) | 0; d = h + 224 | 0; c[h + 240 >> 2] = d; c[h + 244 >> 2] = d; a[h + 175 >> 0] = 0; d = h + 132 | 0; c[h + 160 >> 2] = 0; c[h + 256 >> 2] = 0; c[h + 264 >> 2] = 0; c[h + 280 >> 2] = 0; c[h + 288 >> 2] = 0; c[d >> 2] = 0; c[d + 4 >> 2] = 0; c[d + 8 >> 2] = 0; c[d + 12 >> 2] = 0; a[h + 173 >> 0] = 5; d = h + 120 | 0; e = h + 180 | 0; f = e + 40 | 0; do { c[e >> 2] = 0; e = e + 4 | 0 } while ((e | 0) < (f | 0)); c[d >> 2] = 400; c[h + 124 >> 2] = 0; c[h + 268 >> 2] = 200; c[h + 272 >> 2] = 200; c[h + 276 >> 2] = 200; e = h + 364 | 0; f = e + 36 | 0; do { c[e >> 2] = 0; e = e + 4 | 0 } while ((e | 0) < (f | 0)); if (!(Nd(h, 24, 0) | 0)) { k = h; i = j; return k | 0 } Df(h); k = 0; i = j; return k | 0 } function Bf(d) { d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0; e = d + 12 | 0; if ((c[(c[e >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(d); f = oe(d, 8, 112, 0, 0) | 0; i = d + 8 | 0; h = c[i >> 2] | 0; c[h >> 2] = f; c[h + 8 >> 2] = 72; c[i >> 2] = (c[i >> 2] | 0) + 16; c[f + 12 >> 2] = c[e >> 2]; i = f + 28 | 0; c[i >> 2] = 0; e = f + 16 | 0; c[e >> 2] = 0; h = f + 32 | 0; c[h >> 2] = 0; c[f + 64 >> 2] = 0; b[f + 38 >> 1] = 0; j = f + 52 | 0; c[j >> 2] = 0; g = f + 40 | 0; a[g >> 0] = 0; k = f + 44 | 0; c[k >> 2] = 0; a[f + 41 >> 0] = 1; c[f + 56 >> 2] = 0; b[f + 36 >> 1] = 1; a[f + 6 >> 0] = 0; c[f + 68 >> 2] = 0; a[g >> 0] = a[d + 40 >> 0] | 0; g = c[d + 44 >> 2] | 0; c[k >> 2] = g; c[j >> 2] = c[d + 52 >> 2]; c[f + 48 >> 2] = g; g = Ue(d, 0, 0, 640) | 0; c[i >> 2] = g; c[h >> 2] = 40; h = g + 8 | 0; c[h >> 2] = 0; c[g + 24 >> 2] = 0; c[g + 40 >> 2] = 0; c[g + 56 >> 2] = 0; c[g + 72 >> 2] = 0; c[g + 88 >> 2] = 0; c[g + 104 >> 2] = 0; c[g + 120 >> 2] = 0; c[g + 136 >> 2] = 0; c[g + 152 >> 2] = 0; c[g + 168 >> 2] = 0; c[g + 184 >> 2] = 0; c[g + 200 >> 2] = 0; c[g + 216 >> 2] = 0; c[g + 232 >> 2] = 0; c[g + 248 >> 2] = 0; c[g + 264 >> 2] = 0; c[g + 280 >> 2] = 0; c[g + 296 >> 2] = 0; c[g + 312 >> 2] = 0; c[g + 328 >> 2] = 0; c[g + 344 >> 2] = 0; c[g + 360 >> 2] = 0; c[g + 376 >> 2] = 0; c[g + 392 >> 2] = 0; c[g + 408 >> 2] = 0; c[g + 424 >> 2] = 0; c[g + 440 >> 2] = 0; c[g + 456 >> 2] = 0; c[g + 472 >> 2] = 0; c[g + 488 >> 2] = 0; c[g + 504 >> 2] = 0; c[g + 520 >> 2] = 0; c[g + 536 >> 2] = 0; c[g + 552 >> 2] = 0; c[g + 568 >> 2] = 0; c[g + 584 >> 2] = 0; c[g + 600 >> 2] = 0; c[g + 616 >> 2] = 0; c[g + 632 >> 2] = 0; c[f + 24 >> 2] = g + 560; d = f + 72 | 0; c[f + 80 >> 2] = 0; c[f + 84 >> 2] = 0; a[f + 90 >> 0] = 0; c[d >> 2] = g; c[f + 8 >> 2] = g + 16; c[h >> 2] = 0; c[f + 76 >> 2] = g + 336; c[e >> 2] = d; return f | 0 } function Cf(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0; e = i; i = i + 16 | 0; g = e; f = c[b + 12 >> 2] | 0; j = Ue(b, 0, 0, 640) | 0; c[b + 28 >> 2] = j; c[b + 32 >> 2] = 40; k = j + 8 | 0; c[k >> 2] = 0; c[j + 24 >> 2] = 0; c[j + 40 >> 2] = 0; c[j + 56 >> 2] = 0; c[j + 72 >> 2] = 0; c[j + 88 >> 2] = 0; c[j + 104 >> 2] = 0; c[j + 120 >> 2] = 0; c[j + 136 >> 2] = 0; c[j + 152 >> 2] = 0; c[j + 168 >> 2] = 0; c[j + 184 >> 2] = 0; c[j + 200 >> 2] = 0; c[j + 216 >> 2] = 0; c[j + 232 >> 2] = 0; c[j + 248 >> 2] = 0; c[j + 264 >> 2] = 0; c[j + 280 >> 2] = 0; c[j + 296 >> 2] = 0; c[j + 312 >> 2] = 0; c[j + 328 >> 2] = 0; c[j + 344 >> 2] = 0; c[j + 360 >> 2] = 0; c[j + 376 >> 2] = 0; c[j + 392 >> 2] = 0; c[j + 408 >> 2] = 0; c[j + 424 >> 2] = 0; c[j + 440 >> 2] = 0; c[j + 456 >> 2] = 0; c[j + 472 >> 2] = 0; c[j + 488 >> 2] = 0; c[j + 504 >> 2] = 0; c[j + 520 >> 2] = 0; c[j + 536 >> 2] = 0; c[j + 552 >> 2] = 0; c[j + 568 >> 2] = 0; c[j + 584 >> 2] = 0; c[j + 600 >> 2] = 0; c[j + 616 >> 2] = 0; c[j + 632 >> 2] = 0; c[b + 24 >> 2] = j + 560; h = b + 72 | 0; c[b + 80 >> 2] = 0; c[b + 84 >> 2] = 0; a[b + 90 >> 0] = 0; c[h >> 2] = j; c[b + 8 >> 2] = j + 16; c[k >> 2] = 0; c[b + 76 >> 2] = j + 336; c[b + 16 >> 2] = h; h = Xf(b) | 0; c[f + 40 >> 2] = h; c[f + 48 >> 2] = 69; Rf(b, h, 2, 0); c[g >> 2] = b; j = g + 8 | 0; c[j >> 2] = 72; Uf(b, h, 1, g); c[g >> 2] = Xf(b) | 0; c[j >> 2] = 69; Uf(b, h, 2, g); Lf(b, 32); ag(b); Fe(b); b = Mf(b, 4829, 17) | 0; c[f + 180 >> 2] = b; b = b + 5 | 0; a[b >> 0] = d[b >> 0] | 0 | 32; a[f + 63 >> 0] = 1; c[f + 176 >> 2] = nb(0) | 0; i = e; return } function Df(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0; d = a + 12 | 0; f = c[d >> 2] | 0; e = a + 28 | 0; fe(a, c[e >> 2] | 0); ze(a); d = c[d >> 2] | 0; Ue(a, c[d + 24 >> 2] | 0, c[d + 32 >> 2] << 2, 0) | 0; d = f + 144 | 0; b = f + 152 | 0; c[d >> 2] = Ue(a, c[d >> 2] | 0, c[b >> 2] | 0, 0) | 0; c[b >> 2] = 0; b = c[e >> 2] | 0; if (!b) { e = c[f >> 2] | 0; f = f + 4 | 0; f = c[f >> 2] | 0; ab[e & 31](f, a, 400, 0) | 0; return } c[a + 16 >> 2] = a + 72; g = a + 84 | 0; d = c[g >> 2] | 0; c[g >> 2] = 0; if (d) { b = d; do { g = b; b = c[b + 12 >> 2] | 0; Ue(a, g, 40, 0) | 0 } while ((b | 0) != 0); b = c[e >> 2] | 0 } Ue(a, b, c[a + 32 >> 2] << 4, 0) | 0; e = c[f >> 2] | 0; g = f + 4 | 0; g = c[g >> 2] | 0; ab[e & 31](g, a, 400, 0) | 0; return } function Ef(a, b) { a = a | 0; b = b | 0; var d = 0; d = a + 12 | 0; a = a + 8 | 0; c[a >> 2] = (c[d >> 2] | 0) - b + (c[a >> 2] | 0); c[d >> 2] = b; return } function Ff(a) { a = a | 0; var b = 0; b = Ue(a, 0, 0, 40) | 0; a = c[a + 16 >> 2] | 0; c[a + 12 >> 2] = b; c[b + 8 >> 2] = a; c[b + 12 >> 2] = 0; return b | 0 } function Gf(a) { a = a | 0; var b = 0, d = 0; d = (c[a + 16 >> 2] | 0) + 12 | 0; b = c[d >> 2] | 0; c[d >> 2] = 0; if (!b) return; do { d = b; b = c[b + 12 >> 2] | 0; Ue(a, d, 40, 0) | 0 } while ((b | 0) != 0); return } function Hf(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0; f = b + 28 | 0; fe(b, c[f >> 2] | 0); d = c[f >> 2] | 0; if (!d) { Ue(a, b, 112, 0) | 0; return } c[b + 16 >> 2] = b + 72; g = b + 84 | 0; e = c[g >> 2] | 0; c[g >> 2] = 0; if (e) { d = e; do { g = d; d = c[d + 12 >> 2] | 0; Ue(b, g, 40, 0) | 0 } while ((d | 0) != 0); d = c[f >> 2] | 0 } Ue(b, d, c[b + 32 >> 2] << 4, 0) | 0; Ue(a, b, 112, 0) | 0; return } function If(a, b) { a = a | 0; b = b | 0; var d = 0; d = c[a + 12 >> 2] | 0; if ((a | 0) != (b | 0)) if ((d | 0) == (c[b + 12 >> 2] | 0)) a = (Gm(a + 16 | 0, b + 16 | 0, d) | 0) == 0; else a = 0; else a = 1; return a & 1 | 0 } function Jf(b, d) { b = b | 0; d = d | 0; var e = 0; e = a[b + 4 >> 0] | 0; do if (e << 24 >> 24 == (a[d + 4 >> 0] | 0)) { if (e << 24 >> 24 == 4) { e = (b | 0) == (d | 0); break } e = c[b + 12 >> 2] | 0; if ((b | 0) != (d | 0)) if ((e | 0) == (c[d + 12 >> 2] | 0)) e = (Gm(b + 16 | 0, d + 16 | 0, e) | 0) == 0; else e = 0; else e = 1 } else e = 0; while (0); return e & 1 | 0 } function Kf(a, b, c) { a = a | 0; b = b | 0; c = c | 0; var e = 0; c = c ^ b; e = (b >>> 5) + 1 | 0; if (e >>> 0 > b >>> 0) { a = c; return a | 0 } do { c = (c << 5) + (c >>> 2) + (d[a + (b + -1) >> 0] | 0) ^ c; b = b - e | 0 } while (b >>> 0 >= e >>> 0); return c | 0 } function Lf(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0; k = c[b + 12 >> 2] | 0; j = k + 24 | 0; ye(b, -5); k = k + 32 | 0; g = c[k >> 2] | 0; if ((g | 0) < (e | 0)) { if ((e + 1 | 0) >>> 0 > 1073741823) Te(b); h = Ue(b, c[j >> 2] | 0, g << 2, e << 2) | 0; c[j >> 2] = h; g = c[k >> 2] | 0; if ((g | 0) < (e | 0) ? (c[h + (g << 2) >> 2] = 0, f = g + 1 | 0, (f | 0) != (e | 0)) : 0) do { c[(c[j >> 2] | 0) + (f << 2) >> 2] = 0; f = f + 1 | 0 } while ((f | 0) != (e | 0)) } if ((g | 0) > 0) { i = e + -1 | 0; h = 0; do { l = (c[j >> 2] | 0) + (h << 2) | 0; f = c[l >> 2] | 0; c[l >> 2] = 0; if (f | 0) do { l = f; f = c[f >> 2] | 0; m = (c[j >> 2] | 0) + ((c[l + 8 >> 2] & i) << 2) | 0; c[l >> 2] = c[m >> 2]; c[m >> 2] = l; l = l + 5 | 0; a[l >> 0] = (d[l >> 0] | 0) & 191 } while ((f | 0) != 0); h = h + 1 | 0 } while ((h | 0) < (g | 0)) } if ((g | 0) <= (e | 0)) { c[k >> 2] = e; return } if ((e + 1 | 0) >>> 0 > 1073741823) Te(b); c[j >> 2] = Ue(b, c[j >> 2] | 0, g << 2, e << 2) | 0; c[k >> 2] = e; return } function Mf(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0; if (f >>> 0 >= 41) { if ((f + 1 | 0) >>> 0 > 4294967277) Te(b); m = c[(c[b + 12 >> 2] | 0) + 56 >> 2] | 0; b = oe(b, 20, f + 17 | 0, 0, 0) | 0; c[b + 12 >> 2] = f; c[b + 8 >> 2] = m; a[b + 6 >> 0] = 0; m = b + 16 | 0; nn(m | 0, e | 0, f | 0) | 0; a[m + f >> 0] = 0; f = b; return f | 0 } m = c[b + 12 >> 2] | 0; g = c[m + 56 >> 2] ^ f; i = (f >>> 5) + 1 | 0; if (i >>> 0 <= f >>> 0) { h = f; do { g = (g << 5) + (g >>> 2) + (d[e + (h + -1) >> 0] | 0) ^ g; h = h - i | 0 } while (h >>> 0 >= i >>> 0) } k = m + 32 | 0; i = c[k >> 2] | 0; l = m + 24 | 0; h = c[l >> 2] | 0; j = c[h + ((i + -1 & g) << 2) >> 2] | 0; a: do if (j | 0) { while (1) { if (((g | 0) == (c[j + 8 >> 2] | 0) ? (c[j + 12 >> 2] | 0) == (f | 0) : 0) ? (Gm(e, j + 16 | 0, f) | 0) == 0 : 0) break; j = c[j >> 2] | 0; if (!j) break a } g = j + 5 | 0; h = (d[g >> 0] | 0) ^ 3; if (((d[m + 60 >> 0] | 0) ^ 3) & h | 0) { f = j; return f | 0 } a[g >> 0] = h; f = j; return f | 0 } while (0); j = m + 28 | 0; if ((i | 0) < 1073741823 ? (c[j >> 2] | 0) >>> 0 >= i >>> 0 : 0) { Lf(b, i << 1); i = c[k >> 2] | 0; h = c[l >> 2] | 0 } b = oe(b, 4, f + 17 | 0, h + ((i + -1 & g) << 2) | 0, 0) | 0; c[b + 12 >> 2] = f; c[b + 8 >> 2] = g; a[b + 6 >> 0] = 0; m = b + 16 | 0; nn(m | 0, e | 0, f | 0) | 0; a[m + f >> 0] = 0; c[j >> 2] = (c[j >> 2] | 0) + 1; f = b; return f | 0 } function Nf(a, b) { a = a | 0; b = b | 0; return Mf(a, b, Vl(b) | 0) | 0 } function Of(a, b, d) { a = a | 0; b = b | 0; d = d | 0; if (b >>> 0 > 4294967269) Te(a); else { a = oe(a, 7, b + 24 | 0, 0, 0) | 0; c[a + 16 >> 2] = b; c[a + 8 >> 2] = 0; c[a + 12 >> 2] = d; return a | 0 } return 0 } function Pf(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0.0; q = i; i = i + 16 | 0; m = q + 8 | 0; f = q; p = e + 8 | 0; switch (c[p >> 2] | 0) { case 0: { g = -1; n = c[b + 8 >> 2] | 0; break } case 3: { r = +h[e >> 3]; h[f >> 3] = r + 6755399441055744.0; f = c[f >> 2] | 0; if ((f | 0) > 0 & +(f | 0) == r ? (j = c[b + 8 >> 2] | 0, (f | 0) <= (j | 0)) : 0) { g = f + -1 | 0; n = j } else o = 6; break } default: o = 6 }do if ((o | 0) == 6) { f = Qf(b, e) | 0; while (1) { l = f + 16 | 0; k = f + 24 | 0; j = c[k >> 2] | 0; if ((j | 0) == (c[p >> 2] | 0)) { if (ng(0, l, e) | 0) { o = 13; break } j = c[k >> 2] | 0 } if (((j | 0) == 11 ? c[p >> 2] & 64 | 0 : 0) ? (c[l >> 2] | 0) == (c[e >> 2] | 0) : 0) { o = 13; break } f = c[f + 28 >> 2] | 0; if (!f) { o = 16; break } } if ((o | 0) == 13) { n = c[b + 8 >> 2] | 0; g = (f - (c[b + 16 >> 2] | 0) >> 5) + n | 0; break } else if ((o | 0) == 16) Ed(a, 4847, m) } while (0); l = b + 12 | 0; while (1) { f = g + 1 | 0; if ((f | 0) >= (n | 0)) break; j = c[l >> 2] | 0; k = j + (f << 4) + 8 | 0; if (!(c[k >> 2] | 0)) g = f; else { o = 19; break } } if ((o | 0) == 19) { h[e >> 3] = +(g + 2 | 0); c[p >> 2] = 3; b = j + (f << 4) | 0; o = c[b + 4 >> 2] | 0; p = e + 16 | 0; c[p >> 2] = c[b >> 2]; c[p + 4 >> 2] = o; c[e + 24 >> 2] = c[k >> 2]; p = 1; i = q; return p | 0 } f = f - n | 0; k = 1 << (d[b + 7 >> 0] | 0); if ((f | 0) >= (k | 0)) { p = 0; i = q; return p | 0 } g = b + 16 | 0; j = c[g >> 2] | 0; while (1) { if (c[j + (f << 5) + 8 >> 2] | 0) break; f = f + 1 | 0; if ((f | 0) >= (k | 0)) { f = 0; o = 25; break } } if ((o | 0) == 25) { i = q; return f | 0 } o = j + (f << 5) + 16 | 0; b = c[o + 4 >> 2] | 0; n = e; c[n >> 2] = c[o >> 2]; c[n + 4 >> 2] = b; c[p >> 2] = c[j + (f << 5) + 24 >> 2]; p = c[g >> 2] | 0; n = p + (f << 5) | 0; b = c[n + 4 >> 2] | 0; o = e + 16 | 0; c[o >> 2] = c[n >> 2]; c[o + 4 >> 2] = b; c[e + 24 >> 2] = c[p + (f << 5) + 8 >> 2]; p = 1; i = q; return p | 0 } function Qf(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0; j = i; i = i + 16 | 0; f = j; switch (c[e + 8 >> 2] & 63) { case 3: { h[f >> 3] = +h[e >> 3] + 1.0; e = (c[f + 4 >> 2] | 0) + (c[f >> 2] | 0) | 0; g = 0 - e | 0; b = (c[b + 16 >> 2] | 0) + (((((e | 0) < 0 ? ((e | 0) == (g | 0) ? 0 : g) : e) | 0) % ((1 << d[b + 7 >> 0]) + -1 | 1 | 0) | 0) << 5) | 0; i = j; return b | 0 } case 20: { f = c[e >> 2] | 0; g = f + 6 | 0; if (!(a[g >> 0] | 0)) { k = f + 8 | 0; c[k >> 2] = Kf(f + 16 | 0, c[f + 12 >> 2] | 0, c[k >> 2] | 0) | 0; a[g >> 0] = 1; f = c[e >> 2] | 0 } k = (c[b + 16 >> 2] | 0) + (((1 << d[b + 7 >> 0]) + -1 & c[f + 8 >> 2]) << 5) | 0; i = j; return k | 0 } case 4: { k = (c[b + 16 >> 2] | 0) + (((1 << d[b + 7 >> 0]) + -1 & c[(c[e >> 2] | 0) + 8 >> 2]) << 5) | 0; i = j; return k | 0 } case 1: { k = (c[b + 16 >> 2] | 0) + (((1 << d[b + 7 >> 0]) + -1 & c[e >> 2]) << 5) | 0; i = j; return k | 0 } case 2: { k = (c[b + 16 >> 2] | 0) + ((((c[e >> 2] | 0) >>> 0) % (((1 << d[b + 7 >> 0]) + -1 | 1) >>> 0) | 0) << 5) | 0; i = j; return k | 0 } case 22: { k = (c[b + 16 >> 2] | 0) + ((((c[e >> 2] | 0) >>> 0) % (((1 << d[b + 7 >> 0]) + -1 | 1) >>> 0) | 0) << 5) | 0; i = j; return k | 0 } default: { k = (c[b + 16 >> 2] | 0) + ((((c[e >> 2] | 0) >>> 0) % (((1 << d[b + 7 >> 0]) + -1 | 1) >>> 0) | 0) << 5) | 0; i = j; return k | 0 } }return 0 } function Rf(b, e, f, g) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0.0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0; z = i; i = i + 32 | 0; m = z + 16 | 0; r = z; s = e + 8 | 0; t = c[s >> 2] | 0; u = e + 7 | 0; x = a[u >> 0] | 0; v = x & 255; w = e + 16 | 0; y = c[w >> 2] | 0; if ((t | 0) < (f | 0)) { if ((f + 1 | 0) >>> 0 > 268435455) Te(b); j = e + 12 | 0; k = Ue(b, c[j >> 2] | 0, t << 4, f << 4) | 0; c[j >> 2] = k; j = c[s >> 2] | 0; if ((j | 0) < (f | 0)) do { c[k + (j << 4) + 8 >> 2] = 0; j = j + 1 | 0 } while ((j | 0) != (f | 0)); c[s >> 2] = f } if (!g) { c[w >> 2] = 12952; g = 0; k = 0; j = 12952 } else { l = Xe(g) | 0; if ((l | 0) > 30) Ed(b, 4869, m); g = 1 << l; if ((g + 1 | 0) >>> 0 > 134217727) Te(b); j = Ue(b, 0, 0, g << 5) | 0; c[w >> 2] = j; k = 0; do { c[j + (k << 5) + 28 >> 2] = 0; c[j + (k << 5) + 24 >> 2] = 0; c[j + (k << 5) + 8 >> 2] = 0; k = k + 1 | 0 } while ((k | 0) < (g | 0)); k = l & 255 } a[u >> 0] = k; c[e + 20 >> 2] = j + (g << 5); do if ((t | 0) > (f | 0)) { c[s >> 2] = f; p = e + 12 | 0; q = r + 8 | 0; n = r + 4 | 0; j = f; do { k = c[p >> 2] | 0; m = k + (j << 4) + 8 | 0; if (!(c[m >> 2] | 0)) j = j + 1 | 0; else { g = k + (j << 4) | 0; l = j + 1 | 0; a: do if (j >>> 0 < (c[s >> 2] | 0) >>> 0) { j = g; k = 26 } else { o = +(l | 0); h[r >> 3] = o + 1.0; j = (c[n >> 2] | 0) + (c[r >> 2] | 0) | 0; k = 0 - j | 0; j = (c[w >> 2] | 0) + (((((j | 0) < 0 ? ((j | 0) == (k | 0) ? 0 : k) : j) | 0) % ((1 << (d[u >> 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; while (1) { if ((c[j + 24 >> 2] | 0) == 3 ? +h[j + 16 >> 3] == o : 0) break; j = c[j + 28 >> 2] | 0; if (!j) { k = 28; break a } } k = 26 } while (0); if ((k | 0) == 26) { k = 0; if ((j | 0) == 12936) { o = +(l | 0); k = 28 } } if ((k | 0) == 28) { h[r >> 3] = o; c[q >> 2] = 3; j = Sf(b, e, r) | 0 } A = g; k = c[A + 4 >> 2] | 0; g = j; c[g >> 2] = c[A >> 2]; c[g + 4 >> 2] = k; c[j + 8 >> 2] = c[m >> 2]; j = l } } while ((j | 0) != (t | 0)); if ((f + 1 | 0) >>> 0 > 268435455) Te(b); else { c[p >> 2] = Ue(b, c[p >> 2] | 0, t << 4, f << 4) | 0; break } } while (0); n = 1 << v; if (x << 24 >> 24 != 31) { g = n; do { l = g; g = g + -1 | 0; m = y + (g << 5) + 8 | 0; if (c[m >> 2] | 0) { k = y + (g << 5) + 16 | 0; j = Tf(e, k) | 0; if ((j | 0) == 12936) j = Sf(b, e, k) | 0; w = y + (g << 5) | 0; x = c[w + 4 >> 2] | 0; A = j; c[A >> 2] = c[w >> 2]; c[A + 4 >> 2] = x; c[j + 8 >> 2] = c[m >> 2] } } while ((l | 0) > 1) } if ((y | 0) == 12952) { i = z; return } Ue(b, y, n << 5, 0) | 0; i = z; return } function Sf(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0.0; y = i; i = i + 144 | 0; g = y + 16 | 0; u = y; x = y + 20 | 0; w = f + 8 | 0; switch (c[w >> 2] | 0) { case 0: { Ed(b, 4884, y + 8 | 0); break } case 3: { m = 3; break } default: { } }if ((m | 0) == 3 ? (z = +h[f >> 3], !(z == z & 0.0 == 0.0)) : 0) Ed(b, 4903, g); n = Qf(e, f) | 0; o = n + 8 | 0; do if ((n | 0) == 12952 | (c[o >> 2] | 0) != 0) { j = e + 20 | 0; s = e + 16 | 0; k = c[s >> 2] | 0; l = c[j >> 2] | 0; while (1) { if (l >>> 0 <= k >>> 0) break; g = l + -32 | 0; c[j >> 2] = g; if (!(c[l + -8 >> 2] | 0)) { m = 34; break } else l = g } if ((m | 0) == 34) { j = Qf(e, n + 16 | 0) | 0; if ((j | 0) == (n | 0)) { x = n + 28 | 0; c[l + -4 >> 2] = c[x >> 2]; c[x >> 2] = g; break } do { k = j + 28 | 0; j = c[k >> 2] | 0 } while ((j | 0) != (n | 0)); c[k >> 2] = g; c[g >> 2] = c[n >> 2]; c[g + 4 >> 2] = c[n + 4 >> 2]; c[g + 8 >> 2] = c[n + 8 >> 2]; c[g + 12 >> 2] = c[n + 12 >> 2]; c[g + 16 >> 2] = c[n + 16 >> 2]; c[g + 20 >> 2] = c[n + 20 >> 2]; c[g + 24 >> 2] = c[n + 24 >> 2]; c[g + 28 >> 2] = c[n + 28 >> 2]; c[n + 28 >> 2] = 0; c[o >> 2] = 0; g = n; break } g = x; j = g + 124 | 0; do { c[g >> 2] = 0; g = g + 4 | 0 } while ((g | 0) < (j | 0)); q = e + 12 | 0; r = c[e + 8 >> 2] | 0; j = 1; g = 0; o = 1; p = 0; while (1) { if ((o | 0) > (r | 0)) if ((j | 0) > (r | 0)) { r = g; break } else l = r; else l = o; if ((j | 0) > (l | 0)) k = 0; else { m = c[q >> 2] | 0; k = 0; while (1) { k = ((c[m + (j + -1 << 4) + 8 >> 2] | 0) != 0 & 1) + k | 0; n = j + 1 | 0; if ((j | 0) < (l | 0)) j = n; else { j = n; break } } } n = x + (p << 2) | 0; c[n >> 2] = (c[n >> 2] | 0) + k; g = k + g | 0; p = p + 1 | 0; if ((p | 0) >= 31) { r = g; break } else o = o << 1 } q = 0; g = 1 << (d[e + 7 >> 0] | 0); k = 0; a: while (1) { do { p = g; g = g + -1 | 0; if (!p) break a; j = c[s >> 2] | 0 } while (!(c[j + (g << 5) + 8 >> 2] | 0)); if ((c[j + (g << 5) + 24 >> 2] | 0) == 3 ? (z = +h[j + (g << 5) + 16 >> 3], h[u >> 3] = z + 6755399441055744.0, t = c[u >> 2] | 0, +(t | 0) == z & (t + -1 | 0) >>> 0 < 1073741824) : 0) { j = x + ((Xe(t) | 0) << 2) | 0; c[j >> 2] = (c[j >> 2] | 0) + 1; j = 1 } else j = 0; q = q + 1 | 0; k = j + k | 0 } j = k + r | 0; if ((c[w >> 2] | 0) == 3 ? (z = +h[f >> 3], h[u >> 3] = z + 6755399441055744.0, v = c[u >> 2] | 0, +(v | 0) == z & (v + -1 | 0) >>> 0 < 1073741824) : 0) { g = x + ((Xe(v) | 0) << 2) | 0; c[g >> 2] = (c[g >> 2] | 0) + 1; g = 1 } else g = 0; p = j + g | 0; b: do if ((p | 0) > 0) { g = 0; k = 0; n = 1; o = 0; j = 0; l = 0; while (1) { w = c[x + (o << 2) >> 2] | 0; m = w + k | 0; if ((w | 0) > 0) { k = (m | 0) > (l | 0); j = k ? n : j; g = k ? m : g; k = m } if ((k | 0) == (p | 0)) break b; if ((n | 0) < (p | 0)) { l = n; n = n << 1; o = o + 1 | 0 } else break } } else { j = 0; g = 0 } while (0); Rf(b, e, j, r + 1 + q - g | 0); g = Tf(e, f) | 0; if ((g | 0) != 12936) { f = g; i = y; return f | 0 } f = Sf(b, e, f) | 0; i = y; return f | 0 } else g = n; while (0); u = f; v = c[u + 4 >> 2] | 0; x = g + 16 | 0; c[x >> 2] = c[u >> 2]; c[x + 4 >> 2] = v; c[g + 24 >> 2] = c[w >> 2]; if ((c[w >> 2] & 64 | 0 ? a[(c[f >> 2] | 0) + 5 >> 0] & 3 : 0) ? a[e + 5 >> 0] & 4 : 0) le(b, e); f = g; i = y; return f | 0 } function Tf(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, j = 0.0, k = 0, l = 0, m = 0, n = 0.0; m = i; i = i + 16 | 0; f = m; g = b + 8 | 0; switch (c[g >> 2] & 63) { case 4: { b = c[b >> 2] | 0; e = (c[a + 16 >> 2] | 0) + (((1 << (d[a + 7 >> 0] | 0)) + -1 & c[b + 8 >> 2]) << 5) | 0; while (1) { if ((c[e + 24 >> 2] | 0) == 68 ? (c[e + 16 >> 2] | 0) == (b | 0) : 0) break; f = c[e + 28 >> 2] | 0; if (!f) { k = 12936; l = 20; break } else e = f } if ((l | 0) == 20) { i = m; return k | 0 } l = e; i = m; return l | 0 } case 3: { n = +h[b >> 3]; h[f >> 3] = n + 6755399441055744.0; e = c[f >> 2] | 0; j = +(e | 0); if (j == n) { e = e + -1 | 0; if (e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0) { l = (c[a + 12 >> 2] | 0) + (e << 4) | 0; i = m; return l | 0 } h[f >> 3] = j + 1.0; e = (c[f + 4 >> 2] | 0) + (c[f >> 2] | 0) | 0; g = 0 - e | 0; e = (c[a + 16 >> 2] | 0) + (((((e | 0) < 0 ? ((e | 0) == (g | 0) ? 0 : g) : e) | 0) % ((1 << (d[a + 7 >> 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; while (1) { if ((c[e + 24 >> 2] | 0) == 3 ? +h[e + 16 >> 3] == j : 0) break; f = c[e + 28 >> 2] | 0; if (!f) { k = 12936; l = 20; break } else e = f } if ((l | 0) == 20) { i = m; return k | 0 } l = e; i = m; return l | 0 } break } case 0: { l = 12936; i = m; return l | 0 } default: { } }e = Qf(a, b) | 0; while (1) { if ((c[e + 24 >> 2] | 0) == (c[g >> 2] | 0) ? ng(0, e + 16 | 0, b) | 0 : 0) break; f = c[e + 28 >> 2] | 0; if (!f) { k = 12936; l = 20; break } else e = f } if ((l | 0) == 20) { i = m; return k | 0 } l = e; i = m; return l | 0 } function Uf(a, b, e, f) { a = a | 0; b = b | 0; e = e | 0; f = f | 0; var g = 0.0, j = 0, k = 0, l = 0, m = 0, n = 0; m = i; i = i + 16 | 0; k = m; j = e + -1 | 0; a: do if (j >>> 0 < (c[b + 8 >> 2] | 0) >>> 0) { j = (c[b + 12 >> 2] | 0) + (j << 4) | 0; l = 8 } else { g = +(e | 0); h[k >> 3] = g + 1.0; j = (c[k + 4 >> 2] | 0) + (c[k >> 2] | 0) | 0; n = 0 - j | 0; j = (c[b + 16 >> 2] | 0) + (((((j | 0) < 0 ? ((j | 0) == (n | 0) ? 0 : n) : j) | 0) % ((1 << (d[b + 7 >> 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; while (1) { if ((c[j + 24 >> 2] | 0) == 3 ? +h[j + 16 >> 3] == g : 0) break; j = c[j + 28 >> 2] | 0; if (!j) break a } l = 8 } while (0); do if ((l | 0) == 8) if ((j | 0) == 12936) { g = +(e | 0); break } else { n = j; b = f; k = b; k = c[k >> 2] | 0; b = b + 4 | 0; b = c[b >> 2] | 0; l = n; a = l; c[a >> 2] = k; l = l + 4 | 0; c[l >> 2] = b; l = f + 8 | 0; l = c[l >> 2] | 0; n = n + 8 | 0; c[n >> 2] = l; i = m; return } while (0); h[k >> 3] = g; c[k + 8 >> 2] = 3; n = Sf(a, b, k) | 0; b = f; k = b; k = c[k >> 2] | 0; b = b + 4 | 0; b = c[b >> 2] | 0; l = n; a = l; c[a >> 2] = k; l = l + 4 | 0; c[l >> 2] = b; l = f + 8 | 0; l = c[l >> 2] | 0; n = n + 8 | 0; c[n >> 2] = l; i = m; return } function Vf(a, b, c) { a = a | 0; b = b | 0; c = c | 0; var d = 0; d = Tf(b, c) | 0; if ((d | 0) != 12936) return d | 0; d = Sf(a, b, c) | 0; return d | 0 } function Wf(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0; if ((c[b + 16 >> 2] | 0) == 12952) f = 0; else f = 1 << (d[b + 7 >> 0] | 0); Rf(a, b, e, f); return } function Xf(b) { b = b | 0; b = oe(b, 5, 32, 0, 0) | 0; c[b + 24 >> 2] = 0; a[b + 6 >> 0] = -1; c[b + 12 >> 2] = 0; c[b + 8 >> 2] = 0; c[b + 16 >> 2] = 12952; a[b + 7 >> 0] = 0; c[b + 20 >> 2] = 12952; return b | 0 } function Yf(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[b + 16 >> 2] | 0; if ((e | 0) != 12952) Ue(a, e, 32 << (d[b + 7 >> 0] | 0), 0) | 0; Ue(a, c[b + 12 >> 2] | 0, c[b + 8 >> 2] << 4, 0) | 0; Ue(a, b, 32, 0) | 0; return } function Zf(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0.0, j = 0, k = 0; k = i; i = i + 16 | 0; f = k; e = b + -1 | 0; if (e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0) { j = (c[a + 12 >> 2] | 0) + (e << 4) | 0; i = k; return j | 0 } g = +(b | 0); h[f >> 3] = g + 1.0; b = (c[f + 4 >> 2] | 0) + (c[f >> 2] | 0) | 0; f = 0 - b | 0; b = (c[a + 16 >> 2] | 0) + (((((b | 0) < 0 ? ((b | 0) == (f | 0) ? 0 : f) : b) | 0) % ((1 << (d[a + 7 >> 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; while (1) { if ((c[b + 24 >> 2] | 0) == 3 ? +h[b + 16 >> 3] == g : 0) break; b = c[b + 28 >> 2] | 0; if (!b) { b = 12936; j = 8; break } } if ((j | 0) == 8) { i = k; return b | 0 } j = b; i = k; return j | 0 } function _f(a, b) { a = a | 0; b = b | 0; var e = 0; a = (c[a + 16 >> 2] | 0) + (((1 << (d[a + 7 >> 0] | 0)) + -1 & c[b + 8 >> 2]) << 5) | 0; while (1) { if ((c[a + 24 >> 2] | 0) == 68 ? (c[a + 16 >> 2] | 0) == (b | 0) : 0) break; a = c[a + 28 >> 2] | 0; if (!a) { a = 12936; e = 6; break } } if ((e | 0) == 6) return a | 0; e = a; return e | 0 } function $f(a) { a = a | 0; var b = 0, e = 0, f = 0.0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; p = i; i = i + 16 | 0; o = p; b = c[a + 8 >> 2] | 0; if (b | 0 ? (e = c[a + 12 >> 2] | 0, (c[e + (b + -1 << 4) + 8 >> 2] | 0) == 0) : 0) { if (b >>> 0 > 1) a = 0; else { o = 0; i = p; return o | 0 } do { o = (a + b | 0) >>> 1; n = (c[e + (o + -1 << 4) + 8 >> 2] | 0) == 0; b = n ? o : b; a = n ? a : o } while ((b - a | 0) >>> 0 > 1); i = p; return a | 0 } m = c[a + 16 >> 2] | 0; if ((m | 0) == 12952) { o = b; i = p; return o | 0 } n = a + 12 | 0; l = a + 7 | 0; g = o + 4 | 0; a = b; j = b + 1 | 0; while (1) { e = j + -1 | 0; a: do if (e >>> 0 < b >>> 0) e = (c[n >> 2] | 0) + (e << 4) | 0; else { f = +(j | 0); h[o >> 3] = f + 1.0; e = (c[g >> 2] | 0) + (c[o >> 2] | 0) | 0; q = 0 - e | 0; e = m + (((((e | 0) < 0 ? ((e | 0) == (q | 0) ? 0 : q) : e) | 0) % ((1 << (d[l >> 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; while (1) { if ((c[e + 24 >> 2] | 0) == 3 ? +h[e + 16 >> 3] == f : 0) break; e = c[e + 28 >> 2] | 0; if (!e) { e = 12936; break a } } } while (0); if (!(c[e + 8 >> 2] | 0)) break; a = j << 1; if (a >>> 0 > 2147483645) { k = 18; break } else { q = j; j = a; a = q } } if ((k | 0) == 18) { j = o + 4 | 0; g = 1; while (1) { a = g + -1 | 0; b: do if (a >>> 0 < b >>> 0) e = (c[n >> 2] | 0) + (a << 4) | 0; else { f = +(g | 0); h[o >> 3] = f + 1.0; e = (c[j >> 2] | 0) + (c[o >> 2] | 0) | 0; q = 0 - e | 0; e = m + (((((e | 0) < 0 ? ((e | 0) == (q | 0) ? 0 : q) : e) | 0) % ((1 << (d[l >> 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; while (1) { if ((c[e + 24 >> 2] | 0) == 3 ? +h[e + 16 >> 3] == f : 0) break; e = c[e + 28 >> 2] | 0; if (!e) { e = 12936; break b } } } while (0); if (!(c[e + 8 >> 2] | 0)) break; else g = g + 1 | 0 } i = p; return a | 0 } if ((j - a | 0) >>> 0 <= 1) { q = a; i = p; return q | 0 } k = o + 4 | 0; do { g = (j + a | 0) >>> 1; e = g + -1 | 0; c: do if (e >>> 0 < b >>> 0) e = (c[n >> 2] | 0) + (e << 4) | 0; else { f = +(g | 0); h[o >> 3] = f + 1.0; e = (c[k >> 2] | 0) + (c[o >> 2] | 0) | 0; q = 0 - e | 0; e = m + (((((e | 0) < 0 ? ((e | 0) == (q | 0) ? 0 : q) : e) | 0) % ((1 << (d[l >> 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0; while (1) { if ((c[e + 24 >> 2] | 0) == 3 ? +h[e + 16 >> 3] == f : 0) break; e = c[e + 28 >> 2] | 0; if (!e) { e = 12936; break c } } } while (0); q = (c[e + 8 >> 2] | 0) == 0; j = q ? g : j; a = q ? a : g } while ((j - a | 0) >>> 0 > 1); i = p; return a | 0 } function ag(b) { b = b | 0; var e = 0, f = 0, g = 0; f = b + 12 | 0; e = 0; do { g = Nf(b, c[196 + (e << 2) >> 2] | 0) | 0; c[(c[f >> 2] | 0) + 184 + (e << 2) >> 2] = g; g = (c[(c[f >> 2] | 0) + 184 + (e << 2) >> 2] | 0) + 5 | 0; a[g >> 0] = d[g >> 0] | 0 | 32; e = e + 1 | 0 } while ((e | 0) != 17); return } function bg(b, e, f) { b = b | 0; e = e | 0; f = f | 0; f = _f(b, f) | 0; if (c[f + 8 >> 2] | 0) { e = f; return e | 0 } b = b + 6 | 0; a[b >> 0] = d[b >> 0] | 0 | 1 << e; e = 0; return e | 0 } function cg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0; e = c[b + 8 >> 2] | 0; switch (e & 15) { case 5: { b = (c[b >> 2] | 0) + 24 | 0; break } case 7: { b = (c[b >> 2] | 0) + 8 | 0; break } default: b = (c[a + 12 >> 2] | 0) + 252 + ((e & 15) << 2) | 0 }b = c[b >> 2] | 0; if (!b) { d = 12936; return d | 0 } d = _f(b, c[(c[a + 12 >> 2] | 0) + 184 + (d << 2) >> 2] | 0) | 0; return d | 0 } function dg(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0; k = i; i = i + 64 | 0; g = k + 16 | 0; h = k + 34 | 0; j = k; switch (a[f >> 0] | 0) { case 61: case 64: { c[j + 12 >> 2] = f + 1; break } case 27: { c[j + 12 >> 2] = 5064; break } default: c[j + 12 >> 2] = f }c[j >> 2] = b; c[j + 4 >> 2] = d; c[j + 8 >> 2] = e; c[g >> 2] = 1635077147; a[g + 4 >> 0] = 82; a[g + 5 >> 0] = 0; a[g + 6 >> 0] = 1; a[g + 7 >> 0] = 4; a[g + 8 >> 0] = 4; a[g + 9 >> 0] = 4; a[g + 10 >> 0] = 8; f = g + 12 | 0; a[g + 11 >> 0] = 0; a[f >> 0] = a[5078] | 0; a[f + 1 >> 0] = a[5079] | 0; a[f + 2 >> 0] = a[5080] | 0; a[f + 3 >> 0] = a[5081] | 0; a[f + 4 >> 0] = a[5082] | 0; a[f + 5 >> 0] = a[5083] | 0; a[h >> 0] = 27; if (vg(d, h + 1 | 0, 17) | 0) eg(j, 5085); if (!(Gm(g, h, 18) | 0)) { f = be(b, 1) | 0; g = b + 8 | 0; h = c[g >> 2] | 0; c[h >> 2] = f; c[h + 8 >> 2] = 70; h = (c[g >> 2] | 0) + 16 | 0; c[g >> 2] = h; if (((c[b + 24 >> 2] | 0) - h | 0) < 16) Td(b, 0); e = ge(b) | 0; d = f + 12 | 0; c[d >> 2] = e; fg(j, e); d = c[d >> 2] | 0; e = c[d + 40 >> 2] | 0; if ((e | 0) == 1) { b = f; i = k; return b | 0 } b = be(b, e) | 0; c[b + 12 >> 2] = d; j = c[g >> 2] | 0; c[j + -16 >> 2] = b; c[j + -8 >> 2] = 70; i = k; return b | 0 } if (Gm(g, h, 4) | 0) eg(j, 5095); if (Gm(g, h, 6) | 0) eg(j, 5101); if (!(Gm(g, h, 12) | 0)) eg(j, 5134); else eg(j, 5121); return 0 } function eg(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0; d = i; i = i + 16 | 0; e = c[a >> 2] | 0; c[d >> 2] = c[a + 12 >> 2]; c[d + 4 >> 2] = b; af(e, 5144, d) | 0; Ld(c[a >> 2] | 0, 3) } function fg(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0; t = i; i = i + 16 | 0; r = t; s = b + 4 | 0; if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); f = c[r >> 2] | 0; if ((f | 0) < 0) eg(b, 5134); c[e + 64 >> 2] = f; if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); f = c[r >> 2] | 0; if ((f | 0) < 0) eg(b, 5134); c[e + 68 >> 2] = f; if (vg(c[s >> 2] | 0, r, 1) | 0) eg(b, 5085); a[e + 76 >> 0] = a[r >> 0] | 0; if (vg(c[s >> 2] | 0, r, 1) | 0) eg(b, 5085); a[e + 77 >> 0] = a[r >> 0] | 0; if (vg(c[s >> 2] | 0, r, 1) | 0) eg(b, 5085); a[e + 78 >> 0] = a[r >> 0] | 0; if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); f = c[r >> 2] | 0; if ((f | 0) < 0) eg(b, 5134); g = c[b >> 2] | 0; if ((f + 1 | 0) >>> 0 > 1073741823) Te(g); m = f << 2; l = Ue(g, 0, 0, m) | 0; c[e + 12 >> 2] = l; c[e + 48 >> 2] = f; if (vg(c[s >> 2] | 0, l, m) | 0) eg(b, 5085); if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); m = c[r >> 2] | 0; if ((m | 0) < 0) eg(b, 5134); f = c[b >> 2] | 0; if ((m + 1 | 0) >>> 0 > 268435455) Te(f); j = Ue(f, 0, 0, m << 4) | 0; l = e + 8 | 0; c[l >> 2] = j; c[e + 44 >> 2] = m; g = (m | 0) > 0; a: do if (g) { f = 0; do { c[j + (f << 4) + 8 >> 2] = 0; f = f + 1 | 0 } while ((f | 0) != (m | 0)); if (g) { k = b + 8 | 0; if (!(vg(c[s >> 2] | 0, r, 1) | 0)) { o = 0; p = j; n = j } else eg(b, 5085); b: while (1) { switch (a[r >> 0] | 0) { case 0: { c[p + (o << 4) + 8 >> 2] = 0; break } case 1: { if (vg(c[s >> 2] | 0, r, 1) | 0) { f = 37; break b } c[n >> 2] = a[r >> 0]; c[p + (o << 4) + 8 >> 2] = 1; break } case 3: { if (vg(c[s >> 2] | 0, r, 8) | 0) { f = 40; break b } h[n >> 3] = +h[r >> 3]; c[p + (o << 4) + 8 >> 2] = 3; break } case 4: { if (vg(c[s >> 2] | 0, r, 4) | 0) { f = 43; break b } f = c[r >> 2] | 0; if (!f) f = 0; else { f = wg(c[b >> 2] | 0, c[k >> 2] | 0, f) | 0; if (vg(c[s >> 2] | 0, f, c[r >> 2] | 0) | 0) { f = 46; break b } f = Mf(c[b >> 2] | 0, f, (c[r >> 2] | 0) + -1 | 0) | 0 } c[n >> 2] = f; c[p + (o << 4) + 8 >> 2] = d[f + 4 >> 0] | 64; break } default: { } }g = o + 1 | 0; if ((g | 0) >= (m | 0)) break a; f = c[l >> 2] | 0; if (!(vg(c[s >> 2] | 0, r, 1) | 0)) { o = g; p = f; n = f + (g << 4) | 0 } else { f = 33; break } } if ((f | 0) == 33) eg(b, 5085); else if ((f | 0) == 37) eg(b, 5085); else if ((f | 0) == 40) eg(b, 5085); else if ((f | 0) == 43) eg(b, 5085); else if ((f | 0) == 46) eg(b, 5085) } } while (0); if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); k = c[r >> 2] | 0; if ((k | 0) < 0) eg(b, 5134); f = c[b >> 2] | 0; if ((k + 1 | 0) >>> 0 > 1073741823) Te(f); f = Ue(f, 0, 0, k << 2) | 0; j = e + 16 | 0; c[j >> 2] = f; c[e + 56 >> 2] = k; g = (k | 0) > 0; do if (g) { c[f >> 2] = 0; if ((k | 0) != 1) { f = 1; do { c[(c[j >> 2] | 0) + (f << 2) >> 2] = 0; f = f + 1 | 0 } while ((f | 0) != (k | 0)) } if (g) f = 0; else break; do { p = ge(c[b >> 2] | 0) | 0; c[(c[j >> 2] | 0) + (f << 2) >> 2] = p; fg(b, c[(c[j >> 2] | 0) + (f << 2) >> 2] | 0); f = f + 1 | 0 } while ((f | 0) != (k | 0)) } while (0); if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); j = c[r >> 2] | 0; if ((j | 0) < 0) eg(b, 5134); f = c[b >> 2] | 0; if ((j + 1 | 0) >>> 0 > 536870911) Te(f); g = Ue(f, 0, 0, j << 3) | 0; m = e + 28 | 0; c[m >> 2] = g; c[e + 40 >> 2] = j; c: do if ((j | 0) > 0) { f = 0; do { c[g + (f << 3) >> 2] = 0; f = f + 1 | 0 } while ((f | 0) != (j | 0)); f = 0; while (1) { if (vg(c[s >> 2] | 0, r, 1) | 0) { f = 71; break } a[(c[m >> 2] | 0) + (f << 3) + 4 >> 0] = a[r >> 0] | 0; if (vg(c[s >> 2] | 0, r, 1) | 0) { f = 73; break } a[(c[m >> 2] | 0) + (f << 3) + 5 >> 0] = a[r >> 0] | 0; f = f + 1 | 0; if ((f | 0) >= (j | 0)) break c } if ((f | 0) == 71) eg(b, 5085); else if ((f | 0) == 73) eg(b, 5085) } while (0); if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); f = c[r >> 2] | 0; do if (f) { f = wg(c[b >> 2] | 0, c[b + 8 >> 2] | 0, f) | 0; if (!(vg(c[s >> 2] | 0, f, c[r >> 2] | 0) | 0)) { q = Mf(c[b >> 2] | 0, f, (c[r >> 2] | 0) + -1 | 0) | 0; break } else eg(b, 5085) } else q = 0; while (0); c[e + 36 >> 2] = q; if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); f = c[r >> 2] | 0; if ((f | 0) < 0) eg(b, 5134); g = c[b >> 2] | 0; if ((f + 1 | 0) >>> 0 > 1073741823) Te(g); q = f << 2; p = Ue(g, 0, 0, q) | 0; c[e + 20 >> 2] = p; c[e + 52 >> 2] = f; if (vg(c[s >> 2] | 0, p, q) | 0) eg(b, 5085); if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); l = c[r >> 2] | 0; if ((l | 0) < 0) eg(b, 5134); f = c[b >> 2] | 0; if ((l + 1 | 0) >>> 0 > 357913941) Te(f); g = Ue(f, 0, 0, l * 12 | 0) | 0; k = e + 24 | 0; c[k >> 2] = g; c[e + 60 >> 2] = l; d: do if ((l | 0) > 0) { f = 0; do { c[g + (f * 12 | 0) >> 2] = 0; f = f + 1 | 0 } while ((f | 0) != (l | 0)); j = b + 8 | 0; g = 0; while (1) { if (vg(c[s >> 2] | 0, r, 4) | 0) { f = 99; break } f = c[r >> 2] | 0; if (!f) f = 0; else { f = wg(c[b >> 2] | 0, c[j >> 2] | 0, f) | 0; if (vg(c[s >> 2] | 0, f, c[r >> 2] | 0) | 0) { f = 102; break } f = Mf(c[b >> 2] | 0, f, (c[r >> 2] | 0) + -1 | 0) | 0 } c[(c[k >> 2] | 0) + (g * 12 | 0) >> 2] = f; if (vg(c[s >> 2] | 0, r, 4) | 0) { f = 105; break } f = c[r >> 2] | 0; if ((f | 0) < 0) { f = 107; break } c[(c[k >> 2] | 0) + (g * 12 | 0) + 4 >> 2] = f; if (vg(c[s >> 2] | 0, r, 4) | 0) { f = 109; break } f = c[r >> 2] | 0; if ((f | 0) < 0) { f = 111; break } c[(c[k >> 2] | 0) + (g * 12 | 0) + 8 >> 2] = f; g = g + 1 | 0; if ((g | 0) >= (l | 0)) break d } if ((f | 0) == 99) eg(b, 5085); else if ((f | 0) == 102) eg(b, 5085); else if ((f | 0) == 105) eg(b, 5085); else if ((f | 0) == 107) eg(b, 5134); else if ((f | 0) == 109) eg(b, 5085); else if ((f | 0) == 111) eg(b, 5134) } while (0); if (vg(c[s >> 2] | 0, r, 4) | 0) eg(b, 5085); j = c[r >> 2] | 0; if ((j | 0) < 0) eg(b, 5134); if (!j) { i = t; return } k = b + 8 | 0; g = 0; while (1) { if (vg(c[s >> 2] | 0, r, 4) | 0) { f = 120; break } f = c[r >> 2] | 0; if (!f) f = 0; else { f = wg(c[b >> 2] | 0, c[k >> 2] | 0, f) | 0; if (vg(c[s >> 2] | 0, f, c[r >> 2] | 0) | 0) { f = 123; break } f = Mf(c[b >> 2] | 0, f, (c[r >> 2] | 0) + -1 | 0) | 0 } c[(c[m >> 2] | 0) + (g << 3) >> 2] = f; g = g + 1 | 0; if ((g | 0) >= (j | 0)) { f = 126; break } } if ((f | 0) == 120) eg(b, 5085); else if ((f | 0) == 123) eg(b, 5085); else if ((f | 0) == 126) { i = t; return } } function gg(b) { b = b | 0; var c = 0; a[b >> 0] = 27; a[b + 1 >> 0] = 76; a[b + 2 >> 0] = 117; a[b + 3 >> 0] = 97; a[b + 4 >> 0] = 82; a[b + 5 >> 0] = 0; a[b + 6 >> 0] = 1; a[b + 7 >> 0] = 4; a[b + 8 >> 0] = 4; a[b + 9 >> 0] = 4; a[b + 10 >> 0] = 8; c = b + 12 | 0; a[b + 11 >> 0] = 0; a[c >> 0] = a[5078] | 0; a[c + 1 >> 0] = a[5079] | 0; a[c + 2 >> 0] = a[5080] | 0; a[c + 3 >> 0] = a[5081] | 0; a[c + 4 >> 0] = a[5082] | 0; a[c + 5 >> 0] = a[5083] | 0; return } function hg(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0; f = i; i = i + 16 | 0; d = f; e = c[a + 8 >> 2] | 0; if ((e | 0) != 3) if ((e & 15 | 0) == 4 ? (e = c[a >> 2] | 0, (_e(e + 16 | 0, c[e + 12 >> 2] | 0, d) | 0) != 0) : 0) { h[b >> 3] = +h[d >> 3]; c[b + 8 >> 2] = 3; a = b } else a = 0; i = f; return a | 0 } function ig(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, j = 0; j = i; i = i + 48 | 0; g = j; e = j + 8 | 0; f = b + 8 | 0; if ((c[f >> 2] | 0) != 3) { g = 0; i = j; return g | 0 } h[g >> 3] = +h[b >> 3]; g = Mf(a, e, em(e, 7586, g) | 0) | 0; c[b >> 2] = g; c[f >> 2] = d[g + 4 >> 0] | 0 | 64; g = 1; i = j; return g | 0 } function jg(b, e, f, g) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; o = i; i = i + 16 | 0; n = o; l = b + 12 | 0; m = e; k = 0; e = c[e + 8 >> 2] | 0; while (1) { if ((e | 0) != 69) { h = cg(b, m, 0) | 0; e = c[h + 8 >> 2] | 0; if (!e) { e = 11; break } } else { e = c[m >> 2] | 0; h = Tf(e, f) | 0; j = h + 8 | 0; if (c[j >> 2] | 0) { e = 9; break } e = c[e + 24 >> 2] | 0; if (!e) { e = 9; break } if (a[e + 6 >> 0] & 1) { e = 9; break } e = bg(e, 0, c[(c[l >> 2] | 0) + 184 >> 2] | 0) | 0; if (!e) { e = 9; break } h = e; e = c[e + 8 >> 2] | 0 } k = k + 1 | 0; if ((e & 15 | 0) == 6) { e = 13; break } if ((k | 0) >= 100) { e = 14; break } else m = h } if ((e | 0) == 9) { b = h; f = c[b + 4 >> 2] | 0; n = g; c[n >> 2] = c[b >> 2]; c[n + 4 >> 2] = f; c[g + 8 >> 2] = c[j >> 2]; i = o; return } else if ((e | 0) == 11) Dd(b, m, 5169); else if ((e | 0) == 13) { k = b + 28 | 0; n = c[k >> 2] | 0; l = b + 8 | 0; e = c[l >> 2] | 0; c[l >> 2] = e + 16; q = h; j = c[q + 4 >> 2] | 0; p = e; c[p >> 2] = c[q >> 2]; c[p + 4 >> 2] = j; c[e + 8 >> 2] = c[h + 8 >> 2]; e = c[l >> 2] | 0; c[l >> 2] = e + 16; p = m; j = c[p + 4 >> 2] | 0; h = e; c[h >> 2] = c[p >> 2]; c[h + 4 >> 2] = j; c[e + 8 >> 2] = c[m + 8 >> 2]; m = c[l >> 2] | 0; c[l >> 2] = m + 16; e = f; h = c[e + 4 >> 2] | 0; j = m; c[j >> 2] = c[e >> 2]; c[j + 4 >> 2] = h; c[m + 8 >> 2] = c[f + 8 >> 2]; Wd(b, (c[l >> 2] | 0) + -48 | 0, 1, (d[(c[b + 16 >> 2] | 0) + 18 >> 0] | 0) & 1); n = (c[k >> 2] | 0) + (g - n) | 0; g = c[l >> 2] | 0; m = g + -16 | 0; c[l >> 2] = m; b = c[m + 4 >> 2] | 0; f = n; c[f >> 2] = c[m >> 2]; c[f + 4 >> 2] = b; c[n + 8 >> 2] = c[g + -8 >> 2]; i = o; return } else if ((e | 0) == 14) Ed(b, 5175, n) } function kg(b, e, f, g) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; q = i; i = i + 16 | 0; o = q; m = b + 12 | 0; j = e; k = 0; e = c[e + 8 >> 2] | 0; while (1) { if ((e | 0) != 69) { h = cg(b, j, 1) | 0; e = c[h + 8 >> 2] | 0; if (!e) { p = 16; break } } else { n = c[j >> 2] | 0; h = Tf(n, f) | 0; if (c[h + 8 >> 2] | 0) { l = h; break } e = c[n + 24 >> 2] | 0; if (!e) { p = 9; break } if (a[e + 6 >> 0] & 2) { p = 9; break } e = bg(e, 1, c[(c[m >> 2] | 0) + 188 >> 2] | 0) | 0; if (!e) { p = 9; break } h = e; e = c[e + 8 >> 2] | 0 } k = k + 1 | 0; if ((e & 15 | 0) == 6) { p = 18; break } if ((k | 0) >= 100) { p = 19; break } else j = h } if ((p | 0) == 9) if ((h | 0) == 12936) l = Sf(b, n, f) | 0; else l = h; else if ((p | 0) == 16) Dd(b, j, 5169); else if ((p | 0) == 18) { p = b + 8 | 0; o = c[p >> 2] | 0; c[p >> 2] = o + 16; l = h; n = c[l + 4 >> 2] | 0; m = o; c[m >> 2] = c[l >> 2]; c[m + 4 >> 2] = n; c[o + 8 >> 2] = c[h + 8 >> 2]; o = c[p >> 2] | 0; c[p >> 2] = o + 16; m = j; n = c[m + 4 >> 2] | 0; l = o; c[l >> 2] = c[m >> 2]; c[l + 4 >> 2] = n; c[o + 8 >> 2] = c[j + 8 >> 2]; o = c[p >> 2] | 0; c[p >> 2] = o + 16; l = f; n = c[l + 4 >> 2] | 0; m = o; c[m >> 2] = c[l >> 2]; c[m + 4 >> 2] = n; c[o + 8 >> 2] = c[f + 8 >> 2]; o = c[p >> 2] | 0; c[p >> 2] = o + 16; f = g; m = c[f + 4 >> 2] | 0; n = o; c[n >> 2] = c[f >> 2]; c[n + 4 >> 2] = m; c[o + 8 >> 2] = c[g + 8 >> 2]; Wd(b, (c[p >> 2] | 0) + -64 | 0, 0, (d[(c[b + 16 >> 2] | 0) + 18 >> 0] | 0) & 1); i = q; return } else if ((p | 0) == 19) Ed(b, 5192, o); m = g; o = c[m + 4 >> 2] | 0; p = l; c[p >> 2] = c[m >> 2]; c[p + 4 >> 2] = o; p = g + 8 | 0; c[l + 8 >> 2] = c[p >> 2]; a[n + 6 >> 0] = 0; if (!(c[p >> 2] & 64)) { i = q; return } if (!(a[(c[g >> 2] | 0) + 5 >> 0] & 3)) { i = q; return } if (!(a[n + 5 >> 0] & 4)) { i = q; return } le(b, n); i = q; return } function lg(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; k = b + 8 | 0; f = c[k >> 2] | 0; if ((f | 0) == 3) { if ((c[e + 8 >> 2] | 0) == 3) { l = +h[b >> 3] < +h[e >> 3] & 1; return l | 0 } } else if ((f & 15 | 0) == 4 ? (c[e + 8 >> 2] & 15 | 0) == 4 : 0) { b = c[b >> 2] | 0; j = c[e >> 2] | 0; i = c[j + 12 >> 2] | 0; j = j + 16 | 0; a = c[b + 12 >> 2] | 0; b = b + 16 | 0; while (1) { f = Ul(b, j) | 0; if (f | 0) break; f = Vl(b) | 0; g = (f | 0) == (a | 0); if ((f | 0) == (i | 0)) { l = 9; break } f = f + 1 | 0; if (g) { f = -1; break } else { i = i - f | 0; j = j + f | 0; a = a - f | 0; b = b + f | 0 } } if ((l | 0) == 9) f = g & 1 ^ 1; l = f >>> 31; return l | 0 } g = a + 8 | 0; i = c[g >> 2] | 0; f = cg(a, b, 13) | 0; if (!(c[f + 8 >> 2] | 0)) { f = cg(a, e, 13) | 0; if (!(c[f + 8 >> 2] | 0)) Id(a, b, e); else j = f } else j = f; l = a + 28 | 0; f = c[l >> 2] | 0; m = c[g >> 2] | 0; c[g >> 2] = m + 16; p = j; o = c[p + 4 >> 2] | 0; n = m; c[n >> 2] = c[p >> 2]; c[n + 4 >> 2] = o; c[m + 8 >> 2] = c[j + 8 >> 2]; m = c[g >> 2] | 0; c[g >> 2] = m + 16; n = b; j = c[n + 4 >> 2] | 0; b = m; c[b >> 2] = c[n >> 2]; c[b + 4 >> 2] = j; c[m + 8 >> 2] = c[k >> 2]; b = c[g >> 2] | 0; c[g >> 2] = b + 16; m = e; j = c[m + 4 >> 2] | 0; k = b; c[k >> 2] = c[m >> 2]; c[k + 4 >> 2] = j; c[b + 8 >> 2] = c[e + 8 >> 2]; Wd(a, (c[g >> 2] | 0) + -48 | 0, 1, (d[(c[a + 16 >> 2] | 0) + 18 >> 0] | 0) & 1); f = (c[l >> 2] | 0) + (i - f) | 0; l = c[g >> 2] | 0; b = l + -16 | 0; c[g >> 2] = b; e = c[b + 4 >> 2] | 0; k = f; c[k >> 2] = c[b >> 2]; c[k + 4 >> 2] = e; c[f + 8 >> 2] = c[l + -8 >> 2]; f = c[g >> 2] | 0; g = c[f + 8 >> 2] | 0; if (!g) { p = 0; return p | 0 } if ((g | 0) != 1) { p = 1; return p | 0 } p = (c[f >> 2] | 0) != 0 & 1; return p | 0 } function mg(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; k = b + 8 | 0; f = c[k >> 2] | 0; if ((f | 0) == 3) { if ((c[e + 8 >> 2] | 0) == 3) { l = +h[b >> 3] <= +h[e >> 3] & 1; return l | 0 } } else if ((f & 15 | 0) == 4 ? (c[e + 8 >> 2] & 15 | 0) == 4 : 0) { b = c[b >> 2] | 0; j = c[e >> 2] | 0; i = c[j + 12 >> 2] | 0; j = j + 16 | 0; a = c[b + 12 >> 2] | 0; b = b + 16 | 0; while (1) { f = Ul(b, j) | 0; if (f | 0) break; f = Vl(b) | 0; g = (f | 0) == (a | 0); if ((f | 0) == (i | 0)) { l = 9; break } f = f + 1 | 0; if (g) { f = -1; break } else { i = i - f | 0; j = j + f | 0; a = a - f | 0; b = b + f | 0 } } if ((l | 0) == 9) f = g & 1 ^ 1; l = (f | 0) < 1 & 1; return l | 0 } i = a + 8 | 0; g = c[i >> 2] | 0; f = cg(a, b, 14) | 0; if (!(c[f + 8 >> 2] | 0)) { f = cg(a, e, 14) | 0; if (!(c[f + 8 >> 2] | 0)) { g = c[i >> 2] | 0; f = cg(a, e, 13) | 0; if (!(c[f + 8 >> 2] | 0)) { f = cg(a, b, 13) | 0; if (!(c[f + 8 >> 2] | 0)) Id(a, b, e); else j = f } else j = f; l = a + 28 | 0; f = c[l >> 2] | 0; m = c[i >> 2] | 0; c[i >> 2] = m + 16; p = j; n = c[p + 4 >> 2] | 0; o = m; c[o >> 2] = c[p >> 2]; c[o + 4 >> 2] = n; c[m + 8 >> 2] = c[j + 8 >> 2]; m = c[i >> 2] | 0; c[i >> 2] = m + 16; o = e; n = c[o + 4 >> 2] | 0; j = m; c[j >> 2] = c[o >> 2]; c[j + 4 >> 2] = n; c[m + 8 >> 2] = c[e + 8 >> 2]; e = c[i >> 2] | 0; c[i >> 2] = e + 16; m = b; j = c[m + 4 >> 2] | 0; b = e; c[b >> 2] = c[m >> 2]; c[b + 4 >> 2] = j; c[e + 8 >> 2] = c[k >> 2]; Wd(a, (c[i >> 2] | 0) + -48 | 0, 1, (d[(c[a + 16 >> 2] | 0) + 18 >> 0] | 0) & 1); f = (c[l >> 2] | 0) + (g - f) | 0; g = c[i >> 2] | 0; e = g + -16 | 0; c[i >> 2] = e; k = c[e + 4 >> 2] | 0; l = f; c[l >> 2] = c[e >> 2]; c[l + 4 >> 2] = k; c[f + 8 >> 2] = c[g + -8 >> 2]; f = c[i >> 2] | 0; g = c[f + 8 >> 2] | 0; if (g) if ((g | 0) == 1) f = (c[f >> 2] | 0) == 0; else f = 0; else f = 1; p = f & 1; return p | 0 } } o = a + 28 | 0; n = c[o >> 2] | 0; p = c[i >> 2] | 0; c[i >> 2] = p + 16; j = f; l = c[j + 4 >> 2] | 0; m = p; c[m >> 2] = c[j >> 2]; c[m + 4 >> 2] = l; c[p + 8 >> 2] = c[f + 8 >> 2]; f = c[i >> 2] | 0; c[i >> 2] = f + 16; p = b; m = c[p + 4 >> 2] | 0; l = f; c[l >> 2] = c[p >> 2]; c[l + 4 >> 2] = m; c[f + 8 >> 2] = c[k >> 2]; f = c[i >> 2] | 0; c[i >> 2] = f + 16; l = e; m = c[l + 4 >> 2] | 0; p = f; c[p >> 2] = c[l >> 2]; c[p + 4 >> 2] = m; c[f + 8 >> 2] = c[e + 8 >> 2]; Wd(a, (c[i >> 2] | 0) + -48 | 0, 1, (d[(c[a + 16 >> 2] | 0) + 18 >> 0] | 0) & 1); f = (c[o >> 2] | 0) + (g - n) | 0; g = c[i >> 2] | 0; n = g + -16 | 0; c[i >> 2] = n; o = c[n + 4 >> 2] | 0; p = f; c[p >> 2] = c[n >> 2]; c[p + 4 >> 2] = o; c[f + 8 >> 2] = c[g + -8 >> 2]; f = c[i >> 2] | 0; g = c[f + 8 >> 2] | 0; if (g) if ((g | 0) == 1) f = (c[f >> 2] | 0) != 0; else f = 1; else f = 0; p = f & 1; return p | 0 } function ng(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; l = e + 8 | 0; a: do switch (c[l >> 2] & 63) { case 3: { l = +h[e >> 3] == +h[f >> 3] & 1; return l | 0 } case 1: { l = (c[e >> 2] | 0) == (c[f >> 2] | 0) & 1; return l | 0 } case 2: { l = (c[e >> 2] | 0) == (c[f >> 2] | 0) & 1; return l | 0 } case 22: { l = (c[e >> 2] | 0) == (c[f >> 2] | 0) & 1; return l | 0 } case 4: { l = (c[e >> 2] | 0) == (c[f >> 2] | 0) & 1; return l | 0 } case 20: { l = If(c[e >> 2] | 0, c[f >> 2] | 0) | 0; return l | 0 } case 7: { g = c[e >> 2] | 0; i = c[f >> 2] | 0; if ((g | 0) == (i | 0)) { l = 1; return l | 0 } if (!b) { l = 0; return l | 0 } k = c[g + 8 >> 2] | 0; i = c[i + 8 >> 2] | 0; if (!k) { l = 0; return l | 0 } if (a[k + 6 >> 0] & 32) { l = 0; return l | 0 } j = b + 12 | 0; g = bg(k, 5, c[(c[j >> 2] | 0) + 204 >> 2] | 0) | 0; if (!g) { l = 0; return l | 0 } if ((k | 0) != (i | 0)) { if (!i) { l = 0; return l | 0 } if (a[i + 6 >> 0] & 32) { l = 0; return l | 0 } i = bg(i, 5, c[(c[j >> 2] | 0) + 204 >> 2] | 0) | 0; if (!i) { l = 0; return l | 0 } j = c[g + 8 >> 2] | 0; if ((j | 0) != (c[i + 8 >> 2] | 0)) { l = 0; return l | 0 } switch (j & 63) { case 0: break a; case 3: { i = +h[g >> 3] == +h[i >> 3] & 1; break } case 1: { i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1; break } case 2: { i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1; break } case 22: { i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1; break } case 4: { i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1; break } case 20: { i = If(c[g >> 2] | 0, c[i >> 2] | 0) | 0; break } case 7: { if ((c[g >> 2] | 0) == (c[i >> 2] | 0)) break a; else g = 0; return g | 0 } case 5: { if ((c[g >> 2] | 0) == (c[i >> 2] | 0)) break a; else g = 0; return g | 0 } default: i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1 }if (!i) { l = 0; return l | 0 } } break } case 5: { g = c[e >> 2] | 0; i = c[f >> 2] | 0; if ((g | 0) == (i | 0)) { l = 1; return l | 0 } if (!b) { l = 0; return l | 0 } k = c[g + 24 >> 2] | 0; i = c[i + 24 >> 2] | 0; if (!k) { l = 0; return l | 0 } if (a[k + 6 >> 0] & 32) { l = 0; return l | 0 } j = b + 12 | 0; g = bg(k, 5, c[(c[j >> 2] | 0) + 204 >> 2] | 0) | 0; if (!g) { l = 0; return l | 0 } if ((k | 0) != (i | 0)) { if (!i) { l = 0; return l | 0 } if (a[i + 6 >> 0] & 32) { l = 0; return l | 0 } i = bg(i, 5, c[(c[j >> 2] | 0) + 204 >> 2] | 0) | 0; if (!i) { l = 0; return l | 0 } j = c[g + 8 >> 2] | 0; if ((j | 0) != (c[i + 8 >> 2] | 0)) { l = 0; return l | 0 } switch (j & 63) { case 0: break a; case 3: { i = +h[g >> 3] == +h[i >> 3] & 1; break } case 1: { i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1; break } case 2: { i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1; break } case 22: { i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1; break } case 4: { i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1; break } case 20: { i = If(c[g >> 2] | 0, c[i >> 2] | 0) | 0; break } case 7: { if ((c[g >> 2] | 0) == (c[i >> 2] | 0)) break a; else g = 0; return g | 0 } case 5: { if ((c[g >> 2] | 0) == (c[i >> 2] | 0)) break a; else g = 0; return g | 0 } default: i = (c[g >> 2] | 0) == (c[i >> 2] | 0) & 1 }if (!i) { l = 0; return l | 0 } } break } case 0: { l = 1; return l | 0 } default: { l = (c[e >> 2] | 0) == (c[f >> 2] | 0) & 1; return l | 0 } } while (0); i = b + 8 | 0; j = c[i >> 2] | 0; m = b + 28 | 0; k = c[m >> 2] | 0; c[i >> 2] = j + 16; p = g; n = c[p + 4 >> 2] | 0; o = j; c[o >> 2] = c[p >> 2]; c[o + 4 >> 2] = n; c[j + 8 >> 2] = c[g + 8 >> 2]; g = c[i >> 2] | 0; c[i >> 2] = g + 16; o = e; e = c[o + 4 >> 2] | 0; n = g; c[n >> 2] = c[o >> 2]; c[n + 4 >> 2] = e; c[g + 8 >> 2] = c[l >> 2]; g = c[i >> 2] | 0; c[i >> 2] = g + 16; n = f; e = c[n + 4 >> 2] | 0; l = g; c[l >> 2] = c[n >> 2]; c[l + 4 >> 2] = e; c[g + 8 >> 2] = c[f + 8 >> 2]; Wd(b, (c[i >> 2] | 0) + -48 | 0, 1, (d[(c[b + 16 >> 2] | 0) + 18 >> 0] | 0) & 1); g = (c[m >> 2] | 0) + (j - k) | 0; l = c[i >> 2] | 0; b = l + -16 | 0; c[i >> 2] = b; e = c[b + 4 >> 2] | 0; f = g; c[f >> 2] = c[b >> 2]; c[f + 4 >> 2] = e; c[g + 8 >> 2] = c[l + -8 >> 2]; g = c[i >> 2] | 0; i = c[g + 8 >> 2] | 0; if (i) if ((i | 0) == 1) g = (c[g >> 2] | 0) != 0; else g = 1; else g = 0; p = g & 1; return p | 0 } function og(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0; y = i; i = i + 64 | 0; w = y + 24 | 0; v = y + 16 | 0; u = y + 8 | 0; t = y; o = y + 32 | 0; p = a + 8 | 0; q = a + 12 | 0; r = a + 28 | 0; s = a + 16 | 0; n = c[p >> 2] | 0; a: while (1) { l = n + -32 | 0; m = n + -24 | 0; e = c[m >> 2] | 0; k = n + -16 | 0; do if ((e | 0) == 3 | (e & 15 | 0) == 4) { j = n + -8 | 0; f = c[j >> 2] | 0; if ((f & 15 | 0) != 4) { if ((f | 0) != 3) { x = 6; break } h[t >> 3] = +h[k >> 3]; e = Mf(a, o, em(o, 7586, t) | 0) | 0; c[k >> 2] = e; c[j >> 2] = d[e + 4 >> 0] | 0 | 64; e = c[m >> 2] | 0 } f = c[(c[k >> 2] | 0) + 12 >> 2] | 0; g = (e & 15 | 0) == 4; if (!f) { if (!((e | 0) == 3 & (g ^ 1))) { e = 2; break } h[u >> 3] = +h[l >> 3]; e = Mf(a, o, em(o, 7586, u) | 0) | 0; c[l >> 2] = e; c[m >> 2] = d[e + 4 >> 0] | 0 | 64; e = 2; break } if (g ? (c[(c[l >> 2] | 0) + 12 >> 2] | 0) == 0 : 0) { n = c[k + 4 >> 2] | 0; e = l; c[e >> 2] = c[k >> 2]; c[e + 4 >> 2] = n; c[m >> 2] = c[j >> 2]; e = 2; break } b: do if ((b | 0) > 1) { k = f; e = 1; while (1) { f = n + (0 - e << 4) + -16 | 0; g = f + 8 | 0; j = c[g >> 2] | 0; if ((j & 15 | 0) != 4) { if ((j | 0) != 3) { f = k; break b } h[v >> 3] = +h[f >> 3]; m = Mf(a, o, em(o, 7586, v) | 0) | 0; c[f >> 2] = m; c[g >> 2] = d[m + 4 >> 0] | 0 | 64 } f = c[(c[f >> 2] | 0) + 12 >> 2] | 0; if (f >>> 0 >= (-3 - k | 0) >>> 0) { x = 21; break a } f = f + k | 0; e = e + 1 | 0; if ((e | 0) < (b | 0)) k = f; else break } } else e = 1; while (0); j = wg(a, (c[q >> 2] | 0) + 144 | 0, f) | 0; f = 0; g = e; while (1) { l = c[n + (0 - g << 4) >> 2] | 0; m = c[l + 12 >> 2] | 0; nn(j + f | 0, l + 16 | 0, m | 0) | 0; f = m + f | 0; if ((g | 0) <= 1) break; else g = g + -1 | 0 } m = 0 - e | 0; l = Mf(a, j, f) | 0; c[n + (m << 4) >> 2] = l; c[n + (m << 4) + 8 >> 2] = d[l + 4 >> 0] | 0 | 64 } else x = 6; while (0); if ((x | 0) == 6) { x = 0; e = cg(a, l, 15) | 0; if (!(c[e + 8 >> 2] | 0)) { e = cg(a, k, 15) | 0; if (!(c[e + 8 >> 2] | 0)) { x = 9; break } } j = c[r >> 2] | 0; z = c[p >> 2] | 0; c[p >> 2] = z + 16; A = e; g = c[A + 4 >> 2] | 0; f = z; c[f >> 2] = c[A >> 2]; c[f + 4 >> 2] = g; c[z + 8 >> 2] = c[e + 8 >> 2]; e = c[p >> 2] | 0; c[p >> 2] = e + 16; z = l; f = c[z + 4 >> 2] | 0; g = e; c[g >> 2] = c[z >> 2]; c[g + 4 >> 2] = f; c[e + 8 >> 2] = c[m >> 2]; e = c[p >> 2] | 0; c[p >> 2] = e + 16; g = k; m = c[g + 4 >> 2] | 0; k = e; c[k >> 2] = c[g >> 2]; c[k + 4 >> 2] = m; c[e + 8 >> 2] = c[n + -8 >> 2]; Wd(a, (c[p >> 2] | 0) + -48 | 0, 1, (d[(c[s >> 2] | 0) + 18 >> 0] | 0) & 1); e = (c[r >> 2] | 0) + (l - j) | 0; n = c[p >> 2] | 0; k = n + -16 | 0; c[p >> 2] = k; l = c[k + 4 >> 2] | 0; m = e; c[m >> 2] = c[k >> 2]; c[m + 4 >> 2] = l; c[e + 8 >> 2] = c[n + -8 >> 2]; e = 2 } b = b + 1 - e | 0; n = (c[p >> 2] | 0) + (1 - e << 4) | 0; c[p >> 2] = n; if ((b | 0) <= 1) { x = 27; break } } if ((x | 0) == 9) Gd(a, l, k); else if ((x | 0) == 21) Ed(a, 5209, w); else if ((x | 0) == 27) { i = y; return } } function pg(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; k = f + 8 | 0; a: do switch (c[k >> 2] & 15) { case 5: { g = c[f >> 2] | 0; i = c[g + 24 >> 2] | 0; if ((i | 0 ? (a[i + 6 >> 0] & 16) == 0 : 0) ? (j = bg(i, 4, c[(c[b + 12 >> 2] | 0) + 200 >> 2] | 0) | 0, j | 0) : 0) { i = j; break a } h[e >> 3] = +($f(g) | 0); c[e + 8 >> 2] = 3; return } case 4: { h[e >> 3] = +((c[(c[f >> 2] | 0) + 12 >> 2] | 0) >>> 0); c[e + 8 >> 2] = 3; return } default: { g = cg(b, f, 4) | 0; if (!(c[g + 8 >> 2] | 0)) Dd(b, f, 5232); else i = g } } while (0); l = b + 28 | 0; j = c[l >> 2] | 0; g = b + 8 | 0; o = c[g >> 2] | 0; c[g >> 2] = o + 16; p = i; n = c[p + 4 >> 2] | 0; m = o; c[m >> 2] = c[p >> 2]; c[m + 4 >> 2] = n; c[o + 8 >> 2] = c[i + 8 >> 2]; i = c[g >> 2] | 0; c[g >> 2] = i + 16; o = f; m = c[o + 4 >> 2] | 0; n = i; c[n >> 2] = c[o >> 2]; c[n + 4 >> 2] = m; c[i + 8 >> 2] = c[k >> 2]; i = c[g >> 2] | 0; c[g >> 2] = i + 16; n = f; m = c[n + 4 >> 2] | 0; f = i; c[f >> 2] = c[n >> 2]; c[f + 4 >> 2] = m; c[i + 8 >> 2] = c[k >> 2]; Wd(b, (c[g >> 2] | 0) + -48 | 0, 1, (d[(c[b + 16 >> 2] | 0) + 18 >> 0] | 0) & 1); k = (c[l >> 2] | 0) + (e - j) | 0; f = c[g >> 2] | 0; j = f + -16 | 0; c[g >> 2] = j; b = c[j + 4 >> 2] | 0; e = k; c[e >> 2] = c[j >> 2]; c[e + 4 >> 2] = b; c[k + 8 >> 2] = c[f + -8 >> 2]; return } function qg(a, b, e, f, g) { a = a | 0; b = b | 0; e = e | 0; f = f | 0; g = g | 0; var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0; p = i; i = i + 32 | 0; m = p + 16 | 0; j = p; o = e + 8 | 0; k = c[o >> 2] | 0; do if ((k | 0) != 3) { if ((k & 15 | 0) == 4 ? (k = c[e >> 2] | 0, _e(k + 16 | 0, c[k + 12 >> 2] | 0, m) | 0) : 0) { h[j >> 3] = +h[m >> 3]; c[j + 8 >> 2] = 3; k = j; l = 6; break } } else { k = e; l = 6 } while (0); a: do if ((l | 0) == 6) { j = c[f + 8 >> 2] | 0; do if ((j | 0) != 3) { if ((j & 15 | 0) == 4 ? (l = c[f >> 2] | 0, _e(l + 16 | 0, c[l + 12 >> 2] | 0, m) | 0) : 0) { f = m; break } break a } while (0); h[b >> 3] = +Ye(g + -6 | 0, +h[k >> 3], +h[f >> 3]); c[b + 8 >> 2] = 3; i = p; return } while (0); j = cg(a, e, g) | 0; if (!(c[j + 8 >> 2] | 0)) { j = cg(a, f, g) | 0; if (!(c[j + 8 >> 2] | 0)) Hd(a, e, f); else n = j } else n = j; l = a + 28 | 0; m = c[l >> 2] | 0; g = a + 8 | 0; k = c[g >> 2] | 0; c[g >> 2] = k + 16; r = n; q = c[r + 4 >> 2] | 0; j = k; c[j >> 2] = c[r >> 2]; c[j + 4 >> 2] = q; c[k + 8 >> 2] = c[n + 8 >> 2]; k = c[g >> 2] | 0; c[g >> 2] = k + 16; j = e; e = c[j + 4 >> 2] | 0; n = k; c[n >> 2] = c[j >> 2]; c[n + 4 >> 2] = e; c[k + 8 >> 2] = c[o >> 2]; o = c[g >> 2] | 0; c[g >> 2] = o + 16; k = f; n = c[k + 4 >> 2] | 0; e = o; c[e >> 2] = c[k >> 2]; c[e + 4 >> 2] = n; c[o + 8 >> 2] = c[f + 8 >> 2]; Wd(a, (c[g >> 2] | 0) + -48 | 0, 1, (d[(c[a + 16 >> 2] | 0) + 18 >> 0] | 0) & 1); b = (c[l >> 2] | 0) + (b - m) | 0; o = c[g >> 2] | 0; a = o + -16 | 0; c[g >> 2] = a; e = c[a + 4 >> 2] | 0; g = b; c[g >> 2] = c[a >> 2]; c[g + 4 >> 2] = e; c[b + 8 >> 2] = c[o + -8 >> 2]; i = p; return } function rg(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0; f = c[a + 16 >> 2] | 0; g = f + 24 | 0; j = c[g >> 2] | 0; i = f + 28 | 0; k = c[(c[i >> 2] | 0) + -4 >> 2] | 0; h = k & 63; switch (k & 63) { case 12: case 7: case 6: case 21: case 19: case 18: case 17: case 16: case 15: case 14: case 13: { h = a + 8 | 0; a = c[h >> 2] | 0; g = a + -16 | 0; c[h >> 2] = g; k = k >>> 6 & 255; h = c[g + 4 >> 2] | 0; i = j + (k << 4) | 0; c[i >> 2] = c[g >> 2]; c[i + 4 >> 2] = h; c[j + (k << 4) + 8 >> 2] = c[a + -8 >> 2]; return } case 24: case 25: case 26: { e = a + 8 | 0; f = c[e >> 2] | 0; b = c[f + -8 >> 2] | 0; if (b) if ((b | 0) == 1) b = (c[f + -16 >> 2] | 0) == 0; else b = 0; else b = 1; d = b & 1; b = d ^ 1; c[e >> 2] = f + -16; if ((h | 0) == 26) { a = (c[(cg(a, j + (k >>> 23 << 4) | 0, 14) | 0) + 8 >> 2] | 0) == 0; b = a ? d : b } if ((b | 0) == (k >>> 6 & 255 | 0)) return; c[i >> 2] = (c[i >> 2] | 0) + 4; return } case 22: { d = a + 8 | 0; i = c[d >> 2] | 0; e = i + -32 | 0; b = e - (j + (k >>> 23 << 4)) | 0; l = i + -16 | 0; h = c[l + 4 >> 2] | 0; j = i + -48 | 0; c[j >> 2] = c[l >> 2]; c[j + 4 >> 2] = h; c[i + -40 >> 2] = c[i + -8 >> 2]; if ((b | 0) > 16) { c[d >> 2] = e; og(a, b >> 4) } j = c[d >> 2] | 0; a = c[g >> 2] | 0; l = k >>> 6 & 255; h = j + -16 | 0; i = c[h + 4 >> 2] | 0; k = a + (l << 4) | 0; c[k >> 2] = c[h >> 2]; c[k + 4 >> 2] = i; c[a + (l << 4) + 8 >> 2] = c[j + -8 >> 2]; c[d >> 2] = c[f + 4 >> 2]; return } case 34: { c[a + 8 >> 2] = c[f + 4 >> 2]; return } case 29: { if (!(k & 8372224)) return; c[a + 8 >> 2] = c[f + 4 >> 2]; return } default: return } } function sg(b) { b = b | 0; var e = 0, f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0.0, p = 0.0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, E = 0, F = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0.0; Q = i; i = i + 32 | 0; P = Q + 24 | 0; O = Q + 16 | 0; N = Q + 8 | 0; B = Q; F = b + 16 | 0; I = b + 40 | 0; J = b + 12 | 0; R = b + 8 | 0; L = b + 24 | 0; S = b + 48 | 0; M = b + 20 | 0; C = b + 6 | 0; E = b + 44 | 0; j = c[F >> 2] | 0; a: while (1) { u = c[c[j >> 2] >> 2] | 0; z = u + 12 | 0; v = c[(c[z >> 2] | 0) + 8 >> 2] | 0; w = j + 24 | 0; x = j + 28 | 0; y = j + 4 | 0; e = c[w >> 2] | 0; b: while (1) { k = c[x >> 2] | 0; c[x >> 2] = k + 4; k = c[k >> 2] | 0; f = a[I >> 0] | 0; if ((f & 12) != 0 ? (H = (c[S >> 2] | 0) + -1 | 0, c[S >> 2] = H, H = (H | 0) == 0, !((f & 4) == 0 & (H ^ 1))) : 0) { t = c[F >> 2] | 0; e = f & 255; if ((e & 8 | 0) == 0 | H ^ 1) r = 0; else { c[S >> 2] = c[E >> 2]; r = 1 } s = t + 18 | 0; f = d[s >> 0] | 0; if (!(f & 128)) { if (r) Qd(b, 3, -1); do if (!(e & 4)) { e = t + 28 | 0; f = e } else { l = c[(c[c[t >> 2] >> 2] | 0) + 12 >> 2] | 0; q = t + 28 | 0; e = c[q >> 2] | 0; f = c[l + 12 >> 2] | 0; g = (e - f >> 2) + -1 | 0; l = c[l + 20 >> 2] | 0; m = (l | 0) == 0; if (m) n = 0; else n = c[l + (g << 2) >> 2] | 0; if (g | 0 ? (K = c[M >> 2] | 0, e >>> 0 > K >>> 0) : 0) { if (m) e = 0; else e = c[l + ((K - f >> 2) + -1 << 2) >> 2] | 0; if ((n | 0) == (e | 0)) { f = q; e = q; break } } Qd(b, 2, n); f = q; e = q } while (0); e = c[e >> 2] | 0; c[M >> 2] = e; if ((a[C >> 0] | 0) == 1) { A = 22; break a } } else a[s >> 0] = f & 127; t = c[w >> 2] | 0 } else t = e; s = k >>> 6 & 255; f = t + (s << 4) | 0; do switch (k & 63) { case 31: { A = 147; break b } case 0: { e = k >>> 23; n = t + (e << 4) | 0; q = c[n + 4 >> 2] | 0; r = f; c[r >> 2] = c[n >> 2]; c[r + 4 >> 2] = q; c[t + (s << 4) + 8 >> 2] = c[t + (e << 4) + 8 >> 2]; e = t; continue b } case 1: { e = k >>> 14; n = v + (e << 4) | 0; q = c[n + 4 >> 2] | 0; r = f; c[r >> 2] = c[n >> 2]; c[r + 4 >> 2] = q; c[t + (s << 4) + 8 >> 2] = c[v + (e << 4) + 8 >> 2]; e = t; continue b } case 2: { e = c[x >> 2] | 0; c[x >> 2] = e + 4; e = (c[e >> 2] | 0) >>> 6; n = v + (e << 4) | 0; q = c[n + 4 >> 2] | 0; r = f; c[r >> 2] = c[n >> 2]; c[r + 4 >> 2] = q; c[t + (s << 4) + 8 >> 2] = c[v + (e << 4) + 8 >> 2]; e = t; continue b } case 3: { c[f >> 2] = k >>> 23; c[t + (s << 4) + 8 >> 2] = 1; if (!(k & 8372224)) { e = t; continue b } c[x >> 2] = (c[x >> 2] | 0) + 4; e = t; continue b } case 4: { e = k >>> 23; while (1) { c[f + 8 >> 2] = 0; if (!e) { e = t; continue b } else { f = f + 16 | 0; e = e + -1 | 0 } } } case 5: { e = c[(c[u + 16 + (k >>> 23 << 2) >> 2] | 0) + 8 >> 2] | 0; n = e; q = c[n + 4 >> 2] | 0; r = f; c[r >> 2] = c[n >> 2]; c[r + 4 >> 2] = q; c[t + (s << 4) + 8 >> 2] = c[e + 8 >> 2]; e = t; continue b } case 6: { e = k >>> 14; jg(b, c[(c[u + 16 + (k >>> 23 << 2) >> 2] | 0) + 8 >> 2] | 0, (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0, f); e = c[w >> 2] | 0; continue b } case 7: { e = k >>> 14; jg(b, t + (k >>> 23 << 4) | 0, (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0, f); e = c[w >> 2] | 0; continue b } case 8: { r = k >>> 23; e = k >>> 14; kg(b, c[(c[u + 16 + (s << 2) >> 2] | 0) + 8 >> 2] | 0, (r & 256 | 0) == 0 ? t + (r << 4) | 0 : v + ((r & 255) << 4) | 0, (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0); e = c[w >> 2] | 0; continue b } case 9: { g = c[u + 16 + (k >>> 23 << 2) >> 2] | 0; r = c[g + 8 >> 2] | 0; m = f; n = c[m + 4 >> 2] | 0; q = r; c[q >> 2] = c[m >> 2]; c[q + 4 >> 2] = n; s = t + (s << 4) + 8 | 0; c[r + 8 >> 2] = c[s >> 2]; if (!(c[s >> 2] & 64)) { e = t; continue b } e = c[f >> 2] | 0; if (!(a[e + 5 >> 0] & 3)) { e = t; continue b } if (!(a[g + 5 >> 0] & 4)) { e = t; continue b } je(b, g, e); e = t; continue b } case 10: { s = k >>> 23; e = k >>> 14; kg(b, f, (s & 256 | 0) == 0 ? t + (s << 4) | 0 : v + ((s & 255) << 4) | 0, (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0); e = c[w >> 2] | 0; continue b } case 11: { l = k >>> 23; e = k >>> 14 & 511; g = Xf(b) | 0; c[f >> 2] = g; c[t + (s << 4) + 8 >> 2] = 69; if (e | l | 0) { t = We(l) | 0; Rf(b, g, t, We(e) | 0) } if ((c[(c[J >> 2] | 0) + 12 >> 2] | 0) > 0) { c[R >> 2] = f + 16; Ee(b); c[R >> 2] = c[y >> 2] } e = c[w >> 2] | 0; continue b } case 12: { r = k >>> 23; s = t + (r << 4) | 0; e = f + 16 | 0; m = s; n = c[m + 4 >> 2] | 0; q = e; c[q >> 2] = c[m >> 2]; c[q + 4 >> 2] = n; c[e + 8 >> 2] = c[t + (r << 4) + 8 >> 2]; e = k >>> 14; jg(b, s, (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0, f); e = c[w >> 2] | 0; continue b } case 13: { g = k >>> 23; g = (g & 256 | 0) == 0 ? t + (g << 4) | 0 : v + ((g & 255) << 4) | 0; e = k >>> 14; e = (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0; if ((c[g + 8 >> 2] | 0) == 3 ? (c[e + 8 >> 2] | 0) == 3 : 0) { h[f >> 3] = +h[g >> 3] + +h[e >> 3]; c[t + (s << 4) + 8 >> 2] = 3; e = t; continue b } qg(b, f, g, e, 6); e = c[w >> 2] | 0; continue b } case 14: { g = k >>> 23; g = (g & 256 | 0) == 0 ? t + (g << 4) | 0 : v + ((g & 255) << 4) | 0; e = k >>> 14; e = (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0; if ((c[g + 8 >> 2] | 0) == 3 ? (c[e + 8 >> 2] | 0) == 3 : 0) { h[f >> 3] = +h[g >> 3] - +h[e >> 3]; c[t + (s << 4) + 8 >> 2] = 3; e = t; continue b } qg(b, f, g, e, 7); e = c[w >> 2] | 0; continue b } case 15: { g = k >>> 23; g = (g & 256 | 0) == 0 ? t + (g << 4) | 0 : v + ((g & 255) << 4) | 0; e = k >>> 14; e = (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0; if ((c[g + 8 >> 2] | 0) == 3 ? (c[e + 8 >> 2] | 0) == 3 : 0) { h[f >> 3] = +h[g >> 3] * +h[e >> 3]; c[t + (s << 4) + 8 >> 2] = 3; e = t; continue b } qg(b, f, g, e, 8); e = c[w >> 2] | 0; continue b } case 16: { g = k >>> 23; g = (g & 256 | 0) == 0 ? t + (g << 4) | 0 : v + ((g & 255) << 4) | 0; e = k >>> 14; e = (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0; if ((c[g + 8 >> 2] | 0) == 3 ? (c[e + 8 >> 2] | 0) == 3 : 0) { h[f >> 3] = +h[g >> 3] / +h[e >> 3]; c[t + (s << 4) + 8 >> 2] = 3; e = t; continue b } qg(b, f, g, e, 9); e = c[w >> 2] | 0; continue b } case 17: { g = k >>> 23; g = (g & 256 | 0) == 0 ? t + (g << 4) | 0 : v + ((g & 255) << 4) | 0; e = k >>> 14; e = (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0; if ((c[g + 8 >> 2] | 0) == 3 ? (c[e + 8 >> 2] | 0) == 3 : 0) { o = +h[g >> 3]; p = +h[e >> 3]; h[f >> 3] = o - p * +D(+(o / p)); c[t + (s << 4) + 8 >> 2] = 3; e = t; continue b } qg(b, f, g, e, 10); e = c[w >> 2] | 0; continue b } case 18: { g = k >>> 23; g = (g & 256 | 0) == 0 ? t + (g << 4) | 0 : v + ((g & 255) << 4) | 0; e = k >>> 14; e = (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0; if ((c[g + 8 >> 2] | 0) == 3 ? (c[e + 8 >> 2] | 0) == 3 : 0) { h[f >> 3] = +G(+(+h[g >> 3]), +(+h[e >> 3])); c[t + (s << 4) + 8 >> 2] = 3; e = t; continue b } qg(b, f, g, e, 11); e = c[w >> 2] | 0; continue b } case 19: { r = k >>> 23; e = t + (r << 4) | 0; if ((c[t + (r << 4) + 8 >> 2] | 0) == 3) { h[f >> 3] = -+h[e >> 3]; c[t + (s << 4) + 8 >> 2] = 3; e = t; continue b } else { qg(b, f, e, e, 12); e = c[w >> 2] | 0; continue b } } case 20: { e = k >>> 23; g = c[t + (e << 4) + 8 >> 2] | 0; if (g) if ((g | 0) == 1) e = (c[t + (e << 4) >> 2] | 0) == 0; else e = 0; else e = 1; c[f >> 2] = e & 1; c[t + (s << 4) + 8 >> 2] = 1; e = t; continue b } case 21: { pg(b, f, t + (k >>> 23 << 4) | 0); e = c[w >> 2] | 0; continue b } case 22: { g = k >>> 23; e = k >>> 14 & 511; c[R >> 2] = t + (e << 4) + 16; og(b, 1 - g + e | 0); t = c[w >> 2] | 0; e = t + (s << 4) | 0; f = t + (g << 4) | 0; n = f; q = c[n + 4 >> 2] | 0; r = e; c[r >> 2] = c[n >> 2]; c[r + 4 >> 2] = q; c[t + (s << 4) + 8 >> 2] = c[t + (g << 4) + 8 >> 2]; if ((c[(c[J >> 2] | 0) + 12 >> 2] | 0) > 0) { c[R >> 2] = s >>> 0 >= g >>> 0 ? e + 16 | 0 : f; Ee(b); e = c[y >> 2] | 0; c[R >> 2] = e } else e = c[y >> 2] | 0; t = c[w >> 2] | 0; c[R >> 2] = e; e = t; continue b } case 23: { if (s | 0) fe(b, (c[w >> 2] | 0) + (s << 4) + -16 | 0); c[x >> 2] = (c[x >> 2] | 0) + ((k >>> 14) + -131071 << 2); e = t; continue b } case 24: { f = k >>> 23; f = (f & 256 | 0) == 0 ? t + (f << 4) | 0 : v + ((f & 255) << 4) | 0; e = k >>> 14; e = (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0; if ((c[f + 8 >> 2] | 0) == (c[e + 8 >> 2] | 0)) f = (ng(b, f, e) | 0) != 0; else f = 0; e = c[x >> 2] | 0; if ((f & 1 | 0) == (s | 0)) { g = c[e >> 2] | 0; f = g >>> 6 & 255; if (f) { fe(b, (c[w >> 2] | 0) + (f << 4) + -16 | 0); e = c[x >> 2] | 0 } e = e + ((g >>> 14) + -131070 << 2) | 0 } else e = e + 4 | 0; c[x >> 2] = e; e = c[w >> 2] | 0; continue b } case 25: { r = k >>> 23; e = k >>> 14; t = (lg(b, (r & 256 | 0) == 0 ? t + (r << 4) | 0 : v + ((r & 255) << 4) | 0, (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0) | 0) == (s | 0); e = c[x >> 2] | 0; if (t) { g = c[e >> 2] | 0; f = g >>> 6 & 255; if (f) { fe(b, (c[w >> 2] | 0) + (f << 4) + -16 | 0); e = c[x >> 2] | 0 } e = e + ((g >>> 14) + -131070 << 2) | 0 } else e = e + 4 | 0; c[x >> 2] = e; e = c[w >> 2] | 0; continue b } case 26: { r = k >>> 23; e = k >>> 14; t = (mg(b, (r & 256 | 0) == 0 ? t + (r << 4) | 0 : v + ((r & 255) << 4) | 0, (e & 256 | 0) == 0 ? t + ((e & 511) << 4) | 0 : v + ((e & 255) << 4) | 0) | 0) == (s | 0); e = c[x >> 2] | 0; if (t) { g = c[e >> 2] | 0; f = g >>> 6 & 255; if (f) { fe(b, (c[w >> 2] | 0) + (f << 4) + -16 | 0); e = c[x >> 2] | 0 } e = e + ((g >>> 14) + -131070 << 2) | 0 } else e = e + 4 | 0; c[x >> 2] = e; e = c[w >> 2] | 0; continue b } case 27: { e = c[t + (s << 4) + 8 >> 2] | 0; g = (e | 0) == 0; if (!(k & 8372224)) { if (!g) if (!((e | 0) == 1 ? !(c[f >> 2] | 0) : 0)) A = 115 } else if (!g) { if ((e | 0) == 1 ? (c[f >> 2] | 0) == 0 : 0) A = 115 } else A = 115; if ((A | 0) == 115) { A = 0; c[x >> 2] = (c[x >> 2] | 0) + 4; e = t; continue b } e = c[x >> 2] | 0; g = c[e >> 2] | 0; f = g >>> 6 & 255; if (f) { fe(b, (c[w >> 2] | 0) + (f << 4) + -16 | 0); e = c[x >> 2] | 0 } c[x >> 2] = e + ((g >>> 14) + -131070 << 2); e = t; continue b } case 28: { l = k >>> 23; g = t + (l << 4) | 0; l = c[t + (l << 4) + 8 >> 2] | 0; e = (l | 0) == 0; if (!(k & 8372224)) if (!e) if ((l | 0) == 1 ? (c[g >> 2] | 0) == 0 : 0) A = 127; else A = 126; else A = 127; else if (!e) if ((l | 0) == 1 ? (c[g >> 2] | 0) == 0 : 0) A = 126; else A = 127; else A = 126; if ((A | 0) == 126) { A = 0; e = (c[x >> 2] | 0) + 4 | 0 } else if ((A | 0) == 127) { A = 0; r = g; g = c[r + 4 >> 2] | 0; e = f; c[e >> 2] = c[r >> 2]; c[e + 4 >> 2] = g; c[t + (s << 4) + 8 >> 2] = l; e = c[x >> 2] | 0; g = c[e >> 2] | 0; f = g >>> 6 & 255; if (f) { fe(b, (c[w >> 2] | 0) + (f << 4) + -16 | 0); e = c[x >> 2] | 0 } e = e + ((g >>> 14) + -131070 << 2) | 0 } c[x >> 2] = e; e = t; continue b } case 29: { g = k >>> 23; e = k >>> 14 & 511; if (g | 0) c[R >> 2] = f + (g << 4); if (!(Sd(b, f, e + -1 | 0) | 0)) { A = 137; break b } if (e | 0) c[R >> 2] = c[y >> 2]; e = c[w >> 2] | 0; continue b } case 30: { e = k >>> 23; if (e | 0) c[R >> 2] = f + (e << 4); if (!(Sd(b, f, -1) | 0)) { A = 142; break b } e = c[w >> 2] | 0; continue b } case 32: { T = +h[f + 32 >> 3]; o = T + +h[f >> 3]; p = +h[f + 16 >> 3]; if (T > 0.0) { if (!(o <= p)) { e = t; continue b } } else if (!(p <= o)) { e = t; continue b } c[x >> 2] = (c[x >> 2] | 0) + ((k >>> 14) + -131071 << 2); h[f >> 3] = o; c[t + (s << 4) + 8 >> 2] = 3; e = f + 48 | 0; h[e >> 3] = o; c[e + 8 >> 2] = 3; e = t; continue b } case 33: { l = f + 16 | 0; n = f + 32 | 0; m = t + (s << 4) + 8 | 0; e = c[m >> 2] | 0; if ((e | 0) != 3) { if ((e & 15 | 0) != 4) { A = 162; break a } s = c[f >> 2] | 0; if (!(_e(s + 16 | 0, c[s + 12 >> 2] | 0, B) | 0)) { A = 162; break a } h[f >> 3] = +h[B >> 3]; c[m >> 2] = 3 } e = l + 8 | 0; g = c[e >> 2] | 0; if ((g | 0) != 3) { if ((g & 15 | 0) != 4) { A = 167; break a } s = c[l >> 2] | 0; if (!(_e(s + 16 | 0, c[s + 12 >> 2] | 0, B) | 0)) { A = 167; break a } h[l >> 3] = +h[B >> 3]; c[e >> 2] = 3 } e = n + 8 | 0; g = c[e >> 2] | 0; if ((g | 0) != 3) { if ((g & 15 | 0) != 4) { A = 172; break a } s = c[n >> 2] | 0; if (!(_e(s + 16 | 0, c[s + 12 >> 2] | 0, B) | 0)) { A = 172; break a } h[n >> 3] = +h[B >> 3]; c[e >> 2] = 3 } h[f >> 3] = +h[f >> 3] - +h[n >> 3]; c[m >> 2] = 3; c[x >> 2] = (c[x >> 2] | 0) + ((k >>> 14) + -131071 << 2); e = t; continue b } case 34: { e = f + 48 | 0; q = f + 32 | 0; r = e + 32 | 0; n = q; m = c[n + 4 >> 2] | 0; l = r; c[l >> 2] = c[n >> 2]; c[l + 4 >> 2] = m; c[r + 8 >> 2] = c[q + 8 >> 2]; r = f + 16 | 0; q = e + 16 | 0; l = r; m = c[l + 4 >> 2] | 0; n = q; c[n >> 2] = c[l >> 2]; c[n + 4 >> 2] = m; c[q + 8 >> 2] = c[r + 8 >> 2]; q = f; r = c[q + 4 >> 2] | 0; f = e; c[f >> 2] = c[q >> 2]; c[f + 4 >> 2] = r; c[e + 8 >> 2] = c[t + (s << 4) + 8 >> 2]; c[R >> 2] = e + 48; Wd(b, e, k >>> 14 & 511, 1); t = c[w >> 2] | 0; c[R >> 2] = c[y >> 2]; f = c[x >> 2] | 0; c[x >> 2] = f + 4; f = c[f >> 2] | 0; k = f; e = t; f = t + ((f >>> 6 & 255) << 4) | 0; break } case 35: { e = t; break } case 36: { g = k >>> 23; e = k >>> 14 & 511; if (!g) g = ((c[R >> 2] | 0) - f >> 4) + -1 | 0; if (!e) { e = c[x >> 2] | 0; c[x >> 2] = e + 4; e = (c[e >> 2] | 0) >>> 6 } l = c[f >> 2] | 0; e = g + -50 + (e * 50 | 0) | 0; if ((e | 0) > (c[l + 8 >> 2] | 0)) Wf(b, l, e); if ((g | 0) > 0) { k = l + 5 | 0; while (1) { s = f + (g << 4) | 0; Uf(b, l, e, s); e = e + -1 | 0; if ((c[s + 8 >> 2] & 64 | 0 ? a[(c[s >> 2] | 0) + 5 >> 0] & 3 : 0) ? a[k >> 0] & 4 : 0) le(b, l); if ((g | 0) <= 1) break; else g = g + -1 | 0 } } c[R >> 2] = c[y >> 2]; e = t; continue b } case 37: { q = c[(c[(c[z >> 2] | 0) + 16 >> 2] | 0) + (k >>> 14 << 2) >> 2] | 0; r = q + 32 | 0; k = c[r >> 2] | 0; m = c[q + 40 >> 2] | 0; n = c[q + 28 >> 2] | 0; c: do if (!k) A = 199; else { if ((m | 0) > 0) { l = k + 16 | 0; g = 0; do { e = d[n + (g << 3) + 5 >> 0] | 0; if (!(a[n + (g << 3) + 4 >> 0] | 0)) e = c[(c[u + 16 + (e << 2) >> 2] | 0) + 8 >> 2] | 0; else e = t + (e << 4) | 0; if ((c[(c[l + (g << 2) >> 2] | 0) + 8 >> 2] | 0) != (e | 0)) { A = 199; break c } g = g + 1 | 0 } while ((g | 0) < (m | 0)) } c[f >> 2] = k; c[t + (s << 4) + 8 >> 2] = 70 } while (0); if ((A | 0) == 199) { A = 0; l = be(b, m) | 0; c[l + 12 >> 2] = q; c[f >> 2] = l; c[t + (s << 4) + 8 >> 2] = 70; if ((m | 0) > 0) { k = l + 16 | 0; e = 0; do { g = d[n + (e << 3) + 5 >> 0] | 0; if (!(a[n + (e << 3) + 4 >> 0] | 0)) c[k + (e << 2) >> 2] = c[u + 16 + (g << 2) >> 2]; else c[k + (e << 2) >> 2] = de(b, t + (g << 4) | 0) | 0; e = e + 1 | 0 } while ((e | 0) != (m | 0)) } if (a[q + 5 >> 0] & 4) me(b, q, l); c[r >> 2] = l } if ((c[(c[J >> 2] | 0) + 12 >> 2] | 0) > 0) { c[R >> 2] = f + 16; Ee(b); c[R >> 2] = c[y >> 2] } e = c[w >> 2] | 0; continue b } case 38: { r = k >>> 23; e = r + -1 | 0; g = (t - (c[j >> 2] | 0) >> 4) - (d[(c[z >> 2] | 0) + 76 >> 0] | 0) | 0; n = g + -1 | 0; if (!r) { if (((c[L >> 2] | 0) - (c[R >> 2] | 0) >> 4 | 0) < (g | 0)) Td(b, n); e = c[w >> 2] | 0; f = e + (s << 4) | 0; c[R >> 2] = f + (n << 4); m = n } else { m = e; e = t } if ((m | 0) <= 0) continue b; l = e + (1 - g << 4) | 0; g = 0; while (1) { if ((g | 0) < (n | 0)) { k = l + (g << 4) | 0; r = k; s = c[r + 4 >> 2] | 0; t = f + (g << 4) | 0; c[t >> 2] = c[r >> 2]; c[t + 4 >> 2] = s; k = c[k + 8 >> 2] | 0 } else k = 0; c[f + (g << 4) + 8 >> 2] = k; g = g + 1 | 0; if ((g | 0) == (m | 0)) continue b } } default: { e = t; continue b } } while (0); g = c[f + 24 >> 2] | 0; if (!g) continue; r = f + 16 | 0; s = c[r + 4 >> 2] | 0; t = f; c[t >> 2] = c[r >> 2]; c[t + 4 >> 2] = s; c[f + 8 >> 2] = g; c[x >> 2] = (c[x >> 2] | 0) + ((k >>> 14) + -131071 << 2) } if ((A | 0) == 137) { A = 0; j = c[F >> 2] | 0; z = j + 18 | 0; a[z >> 0] = d[z >> 0] | 4; continue } else if ((A | 0) == 142) { A = 0; g = c[F >> 2] | 0; j = c[g + 8 >> 2] | 0; k = c[g >> 2] | 0; l = c[j >> 2] | 0; m = g + 24 | 0; n = (c[m >> 2] | 0) + (d[(c[(c[k >> 2] | 0) + 12 >> 2] | 0) + 76 >> 0] << 4) | 0; if ((c[(c[z >> 2] | 0) + 56 >> 2] | 0) > 0) fe(b, c[j + 24 >> 2] | 0); if (k >>> 0 < n >>> 0) { e = 0; f = k; do { x = f; y = c[x + 4 >> 2] | 0; z = l + (e << 4) | 0; c[z >> 2] = c[x >> 2]; c[z + 4 >> 2] = y; c[l + (e << 4) + 8 >> 2] = c[k + (e << 4) + 8 >> 2]; e = e + 1 | 0; f = k + (e << 4) | 0 } while (f >>> 0 < n >>> 0) } z = k; c[j + 24 >> 2] = l + ((c[m >> 2] | 0) - z >> 4 << 4); z = l + ((c[R >> 2] | 0) - z >> 4 << 4) | 0; c[R >> 2] = z; c[j + 4 >> 2] = z; c[j + 28 >> 2] = c[g + 28 >> 2]; z = j + 18 | 0; a[z >> 0] = d[z >> 0] | 64; c[F >> 2] = j; continue } else if ((A | 0) == 147) { A = 0; e = k >>> 23; if (e | 0) c[R >> 2] = f + (e << 4) + -16; if ((c[(c[z >> 2] | 0) + 56 >> 2] | 0) > 0) fe(b, t); f = Vd(b, f) | 0; if (!(a[j + 18 >> 0] & 4)) { A = 221; break } e = c[F >> 2] | 0; if (!f) { j = e; continue } c[R >> 2] = c[e + 4 >> 2]; j = e; continue } } if ((A | 0) == 22) { if (!r) { Q = e + -4 | 0; c[f >> 2] = Q; Q = a[s >> 0] | 0; Q = Q & 255; Q = Q | 128; Q = Q & 255; a[s >> 0] = Q; Q = c[R >> 2] | 0; Q = Q + -16 | 0; c[t >> 2] = Q; Ld(b, 1) } c[S >> 2] = 1; S = e + -4 | 0; c[f >> 2] = S; S = a[s >> 0] | 0; S = S & 255; S = S | 128; S = S & 255; a[s >> 0] = S; S = c[R >> 2] | 0; S = S + -16 | 0; c[t >> 2] = S; Ld(b, 1) } else if ((A | 0) == 162) Ed(b, 5246, N); else if ((A | 0) == 167) Ed(b, 5283, O); else if ((A | 0) == 172) Ed(b, 5312, P); else if ((A | 0) == 221) { i = Q; return } } function tg(a) { a = a | 0; var b = 0, e = 0, f = 0; f = i; i = i + 16 | 0; b = f; e = Ya[c[a + 8 >> 2] & 31](c[a + 16 >> 2] | 0, c[a + 12 >> 2] | 0, b) | 0; b = c[b >> 2] | 0; if ((e | 0) == 0 | (b | 0) == 0) { e = -1; i = f; return e | 0 } c[a >> 2] = b + -1; c[a + 4 >> 2] = e + 1; e = d[e >> 0] | 0; i = f; return e | 0 } function ug(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; c[b + 16 >> 2] = a; c[b + 8 >> 2] = d; c[b + 12 >> 2] = e; c[b >> 2] = 0; c[b + 4 >> 2] = 0; return } function vg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0; n = i; i = i + 16 | 0; h = n; if (!d) { m = 0; i = n; return m | 0 } j = a + 16 | 0; k = a + 8 | 0; l = a + 12 | 0; m = a + 4 | 0; e = c[a >> 2] | 0; while (1) { if (!e) { f = Ya[c[k >> 2] & 31](c[j >> 2] | 0, c[l >> 2] | 0, h) | 0; e = c[h >> 2] | 0; if ((f | 0) == 0 | (e | 0) == 0) { b = 8; break } c[a >> 2] = e; c[m >> 2] = f; g = f } else g = c[m >> 2] | 0; f = d >>> 0 > e >>> 0 ? e : d; nn(b | 0, g | 0, f | 0) | 0; e = (c[a >> 2] | 0) - f | 0; c[a >> 2] = e; c[m >> 2] = (c[m >> 2] | 0) + f; d = d - f | 0; if (!d) { d = 0; b = 8; break } else b = b + f | 0 } if ((b | 0) == 8) { i = n; return d | 0 } return 0 } function wg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; e = b + 8 | 0; f = c[e >> 2] | 0; if (f >>> 0 >= d >>> 0) { f = c[b >> 2] | 0; return f | 0 } d = d >>> 0 < 32 ? 32 : d; if ((d + 1 | 0) >>> 0 > 4294967293) Te(a); f = Ue(a, c[b >> 2] | 0, f, d) | 0; c[b >> 2] = f; c[e >> 2] = d; return f | 0 } function xg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0; l = i; i = i + 16 | 0; h = c[a + 12 >> 2] | 0; j = a + 4 | 0; e = c[j >> 2] | 0; k = a + 8 | 0; g = c[k >> 2] | 0; if ((e - g | 0) >>> 0 >= d >>> 0) { h = c[a >> 2] | 0; j = g; j = h + j | 0; nn(j | 0, b | 0, d | 0) | 0; j = c[k >> 2] | 0; j = j + d | 0; c[k >> 2] = j; i = l; return } f = e << 1; f = (f - g | 0) >>> 0 < d >>> 0 ? g + d | 0 : f; if (f >>> 0 < g >>> 0 | (f - g | 0) >>> 0 < d >>> 0) Og(h, 5547, l) | 0; e = Ec(h, f) | 0; nn(e | 0, c[a >> 2] | 0, c[k >> 2] | 0) | 0; if ((c[a >> 2] | 0) != (a + 16 | 0)) rb(h, -2); c[a >> 2] = e; c[j >> 2] = f; h = e; j = c[k >> 2] | 0; j = h + j | 0; nn(j | 0, b | 0, d | 0) | 0; j = c[k >> 2] | 0; j = j + d | 0; c[k >> 2] = j; i = l; return } function yg(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0; l = i; i = i + 16 | 0; g = Vl(b) | 0; h = c[a + 12 >> 2] | 0; j = a + 4 | 0; d = c[j >> 2] | 0; k = a + 8 | 0; f = c[k >> 2] | 0; if ((d - f | 0) >>> 0 >= g >>> 0) { h = c[a >> 2] | 0; j = f; j = h + j | 0; nn(j | 0, b | 0, g | 0) | 0; j = c[k >> 2] | 0; j = j + g | 0; c[k >> 2] = j; i = l; return } e = d << 1; e = (e - f | 0) >>> 0 < g >>> 0 ? f + g | 0 : e; if (e >>> 0 < f >>> 0 | (e - f | 0) >>> 0 < g >>> 0) Og(h, 5547, l) | 0; d = Ec(h, e) | 0; nn(d | 0, c[a >> 2] | 0, c[k >> 2] | 0) | 0; if ((c[a >> 2] | 0) != (a + 16 | 0)) rb(h, -2); c[a >> 2] = d; c[j >> 2] = e; h = d; j = c[k >> 2] | 0; j = h + j | 0; nn(j | 0, b | 0, g | 0) | 0; j = c[k >> 2] | 0; j = j + g | 0; c[k >> 2] = j; i = l; return } function zg(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; o = i; i = i + 16 | 0; h = o; b = o + 4 | 0; d = a + 12 | 0; l = c[d >> 2] | 0; m = Jb(l, -1, b) | 0; n = a + 16 | 0; if ((c[a >> 2] | 0) != (n | 0)) sb(l, -2); k = c[b >> 2] | 0; g = c[d >> 2] | 0; f = a + 4 | 0; d = c[f >> 2] | 0; j = a + 8 | 0; b = c[j >> 2] | 0; if ((d - b | 0) >>> 0 < k >>> 0) { e = d << 1; e = (e - b | 0) >>> 0 < k >>> 0 ? b + k | 0 : e; if (e >>> 0 < b >>> 0 | (e - b | 0) >>> 0 < k >>> 0) Og(g, 5547, h) | 0; d = Ec(g, e) | 0; nn(d | 0, c[a >> 2] | 0, c[j >> 2] | 0) | 0; if ((c[a >> 2] | 0) != (n | 0)) rb(g, -2); c[a >> 2] = d; c[f >> 2] = e; b = c[j >> 2] | 0 } else d = c[a >> 2] | 0; nn(d + b | 0, m | 0, k | 0) | 0; c[j >> 2] = (c[j >> 2] | 0) + k; rb(l, (c[a >> 2] | 0) != (n | 0) ? -2 : -1); i = o; return } function Ag(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 128 | 0; h = j + 16 | 0; f = j + 8 | 0; e = j; g = j + 28 | 0; if (!(zd(a, 0, g) | 0)) { c[e >> 2] = b; c[e + 4 >> 2] = d; h = Og(a, 5877, e) | 0; i = j; return h | 0 } xd(a, 9269, g) | 0; if (!(Tl(c[g + 8 >> 2] | 0, 5899) | 0)) { b = b + -1 | 0; if (!b) { c[f >> 2] = c[g + 4 >> 2]; c[f + 4 >> 2] = d; h = Og(a, 5906, f) | 0; i = j; return h | 0 } else f = b } else f = b; e = g + 4 | 0; b = c[e >> 2] | 0; if (!b) { if (!(qh(a, g) | 0)) b = 10032; else b = Jb(a, -1, 0) | 0; c[e >> 2] = b } c[h >> 2] = f; c[h + 4 >> 2] = b; c[h + 8 >> 2] = d; h = Og(a, 5936, h) | 0; i = j; return h | 0 } function Bg(a, b) { a = a | 0; b = b | 0; c[b + 12 >> 2] = a; c[b >> 2] = b + 16; c[b + 8 >> 2] = 0; c[b + 4 >> 2] = 1024; return } function Cg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; c[b + 12 >> 2] = a; f = b + 16 | 0; c[b >> 2] = f; g = b + 8 | 0; c[g >> 2] = 0; h = b + 4 | 0; c[h >> 2] = 1024; if (d >>> 0 <= 1024) { g = f; h = 0; h = g + h | 0; return h | 0 } d = d >>> 0 > 2048 ? d : 2048; e = Ec(a, d) | 0; nn(e | 0, c[b >> 2] | 0, c[g >> 2] | 0) | 0; if ((c[b >> 2] | 0) != (f | 0)) rb(a, -2); c[b >> 2] = e; c[h >> 2] = d; f = e; h = c[g >> 2] | 0; h = f + h | 0; return h | 0 } function Dg(a, b, c) { a = a | 0; b = b | 0; c = c | 0; b = ob(a, b) | 0; if (!(gc(a, b) | 0)) { c = 0; return c | 0 } Ub(a, c) | 0; cc(a, -2); if (!(wb(a, -1) | 0)) { qb(a, -3); c = 0; return c | 0 } else { rb(a, -2); vb(a, b); rc(a, 1, 1, 0, 0); c = 1; return c | 0 } return 0 } function Eg(a, b) { a = a | 0; b = b | 0; if ((wb(a, b) | 0) != -1) return; Ag(a, b, 6135) | 0; return } function Fg(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0; f = i; i = i + 16 | 0; e = f; g = f + 8 | 0; d = Gb(a, b, g) | 0; if (c[g >> 2] | 0) { i = f; return d | 0 } h = xb(a, 3) | 0; g = xb(a, wb(a, b) | 0) | 0; c[e >> 2] = h; c[e + 4 >> 2] = g; Ag(a, b, Wb(a, 5564, e) | 0) | 0; i = f; return d | 0 } function Gg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; f = i; i = i + 16 | 0; e = f; d = Jb(a, b, d) | 0; if (d | 0) { i = f; return d | 0 } h = xb(a, 4) | 0; g = xb(a, wb(a, b) | 0) | 0; c[e >> 2] = h; c[e + 4 >> 2] = g; Ag(a, b, Wb(a, 5564, e) | 0) | 0; i = f; return d | 0 } function Hg(a, b) { a = a | 0; b = b | 0; var d = 0.0, e = 0, f = 0, g = 0, h = 0; f = i; i = i + 16 | 0; e = f; g = f + 8 | 0; d = +Fb(a, b, g); if (c[g >> 2] | 0) { i = f; return +d } h = xb(a, 3) | 0; g = xb(a, wb(a, b) | 0) | 0; c[e >> 2] = h; c[e + 4 >> 2] = g; Ag(a, b, Wb(a, 5564, e) | 0) | 0; i = f; return +d } function Ig(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0; j = i; i = i + 16 | 0; h = j + 8 | 0; f = j; if (!d) { d = Jb(a, b, 0) | 0; if (!d) { d = xb(a, 4) | 0; g = xb(a, wb(a, b) | 0) | 0; c[f >> 2] = d; c[f + 4 >> 2] = g; Ag(a, b, Wb(a, 5564, f) | 0) | 0; g = 0 } else g = d } else g = ah(a, b, d, 0) | 0; f = c[e >> 2] | 0; a: do if (f | 0) { d = 0; while (1) { if (!(Tl(f, g) | 0)) break; d = d + 1 | 0; f = c[e + (d << 2) >> 2] | 0; if (!f) break a } i = j; return d | 0 } while (0); c[h >> 2] = g; h = Ag(a, b, Wb(a, 5857, h) | 0) | 0; i = j; return h | 0 } function Jg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; f = i; i = i + 16 | 0; e = f; if (jb(a, b + 20 | 0) | 0) { i = f; return } if (!d) { Og(a, 7041, f + 8 | 0) | 0; i = f; return } else { c[e >> 2] = d; Og(a, 5479, e) | 0; i = f; return } } function Kg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; f = i; i = i + 16 | 0; e = f; if ((wb(a, b) | 0) == (d | 0)) { i = f; return } g = xb(a, d) | 0; d = xb(a, wb(a, b) | 0) | 0; c[e >> 2] = g; c[e + 4 >> 2] = d; Ag(a, b, Wb(a, 5564, e) | 0) | 0; i = f; return } function Lg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; g = i; i = i + 16 | 0; f = g; e = Mb(a, b) | 0; if ((e | 0 ? gc(a, b) | 0 : 0) ? (bc(a, -1001e3, d), h = (Cb(a, -1, -2) | 0) == 0, qb(a, -3), !h) : 0) { h = e; i = g; return h | 0 } h = xb(a, wb(a, b) | 0) | 0; c[f >> 2] = d; c[f + 4 >> 2] = h; Ag(a, b, Wb(a, 5564, f) | 0) | 0; h = 0; i = g; return h | 0 } function Mg(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0; f = i; i = i + 16 | 0; e = f; g = f + 8 | 0; d = Hb(a, b, g) | 0; if (c[g >> 2] | 0) { i = f; return d | 0 } h = xb(a, 3) | 0; g = xb(a, wb(a, b) | 0) | 0; c[e >> 2] = h; c[e + 4 >> 2] = g; Ag(a, b, Wb(a, 5564, e) | 0) | 0; i = f; return d | 0 } function Ng(a, b) { a = a | 0; b = +b; var c = 0.0, d = 0, e = 0, f = 0, g = 0, j = 0; j = i; i = i + 32 | 0; g = j + 24 | 0; f = j + 8 | 0; e = j; d = nb(a) | 0; if ((d | 0) == (nb(0) | 0)) { c = +h[d >> 3]; if (c != b) { h[f >> 3] = b; h[f + 8 >> 3] = c; Og(a, 5735, f) | 0 } } else Og(a, 5709, e) | 0; Qb(a, -4660.0); if ((Gb(a, -1, 0) | 0) == -4660 ? (Hb(a, -1, 0) | 0) == -4660 : 0) { qb(a, -2); i = j; return } Og(a, 5789, g) | 0; qb(a, -2); i = j; return } function Og(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; f = i; i = i + 128 | 0; h = f; e = f + 24 | 0; f = f + 8 | 0; c[f >> 2] = d; if (zd(a, 1, e) | 0 ? (xd(a, 5340, e) | 0, g = c[e + 20 >> 2] | 0, (g | 0) > 0) : 0) { c[h >> 2] = e + 36; c[h + 4 >> 2] = g; Wb(a, 5343, h) | 0; Vb(a, b, f) | 0; Ac(a, 2); yc(a) | 0 } Tb(a, 15616, 0) | 0; Vb(a, b, f) | 0; Ac(a, 2); yc(a) | 0; return 0 } function Pg(a, b) { a = a | 0; b = b | 0; switch (b | 0) { case -1: { b = c[(_k() | 0) >> 2] | 0; Pb(a); Ub(a, Jl(b) | 0) | 0; Rb(a, b); return 3 } case 0: { Yb(a, 1); break } default: Pb(a) }Ub(a, 8107) | 0; Rb(a, b); return 3 } function Qg(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; g = i; i = i + 16 | 0; f = g; e = c[(_k() | 0) >> 2] | 0; if (b | 0) { Yb(a, 1); f = 1; i = g; return f | 0 } Pb(a); b = Jl(e) | 0; if (!d) Ub(a, b) | 0; else { c[f >> 2] = d; c[f + 4 >> 2] = b; Wb(a, 5702, f) | 0 } Rb(a, e); f = 3; i = g; return f | 0 } function Rg(a, b, c) { a = a | 0; b = b | 0; c = c | 0; if (!(gc(a, b) | 0)) { c = 0; return c | 0 } Ub(a, c) | 0; cc(a, -2); if (!(wb(a, -1) | 0)) { qb(a, -3); c = 0; return c | 0 } else { rb(a, -2); c = 1; return c | 0 } return 0 } function Sg(a, b, c) { a = a | 0; b = b | 0; c = c | 0; bc(a, b, c); if ((wb(a, -1) | 0) == 5) { c = 1; return c | 0 } qb(a, -2); b = ob(a, b) | 0; fc(a, 0, 0); vb(a, -1); kc(a, b, c); c = 0; return c | 0 } function Tg(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0; u = i; i = i + 1072 | 0; o = u + 16 | 0; n = u + 8 | 0; m = u; s = u + 24 | 0; l = Vl(d) | 0; q = s + 12 | 0; c[q >> 2] = a; t = s + 16 | 0; c[s >> 2] = t; r = s + 8 | 0; c[r >> 2] = 0; p = s + 4 | 0; c[p >> 2] = 1024; f = Fm(b, d) | 0; if (!f) { k = b; b = 0; f = 1024; h = a } else { g = b; k = f; b = 0; f = 1024; h = a; do { j = k - g | 0; if ((f - b | 0) >>> 0 < j >>> 0) { f = f << 1; f = (f - b | 0) >>> 0 < j >>> 0 ? b + j | 0 : f; if (f >>> 0 < b >>> 0 | (f - b | 0) >>> 0 < j >>> 0) Og(h, 5547, m) | 0; b = Ec(h, f) | 0; nn(b | 0, c[s >> 2] | 0, c[r >> 2] | 0) | 0; if ((c[s >> 2] | 0) != (t | 0)) rb(h, -2); c[s >> 2] = b; c[p >> 2] = f; f = b; b = c[r >> 2] | 0 } else f = c[s >> 2] | 0; nn(f + b | 0, g | 0, j | 0) | 0; b = (c[r >> 2] | 0) + j | 0; c[r >> 2] = b; h = Vl(e) | 0; g = c[q >> 2] | 0; f = c[p >> 2] | 0; if ((f - b | 0) >>> 0 < h >>> 0) { f = f << 1; f = (f - b | 0) >>> 0 < h >>> 0 ? h + b | 0 : f; if (f >>> 0 < b >>> 0 | (f - b | 0) >>> 0 < h >>> 0) Og(g, 5547, n) | 0; b = Ec(g, f) | 0; nn(b | 0, c[s >> 2] | 0, c[r >> 2] | 0) | 0; if ((c[s >> 2] | 0) != (t | 0)) rb(g, -2); c[s >> 2] = b; c[p >> 2] = f; f = b; b = c[r >> 2] | 0 } else f = c[s >> 2] | 0; nn(f + b | 0, e | 0, h | 0) | 0; b = (c[r >> 2] | 0) + h | 0; c[r >> 2] = b; g = k + l | 0; k = Fm(g, d) | 0; h = c[q >> 2] | 0; f = c[p >> 2] | 0 } while ((k | 0) != 0); k = g } j = Vl(k) | 0; if ((f - b | 0) >>> 0 < j >>> 0) { g = f << 1; g = (g - b | 0) >>> 0 < j >>> 0 ? b + j | 0 : g; if (g >>> 0 < b >>> 0 | (g - b | 0) >>> 0 < j >>> 0) Og(h, 5547, o) | 0; f = Ec(h, g) | 0; nn(f | 0, c[s >> 2] | 0, c[r >> 2] | 0) | 0; if ((c[s >> 2] | 0) != (t | 0)) rb(h, -2); c[s >> 2] = f; c[p >> 2] = g; b = c[r >> 2] | 0 } else f = c[s >> 2] | 0; nn(f + b | 0, k | 0, j | 0) | 0; p = (c[r >> 2] | 0) + j | 0; c[r >> 2] = p; b = c[q >> 2] | 0; Tb(b, c[s >> 2] | 0, p) | 0; if ((c[s >> 2] | 0) == (t | 0)) { t = Jb(a, -1, 0) | 0; i = u; return t | 0 } rb(b, -2); t = Jb(a, -1, 0) | 0; i = u; return t | 0 } function Ug(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0; d = i; i = i + 16 | 0; e = d + 4 | 0; Bc(a, b); b = Gb(a, -1, e) | 0; if (!(c[e >> 2] | 0)) Og(a, 5672, d) | 0; qb(a, -2); i = d; return b | 0 } function Vg(a, b, d, e, f) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0; g = i; i = i + 16 | 0; h = g; c[h >> 2] = b; c[h + 4 >> 2] = d; f = uc(a, 23, h, e, f) | 0; i = g; return f | 0 } function Wg(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; o = i; i = i + 1088 | 0; n = o + 40 | 0; j = o + 24 | 0; g = o + 8 | 0; f = o; l = o + 56 | 0; h = o + 52 | 0; m = (pb(b) | 0) + 1 | 0; if (d) { c[f >> 2] = d; Wb(b, 5641, f) | 0; k = qm(d, 10034) | 0; c[l + 4 >> 2] = k; if (!k) { n = Jl(c[(_k() | 0) >> 2] | 0) | 0; l = (Jb(b, m, 0) | 0) + 1 | 0; c[g >> 2] = 7750; c[g + 4 >> 2] = l; c[g + 8 >> 2] = n; Wb(b, 5645, g) | 0; rb(b, m); n = 7; i = o; return n | 0 } } else { Tb(b, 5634, 6) | 0; c[l + 4 >> 2] = c[480] } if (wh(l, h) | 0) { k = c[l >> 2] | 0; c[l >> 2] = k + 1; a[l + 8 + k >> 0] = 10 } f = c[h >> 2] | 0; k = (d | 0) != 0; do if (k & (f | 0) == 27) { g = l + 4 | 0; d = Ym(d, 5662, c[g >> 2] | 0) | 0; c[g >> 2] = d; if (d | 0) { wh(l, h) | 0; f = c[h >> 2] | 0; break } n = Jl(c[(_k() | 0) >> 2] | 0) | 0; l = (Jb(b, m, 0) | 0) + 1 | 0; c[j >> 2] = 5665; c[j + 4 >> 2] = l; c[j + 8 >> 2] = n; Wb(b, 5645, j) | 0; rb(b, m); n = 7; i = o; return n | 0 } while (0); if ((f | 0) != -1) { j = c[l >> 2] | 0; c[l >> 2] = j + 1; a[l + 8 + j >> 0] = f } d = uc(b, 24, l, Jb(b, -1, 0) | 0, e) | 0; f = c[l + 4 >> 2] | 0; g = ym(f) | 0; if (k) tm(f) | 0; if (!g) { rb(b, m); n = d; i = o; return n | 0 } else { qb(b, m); l = Jl(c[(_k() | 0) >> 2] | 0) | 0; k = (Jb(b, m, 0) | 0) + 1 | 0; c[n >> 2] = 7498; c[n + 4 >> 2] = k; c[n + 8 >> 2] = l; Wb(b, 5645, n) | 0; rb(b, m); n = 7; i = o; return n | 0 } return 0 } function Xg(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0; d = i; i = i + 16 | 0; e = d; f = Vl(b) | 0; c[e >> 2] = b; c[e + 4 >> 2] = f; b = uc(a, 23, e, b, 0) | 0; i = d; return b | 0 } function Yg(a, b) { a = a | 0; b = b | 0; bc(a, -1001e3, b); if (wb(a, -1) | 0) { b = 0; return b | 0 } qb(a, -2); fc(a, 0, 0); vb(a, -1); kc(a, -1001e3, b); b = 1; return b | 0 } function Zg() { var a = 0; a = Af(18, 0) | 0; if (!a) return a | 0; mb(a, 159) | 0; return a | 0 } function _g(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0; Ng(a, 502.0); if (b | 0) { if ((d | 0) != 0 ? (c[d >> 2] | 0) != 0 : 0) { g = d; f = 0; do { f = f + 1 | 0; g = g + 8 | 0 } while ((c[g >> 2] | 0) != 0) } else f = 0; eh(a, b, f); sb(a, ~e) } if (!d) { qb(a, ~e); return } else { jh(a, d, e); return } } function $g(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; g = i; i = i + 16 | 0; f = g; e = g + 8 | 0; if ((wb(a, b) | 0) < 1) { f = d; i = g; return f | 0 } d = Gb(a, b, e) | 0; if (!(c[e >> 2] | 0)) { h = xb(a, 3) | 0; e = xb(a, wb(a, b) | 0) | 0; c[f >> 2] = h; c[f + 4 >> 2] = e; Ag(a, b, Wb(a, 5564, f) | 0) | 0 } h = d; i = g; return h | 0 } function ah(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0; h = i; i = i + 16 | 0; g = h; if ((wb(a, b) | 0) >= 1) { f = Jb(a, b, e) | 0; if (f | 0) { g = f; i = h; return g | 0 } d = xb(a, 4) | 0; e = xb(a, wb(a, b) | 0) | 0; c[g >> 2] = d; c[g + 4 >> 2] = e; Ag(a, b, Wb(a, 5564, g) | 0) | 0; g = 0; i = h; return g | 0 } if (!e) { g = d; i = h; return g | 0 } if (!d) f = 0; else f = Vl(d) | 0; c[e >> 2] = f; g = d; i = h; return g | 0 } function bh(a, b, d) { a = a | 0; b = b | 0; d = +d; var e = 0, f = 0, g = 0, h = 0; g = i; i = i + 16 | 0; f = g; e = g + 8 | 0; if ((wb(a, b) | 0) < 1) { i = g; return +d } d = +Fb(a, b, e); if (!(c[e >> 2] | 0)) { h = xb(a, 3) | 0; e = xb(a, wb(a, b) | 0) | 0; c[f >> 2] = h; c[f + 4 >> 2] = e; Ag(a, b, Wb(a, 5564, f) | 0) | 0 } i = g; return +d } function ch(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; g = i; i = i + 16 | 0; f = g; e = g + 8 | 0; if ((wb(a, b) | 0) < 1) { f = d; i = g; return f | 0 } d = Hb(a, b, e) | 0; if (!(c[e >> 2] | 0)) { h = xb(a, 3) | 0; e = xb(a, wb(a, b) | 0) | 0; c[f >> 2] = h; c[f + 4 >> 2] = e; Ag(a, b, Wb(a, 5564, f) | 0) | 0 } h = d; i = g; return h | 0 } function dh(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0; k = i; i = i + 16 | 0; g = c[a + 12 >> 2] | 0; h = a + 4 | 0; d = c[h >> 2] | 0; j = a + 8 | 0; f = c[j >> 2] | 0; if ((d - f | 0) >>> 0 >= b >>> 0) { h = c[a >> 2] | 0; j = f; j = h + j | 0; i = k; return j | 0 } e = d << 1; e = (e - f | 0) >>> 0 < b >>> 0 ? f + b | 0 : e; if (e >>> 0 < f >>> 0 | (e - f | 0) >>> 0 < b >>> 0) Og(g, 5547, k) | 0; d = Ec(g, e) | 0; nn(d | 0, c[a >> 2] | 0, c[j >> 2] | 0) | 0; if ((c[a >> 2] | 0) != (a + 16 | 0)) rb(g, -2); c[a >> 2] = d; c[h >> 2] = e; h = d; j = c[j >> 2] | 0; j = h + j | 0; i = k; return j | 0 } function eh(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; f = i; i = i + 16 | 0; e = f; sh(a, -1001e3, 9674, 1) | 0; bc(a, -1, b); if ((wb(a, -1) | 0) == 5) { rb(a, -2); i = f; return } qb(a, -2); dc(a, -1001e3, 2); if (sh(a, 0, b, d) | 0) { c[e >> 2] = b; Og(a, 5517, e) | 0 } vb(a, -1); kc(a, -3, b); rb(a, -2); i = f; return } function fh(a) { a = a | 0; var b = 0; b = c[a + 12 >> 2] | 0; Tb(b, c[a >> 2] | 0, c[a + 8 >> 2] | 0) | 0; if ((c[a >> 2] | 0) == (a + 16 | 0)) return; rb(b, -2); return } function gh(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0; e = a + 8 | 0; d = (c[e >> 2] | 0) + b | 0; c[e >> 2] = d; b = c[a + 12 >> 2] | 0; Tb(b, c[a >> 2] | 0, d) | 0; if ((c[a >> 2] | 0) == (a + 16 | 0)) return; rb(b, -2); return } function hh(a, b) { a = a | 0; b = b | 0; var c = 0; if (!(wb(a, -1) | 0)) { qb(a, -2); a = -1; return a | 0 } c = ob(a, b) | 0; dc(a, c, 0); b = Gb(a, -1, 0) | 0; qb(a, -2); if (!b) b = (Kb(a, c) | 0) + 1 | 0; else { dc(a, c, b); mc(a, c, 0) } mc(a, c, b); a = b; return a | 0 } function ih(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; Xb(a, c, 0); Ub(a, b) | 0; rc(a, 1, 1, 0, 0); Sg(a, -1001e3, 9674) | 0; vb(a, -2); kc(a, -2, b); qb(a, -2); if (!d) return; vb(a, -1); ic(a, b); return } function jh(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; h = i; i = i + 16 | 0; e = h; Ng(a, 502.0); if (!(jb(a, d + 20 | 0) | 0)) { c[e >> 2] = 5499; Og(a, 5479, e) | 0 } if (!(c[b >> 2] | 0)) { d = ~d; qb(a, d); i = h; return } g = -2 - d | 0; f = 0 - d | 0; if ((d | 0) <= 0) { do { Xb(a, c[b + 4 >> 2] | 0, d); kc(a, g, c[b >> 2] | 0); b = b + 8 | 0 } while ((c[b >> 2] | 0) != 0); d = ~d; qb(a, d); i = h; return } do { e = 0; do { vb(a, f); e = e + 1 | 0 } while ((e | 0) != (d | 0)); Xb(a, c[b + 4 >> 2] | 0, d); kc(a, g, c[b >> 2] | 0); b = b + 8 | 0 } while ((c[b >> 2] | 0) != 0); d = ~d; qb(a, d); i = h; return } function kh(a, b) { a = a | 0; b = b | 0; bc(a, -1001e3, b); oc(a, -2) | 0; return } function lh(a, b, c) { a = a | 0; b = b | 0; c = c | 0; var d = 0; d = Mb(a, b) | 0; if (!d) { d = 0; return d | 0 } if (!(gc(a, b) | 0)) { d = 0; return d | 0 } bc(a, -1001e3, c); c = (Cb(a, -1, -2) | 0) == 0; qb(a, -3); d = c ? 0 : d; return d | 0 } function mh(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; f = i; i = i + 16 | 0; e = f; a: do if (!(Dg(a, b, 7522) | 0)) switch (wb(a, b) | 0) { case 4: case 3: { vb(a, b); break a } case 1: { e = (Ib(a, b) | 0) != 0; Ub(a, e ? 5457 : 5462) | 0; break a } case 0: { Tb(a, 5468, 3) | 0; break a } default: { g = xb(a, wb(a, b) | 0) | 0; b = Ob(a, b) | 0; c[e >> 2] = g; c[e + 4 >> 2] = b; Wb(a, 5472, e) | 0; break a } } while (0); g = Jb(a, -1, d) | 0; i = f; return g | 0 } + function nh(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0; y = i; i = i + 256 | 0; v = y + 40 | 0; u = y + 32 | 0; x = y + 24 | 0; w = y + 16 | 0; t = y + 8 | 0; k = y; j = y + 148 | 0; r = y + 48 | 0; s = pb(b) | 0; h = 1; g = 1; while (1) if (!(zd(d, g, j) | 0)) break; else { h = g; g = g << 1 } if ((h | 0) < (g | 0)) do { q = (g + h | 0) / 2 | 0; p = (zd(d, q, j) | 0) == 0; g = p ? q : g; h = p ? h : q + 1 | 0 } while ((h | 0) < (g | 0)); q = (g + -1 | 0) > 22 ? 12 : 0; if (e | 0) { c[k >> 2] = e; Wb(b, 7402, k) | 0 } Tb(b, 5351, 16) | 0; if (!(zd(d, f, r) | 0)) { x = pb(b) | 0; x = x - s | 0; Ac(b, x); i = y; return } j = g + -11 | 0; e = r + 36 | 0; k = r + 20 | 0; l = r + 8 | 0; m = r + 12 | 0; n = r + 24 | 0; o = r + 35 | 0; p = r + 4 | 0; g = f; do { g = g + 1 | 0; if ((g | 0) == (q | 0)) { Tb(b, 5368, 5) | 0; g = j } else { xd(d, 5374, r) | 0; c[t >> 2] = e; Wb(b, 5379, t) | 0; h = c[k >> 2] | 0; if ((h | 0) > 0) { c[w >> 2] = h; Wb(b, 5385, w) | 0 } Tb(b, 5389, 4) | 0; a: do if (!(a[c[l >> 2] >> 0] | 0)) switch (a[c[m >> 2] >> 0] | 0) { case 109: { Tb(b, 5408, 10) | 0; break a } case 67: if (!(qh(b, r) | 0)) { Tb(b, 10032, 1) | 0; break a } else { c[u >> 2] = Jb(b, -1, 0) | 0; Wb(b, 5394, u) | 0; rb(b, -2); break a } default: { f = c[n >> 2] | 0; c[v >> 2] = e; c[v + 4 >> 2] = f; Wb(b, 5419, v) | 0; break a } } else { c[x >> 2] = c[p >> 2]; Wb(b, 5394, x) | 0 } while (0); if (a[o >> 0] | 0) Tb(b, 5436, 20) | 0; Ac(b, (pb(b) | 0) - s | 0) } } while ((zd(d, g, r) | 0) != 0); x = pb(b) | 0; x = x - s | 0; Ac(b, x); i = y; return } function oh(a, b, c) { a = a | 0; b = b | 0; c = c | 0; if ((c | 0) <= -1) return; b = ob(a, b) | 0; dc(a, b, 0); mc(a, b, c); Rb(a, c); mc(a, b, 0); return } function ph(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0; g = i; i = i + 112 | 0; f = g; d = g + 8 | 0; if (zd(a, b, d) | 0 ? (xd(a, 5340, d) | 0, e = c[d + 20 >> 2] | 0, (e | 0) > 0) : 0) { c[f >> 2] = d + 36; c[f + 4 >> 2] = e; Wb(a, 5343, f) | 0; i = g; return } Tb(a, 15616, 0) | 0; i = g; return } function qh(a, b) { a = a | 0; b = b | 0; var c = 0; c = pb(a) | 0; xd(a, 9791, b) | 0; dc(a, -1001e3, 2); b = c + 1 | 0; if (!(rh(a, b, 2) | 0)) { qb(a, c); c = 0; return c | 0 } else { ub(a, -1, b); qb(a, -3); c = 1; return c | 0 } return 0 } function rh(a, b, c) { a = a | 0; b = b | 0; c = c | 0; if (!c) { a = 0; return a | 0 } if ((wb(a, -1) | 0) != 5) { a = 0; return a | 0 } Pb(a); if (!(zc(a, -2) | 0)) { a = 0; return a | 0 } c = c + -1 | 0; while (1) { if ((wb(a, -2) | 0) == 4) { if (Cb(a, b, -1) | 0) { b = 7; break } if (rh(a, b, c) | 0) { b = 9; break } } qb(a, -2); if (!(zc(a, -2) | 0)) { c = 0; b = 11; break } } if ((b | 0) == 7) { qb(a, -2); a = 1; return a | 0 } else if ((b | 0) == 9) { rb(a, -2); Tb(a, 12624, 1) | 0; sb(a, -2); Ac(a, 3); a = 1; return a | 0 } else if ((b | 0) == 11) return c | 0; return 0 } function sh(b, c, d, e) { b = b | 0; c = c | 0; d = d | 0; e = e | 0; var f = 0, g = 0; if (c) vb(b, c); while (1) { c = pm(d, 46) | 0; if (!c) c = d + (Vl(d) | 0) | 0; f = c - d | 0; Tb(b, d, f) | 0; cc(b, -2); if (wb(b, -1) | 0) { if ((wb(b, -1) | 0) != 5) break } else { qb(b, -2); fc(b, 0, (a[c >> 0] | 0) == 46 ? 1 : e); Tb(b, d, f) | 0; vb(b, -2); jc(b, -4) } rb(b, -2); if ((a[c >> 0] | 0) == 46) d = c + 1 | 0; else { c = 0; g = 10; break } } if ((g | 0) == 10) return c | 0; qb(b, -3); g = d; return g | 0 } function th(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; if (!d) { an(b); a = 0 } else a = bn(b, d) | 0; return a | 0 } function uh(a) { a = a | 0; var b = 0, d = 0, e = 0; b = i; i = i + 16 | 0; e = b; d = c[539] | 0; c[e >> 2] = Jb(a, -1, 0) | 0; Cm(d, 5584, e) | 0; um(d) | 0; i = b; return 0 } function vh(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0; a = b + 4 | 0; e = c[a >> 2] | 0; if (!e) { d = 0; return d | 0 } c[d >> 2] = e; c[a >> 2] = 0; d = c[b >> 2] | 0; return d | 0 } function wh(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; c[b >> 2] = 0; f = b + 4 | 0; e = Om(c[f >> 2] | 0) | 0; a: do switch (e | 0) { case -1: { g = 5; break } case 239: { e = c[b >> 2] | 0; c[b >> 2] = e + 1; a[b + 8 + e >> 0] = -17; e = Om(c[f >> 2] | 0) | 0; switch (e | 0) { case -1: { g = 5; break a } case 187: break; default: break a }e = c[b >> 2] | 0; c[b >> 2] = e + 1; a[b + 8 + e >> 0] = -69; e = Om(c[f >> 2] | 0) | 0; switch (e | 0) { case -1: { g = 5; break a } case 191: break; default: break a }a[(c[b >> 2] | 0) + (b + 8) >> 0] = -65; c[b >> 2] = 0; e = Om(c[f >> 2] | 0) | 0; break } default: { } } while (0); if ((g | 0) == 5) { c[d >> 2] = -1; g = 0; return g | 0 } c[d >> 2] = e; if ((e | 0) != 35) { g = 0; return g | 0 } b: while (1) switch (Om(c[f >> 2] | 0) | 0) { case 10: case -1: break b; default: { } }c[d >> 2] = Om(c[f >> 2] | 0) | 0; g = 1; return g | 0 } function xh(a, b, d) { a = a | 0; b = b | 0; d = d | 0; a = c[b >> 2] | 0; if ((a | 0) > 0) { c[d >> 2] = a; c[b >> 2] = 0; d = b + 8 | 0; return d | 0 } a = b + 4 | 0; if (xm(c[a >> 2] | 0) | 0) { d = 0; return d | 0 } b = b + 8 | 0; c[d >> 2] = Km(b, 1, 1024, c[a >> 2] | 0) | 0; d = b; return d | 0 } function yh(a) { a = a | 0; dc(a, -1001e3, 2); dc(a, -1001e3, 2); kc(a, -2, 10130); jh(a, 264, 0); Tb(a, 5966, 7) | 0; kc(a, -2, 5974); return 1 } function zh(a) { a = a | 0; var b = 0, d = 0; d = i; i = i + 16 | 0; b = d; if (!(Ib(a, 1) | 0)) { c[b >> 2] = ah(a, 2, 6494, 0) | 0; b = Og(a, 7741, b) | 0; i = d; return b | 0 } else { b = pb(a) | 0; i = d; return b | 0 } return 0 } function Ah(a) { a = a | 0; var b = 0, d = 0; d = c[504 + ((Ig(a, 1, 6401, 456) | 0) << 2) >> 2] | 0; b = xc(a, d, $g(a, 2, 0) | 0) | 0; switch (d | 0) { case 3: { d = xc(a, 4, 0) | 0; Qb(a, +(b | 0) + +(d | 0) * .0009765625); Rb(a, d); d = 2; return d | 0 } case 9: case 5: { Yb(a, b); d = 1; return d | 0 } default: { Rb(a, b); d = 1; return d | 0 } }return 0 } function Bh(a) { a = a | 0; var b = 0; b = ah(a, 1, 0, 0) | 0; qb(a, 1); if (!(Wg(a, b, 0) | 0)) { rc(a, 0, -1, 0, 160); return (pb(a) | 0) + -1 | 0 } else yc(a) | 0; return 0 } function Ch(a) { a = a | 0; var b = 0; b = $g(a, 2, 1) | 0; qb(a, 1); if (!((b | 0) > 0 & (Ab(a, 1) | 0) != 0)) yc(a) | 0; ph(a, b); vb(a, 1); Ac(a, 2); yc(a) | 0; return 0 } function Dh(a) { a = a | 0; Eg(a, 1); if (!(gc(a, 1) | 0)) { Pb(a); return 1 } else { Rg(a, 1, 6175) | 0; return 1 } return 0 } function Eh(a) { a = a | 0; Xh(a, 6392, 1, 161); return 3 } function Fh(a) { a = a | 0; var b = 0, c = 0, d = 0; d = ah(a, 1, 0, 0) | 0; c = ah(a, 2, 0, 0) | 0; b = (wb(a, 3) | 0) != -1; if (Wg(a, d, c) | 0) { Pb(a); sb(a, -2); d = 2; return d | 0 } if (!b) { d = 1; return d | 0 } vb(a, b ? 3 : 0); if (Gc(a, -2, 1) | 0) { d = 1; return d | 0 } qb(a, -2); d = 1; return d | 0 } function Gh(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0; g = i; i = i + 16 | 0; b = g; d = Jb(a, 1, b) | 0; e = ah(a, 3, 6318, 0) | 0; f = (wb(a, 4) | 0) != -1; if (!d) { b = ah(a, 2, 6321, 0) | 0; Kg(a, 1, 6); qb(a, 5); b = uc(a, 25, 0, b, e) | 0 } else { h = ah(a, 2, d, 0) | 0; b = Vg(a, d, c[b >> 2] | 0, h, e) | 0 } if (b | 0) { Pb(a); sb(a, -2); h = 2; i = g; return h | 0 } if (!f) { h = 1; i = g; return h | 0 } vb(a, f ? 4 : 0); if (Gc(a, -2, 1) | 0) { h = 1; i = g; return h | 0 } qb(a, -2); h = 1; i = g; return h | 0 } function Hh(a) { a = a | 0; Kg(a, 1, 5); qb(a, 2); if (zc(a, 1) | 0) { a = 2; return a | 0 } Pb(a); a = 1; return a | 0 } function Ih(a) { a = a | 0; Xh(a, 6310, 0, 26); return 3 } function Jh(a) { a = a | 0; Eg(a, 1); Pb(a); sb(a, 1); return Wh(a, (sc(a, (pb(a) | 0) + -2 | 0, -1, 0, 0, 162) | 0) == 0 & 1) | 0 } function Kh(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 16 | 0; h = j; e = j + 4 | 0; f = pb(a) | 0; $b(a, 6119); a: do if ((f | 0) < 1) b = c[509] | 0; else { b = c[509] | 0; d = 1; while (1) { vb(a, -1); vb(a, d); rc(a, 1, 1, 0, 0); g = Jb(a, -1, e) | 0; if (!g) break; if ((d | 0) > 1) Nm(9, b) | 0; Mm(g, 1, c[e >> 2] | 0, b) | 0; qb(a, -2); if ((d | 0) < (f | 0)) d = d + 1 | 0; else break a } h = Og(a, 6267, h) | 0; i = j; return h | 0 } while (0); Nm(10, b) | 0; um(b) | 0; h = 0; i = j; return h | 0 } function Lh(a) { a = a | 0; Eg(a, 1); Eg(a, 2); Yb(a, Cb(a, 1, 2) | 0); return 1 } function Mh(a) { a = a | 0; if ((wb(a, 1) | 0 | 1 | 0) != 5) Ag(a, 1, 6242) | 0; Rb(a, Kb(a, 1) | 0); return 1 } function Nh(a) { a = a | 0; Kg(a, 1, 5); Eg(a, 2); qb(a, 2); cc(a, 1); return 1 } function Oh(a) { a = a | 0; Kg(a, 1, 5); Eg(a, 2); Eg(a, 3); qb(a, 3); lc(a, 1); return 1 } function Ph(b) { b = b | 0; var c = 0, d = 0; d = pb(b) | 0; if ((wb(b, 1) | 0) == 4 ? (a[(Jb(b, 1, 0) | 0) >> 0] | 0) == 35 : 0) { Rb(b, d + -1 | 0); d = 1; return d | 0 } c = Fg(b, 1) | 0; c = (c | 0) < 0 ? c + d | 0 : (c | 0) > (d | 0) ? d : c; if ((c | 0) <= 0) Ag(b, 1, 6223) | 0; d = d - c | 0; return d | 0 } function Qh(a) { a = a | 0; var b = 0, c = 0, d = 0; c = i; i = i + 16 | 0; b = c; d = wb(a, 2) | 0; Kg(a, 1, 5); switch (d | 0) { case 0: case 5: break; default: Ag(a, 2, 7e3) | 0 }if (!(Rg(a, 1, 6175) | 0)) { qb(a, 2); oc(a, 1) | 0; d = 1; i = c; return d | 0 } else { d = Og(a, 6187, b) | 0; i = c; return d | 0 } return 0 } function Rh(b) { b = b | 0; var d = 0.0, e = 0, f = 0, g = 0, h = 0.0, j = 0, k = 0, l = 0, m = 0; m = i; i = i + 16 | 0; e = m; do if ((wb(b, 2) | 0) >= 1) { f = Gg(b, 1, e) | 0; l = f + (c[e >> 2] | 0) | 0; j = Fg(b, 2) | 0; if ((j + -2 | 0) >>> 0 >= 35) Ag(b, 2, 6150) | 0; e = f + (km(f, 6168) | 0) | 0; switch (a[e >> 0] | 0) { case 45: { k = 1; e = e + 1 | 0; break } case 43: { k = 0; e = e + 1 | 0; break } default: k = 0 }f = a[e >> 0] | 0; if (vl(f & 255) | 0) { h = +(j | 0); d = 0.0; do { g = f & 255; if ((g + -48 | 0) >>> 0 < 10) f = (f << 24 >> 24) + -48 | 0; else f = (Ql(g) | 0) + -55 | 0; if ((f | 0) >= (j | 0)) break; d = h * d + +(f | 0); e = e + 1 | 0; f = a[e >> 0] | 0 } while ((vl(f & 255) | 0) != 0); if ((e + (km(e, 6168) | 0) | 0) == (l | 0)) { Qb(b, k | 0 ? -d : d); i = m; return 1 } } } else { d = +Fb(b, 1, e); if (!(c[e >> 2] | 0)) { Eg(b, 1); break } Qb(b, d); i = m; return 1 } while (0); Pb(b); i = m; return 1 } function Sh(a) { a = a | 0; Eg(a, 1); mh(a, 1, 0) | 0; return 1 } function Th(a) { a = a | 0; Eg(a, 1); Ub(a, xb(a, wb(a, 1) | 0) | 0) | 0; return 1 } function Uh(a) { a = a | 0; var b = 0; b = pb(a) | 0; if ((b | 0) <= 1) Ag(a, 2, 6135) | 0; vb(a, 1); ub(a, 2, 1); tb(a, 2); return Wh(a, (sc(a, b + -2 | 0, -1, 1, 0, 162) | 0) == 0 & 1) | 0 } function Vh(a) { a = a | 0; return Wh(a, (qc(a, 0) | 0) == 1 & 1) | 0 } function Wh(a, b) { a = a | 0; b = b | 0; if (!(jb(a, 1) | 0)) { qb(a, 0); Yb(a, 0); Ub(a, 7041) | 0; b = 2; return b | 0 } else { Yb(a, b); tb(a, 1); b = pb(a) | 0; return b | 0 } return 0 } function Xh(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; if (Rg(a, 1, b) | 0) { vb(a, 1); rc(a, 1, 3, 0, 0); return } Kg(a, 1, 5); Xb(a, d, 0); vb(a, 1); if (!c) { Pb(a); return } else { Rb(a, 0); return } } function Yh(a, b, d) { a = a | 0; b = b | 0; d = d | 0; b = i; i = i + 16 | 0; Jg(a, 2, 6329); vb(a, 1); rc(a, 0, 1, 0, 0); if (!(wb(a, -1) | 0)) { qb(a, -2); c[d >> 2] = 0; d = 0; i = b; return d | 0 } if (!(Ab(a, -1) | 0)) Og(a, 6355, b) | 0; tb(a, 5); d = Jb(a, 5, d) | 0; i = b; return d | 0 } function Zh(a) { a = a | 0; var b = 0; b = Fg(a, 2) | 0; Kg(a, 1, 5); b = b + 1 | 0; Rb(a, b); dc(a, 1, b); a = (wb(a, -1) | 0) == 0; return (a ? 1 : 2) | 0 } function _h(a) { a = a | 0; return (pb(a) | 0) + -1 | 0 } function $h(a) { a = a | 0; fc(a, 0, 12); jh(a, 548, 0); return 1 } function ai(a) { a = a | 0; var b = 0, c = 0; b = Mg(a, 1) | 0; c = Fg(a, 2) | 0; if ((b | 0) < 0 & (c | 0) > -1) { Sb(a, (c | 0) > 31 ? -1 : b >>> c | ~(-1 >>> c)); return 1 } if ((c | 0) > 0) b = (c | 0) > 31 ? 0 : b >>> c; else b = (c | 0) < -31 ? 0 : b << 0 - c; Sb(a, b); return 1 } function bi(a) { a = a | 0; var b = 0, c = 0, d = 0; d = pb(a) | 0; if ((d | 0) < 1) b = -1; else { c = 1; b = -1; while (1) { b = (Mg(a, c) | 0) & b; if ((c | 0) == (d | 0)) break; else c = c + 1 | 0 } } Sb(a, b); return 1 } function ci(a) { a = a | 0; Sb(a, ~(Mg(a, 1) | 0)); return 1 } function di(a) { a = a | 0; var b = 0, c = 0, d = 0; d = pb(a) | 0; if ((d | 0) < 1) b = 0; else { c = 1; b = 0; while (1) { b = Mg(a, c) | 0 | b; if ((c | 0) == (d | 0)) break; else c = c + 1 | 0 } } Sb(a, b); return 1 } function ei(a) { a = a | 0; var b = 0, c = 0, d = 0; d = pb(a) | 0; if ((d | 0) < 1) b = 0; else { c = 1; b = 0; while (1) { b = (Mg(a, c) | 0) ^ b; if ((c | 0) == (d | 0)) break; else c = c + 1 | 0 } } Sb(a, b); return 1 } function fi(a) { a = a | 0; var b = 0, c = 0, d = 0; d = pb(a) | 0; if ((d | 0) < 1) b = 1; else { b = 1; c = -1; while (1) { c = (Mg(a, b) | 0) & c; if ((b | 0) == (d | 0)) break; else b = b + 1 | 0 } b = (c | 0) != 0 } Yb(a, b & 1); return 1 } function gi(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0; e = i; i = i + 16 | 0; b = Mg(a, 1) | 0; c = Fg(a, 2) | 0; d = $g(a, 3, 1) | 0; if ((c | 0) <= -1) Ag(a, 2, 6591) | 0; if ((d | 0) <= 0) Ag(a, 3, 6616) | 0; if ((d + c | 0) > 32) Og(a, 6639, e) | 0; Sb(a, b >>> c & ~(-2 << d + -1)); i = e; return 1 } function hi(a) { a = a | 0; var b = 0, c = 0; b = Fg(a, 2) | 0; c = Mg(a, 1) | 0; b = b & 31; Sb(a, (b | 0) == 0 ? c : c >>> (32 - b | 0) | c << b); return 1 } function ii(a) { a = a | 0; var b = 0, c = 0; b = Mg(a, 1) | 0; c = Fg(a, 2) | 0; if ((c | 0) < 0) { c = (c | 0) < -31 ? 0 : b >>> (0 - c | 0); Sb(a, c); return 1 } else { c = (c | 0) > 31 ? 0 : b << c; Sb(a, c); return 1 } return 0 } function ji(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0, f = 0; f = i; i = i + 16 | 0; b = Mg(a, 1) | 0; c = Mg(a, 2) | 0; d = Fg(a, 3) | 0; e = $g(a, 4, 1) | 0; if ((d | 0) <= -1) Ag(a, 3, 6591) | 0; if ((e | 0) <= 0) Ag(a, 4, 6616) | 0; if ((e + d | 0) > 32) Og(a, 6639, f) | 0; e = ~(-2 << e + -1); Sb(a, b & ~(e << d) | (c & e) << d); i = f; return 1 } function ki(a) { a = a | 0; var b = 0, c = 0; b = 0 - (Fg(a, 2) | 0) | 0; c = Mg(a, 1) | 0; b = b & 31; Sb(a, (b | 0) == 0 ? c : c >>> (32 - b | 0) | c << b); return 1 } function li(a) { a = a | 0; var b = 0, c = 0; b = Mg(a, 1) | 0; c = Fg(a, 2) | 0; if ((c | 0) > 0) { c = (c | 0) > 31 ? 0 : b >>> c; Sb(a, c); return 1 } else { c = (c | 0) < -31 ? 0 : b << 0 - c; Sb(a, c); return 1 } return 0 } function mi(a) { a = a | 0; fc(a, 0, 6); jh(a, 652, 0); return 1 } function ni(a) { a = a | 0; var b = 0; Kg(a, 1, 6); b = Bf(a) | 0; vb(a, 1); lb(a, b, 1); return 1 } function oi(a) { a = a | 0; var b = 0; b = Nb(a, 1) | 0; if (!b) Ag(a, 1, 6799) | 0; b = ui(a, b, (pb(a) | 0) + -1 | 0) | 0; if ((b | 0) < 0) { Yb(a, 0); sb(a, -2); a = 2; return a | 0 } else { Yb(a, 1); sb(a, ~b); a = b + 1 | 0; return a | 0 } return 0 } function pi(a) { a = a | 0; Yb(a, _b(a) | 0); return 2 } function qi(a) { a = a | 0; var b = 0, c = 0; c = i; i = i + 112 | 0; b = Nb(a, 1) | 0; if (!b) Ag(a, 1, 6799) | 0; if ((b | 0) == (a | 0)) { Tb(a, 6688, 7) | 0; i = c; return 1 } switch (wc(b) | 0) { case 1: { Tb(a, 6818, 9) | 0; i = c; return 1 } case 0: { do if ((zd(b, 0, c) | 0) <= 0) if (!(pb(b) | 0)) { Tb(a, 6835, 4) | 0; break } else { Tb(a, 6818, 9) | 0; break } else Tb(a, 6828, 6) | 0; while (0); i = c; return 1 } default: { Tb(a, 6835, 4) | 0; i = c; return 1 } }return 0 } function ri(a) { a = a | 0; var b = 0; Kg(a, 1, 6); b = Bf(a) | 0; vb(a, 1); lb(a, b, 1); Xb(a, 163, 1); return 1 } function si(a) { a = a | 0; return Kd(a, pb(a) | 0, 0, 0) | 0 } function ti(a) { a = a | 0; var b = 0; b = Nb(a, -1001001) | 0; b = ui(a, b, pb(a) | 0) | 0; if ((b | 0) >= 0) return b | 0; if (!(Ab(a, -1) | 0)) yc(a) | 0; ph(a, 1); sb(a, -2); Ac(a, 2); yc(a) | 0; return 0 } function ui(a, b, c) { a = a | 0; b = b | 0; c = c | 0; if (!(jb(b, c) | 0)) { Tb(a, 6714, 28) | 0; b = -1; return b | 0 } if ((wc(b) | 0) == 0 ? (pb(b) | 0) == 0 : 0) { Tb(a, 6743, 28) | 0; b = -1; return b | 0 } lb(a, b, c); if ((Jd(b, a, c) | 0 | 1 | 0) != 1) { lb(b, a, 1); b = -1; return b | 0 } c = pb(b) | 0; if (!(jb(a, c + 1 | 0) | 0)) { qb(b, ~c); Tb(a, 6772, 26) | 0; b = -1; return b | 0 } else { lb(b, a, c); b = c; return b | 0 } return 0 } function vi(a) { a = a | 0; fc(a, 0, 16); jh(a, 708, 0); return 1 } function wi(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0; g = i; i = i + 256 | 0; f = g; b = g + 4 | 0; d = c[539] | 0; Mm(7367, 11, 1, d) | 0; um(d) | 0; e = c[480] | 0; if (!(wm(b, 250, e) | 0)) { i = g; return 0 } while (1) { if (!(Tl(b, 7379) | 0)) { a = 7; break } if (!((Vg(a, b, Vl(b) | 0, 7385, 0) | 0) == 0 ? !(sc(a, 0, 0, 0, 0, 0) | 0) : 0)) { c[f >> 2] = Jb(a, -1, 0) | 0; Cm(d, 7402, f) | 0; um(d) | 0 } qb(a, 0); Mm(7367, 11, 1, d) | 0; um(d) | 0; if (!(wm(b, 250, e) | 0)) { a = 7; break } } if ((a | 0) == 7) { i = g; return 0 } return 0 } function xi(a) { a = a | 0; if ((wb(a, 1) | 0) == 7) { hc(a, 1); return 1 } else { Pb(a); return 1 } return 0 } function yi(b) { b = b | 0; var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0; g = i; i = i + 16 | 0; c = g; e = g + 4 | 0; if ((wb(b, 1) | 0) == 8) d = Nb(b, 1) | 0; else d = b; f = wd(d) | 0; h = ud(d) | 0; if ((h | 0) != 0 & (h | 0) != 25) Tb(b, 7353, 13) | 0; else { Sg(b, -1001e3, 7056) | 0; if ((d | 0) != (b | 0) ? (jb(d, 1) | 0) == 0 : 0) Og(b, 7041, c) | 0; _b(d) | 0; lb(d, b, 1); cc(b, -2); rb(b, -2) } if (!(f & 1)) c = 0; else { a[e >> 0] = 99; c = 1 } if (f & 2) { a[e + c >> 0] = 114; c = c + 1 | 0 } if (!(f & 4)) { h = c; h = e + h | 0; a[h >> 0] = 0; Ub(b, e) | 0; h = vd(d) | 0; Rb(b, h); i = g; return 3 } a[e + c >> 0] = 108; h = c + 1 | 0; h = e + h | 0; a[h >> 0] = 0; Ub(b, e) | 0; h = vd(d) | 0; Rb(b, h); i = g; return 3 } function zi(b) { b = b | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0; n = i; i = i + 112 | 0; l = n + 8 | 0; g = n; m = n + 12 | 0; if ((wb(b, 1) | 0) == 8) { f = Nb(b, 1) | 0; e = ah(b, 3, 7189, 0) | 0; k = (f | 0) == (b | 0); if (!k) if (!(jb(f, 3) | 0)) { Og(b, 7041, g) | 0; h = 2; j = 3; g = k } else { h = 2; j = 3; g = 0 } else { h = 2; j = 3; g = 1 } } else { f = b; h = 1; e = ah(b, 2, 7189, 0) | 0; j = 2; g = 1 } do if (zb(b, h) | 0) { if (!(zd(f, Gb(b, h, 0) | 0, m) | 0)) { Pb(b); m = 1; i = n; return m | 0 } } else { if ((wb(b, h) | 0) == 6) { c[l >> 2] = e; Wb(b, 7196, l) | 0; e = Jb(b, -1, 0) | 0; vb(b, h); lb(b, f, 1); break } m = Ag(b, h, 7200) | 0; i = n; return m | 0 } while (0); if (!(xd(f, e, m) | 0)) { m = Ag(b, j, 7667) | 0; i = n; return m | 0 } fc(b, 0, 2); if (pm(e, 83) | 0) { Ub(b, c[m + 16 >> 2] | 0) | 0; kc(b, -2, 7227); Ub(b, m + 36 | 0) | 0; kc(b, -2, 7234); Rb(b, c[m + 24 >> 2] | 0); kc(b, -2, 7244); Rb(b, c[m + 28 >> 2] | 0); kc(b, -2, 7256); Ub(b, c[m + 12 >> 2] | 0) | 0; kc(b, -2, 7272) } if (pm(e, 108) | 0) { Rb(b, c[m + 20 >> 2] | 0); kc(b, -2, 7277) } if (pm(e, 117) | 0) { Rb(b, d[m + 32 >> 0] | 0); kc(b, -2, 7289); Rb(b, d[m + 33 >> 0] | 0); kc(b, -2, 7294); Yb(b, a[m + 34 >> 0] | 0); kc(b, -2, 7302) } if (pm(e, 110) | 0) { Ub(b, c[m + 4 >> 2] | 0) | 0; kc(b, -2, 7311); Ub(b, c[m + 8 >> 2] | 0) | 0; kc(b, -2, 7316) } if (pm(e, 116) | 0) { Yb(b, a[m + 35 >> 0] | 0); kc(b, -2, 7325) } if (pm(e, 76) | 0) { if (g) { vb(b, -2); rb(b, -3) } else lb(f, b, 1); kc(b, -2, 7336) } if (!(pm(e, 102) | 0)) { m = 1; i = n; return m | 0 } if (g) { vb(b, -2); rb(b, -3) } else lb(f, b, 1); kc(b, -2, 7348); m = 1; i = n; return m | 0 } function Ai(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0; g = i; i = i + 112 | 0; e = g; c = g + 4 | 0; if ((wb(a, 1) | 0) == 8) { f = Nb(a, 1) | 0; b = 1 } else { f = a; b = 0 } d = Fg(a, b | 2) | 0; b = b + 1 | 0; if ((wb(a, b) | 0) == 6) { vb(a, b); Ub(a, yd(a, 0, d) | 0) | 0; a = 1; i = g; return a | 0 } if (!(zd(f, Fg(a, b) | 0, c) | 0)) { a = Ag(a, b, 7022) | 0; i = g; return a | 0 } if ((f | 0) != (a | 0) ? (jb(f, 1) | 0) == 0 : 0) Og(a, 7041, e) | 0; b = yd(f, c, d) | 0; if (!b) { Pb(a); a = 1; i = g; return a | 0 } else { lb(f, a, 1); Ub(a, b) | 0; vb(a, -2); a = 2; i = g; return a | 0 } return 0 } function Bi(a) { a = a | 0; vb(a, -1001e3); return 1 } function Ci(a) { a = a | 0; Eg(a, 1); if (gc(a, 1) | 0) return 1; Pb(a); return 1 } function Di(a) { a = a | 0; var b = 0; b = Fg(a, 2) | 0; Kg(a, 1, 6); b = Fc(a, 1, b) | 0; if (!b) { b = 0; return b | 0 } Ub(a, b) | 0; sb(a, -2); b = 2; return b | 0 } function Ei(a) { a = a | 0; var b = 0, c = 0, e = 0, f = 0; f = i; i = i + 112 | 0; b = f; c = Fg(a, 2) | 0; Kg(a, 1, 6); vb(a, 1); xd(a, 7142, b) | 0; if (!((c | 0) > 0 ? (c | 0) <= (d[b + 32 >> 0] | 0 | 0) : 0)) Ag(a, 2, 7145) | 0; e = Fg(a, 4) | 0; Kg(a, 3, 6); vb(a, 3); xd(a, 7142, b) | 0; if (!((e | 0) > 0 ? (e | 0) <= (d[b + 32 >> 0] | 0 | 0) : 0)) Ag(a, 4, 7145) | 0; if (yb(a, 1) | 0) Ag(a, 1, 7167) | 0; if (!(yb(a, 3) | 0)) { Ic(a, 1, c, 3, e); i = f; return 0 } Ag(a, 3, 7167) | 0; Ic(a, 1, c, 3, e); i = f; return 0 } function Fi(a) { a = a | 0; var b = 0, c = 0, e = 0; c = i; i = i + 112 | 0; e = c; b = Fg(a, 2) | 0; Kg(a, 1, 6); vb(a, 1); xd(a, 7142, e) | 0; if (!((b | 0) > 0 ? (b | 0) <= (d[e + 32 >> 0] | 0 | 0) : 0)) Ag(a, 2, 7145) | 0; Zb(a, Hc(a, 1, b) | 0); i = c; return 1 } function Gi(a) { a = a | 0; if ((wb(a, 1) | 0) == 2) Ag(a, 1, 7099) | 0; Kg(a, 1, 7); if ((wb(a, 2) | 0) >= 1) Kg(a, 2, 5); qb(a, 2); pc(a, 1); return 1 } function Hi(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0; h = i; i = i + 16 | 0; g = h; if ((wb(a, 1) | 0) == 8) { e = Nb(a, 1) | 0; b = 1 } else { e = a; b = 0 } f = b + 1 | 0; if ((wb(a, f) | 0) < 1) { qb(a, f); b = 0; c = 0; d = 0 } else { d = Gg(a, b | 2, 0) | 0; Kg(a, f, 6); c = $g(a, b + 3 | 0, 0) | 0; b = (pm(d, 99) | 0) != 0 & 1; j = (pm(d, 114) | 0) == 0; b = j ? b : b | 2; d = (pm(d, 108) | 0) == 0; b = d ? b : b | 4; b = (c | 0) > 0 ? b | 8 : b; d = 25 } if (!(Sg(a, -1001e3, 7056) | 0)) { Ub(a, 7062) | 0; kc(a, -2, 7064); vb(a, -1); oc(a, -2) | 0 } if ((e | 0) != (a | 0) ? (jb(e, 1) | 0) == 0 : 0) Og(a, 7041, g) | 0; _b(e) | 0; lb(e, a, 1); vb(a, f); lc(a, -3); Ad(e, d, b, c) | 0; i = h; return 0 } function Ii(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0; g = i; i = i + 112 | 0; f = g; d = g + 4 | 0; if ((wb(a, 1) | 0) == 8) { b = Nb(a, 1) | 0; c = 1 } else { b = a; c = 0 } e = c + 1 | 0; if (!(zd(b, Fg(a, e) | 0, d) | 0)) { f = Ag(a, e, 7022) | 0; i = g; return f | 0 } e = c + 3 | 0; Eg(a, e); qb(a, e); if ((b | 0) != (a | 0) ? (jb(b, 1) | 0) == 0 : 0) Og(a, 7041, f) | 0; lb(a, b, 1); Ub(a, Bd(b, d, Fg(a, c | 2) | 0) | 0) | 0; f = 1; i = g; return f | 0 } function Ji(a) { a = a | 0; switch (wb(a, 2) | 0) { case 0: case 5: break; default: Ag(a, 2, 7e3) | 0 }qb(a, 2); oc(a, 1) | 0; return 1 } function Ki(a) { a = a | 0; var b = 0; Eg(a, 3); b = Fg(a, 2) | 0; Kg(a, 1, 6); b = Gc(a, 1, b) | 0; if (!b) { b = 0; return b | 0 } Ub(a, b) | 0; sb(a, -1); b = 1; return b | 0 } function Li(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0; if ((wb(a, 1) | 0) == 8) { b = 1; c = Nb(a, 1) | 0 } else { b = 0; c = a } d = b + 1 | 0; e = Jb(a, d, 0) | 0; if ((e | 0) == 0 ? (wb(a, d) | 0) >= 1 : 0) { vb(a, d); return 1 } nh(a, c, e, $g(a, b | 2, (c | 0) == (a | 0) & 1) | 0); return 1 } function Mi(a, b) { a = a | 0; b = b | 0; Sg(a, -1001e3, 7056) | 0; _b(a) | 0; cc(a, -2); if ((wb(a, -1) | 0) != 6) return; Ub(a, c[844 + (c[b >> 2] << 2) >> 2] | 0) | 0; b = c[b + 20 >> 2] | 0; if ((b | 0) > -1) Rb(a, b); else Pb(a); rc(a, 2, 0, 0, 0); return } function Ni(a) { a = a | 0; var b = 0, d = 0, e = 0; fc(a, 0, 11); jh(a, 864, 0); Yg(a, 7406) | 0; vb(a, -1); kc(a, -2, 10110); jh(a, 960, 0); qb(a, -2); e = c[480] | 0; d = Ec(a, 8) | 0; b = d + 4 | 0; c[b >> 2] = 0; kh(a, 7406); c[d >> 2] = e; c[b >> 2] = 164; vb(a, -1); kc(a, -1001e3, 7412); kc(a, -2, 7422); b = c[509] | 0; d = Ec(a, 8) | 0; e = d + 4 | 0; c[e >> 2] = 0; kh(a, 7406); c[d >> 2] = b; c[e >> 2] = 164; vb(a, -1); kc(a, -1001e3, 7428); kc(a, -2, 7439); e = c[539] | 0; d = Ec(a, 8) | 0; b = d + 4 | 0; c[b >> 2] = 0; kh(a, 7406); c[d >> 2] = e; c[b >> 2] = 164; kc(a, -2, 7446); return 1 } function Oi(a) { a = a | 0; c[(Lg(a, 1, 7406) | 0) + 4 >> 2] = 164; Pb(a); Tb(a, 7453, 26) | 0; return 2 } function Pi(a) { a = a | 0; var b = 0, d = 0, e = 0; b = i; i = i + 16 | 0; if ((wb(a, 1) | 0) == -1) bc(a, -1001e3, 7428); if (!(c[(Lg(a, 1, 7406) | 0) + 4 >> 2] | 0)) Og(a, 7557, b) | 0; e = (Lg(a, 1, 7406) | 0) + 4 | 0; d = c[e >> 2] | 0; c[e >> 2] = 0; a = $a[d & 255](a) | 0; i = b; return a | 0 } function Qi(a) { a = a | 0; var b = 0, d = 0; d = i; i = i + 16 | 0; b = Lg(a, 1, 7406) | 0; if (!(c[b + 4 >> 2] | 0)) Og(a, 7557, d) | 0; b = Qg(a, (um(c[b >> 2] | 0) | 0) == 0 & 1, 0) | 0; i = d; return b | 0 } function Ri(a) { a = a | 0; var b = 0; b = i; i = i + 16 | 0; if (!(c[(Lg(a, 1, 7406) | 0) + 4 >> 2] | 0)) Og(a, 7557, b) | 0; $i(a, 0); i = b; return 1 } function Si(a) { a = a | 0; var b = 0, d = 0; d = i; i = i + 16 | 0; b = Lg(a, 1, 7406) | 0; if (!(c[b + 4 >> 2] | 0)) Og(a, 7557, d) | 0; b = Zi(a, c[b >> 2] | 0, 2) | 0; i = d; return b | 0 } function Ti(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0.0; f = i; i = i + 16 | 0; b = Lg(a, 1, 7406) | 0; if (!(c[b + 4 >> 2] | 0)) Og(a, 7557, f) | 0; b = c[b >> 2] | 0; d = Ig(a, 2, 7605, 1068) | 0; g = +bh(a, 3, 0.0); e = ~~g; if (!(+(e | 0) == g)) Ag(a, 3, 7609) | 0; if (!(Bm(b, e, c[1084 + (d << 2) >> 2] | 0) | 0)) { Qb(a, +(Sm(b) | 0)); a = 1; i = f; return a | 0 } else { a = Qg(a, 0, 0) | 0; i = f; return a | 0 } return 0 } function Ui(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0; d = i; i = i + 16 | 0; b = Lg(a, 1, 7406) | 0; if (!(c[b + 4 >> 2] | 0)) Og(a, 7557, d) | 0; f = c[b >> 2] | 0; e = Ig(a, 2, 0, 1040) | 0; b = $g(a, 3, 1024) | 0; b = Qg(a, (Pm(f, 0, c[1056 + (e << 2) >> 2] | 0, b) | 0) == 0 & 1, 0) | 0; i = d; return b | 0 } function Vi(a) { a = a | 0; var b = 0, d = 0; d = i; i = i + 16 | 0; b = Lg(a, 1, 7406) | 0; if (!(c[b + 4 >> 2] | 0)) Og(a, 7557, d) | 0; b = c[b >> 2] | 0; vb(a, 1); b = Yi(a, b, 2) | 0; i = d; return b | 0 } function Wi(a) { a = a | 0; var b = 0, d = 0; b = Lg(a, 1, 7406) | 0; if (!(c[b + 4 >> 2] | 0)) return 0; if (!(c[b >> 2] | 0)) return 0; d = (Lg(a, 1, 7406) | 0) + 4 | 0; b = c[d >> 2] | 0; c[d >> 2] = 0; $a[b & 255](a) | 0; return 0 } function Xi(a) { a = a | 0; var b = 0, d = 0, e = 0; e = i; i = i + 16 | 0; d = e; b = Lg(a, 1, 7406) | 0; if (!(c[b + 4 >> 2] | 0)) { Tb(a, 7533, 13) | 0; i = e; return 1 } else { c[d >> 2] = c[b >> 2]; Wb(a, 7547, d) | 0; i = e; return 1 } return 0 } function Yi(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, j = 0, k = 0, l = 0; l = i; i = i + 16 | 0; k = l; j = l + 8 | 0; f = (pb(a) | 0) - d | 0; if (!f) { k = 1; i = l; return k | 0 } e = 1; g = f; while (1) { g = g + -1 | 0; if ((wb(a, d) | 0) == 3) { if (!e) e = 0; else { h[k >> 3] = +Fb(a, d, 0); e = (Cm(b, 7586, k) | 0) > 0 } e = e & 1 } else { f = Gg(a, d, j) | 0; if (!e) e = 0; else { e = Mm(f, 1, c[j >> 2] | 0, b) | 0; e = (e | 0) == (c[j >> 2] | 0) } e = e & 1 } if (!g) break; else d = d + 1 | 0 } if (e | 0) { k = 1; i = l; return k | 0 } k = Qg(a, 0, 0) | 0; i = l; return k | 0 } function Zi(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; o = i; i = i + 1056 | 0; n = o + 1040 | 0; m = o; f = pb(b) | 0; Wm(d); a: do if ((f | 0) == 1) { g = e + 1 | 0; f = _i(b, d, 1) | 0 } else { Jg(b, f + 19 | 0, 7648); k = m + 8 | 0; l = m + 8 | 0; g = e; j = f + -2 | 0; b: while (1) { c: do if ((wb(b, g) | 0) == 3) { f = Gb(b, g, 0) | 0; if (!f) { f = Om(d) | 0; Tm(f, d) | 0; Tb(b, 0, 0) | 0; f = (f | 0) != -1 & 1; break } else { Bg(b, m); f = Km(dh(m, f) | 0, 1, f, d) | 0; c[k >> 2] = (c[k >> 2] | 0) + f; fh(m); f = (f | 0) != 0 & 1; break } } else { f = Jb(b, g, 0) | 0; if (!((f | 0) != 0 ? (a[f >> 0] | 0) == 42 : 0)) Ag(b, g, 7667) | 0; switch (a[f + 1 >> 0] | 0) { case 110: { c[n >> 2] = m; if ((zm(d, 7682, n) | 0) == 1) { Qb(b, +h[m >> 3]); f = 1 } else { Pb(b); f = 0 } break c } case 108: { f = _i(b, d, 1) | 0; break c } case 76: { f = _i(b, d, 0) | 0; break c } case 97: { Bg(b, m); f = Km(dh(m, 1024) | 0, 1, 1024, d) | 0; c[l >> 2] = (c[l >> 2] | 0) + f; if (f >>> 0 >= 1024) { f = 1024; do { f = f << (f >>> 0 < 1073741824 & 1); p = Km(dh(m, f) | 0, 1, f, d) | 0; c[l >> 2] = (c[l >> 2] | 0) + p } while (p >>> 0 >= f >>> 0) } fh(m); f = 1; break c } default: break b } } while (0); g = g + 1 | 0; if ((f | 0) != 0 & (j | 0) != 0) j = j + -1 | 0; else break a } p = Ag(b, g, 7686) | 0; i = o; return p | 0 } while (0); if (ym(d) | 0) { p = Qg(b, 0, 0) | 0; i = o; return p | 0 } if (!f) { qb(b, -2); Pb(b) } p = g - e | 0; i = o; return p | 0 } function _i(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0; k = i; i = i + 1040 | 0; h = k; Bg(b, h); f = dh(h, 1024) | 0; a: do if (wm(f, 1024, d) | 0) { j = h + 8 | 0; while (1) { g = Vl(f) | 0; if (g | 0 ? (a[f + (g + -1) >> 0] | 0) == 10 : 0) break; c[j >> 2] = (c[j >> 2] | 0) + g; f = dh(h, 1024) | 0; if (!(wm(f, 1024, d) | 0)) break a } c[j >> 2] = g - e + (c[j >> 2] | 0); fh(h); j = 1; i = k; return j | 0 } while (0); fh(h); j = (Kb(b, -1) | 0) != 0 & 1; i = k; return j | 0 } function $i(a, b) { a = a | 0; b = b | 0; var c = 0; c = pb(a) | 0; if ((c | 0) >= 19) Ag(a, 17, 7701) | 0; vb(a, 1); Rb(a, c + -1 | 0); Yb(a, b); if ((c | 0) > 1) b = 1; else { c = c + 2 | 0; Xb(a, 165, c); return } do { b = b + 1 | 0; vb(a, b) } while ((b | 0) != (c | 0)); c = c + 2 | 0; Xb(a, 165, c); return } function aj(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0; g = i; i = i + 16 | 0; f = g + 8 | 0; d = Mb(a, -1001001) | 0; e = Gb(a, -1001002, 0) | 0; if (!(c[d + 4 >> 2] | 0)) { f = Og(a, 7718, g) | 0; i = g; return f | 0 } qb(a, 1); if ((e | 0) >= 1) { b = 1; while (1) { vb(a, -1001003 - b | 0); if ((b | 0) == (e | 0)) break; else b = b + 1 | 0 } } b = Zi(a, c[d >> 2] | 0, 2) | 0; if (wb(a, 0 - b | 0) | 0) { f = b; i = g; return f | 0 } if ((b | 0) > 1) { c[f >> 2] = Jb(a, 1 - b | 0, 0) | 0; f = Og(a, 7741, f) | 0; i = g; return f | 0 } if (!(Ib(a, -1001003) | 0)) { f = 0; i = g; return f | 0 } qb(a, 0); vb(a, -1001001); e = (Lg(a, 1, 7406) | 0) + 4 | 0; f = c[e >> 2] | 0; c[e >> 2] = 0; $a[f & 255](a) | 0; f = 0; i = g; return f | 0 } function bj(a) { a = a | 0; var b = 0, d = 0, e = 0; e = i; i = i + 16 | 0; d = e; bc(a, -1001e3, 7428); b = Mb(a, -1) | 0; if (!(c[b + 4 >> 2] | 0)) { c[d >> 2] = 7432; Og(a, 7781, d) | 0 } d = Qg(a, (um(c[b >> 2] | 0) | 0) == 0 & 1, 0) | 0; i = e; return d | 0 } function cj(a) { a = a | 0; nj(a, 7412, 10034); return 1 } function dj(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0; e = i; i = i + 16 | 0; d = e + 8 | 0; b = e; if ((wb(a, 1) | 0) == -1) Pb(a); if (!(wb(a, 1) | 0)) { bc(a, -1001e3, 7412); tb(a, 1); if (c[(Lg(a, 1, 7406) | 0) + 4 >> 2] | 0) { d = 0; $i(a, d); i = e; return 1 } Og(a, 7557, b) | 0; d = 0; $i(a, d); i = e; return 1 } else { b = Gg(a, 1, 0) | 0; g = Ec(a, 8) | 0; f = g + 4 | 0; c[f >> 2] = 0; kh(a, 7406); c[g >> 2] = 0; c[f >> 2] = 166; f = qm(b, 10034) | 0; c[g >> 2] = f; if (!f) { g = Jl(c[(_k() | 0) >> 2] | 0) | 0; c[d >> 2] = b; c[d + 4 >> 2] = g; Og(a, 7849, d) | 0 } tb(a, 1); g = 1; $i(a, g); i = e; return 1 } return 0 } function ej(b) { b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0; d = Gg(b, 1, 0) | 0; e = ah(b, 2, 10034, 0) | 0; f = Ec(b, 8) | 0; g = f + 4 | 0; c[g >> 2] = 0; kh(b, 7406); c[f >> 2] = 0; c[g >> 2] = 166; g = a[e >> 0] | 0; if (!((g << 24 >> 24 != 0 ? (h = e + 1 | 0, (Kl(12905, g << 24 >> 24, 4) | 0) != 0) : 0) ? (h = (a[h >> 0] | 0) == 43 ? e + 2 | 0 : h, !(a[((a[h >> 0] | 0) == 98 ? h + 1 | 0 : h) >> 0] | 0)) : 0)) Ag(b, 2, 7876) | 0; h = qm(d, e) | 0; c[f >> 2] = h; if (h | 0) { h = 1; return h | 0 } h = Qg(b, 0, d) | 0; return h | 0 } function fj(a) { a = a | 0; nj(a, 7428, 7847); return 1 } function gj(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0; b = i; i = i + 16 | 0; d = Gg(a, 1, 0) | 0; ah(a, 2, 10034, 0) | 0; f = Ec(a, 8) | 0; e = f + 4 | 0; c[e >> 2] = 0; kh(a, 7406); Og(a, 7825, b) | 0; c[f >> 2] = 0; c[e >> 2] = 167; a = Qg(a, 0, d) | 0; i = b; return a | 0 } function hj(a) { a = a | 0; var b = 0, d = 0, e = 0; e = i; i = i + 16 | 0; d = e; bc(a, -1001e3, 7412); b = Mb(a, -1) | 0; if (!(c[b + 4 >> 2] | 0)) { c[d >> 2] = 7416; Og(a, 7781, d) | 0 } d = Zi(a, c[b >> 2] | 0, 1) | 0; i = e; return d | 0 } function ij(a) { a = a | 0; var b = 0, d = 0; d = Ec(a, 8) | 0; b = d + 4 | 0; c[b >> 2] = 0; kh(a, 7406); c[d >> 2] = 0; c[b >> 2] = 166; b = _m() | 0; c[d >> 2] = b; if (b | 0) { d = 1; return d | 0 } d = Qg(a, 0, 0) | 0; return d | 0 } function jj(a) { a = a | 0; var b = 0; Eg(a, 1); b = lh(a, 1, 7406) | 0; if (!b) { Pb(a); return 1 } if (!(c[b + 4 >> 2] | 0)) { Tb(a, 7808, 11) | 0; return 1 } else { Tb(a, 7820, 4) | 0; return 1 } return 0 } function kj(a) { a = a | 0; var b = 0, d = 0, e = 0; e = i; i = i + 16 | 0; d = e; bc(a, -1001e3, 7428); b = Mb(a, -1) | 0; if (!(c[b + 4 >> 2] | 0)) { c[d >> 2] = 7432; Og(a, 7781, d) | 0 } d = Yi(a, c[b >> 2] | 0, 1) | 0; i = e; return d | 0 } function lj(a) { a = a | 0; return Qg(a, (tm(c[(Lg(a, 1, 7406) | 0) >> 2] | 0) | 0) == 0 & 1, 0) | 0 } function mj(a) { a = a | 0; Lg(a, 1, 7406) | 0; return Pg(a, -1) | 0 } function nj(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0; h = i; i = i + 16 | 0; g = h + 8 | 0; f = h; if ((wb(a, 1) | 0) < 1) { bc(a, -1001e3, b); i = h; return } e = Jb(a, 1, 0) | 0; if (e) { j = Ec(a, 8) | 0; g = j + 4 | 0; c[g >> 2] = 0; kh(a, 7406); c[j >> 2] = 0; c[g >> 2] = 166; g = qm(e, d) | 0; c[j >> 2] = g; if (!g) { j = Jl(c[(_k() | 0) >> 2] | 0) | 0; c[f >> 2] = e; c[f + 4 >> 2] = j; Og(a, 7849, f) | 0 } } else { if (!(c[(Lg(a, 1, 7406) | 0) + 4 >> 2] | 0)) Og(a, 7557, g) | 0; vb(a, 1) } kc(a, -1001e3, b); bc(a, -1001e3, b); i = h; return } function oj(a) { a = a | 0; fc(a, 0, 28); jh(a, 1096, 0); Qb(a, 3.141592653589793); kc(a, -2, 7889); Qb(a, s); kc(a, -2, 7892); return 1 } function pj(a) { a = a | 0; Qb(a, +E(+(+Hg(a, 1)))); return 1 } function qj(a) { a = a | 0; Qb(a, +K(+(+Hg(a, 1)))); return 1 } function rj(a) { a = a | 0; Qb(a, +L(+(+Hg(a, 1)))); return 1 } function sj(a) { a = a | 0; var b = 0.0; b = +Hg(a, 1); Qb(a, +N(+b, +(+Hg(a, 2)))); return 1 } function tj(a) { a = a | 0; Qb(a, +M(+(+Hg(a, 1)))); return 1 } function uj(a) { a = a | 0; Qb(a, +Q(+(+Hg(a, 1)))); return 1 } function vj(a) { a = a | 0; Qb(a, +pl(+Hg(a, 1))); return 1 } function wj(a) { a = a | 0; Qb(a, +H(+(+Hg(a, 1)))); return 1 } function xj(a) { a = a | 0; Qb(a, +Hg(a, 1) / .017453292519943295); return 1 } function yj(a) { a = a | 0; Qb(a, +O(+(+Hg(a, 1)))); return 1 } function zj(a) { a = a | 0; Qb(a, +D(+(+Hg(a, 1)))); return 1 } function Aj(a) { a = a | 0; var b = 0.0; b = +Hg(a, 1); Qb(a, +tl(b, +Hg(a, 2))); return 1 } function Bj(a) { a = a | 0; var b = 0, d = 0; b = i; i = i + 16 | 0; d = b; Qb(a, +jl(+Hg(a, 1), d)); Rb(a, c[d >> 2] | 0); i = b; return 2 } function Cj(a) { a = a | 0; var b = 0.0; b = +Hg(a, 1); Qb(a, +ql(b, Fg(a, 2) | 0)); return 1 } function Dj(a) { a = a | 0; Qb(a, +fl(+Hg(a, 1))); return 1 } function Ej(a) { a = a | 0; var b = 0.0, c = 0.0; b = +Hg(a, 1); do if ((wb(a, 2) | 0) >= 1) { c = +Hg(a, 2); if (c == 10.0) { b = +fl(b); break } else { b = +P(+b) / +P(+c); break } } else b = +P(+b); while (0); Qb(a, b); return 1 } function Fj(a) { a = a | 0; var b = 0.0, c = 0, d = 0, e = 0.0; d = pb(a) | 0; b = +Hg(a, 1); if ((d | 0) < 2) { Qb(a, b); return 1 } else c = 2; while (1) { e = +Hg(a, c); b = e > b ? e : b; if ((c | 0) == (d | 0)) break; else c = c + 1 | 0 } Qb(a, b); return 1 } function Gj(a) { a = a | 0; var b = 0.0, c = 0, d = 0, e = 0.0; d = pb(a) | 0; b = +Hg(a, 1); if ((d | 0) < 2) { Qb(a, b); return 1 } else c = 2; while (1) { e = +Hg(a, c); b = e < b ? e : b; if ((c | 0) == (d | 0)) break; else c = c + 1 | 0 } Qb(a, b); return 1 } function Hj(a) { a = a | 0; var b = 0, c = 0.0, d = 0; b = i; i = i + 16 | 0; d = b; c = +gl(+Hg(a, 1), d); Qb(a, +h[d >> 3]); Qb(a, c); i = b; return 2 } function Ij(a) { a = a | 0; var b = 0.0; b = +Hg(a, 1); Qb(a, +G(+b, +(+Hg(a, 2)))); return 1 } function Jj(a) { a = a | 0; Qb(a, +Hg(a, 1) * .017453292519943295); return 1 } function Kj(a) { a = a | 0; var b = 0.0, c = 0.0, d = 0.0, e = 0; e = i; i = i + 16 | 0; d = +((Jm() | 0) % 2147483647 | 0 | 0) / 2147483647.0; switch (pb(a) | 0) { case 0: { Qb(a, d); a = 1; i = e; return a | 0 } case 1: { b = +Hg(a, 1); if (!(b >= 1.0)) Ag(a, 1, 8035) | 0; Qb(a, +D(+(d * b)) + 1.0); a = 1; i = e; return a | 0 } case 2: { b = +Hg(a, 1); c = +Hg(a, 2); if (!(b <= c)) Ag(a, 2, 8035) | 0; Qb(a, b + +D(+(d * (c - b + 1.0)))); a = 1; i = e; return a | 0 } default: { a = Og(a, 8053, e) | 0; i = e; return a | 0 } }return 0 } function Lj(a) { a = a | 0; Im(Mg(a, 1) | 0); Jm() | 0; return 0 } function Mj(a) { a = a | 0; Qb(a, +kl(+Hg(a, 1))); return 1 } function Nj(a) { a = a | 0; Qb(a, +I(+(+Hg(a, 1)))); return 1 } function Oj(a) { a = a | 0; Qb(a, +F(+(+Hg(a, 1)))); return 1 } function Pj(a) { a = a | 0; Qb(a, +nl(+Hg(a, 1))); return 1 } function Qj(a) { a = a | 0; Qb(a, +J(+(+Hg(a, 1)))); return 1 } function Rj(a) { a = a | 0; fc(a, 0, 11); jh(a, 1328, 0); return 1 } function Sj(a) { a = a | 0; Qb(a, +(Da() | 0) / 1.0e6); return 1 } function Tj(b) { b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; q = i; i = i + 1264 | 0; p = q; f = q + 1048 | 0; m = q + 1256 | 0; n = q + 8 | 0; o = q + 1056 | 0; e = ah(b, 1, 8288, 0) | 0; if ((wb(b, 2) | 0) < 1) d = Ra(0) | 0; else d = ~~+Hg(b, 2); c[f >> 2] = d; if ((a[e >> 0] | 0) == 33) { e = e + 1 | 0; g = Fa(f | 0) | 0 } else g = Ta(f | 0) | 0; if (!g) { Pb(b); i = q; return 1 } if (!(Tl(e, 8291) | 0)) { fc(b, 0, 9); Rb(b, c[g >> 2] | 0); kc(b, -2, 8186); Rb(b, c[g + 4 >> 2] | 0); kc(b, -2, 8190); Rb(b, c[g + 8 >> 2] | 0); kc(b, -2, 8194); Rb(b, c[g + 12 >> 2] | 0); kc(b, -2, 8199); Rb(b, (c[g + 16 >> 2] | 0) + 1 | 0); kc(b, -2, 8236); Rb(b, (c[g + 20 >> 2] | 0) + 1900 | 0); kc(b, -2, 8242); Rb(b, (c[g + 24 >> 2] | 0) + 1 | 0); kc(b, -2, 8294); Rb(b, (c[g + 28 >> 2] | 0) + 1 | 0); kc(b, -2, 8299); d = c[g + 32 >> 2] | 0; if ((d | 0) < 0) { i = q; return 1 } Yb(b, d); kc(b, -2, 8247); i = q; return 1 } a[m >> 0] = 37; Bg(b, n); h = n + 8 | 0; j = n + 4 | 0; k = m + 1 | 0; l = m + 2 | 0; a: while (1) { f = a[e >> 0] | 0; switch (f << 24 >> 24) { case 0: break a; case 37: break; default: { d = c[h >> 2] | 0; if (d >>> 0 >= (c[j >> 2] | 0) >>> 0) { dh(n, 1) | 0; d = c[h >> 2] | 0; f = a[e >> 0] | 0 } c[h >> 2] = d + 1; a[(c[n >> 2] | 0) + d >> 0] = f; e = e + 1 | 0; continue a } }f = e + 1 | 0; e = e + 2 | 0; d = a[f >> 0] | 0; if (d << 24 >> 24 != 0 ? (Kl(8304, d << 24 >> 24, 23) | 0) != 0 : 0) { a[k >> 0] = d; a[l >> 0] = 0 } else { c[p >> 2] = f; Ag(b, 1, Wb(b, 8327, p) | 0) | 0; e = f } xg(n, o, Ca(o | 0, 200, m | 0, g | 0) | 0) } fh(n); i = q; return 1 } function Uj(a) { a = a | 0; var b = 0; b = ~~+Hg(a, 1); Qb(a, +pa(b | 0, ~~+bh(a, 2, 0.0) | 0)); return 1 } function Vj(a) { a = a | 0; var b = 0, c = 0; c = ah(a, 1, 0, 0) | 0; b = qa(c | 0) | 0; if (!c) { Yb(a, b); c = 1; return c | 0 } else { c = Pg(a, b) | 0; return c | 0 } return 0 } function Wj(a) { a = a | 0; var b = 0; if ((wb(a, 1) | 0) == 1) b = (Ib(a, 1) | 0) == 0 & 1; else b = $g(a, 1, 0) | 0; if (Ib(a, 2) | 0) zf(a); if (!a) return 0; else Ua(b | 0); return 0 } function Xj(a) { a = a | 0; Ub(a, Ga(Gg(a, 1, 0) | 0) | 0) | 0; return 1 } function Yj(a) { a = a | 0; var b = 0; b = Gg(a, 1, 0) | 0; return Qg(a, (Vm(b) | 0) == 0 & 1, b) | 0 } function Zj(a) { a = a | 0; var b = 0; b = Gg(a, 1, 0) | 0; return Qg(a, (Um(b, Gg(a, 2, 0) | 0) | 0) == 0 & 1, 0) | 0 } function _j(a) { a = a | 0; var b = 0; b = ah(a, 1, 0, 0) | 0; Ub(a, zl(c[1452 + ((Ig(a, 2, 8253, 1424) | 0) << 2) >> 2] | 0, b) | 0) | 0; return 1 } function $j(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 80 | 0; g = j + 16 | 0; e = j + 8 | 0; d = j; f = j + 64 | 0; h = j + 20 | 0; if ((wb(a, 1) | 0) < 1) b = Ra(0) | 0; else { Kg(a, 1, 5); qb(a, 1); bc(a, -1, 8186); b = Gb(a, -1, f) | 0; b = (c[f >> 2] | 0) == 0 ? 0 : b; qb(a, -2); c[h >> 2] = b; bc(a, -1, 8190); b = Gb(a, -1, f) | 0; b = (c[f >> 2] | 0) == 0 ? 0 : b; qb(a, -2); c[h + 4 >> 2] = b; bc(a, -1, 8194); b = Gb(a, -1, f) | 0; b = (c[f >> 2] | 0) == 0 ? 12 : b; qb(a, -2); c[h + 8 >> 2] = b; bc(a, -1, 8199); b = Gb(a, -1, f) | 0; if (!(c[f >> 2] | 0)) { c[d >> 2] = 8199; b = Og(a, 8203, d) | 0 } else qb(a, -2); c[h + 12 >> 2] = b; bc(a, -1, 8236); b = Gb(a, -1, f) | 0; if (!(c[f >> 2] | 0)) { c[e >> 2] = 8236; b = Og(a, 8203, e) | 0 } else qb(a, -2); c[h + 16 >> 2] = b + -1; bc(a, -1, 8242); b = Gb(a, -1, f) | 0; if (!(c[f >> 2] | 0)) { c[g >> 2] = 8242; b = Og(a, 8203, g) | 0 } else qb(a, -2); c[h + 20 >> 2] = b + -1900; bc(a, -1, 8247); if (!(wb(a, -1) | 0)) b = -1; else b = Ib(a, -1) | 0; qb(a, -2); c[h + 32 >> 2] = b; b = Ba(h | 0) | 0 } if ((b | 0) == -1) { Pb(a); i = j; return 1 } else { Qb(a, +(b | 0)); i = j; return 1 } return 0 } function ak(a) { a = a | 0; var b = 0, c = 0; c = i; i = i + 32 | 0; b = c + 4 | 0; if (!(Xm(b) | 0)) { b = Og(a, 8149, c) | 0; i = c; return b | 0 } else { Ub(a, b) | 0; b = 1; i = c; return b | 0 } return 0 } function bk(a) { a = a | 0; fc(a, 0, 14); jh(a, 1476, 0); fc(a, 0, 1); Tb(a, 15616, 0) | 0; vb(a, -2); oc(a, -2) | 0; qb(a, -2); vb(a, -2); kc(a, -2, 10110); qb(a, -2); return 1 } function ck(a) { a = a | 0; var b = 0, e = 0, f = 0, g = 0, h = 0; h = i; i = i + 16 | 0; b = h + 4 | 0; g = Gg(a, 1, b) | 0; f = $g(a, 2, 1) | 0; e = c[b >> 2] | 0; e = (f | 0) > -1 ? f : e >>> 0 < (0 - f | 0) >>> 0 ? 0 : f + 1 + e | 0; f = $g(a, 3, e) | 0; b = c[b >> 2] | 0; f = (f | 0) > -1 ? f : b >>> 0 < (0 - f | 0) >>> 0 ? 0 : f + 1 + b | 0; e = (e | 0) == 0 ? 1 : e; f = f >>> 0 > b >>> 0 ? b : f; if (f >>> 0 < e >>> 0) { g = 0; i = h; return g | 0 } b = f - e + 1 | 0; if ((f | 0) == -1) { g = Og(a, 9119, h) | 0; i = h; return g | 0 } Jg(a, b, 9119); if ((b | 0) <= 0) { g = b; i = h; return g | 0 } f = e + -1 | 0; e = 0; do { Rb(a, d[g + (f + e) >> 0] | 0); e = e + 1 | 0 } while ((e | 0) < (b | 0)); i = h; return b | 0 } function dk(b) { b = b | 0; var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0; h = i; i = i + 1040 | 0; d = h; e = pb(b) | 0; f = Cg(b, d, e) | 0; if ((e | 0) < 1) { gh(d, e); i = h; return 1 } else c = 1; while (1) { g = Fg(b, c) | 0; if ((g & 255 | 0) != (g | 0)) Ag(b, c, 9100) | 0; a[f + (c + -1) >> 0] = g; if ((c | 0) == (e | 0)) break; else c = c + 1 | 0 } gh(d, e); i = h; return 1 } function ek(a) { a = a | 0; var b = 0, c = 0; c = i; i = i + 1056 | 0; b = c + 8 | 0; Kg(a, 1, 6); qb(a, 1); Bg(a, b); if (!(vc(a, 19, b) | 0)) { fh(b); b = 1; i = c; return b | 0 } else { b = Og(a, 9070, c) | 0; i = c; return b | 0 } return 0 } function fk(a) { a = a | 0; return qk(a, 1) | 0 } function gk(b) { b = b | 0; var e = 0, f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0.0, J = 0; H = i; i = i + 1168 | 0; C = H + 72 | 0; B = H + 64 | 0; A = H + 56 | 0; z = H + 48 | 0; y = H + 40 | 0; F = H + 32 | 0; E = H + 24 | 0; D = H + 16 | 0; x = H + 8 | 0; w = H; n = H + 1124 | 0; r = H + 1146 | 0; q = H + 1120 | 0; s = H + 80 | 0; t = H + 1128 | 0; u = pb(b) | 0; e = Gg(b, 1, q) | 0; q = c[q >> 2] | 0; v = e + q | 0; Bg(b, s); a: do if ((q | 0) > 0) { o = s + 8 | 0; p = s + 4 | 0; q = t + 1 | 0; m = 1; b: while (1) { while (1) { g = a[e >> 0] | 0; if (g << 24 >> 24 == 37) { k = e + 1 | 0; if ((a[k >> 0] | 0) != 37) break; f = c[o >> 2] | 0; if (f >>> 0 < (c[p >> 2] | 0) >>> 0) g = 37; else { dh(s, 1) | 0; f = c[o >> 2] | 0; g = a[k >> 0] | 0 } c[o >> 2] = f + 1; a[(c[s >> 2] | 0) + f >> 0] = g; e = e + 2 | 0 } else { f = c[o >> 2] | 0; if (f >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(s, 1) | 0; f = c[o >> 2] | 0; g = a[e >> 0] | 0 } c[o >> 2] = f + 1; a[(c[s >> 2] | 0) + f >> 0] = g; e = e + 1 | 0 } if (e >>> 0 >= v >>> 0) break a } l = dh(s, 512) | 0; j = m; m = m + 1 | 0; if ((j | 0) >= (u | 0)) Ag(b, m, 8863) | 0; e = a[k >> 0] | 0; c: do if (!(e << 24 >> 24)) { f = k; e = 0 } else { f = k; while (1) { if (!(Kl(8872, e << 24 >> 24, 6) | 0)) break c; f = f + 1 | 0; e = a[f >> 0] | 0; if (!(e << 24 >> 24)) { e = 0; break } } } while (0); j = k; if ((f - j | 0) >>> 0 > 5) { Og(b, 8878, w) | 0; e = a[f >> 0] | 0 } e = ((e & 255) + -48 | 0) >>> 0 < 10 ? f + 1 | 0 : f; e = ((d[e >> 0] | 0) + -48 | 0) >>> 0 < 10 ? e + 1 | 0 : e; f = a[e >> 0] | 0; if (f << 24 >> 24 == 46) { g = e + 1 | 0; e = ((d[g >> 0] | 0) + -48 | 0) >>> 0 < 10 ? e + 2 | 0 : g; e = ((d[e >> 0] | 0) + -48 | 0) >>> 0 < 10 ? e + 1 | 0 : e; g = e; e = a[e >> 0] | 0 } else { g = e; e = f } if (((e & 255) + -48 | 0) >>> 0 < 10) Og(b, 8910, x) | 0; a[t >> 0] = 37; e = g - j + 1 | 0; nn(q | 0, k | 0, e | 0) | 0; a[q + e >> 0] = 0; e = g + 1 | 0; f = a[g >> 0] | 0; switch (f | 0) { case 99: { c[D >> 2] = Fg(b, m) | 0; f = em(l, t, D) | 0; break } case 105: case 100: { I = +Hg(b, m); f = ~~I; I = I - +(f | 0); if (!(I > -1.0 & I < 1.0)) Ag(b, m, 8955) | 0; k = Vl(t) | 0; g = a[t + (k + -1) >> 0] | 0; j = t + k | 0; J = j + -1 | 0; a[J >> 0] = 108; a[J + 1 >> 0] = 0; a[j >> 0] = g; a[t + (k + 1) >> 0] = 0; c[E >> 2] = f; f = em(l, t, E) | 0; break } case 88: case 120: case 117: case 111: { I = +Hg(b, m); f = ~~I >>> 0; I = I - +(f >>> 0); if (!(I > -1.0 & I < 1.0)) Ag(b, m, 8984) | 0; J = Vl(t) | 0; j = a[t + (J + -1) >> 0] | 0; k = t + J | 0; g = k + -1 | 0; a[g >> 0] = 108; a[g + 1 >> 0] = 0; a[k >> 0] = j; a[t + (J + 1) >> 0] = 0; c[F >> 2] = f; f = em(l, t, F) | 0; break } case 71: case 103: case 102: case 69: case 101: { f = Vl(t) | 0; J = t + (f + -1) | 0; k = a[J >> 0] | 0; f = t + f | 0; a[f + -1 >> 0] = 0; a[J >> 0] = k; a[f >> 0] = 0; h[y >> 3] = +Hg(b, m); f = em(l, t, y) | 0; break } case 113: { g = Gg(b, m, n) | 0; f = c[o >> 2] | 0; if (f >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(s, 1) | 0; f = c[o >> 2] | 0 } c[o >> 2] = f + 1; a[(c[s >> 2] | 0) + f >> 0] = 34; J = c[n >> 2] | 0; c[n >> 2] = J + -1; d: do if (J | 0) while (1) { j = a[g >> 0] | 0; switch (j << 24 >> 24) { case 10: case 92: case 34: { f = c[o >> 2] | 0; if (f >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(s, 1) | 0; f = c[o >> 2] | 0 } c[o >> 2] = f + 1; a[(c[s >> 2] | 0) + f >> 0] = 92; f = c[o >> 2] | 0; if (f >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(s, 1) | 0; f = c[o >> 2] | 0 } J = a[g >> 0] | 0; c[o >> 2] = f + 1; a[(c[s >> 2] | 0) + f >> 0] = J; break } case 0: { f = 0; G = 43; break } default: { f = j & 255; if (!(Sl(f) | 0)) { f = c[o >> 2] | 0; if (f >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(s, 1) | 0; f = c[o >> 2] | 0; j = a[g >> 0] | 0 } c[o >> 2] = f + 1; a[(c[s >> 2] | 0) + f >> 0] = j } else G = 43 } }if ((G | 0) == 43) { G = 0; if (((d[g + 1 >> 0] | 0) + -48 | 0) >>> 0 < 10) { c[A >> 2] = f; em(r, 9030, A) | 0 } else { c[z >> 2] = f; em(r, 9026, z) | 0 } yg(s, r) } J = c[n >> 2] | 0; c[n >> 2] = J + -1; if (!J) break d; else g = g + 1 | 0 } while (0); f = c[o >> 2] | 0; if (f >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(s, 1) | 0; f = c[o >> 2] | 0 } c[o >> 2] = f + 1; a[(c[s >> 2] | 0) + f >> 0] = 34; f = 0; break } case 115: { f = mh(b, m, n) | 0; J = (pm(t, 46) | 0) == 0; if (J & (c[n >> 2] | 0) >>> 0 > 99) { zg(s); f = 0 } else { c[B >> 2] = f; f = em(l, t, B) | 0; qb(b, -2) } break } default: break b }c[o >> 2] = (c[o >> 2] | 0) + f; if (e >>> 0 >= v >>> 0) break a } c[C >> 2] = f; J = Og(b, 9036, C) | 0; i = H; return J | 0 } while (0); fh(s); J = 1; i = H; return J | 0 } function hk(a) { a = a | 0; Gg(a, 1, 0) | 0; Gg(a, 2, 0) | 0; qb(a, 2); Rb(a, 0); Xb(a, 168, 3); return 1 } function ik(b) { b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0; G = i; i = i + 1360 | 0; E = G + 16 | 0; D = G + 8 | 0; C = G; w = G + 1352 | 0; g = G + 1348 | 0; f = G + 1344 | 0; A = G + 1064 | 0; F = G + 24 | 0; d = Gg(b, 1, g) | 0; e = Gg(b, 2, f) | 0; B = wb(b, 3) | 0; x = $g(b, 4, (c[g >> 2] | 0) + 1 | 0) | 0; y = (a[e >> 0] | 0) == 94; if ((B + -3 | 0) >>> 0 >= 4) Ag(b, 3, 8757) | 0; Bg(b, F); if (y) { z = (c[f >> 2] | 0) + -1 | 0; c[f >> 2] = z; v = e + 1 | 0; e = z } else { v = e; e = c[f >> 2] | 0 } t = A + 16 | 0; c[t >> 2] = b; c[A >> 2] = 200; u = A + 4 | 0; c[u >> 2] = d; z = A + 8 | 0; c[z >> 2] = d + (c[g >> 2] | 0); c[A + 12 >> 2] = v + e; n = A + 20 | 0; o = F + 8 | 0; p = F + 4 | 0; q = A + 28 | 0; r = A + 24 | 0; e = 0; while (1) { if (e >>> 0 >= x >>> 0) { s = 49; break } c[n >> 2] = 0; m = rk(A, d, v) | 0; if (m) { e = e + 1 | 0; j = c[t >> 2] | 0; switch (B | 0) { case 6: { vb(j, 3); f = c[n >> 2] | 0; f = (d | 0) != 0 & (f | 0) == 0 ? 1 : f; Jg(c[t >> 2] | 0, f, 8478); if ((f | 0) > 0) { g = 0; do { sk(A, g, d, m); g = g + 1 | 0 } while ((g | 0) != (f | 0)) } rc(j, f, 1, 0, 0); s = 38; break } case 5: { do if ((c[n >> 2] | 0) > 0) { g = c[q >> 2] | 0; if ((g | 0) != -1) { f = c[r >> 2] | 0; if ((g | 0) == -2) { Rb(j, f + 1 - (c[u >> 2] | 0) | 0); break } else h = j } else { Og(j, 8518, C) | 0; h = c[t >> 2] | 0; f = c[r >> 2] | 0 } Tb(h, f, g) | 0 } else Tb(j, d, m - d | 0) | 0; while (0); ac(j, 3); s = 38; break } default: { k = Jb(j, 3, w) | 0; if (c[w >> 2] | 0) { l = m - d | 0; f = 0; do { j = k + f | 0; g = a[j >> 0] | 0; do if (g << 24 >> 24 == 37) { f = f + 1 | 0; j = k + f | 0; g = a[j >> 0] | 0; h = g << 24 >> 24; if (((g & 255) + -48 | 0) >>> 0 < 10) if (g << 24 >> 24 == 48) { xg(F, d, l); break } else { sk(A, h + -49 | 0, d, m); zg(F); break } if (g << 24 >> 24 != 37) { h = c[t >> 2] | 0; c[D >> 2] = 37; Og(h, 8788, D) | 0 } g = c[o >> 2] | 0; if (g >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(F, 1) | 0; g = c[o >> 2] | 0 } j = a[j >> 0] | 0; c[o >> 2] = g + 1; a[(c[F >> 2] | 0) + g >> 0] = j } else { h = c[o >> 2] | 0; if (h >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(F, 1) | 0; h = c[o >> 2] | 0; g = a[j >> 0] | 0 } c[o >> 2] = h + 1; a[(c[F >> 2] | 0) + h >> 0] = g } while (0); f = f + 1 | 0 } while (f >>> 0 < (c[w >> 2] | 0) >>> 0) } } }if ((s | 0) == 38) { s = 0; if (Ib(j, -1) | 0) { if (!(Ab(j, -1) | 0)) { c[E >> 2] = xb(j, wb(j, -1) | 0) | 0; Og(j, 8830, E) | 0 } } else { qb(j, -2); Tb(j, d, m - d | 0) | 0 } zg(F) } if (m >>> 0 > d >>> 0) d = m; else s = 44 } else s = 44; if ((s | 0) == 44) { s = 0; if (d >>> 0 >= (c[z >> 2] | 0) >>> 0) { s = 49; break } f = c[o >> 2] | 0; if (f >>> 0 >= (c[p >> 2] | 0) >>> 0) { dh(F, 1) | 0; f = c[o >> 2] | 0 } m = a[d >> 0] | 0; c[o >> 2] = f + 1; a[(c[F >> 2] | 0) + f >> 0] = m; d = d + 1 | 0 } if (y) { s = 49; break } } if ((s | 0) == 49) { xg(F, d, (c[z >> 2] | 0) - d | 0); fh(F); Rb(b, e); i = G; return 2 } return 0 } function jk(a) { a = a | 0; var b = 0, d = 0; b = i; i = i + 16 | 0; d = b; Gg(a, 1, d) | 0; Rb(a, c[d >> 2] | 0); i = b; return 1 } function kk(b) { b = b | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0; k = i; i = i + 1056 | 0; g = k + 1040 | 0; j = k; h = Gg(b, 1, g) | 0; f = Cg(b, j, c[g >> 2] | 0) | 0; if (!(c[g >> 2] | 0)) { h = 0; gh(j, h); i = k; return 1 } else e = 0; do { a[f + e >> 0] = Rl(d[h + e >> 0] | 0) | 0; e = e + 1 | 0; b = c[g >> 2] | 0 } while (e >>> 0 < b >>> 0); gh(j, b); i = k; return 1 } function lk(a) { a = a | 0; return qk(a, 0) | 0 } function mk(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0; n = i; i = i + 1056 | 0; e = n; h = n + 1052 | 0; j = n + 1048 | 0; k = n + 8 | 0; l = Gg(a, 1, h) | 0; f = Fg(a, 2) | 0; m = ah(a, 3, 15616, j) | 0; if ((f | 0) < 1) { Tb(a, 15616, 0) | 0; m = 1; i = n; return m | 0 } b = c[h >> 2] | 0; d = c[j >> 2] | 0; g = d + b | 0; if (g >>> 0 >= b >>> 0 ? g >>> 0 < (2147483647 / (f >>> 0) | 0) >>> 0 : 0) { g = (R(d, f + -1 | 0) | 0) + (R(b, f) | 0) | 0; b = Cg(a, k, g) | 0; nn(b | 0, l | 0, c[h >> 2] | 0) | 0; if ((f | 0) > 1) { a = f; do { a = a + -1 | 0; d = c[h >> 2] | 0; b = b + d | 0; e = c[j >> 2] | 0; if (e) { nn(b | 0, m | 0, e | 0) | 0; b = b + (c[j >> 2] | 0) | 0; d = c[h >> 2] | 0 } nn(b | 0, l | 0, d | 0) | 0 } while ((a | 0) > 1) } gh(k, g); m = 1; i = n; return m | 0 } m = Og(a, 8440, e) | 0; i = n; return m | 0 } function nk(b) { b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 1056 | 0; f = j + 1040 | 0; h = j; g = Gg(b, 1, f) | 0; e = Cg(b, h, c[f >> 2] | 0) | 0; b = c[f >> 2] | 0; if (!b) { g = 0; gh(h, g); i = j; return 1 } else d = 0; do { a[e + d >> 0] = a[g + (b + ~d) >> 0] | 0; d = d + 1 | 0; b = c[f >> 2] | 0 } while (b >>> 0 > d >>> 0); gh(h, b); i = j; return 1 } function ok(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0; f = i; i = i + 16 | 0; g = f; e = Gg(a, 1, g) | 0; d = Fg(a, 2) | 0; b = c[g >> 2] | 0; b = (d | 0) > -1 ? d : b >>> 0 < (0 - d | 0) >>> 0 ? 0 : d + 1 + b | 0; d = $g(a, 3, -1) | 0; g = c[g >> 2] | 0; d = (d | 0) > -1 ? d : g >>> 0 < (0 - d | 0) >>> 0 ? 0 : d + 1 + g | 0; b = (b | 0) == 0 ? 1 : b; d = d >>> 0 > g >>> 0 ? g : d; if (d >>> 0 < b >>> 0) { Tb(a, 15616, 0) | 0; i = f; return 1 } else { Tb(a, e + b + -1 | 0, 1 - b + d | 0) | 0; i = f; return 1 } return 0 } function pk(b) { b = b | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0; k = i; i = i + 1056 | 0; g = k + 1040 | 0; j = k; h = Gg(b, 1, g) | 0; f = Cg(b, j, c[g >> 2] | 0) | 0; if (!(c[g >> 2] | 0)) { h = 0; gh(j, h); i = k; return 1 } else e = 0; do { a[f + e >> 0] = Ql(d[h + e >> 0] | 0) | 0; e = e + 1 | 0; b = c[g >> 2] | 0 } while (e >>> 0 < b >>> 0); gh(j, b); i = k; return 1 } function qk(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; q = i; i = i + 288 | 0; j = q + 284 | 0; l = q + 280 | 0; n = q; p = Gg(b, 1, j) | 0; h = Gg(b, 2, l) | 0; e = $g(b, 3, 1) | 0; f = c[j >> 2] | 0; if ((e | 0) <= -1) if (f >>> 0 < (0 - e | 0) >>> 0) g = 1; else { e = e + 1 + f | 0; o = 3 } else o = 3; if ((o | 0) == 3) if (e) if (e >>> 0 > (f + 1 | 0) >>> 0) { Pb(b); p = 1; i = q; return p | 0 } else g = e; else g = 1; m = (d | 0) != 0; a: do if (m) { k = (Ib(b, 4) | 0) == 0; d = c[l >> 2] | 0; if (k) { e = 0; do { f = h + e | 0; if (Hm(f, 8467) | 0) { o = 18; break a } e = e + 1 + (Vl(f) | 0) | 0 } while (e >>> 0 <= d >>> 0) } e = p + g + -1 | 0; f = (c[j >> 2] | 0) - g + 1 | 0; b: do if (d) { if (d >>> 0 > f >>> 0) break a; k = d + -1 | 0; f = f - k | 0; if (!f) break a; j = a[h >> 0] | 0; h = h + 1 | 0; while (1) { g = Kl(e, j, f) | 0; if (!g) break a; d = e; e = g + 1 | 0; if (!(Gm(e, h, k) | 0)) { e = g; break b } f = d + f - e | 0; if (!f) break a } } while (0); p = e - p | 0; Rb(b, p + 1 | 0); Rb(b, p + (c[l >> 2] | 0) | 0); p = 2; i = q; return p | 0 } else o = 18; while (0); do if ((o | 0) == 18) { e = p + g + -1 | 0; g = (a[h >> 0] | 0) == 94; if (g) { f = (c[l >> 2] | 0) + -1 | 0; c[l >> 2] = f; k = h + 1 | 0 } else { k = h; f = c[l >> 2] | 0 } l = n + 16 | 0; c[l >> 2] = b; c[n >> 2] = 200; c[n + 4 >> 2] = p; h = n + 8 | 0; c[h >> 2] = p + (c[j >> 2] | 0); c[n + 12 >> 2] = k + f; j = n + 20 | 0; c[j >> 2] = 0; d = rk(n, e, k) | 0; f = (d | 0) == 0; c: do if (g) if (f) o = 32; else g = e; else if (f) while (1) { if (e >>> 0 >= (c[h >> 2] | 0) >>> 0) { o = 32; break c } e = e + 1 | 0; c[j >> 2] = 0; d = rk(n, e, k) | 0; if (d) { g = e; break } } else g = e; while (0); if ((o | 0) == 32) break; if (!m) { e = c[j >> 2] | 0; e = (e | 0) == 0 ? 1 : e; Jg(c[l >> 2] | 0, e, 8478); if ((e | 0) > 0) { f = 0; do { sk(n, f, g, d); f = f + 1 | 0 } while ((f | 0) != (e | 0)) } } else { f = p; Rb(b, 1 - f + g | 0); Rb(b, d - f | 0); f = c[j >> 2] | 0; Jg(c[l >> 2] | 0, f, 8478); if ((f | 0) > 0) { e = 0; do { sk(n, e, 0, 0); e = e + 1 | 0 } while ((e | 0) != (f | 0)) } e = f + 2 | 0 } p = e; i = q; return p | 0 } while (0); Pb(b); p = 1; i = q; return p | 0 } function rk(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0; U = i; i = i + 96 | 0; H = U + 80 | 0; G = U + 72 | 0; F = U + 64 | 0; E = U + 56 | 0; D = U + 48 | 0; J = U + 40 | 0; I = U + 32 | 0; N = U + 24 | 0; M = U + 16 | 0; L = U + 8 | 0; S = c[b >> 2] | 0; c[b >> 2] = S + -1; if (!S) Og(c[b + 16 >> 2] | 0, 8537, U) | 0; C = b + 12 | 0; g = c[C >> 2] | 0; a: do if ((g | 0) != (f | 0)) { S = b + 8 | 0; O = b + 16 | 0; x = b + 4 | 0; P = b + 20 | 0; b: while (1) { w = e + -1 | 0; K = f; c: while (1) { f = a[K >> 0] | 0; d: do switch (f << 24 >> 24 | 0) { case 40: { Q = 7; break b } case 41: { Q = 16; break b } case 36: { f = K + 1 | 0; if ((f | 0) == (g | 0)) { Q = 23; break b } else { u = f; v = f; Q = 91 } break } case 37: { f = K + 1 | 0; h = a[f >> 0] | 0; switch (h << 24 >> 24 | 0) { case 98: { Q = 25; break c } case 57: case 56: case 55: case 54: case 53: case 52: case 51: case 50: case 49: case 48: { Q = 71; break c } case 102: break; default: { if ((f | 0) == (g | 0)) Og(c[O >> 2] | 0, 8663, G) | 0; u = K + 2 | 0; v = f; Q = 91; break d } }h = K + 2 | 0; if ((a[h >> 0] | 0) == 91) f = 91; else { Og(c[O >> 2] | 0, 8628, J) | 0; f = a[h >> 0] | 0 } j = K + 3 | 0; switch (f << 24 >> 24 | 0) { case 37: { if ((j | 0) == (c[C >> 2] | 0)) Og(c[O >> 2] | 0, 8663, D) | 0; u = K + 4 | 0; break } case 91: { f = (a[j >> 0] | 0) == 94 ? K + 4 | 0 : j; do { if ((f | 0) == (c[C >> 2] | 0)) Og(c[O >> 2] | 0, 8698, E) | 0; g = f + 1 | 0; if ((a[f >> 0] | 0) == 37) f = g >>> 0 < (c[C >> 2] | 0) >>> 0 ? f + 2 | 0 : g; else f = g } while ((a[f >> 0] | 0) != 93); u = f + 1 | 0; break } default: u = j }if ((e | 0) == (c[x >> 2] | 0)) g = 0; else g = a[w >> 0] | 0; p = g & 255; t = u + -1 | 0; s = (a[j >> 0] | 0) == 94; q = s ? j : h; s = s & 1; f = s ^ 1; l = q + 1 | 0; r = l >>> 0 < t >>> 0; e: do if (r) { n = g & 255; g = q; o = l; while (1) { h = a[o >> 0] | 0; j = g + 2 | 0; k = a[j >> 0] | 0; do if (h << 24 >> 24 == 37) if (!(tk(p, k & 255) | 0)) g = j; else { g = f; break e } else { if (k << 24 >> 24 == 45 ? (y = g + 3 | 0, y >>> 0 < t >>> 0) : 0) { if ((h & 255) >>> 0 > p >>> 0) { g = y; break } if ((d[y >> 0] | 0) >>> 0 < p >>> 0) { g = y; break } else { g = f; break e } } if (h << 24 >> 24 == n << 24 >> 24) { g = f; break e } else g = o } while (0); o = g + 1 | 0; if (o >>> 0 >= t >>> 0) { g = s; break } } } else g = s; while (0); if (g | 0) { e = 0; break a } n = a[e >> 0] | 0; o = n & 255; f: do if (r) { g = q; while (1) { h = a[l >> 0] | 0; j = g + 2 | 0; k = a[j >> 0] | 0; do if (h << 24 >> 24 == 37) if (!(tk(o, k & 255) | 0)) g = j; else break f; else { if (k << 24 >> 24 == 45 ? (z = g + 3 | 0, z >>> 0 < t >>> 0) : 0) { if ((h & 255) > (n & 255)) { g = z; break } if ((d[z >> 0] | 0) < (n & 255)) { g = z; break } else break f } if (h << 24 >> 24 == n << 24 >> 24) break f; else g = l } while (0); l = g + 1 | 0; if (l >>> 0 >= t >>> 0) { f = s; break } } } else f = s; while (0); if (!f) { e = 0; break a } else f = u; break } default: { h = K + 1 | 0; if (f << 24 >> 24 == 91) { f = (a[h >> 0] | 0) == 94 ? K + 2 | 0 : h; while (1) { if ((f | 0) == (g | 0)) Og(c[O >> 2] | 0, 8698, H) | 0; g = f + 1 | 0; if ((a[f >> 0] | 0) == 37) f = g >>> 0 < (c[C >> 2] | 0) >>> 0 ? f + 2 | 0 : g; else f = g; if ((a[f >> 0] | 0) == 93) break; g = c[C >> 2] | 0 } u = f + 1 | 0; v = h; Q = 91 } else { u = h; v = h; Q = 91 } } } while (0); if ((Q | 0) == 91) { Q = 0; t = c[S >> 2] | 0; if (t >>> 0 > e >>> 0) { n = a[e >> 0] | 0; o = n & 255; r = a[K >> 0] | 0; s = r << 24 >> 24; g: do switch (s | 0) { case 46: { Q = 94; break c } case 37: { g = tk(o, d[v >> 0] | 0) | 0; break } case 91: { p = u + -1 | 0; q = (a[v >> 0] | 0) == 94; f = q ? v : K; q = q & 1; g = q ^ 1; h = f + 1 | 0; if (h >>> 0 < p >>> 0) while (1) { j = a[h >> 0] | 0; k = f + 2 | 0; l = a[k >> 0] | 0; do if (j << 24 >> 24 == 37) if (!(tk(o, l & 255) | 0)) f = k; else break g; else { if (l << 24 >> 24 == 45 ? (B = f + 3 | 0, B >>> 0 < p >>> 0) : 0) { if ((j & 255) > (n & 255)) { f = B; break } if ((d[B >> 0] | 0) < (n & 255)) { f = B; break } else break g } if (j << 24 >> 24 == n << 24 >> 24) break g; else f = h } while (0); h = f + 1 | 0; if (h >>> 0 >= p >>> 0) { g = q; break } } else g = q; break } default: g = r << 24 >> 24 == n << 24 >> 24 & 1 } while (0); f = a[u >> 0] | 0; if (g) { Q = 109; break } } else f = a[u >> 0] | 0; switch (f << 24 >> 24) { case 45: case 63: case 42: break; default: { e = 0; break a } }f = u + 1 | 0 } g = c[C >> 2] | 0; if ((f | 0) == (g | 0)) break a; else K = f } if ((Q | 0) == 25) { Q = 0; f = K + 2 | 0; if ((g + -1 | 0) >>> 0 <= f >>> 0) Og(c[O >> 2] | 0, 8581, I) | 0; l = a[e >> 0] | 0; if (l << 24 >> 24 != (a[f >> 0] | 0)) { e = 0; break a } j = a[K + 3 >> 0] | 0; f = e + 1 | 0; k = c[S >> 2] | 0; if (f >>> 0 < k >>> 0) { g = 1; h = f } else { e = 0; break a } while (1) { f = a[h >> 0] | 0; if (f << 24 >> 24 == j << 24 >> 24) { f = g + -1 | 0; if (!f) break; else e = f } else e = (f << 24 >> 24 == l << 24 >> 24 & 1) + g | 0; f = h + 1 | 0; if (f >>> 0 < k >>> 0) { w = h; g = e; h = f; e = w } else { e = 0; break a } } e = e + 2 | 0; f = K + 4 | 0 } else if ((Q | 0) == 71) { Q = 0; g = h & 255; f = g + -49 | 0; if (((h & 255) >= 49 ? (f | 0) < (c[P >> 2] | 0) : 0) ? (A = c[b + 24 + (f << 3) + 4 >> 2] | 0, (A | 0) != -1) : 0) g = A; else { f = c[O >> 2] | 0; c[F >> 2] = g + -48; g = Og(f, 8730, F) | 0; f = g; g = c[b + 24 + (g << 3) + 4 >> 2] | 0 } h = e + g | 0; if (((c[S >> 2] | 0) - e | 0) >>> 0 < g >>> 0) { e = 0; break a } if ((h | 0) == 0 | (Gm(c[b + 24 + (f << 3) >> 2] | 0, e, g) | 0) != 0) { e = 0; break a } e = h; f = K + 2 | 0 } else if ((Q | 0) == 94) { f = a[u >> 0] | 0; Q = 109 } h: do if ((Q | 0) == 109) { Q = 0; switch (f << 24 >> 24 | 0) { case 43: { Q = 112; break b } case 42: break b; case 45: { Q = 110; break b } case 63: { g = u + 1 | 0; f = rk(b, e + 1 | 0, g) | 0; if (!f) { f = g; break h } else { e = f; break a } } default: { e = e + 1 | 0; f = u; break h } } } while (0); g = c[C >> 2] | 0; if ((f | 0) == (g | 0)) break a } if ((Q | 0) == 7) { g = K + 1 | 0; if ((a[g >> 0] | 0) == 41) { f = c[P >> 2] | 0; if ((f | 0) > 31) Og(c[O >> 2] | 0, 8478, L) | 0; c[b + 24 + (f << 3) >> 2] = e; c[b + 24 + (f << 3) + 4 >> 2] = -2; c[P >> 2] = f + 1; e = rk(b, e, K + 2 | 0) | 0; if (e | 0) break; c[P >> 2] = (c[P >> 2] | 0) + -1; e = 0; break } else { f = c[P >> 2] | 0; if ((f | 0) > 31) Og(c[O >> 2] | 0, 8478, M) | 0; c[b + 24 + (f << 3) >> 2] = e; c[b + 24 + (f << 3) + 4 >> 2] = -1; c[P >> 2] = f + 1; e = rk(b, e, g) | 0; if (e | 0) break; c[P >> 2] = (c[P >> 2] | 0) + -1; e = 0; break } } else if ((Q | 0) == 16) { h = K + 1 | 0; g = c[P >> 2] | 0; while (1) { f = g + -1 | 0; if ((g | 0) <= 0) { Q = 19; break } if ((c[b + 24 + (f << 3) + 4 >> 2] | 0) == -1) break; else g = f } if ((Q | 0) == 19) f = Og(c[O >> 2] | 0, 8557, N) | 0; g = b + 24 + (f << 3) + 4 | 0; c[g >> 2] = e - (c[b + 24 + (f << 3) >> 2] | 0); e = rk(b, e, h) | 0; if (e | 0) break; c[g >> 2] = -1; e = 0; break } else if ((Q | 0) == 23) { e = (e | 0) == (c[S >> 2] | 0) ? e : 0; break } else if ((Q | 0) == 110) { q = u + 1 | 0; p = u + -1 | 0; while (1) { f = rk(b, e, q) | 0; if (f) { e = f; break a } i: while (1) { if ((c[S >> 2] | 0) >>> 0 <= e >>> 0) { e = 0; break a } o = a[e >> 0] | 0; f = a[K >> 0] | 0; switch (f << 24 >> 24 | 0) { case 37: { Q = 138; break i } case 91: { Q = 139; break i } case 46: break; default: { Q = 148; break i } }e = e + 1 | 0; f = rk(b, e, q) | 0; if (f) { e = f; break a } } j: do if ((Q | 0) == 138) f = tk(o & 255, d[v >> 0] | 0) | 0; else if ((Q | 0) == 139) { m = o & 255; n = (a[v >> 0] | 0) == 94; g = n ? v : K; n = n & 1; f = n ^ 1; h = g + 1 | 0; if (h >>> 0 < p >>> 0) while (1) { j = a[h >> 0] | 0; k = g + 2 | 0; l = a[k >> 0] | 0; do if (j << 24 >> 24 == 37) if (!(tk(m, l & 255) | 0)) g = k; else break j; else { if (l << 24 >> 24 == 45 ? (T = g + 3 | 0, T >>> 0 < p >>> 0) : 0) { if ((j & 255) > (o & 255)) { g = T; break } if ((d[T >> 0] | 0) < (o & 255)) { g = T; break } else break j } if (j << 24 >> 24 == o << 24 >> 24) break j; else g = h } while (0); h = g + 1 | 0; if (h >>> 0 >= p >>> 0) { f = n; break } } else f = n } else if ((Q | 0) == 148) f = f << 24 >> 24 == o << 24 >> 24 & 1; while (0); if (!f) { e = 0; break a } else e = e + 1 | 0 } } else if ((Q | 0) == 112) e = e + 1 | 0; k: do if (t >>> 0 > e >>> 0) { q = u + -1 | 0; switch (s | 0) { case 46: { f = 0; do f = f + 1 | 0; while (t >>> 0 > (e + f | 0) >>> 0); break } case 37: { g = d[v >> 0] | 0; f = 0; h = e; do { if (!(tk(d[h >> 0] | 0, g) | 0)) break k; f = f + 1 | 0; h = e + f | 0 } while (t >>> 0 > h >>> 0); break } default: { f = 0; g = e; while (1) { o = a[g >> 0] | 0; p = o & 255; l: do switch (s | 0) { case 46: break; case 91: { n = (a[v >> 0] | 0) == 94; g = n ? v : K; n = n & 1; m = n ^ 1; h = g + 1 | 0; if (h >>> 0 < q >>> 0) while (1) { j = a[h >> 0] | 0; k = g + 2 | 0; l = a[k >> 0] | 0; do if (j << 24 >> 24 == 37) if (!(tk(p, l & 255) | 0)) g = k; else { Q = 131; break l } else { if (l << 24 >> 24 == 45 ? (R = g + 3 | 0, R >>> 0 < q >>> 0) : 0) { if ((j & 255) > (o & 255)) { g = R; break } if ((d[R >> 0] | 0) < (o & 255)) { g = R; break } else { Q = 131; break l } } if (j << 24 >> 24 == o << 24 >> 24) { Q = 131; break l } else g = h } while (0); h = g + 1 | 0; if (h >>> 0 >= q >>> 0) { m = n; Q = 131; break } } else { m = n; Q = 131 } break } default: { m = r << 24 >> 24 == o << 24 >> 24 & 1; Q = 131 } } while (0); if ((Q | 0) == 131 ? (Q = 0, (m | 0) == 0) : 0) break k; f = f + 1 | 0; g = e + f | 0; if (t >>> 0 <= g >>> 0) break k } } } } else f = 0; while (0); j = u + 1 | 0; while (1) { if ((f | 0) <= -1) { e = 0; break a } g = rk(b, e + f | 0, j) | 0; h = (g | 0) == 0; if (h) f = (h << 31 >> 31) + f | 0; else { e = g; break } } } while (0); c[b >> 2] = (c[b >> 2] | 0) + 1; i = U; return e | 0 } function sk(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0; h = i; i = i + 16 | 0; f = h + 8 | 0; g = h; if ((c[a + 20 >> 2] | 0) <= (b | 0)) { f = c[a + 16 >> 2] | 0; if (!b) { Tb(f, d, e - d | 0) | 0; i = h; return } else { Og(f, 8496, g) | 0; i = h; return } } e = c[a + 24 + (b << 3) + 4 >> 2] | 0; if ((e | 0) != -1) { d = c[a + 16 >> 2] | 0; f = c[a + 24 + (b << 3) >> 2] | 0; if ((e | 0) == -2) { Rb(d, f + 1 - (c[a + 4 >> 2] | 0) | 0); i = h; return } } else { d = a + 16 | 0; Og(c[d >> 2] | 0, 8518, f) | 0; d = c[d >> 2] | 0; f = c[a + 24 + (b << 3) >> 2] | 0 } Tb(d, f, e) | 0; i = h; return } function tk(a, b) { a = a | 0; b = b | 0; do switch (Rl(b) | 0) { case 97: { a = wl(a) | 0; break } case 99: { a = Sl(a) | 0; break } case 100: { a = (a + -48 | 0) >>> 0 < 10 & 1; break } case 103: { a = Al(a) | 0; break } case 108: { a = yl(a) | 0; break } case 112: { a = Wl(a) | 0; break } case 115: { a = ul(a) | 0; break } case 117: { a = xl(a) | 0; break } case 119: { a = vl(a) | 0; break } case 120: { a = Zl(a) | 0; break } case 122: { a = (a | 0) == 0 & 1; break } default: { b = (b | 0) == (a | 0) & 1; return b | 0 } } while (0); b = (yl(b) | 0) == 0; b = b ? (a | 0) == 0 & 1 : a; return b | 0 } function uk(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0; n = i; i = i + 288 | 0; m = n + 8 | 0; g = n + 4 | 0; b = n; h = Jb(a, -1001001, g) | 0; j = Jb(a, -1001002, b) | 0; k = m + 16 | 0; c[k >> 2] = a; c[m >> 2] = 200; c[m + 4 >> 2] = h; g = c[g >> 2] | 0; e = m + 8 | 0; c[e >> 2] = h + g; c[m + 12 >> 2] = j + (c[b >> 2] | 0); b = Gb(a, -1001003, 0) | 0; if ((b | 0) > (g | 0)) { m = 0; i = n; return m | 0 } f = m + 20 | 0; d = h + b | 0; while (1) { c[f >> 2] = 0; g = rk(m, d, j) | 0; if (g | 0) break; b = d + 1 | 0; if (b >>> 0 > (c[e >> 2] | 0) >>> 0) { b = 0; l = 7; break } else d = b } if ((l | 0) == 7) { i = n; return b | 0 } Rb(a, g - h + ((g | 0) == (d | 0) & 1) | 0); tb(a, -1001003); b = c[f >> 2] | 0; b = (d | 0) != 0 & (b | 0) == 0 ? 1 : b; Jg(c[k >> 2] | 0, b, 8478); if ((b | 0) > 0) a = 0; else { m = b; i = n; return m | 0 } do { sk(m, a, d, g); a = a + 1 | 0 } while ((a | 0) != (b | 0)); i = n; return b | 0 } function vk(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; xg(d, b, c); return 0 } function wk(a) { a = a | 0; fc(a, 0, 7); jh(a, 1596, 0); bc(a, -1, 9141); ic(a, 9141); return 1 } function xk(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0; k = i; i = i + 1072 | 0; j = k + 8 | 0; h = k; d = k + 24 | 0; f = k + 16 | 0; g = ah(a, 2, 15616, f) | 0; Kg(a, 1, 5); b = $g(a, 3, 1) | 0; if ((wb(a, 4) | 0) < 1) e = Ug(a, 1) | 0; else e = Fg(a, 4) | 0; Bg(a, d); if ((b | 0) >= (e | 0)) { if ((b | 0) != (e | 0)) { fh(d); i = k; return 1 } } else do { dc(a, 1, b); if (!(Ab(a, -1) | 0)) { c[h >> 2] = xb(a, wb(a, -1) | 0) | 0; c[h + 4 >> 2] = b; Og(a, 9309, h) | 0 } zg(d); xg(d, g, c[f >> 2] | 0); b = b + 1 | 0 } while ((b | 0) != (e | 0)); dc(a, 1, e); if (!(Ab(a, -1) | 0)) { c[j >> 2] = xb(a, wb(a, -1) | 0) | 0; c[j + 4 >> 2] = e; Og(a, 9309, j) | 0 } zg(d); fh(d); i = k; return 1 } function yk(a) { a = a | 0; var b = 0.0, c = 0.0; Kg(a, 1, 5); Pb(a); b = 0.0; a: while (1) { do { if (!(zc(a, 1) | 0)) break a; qb(a, -2) } while ((wb(a, -1) | 0) != 3); c = +Fb(a, -1, 0); b = c > b ? c : b } Qb(a, b); return 1 } function zk(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0; e = i; i = i + 16 | 0; Kg(a, 1, 5); c = Ug(a, 1) | 0; b = c + 1 | 0; switch (pb(a) | 0) { case 2: break; case 3: { d = 2; break } default: { a = Og(a, 9271, e) | 0; i = e; return a | 0 } }if ((d | 0) == 2) { d = Fg(a, 2) | 0; if ((d | 0) < 1 | (d | 0) > (b | 0)) Ag(a, 2, 9219) | 0; if ((c | 0) < (d | 0)) b = d; else { do { c = b; b = b + -1 | 0; dc(a, 1, b); mc(a, 1, c) } while ((b | 0) > (d | 0)); b = d } } mc(a, 1, b); a = 0; i = e; return a | 0 } function Ak(a) { a = a | 0; var b = 0; b = pb(a) | 0; fc(a, b, 1); Rb(a, b); kc(a, -2, 9269); if ((b | 0) <= 0) return 1; vb(a, 1); mc(a, -2, 1); tb(a, 1); if ((b | 0) == 1) return 1; do { mc(a, 1, b); b = b + -1 | 0 } while ((b | 0) > 1); return 1 } function Bk(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0; g = i; i = i + 16 | 0; e = g; Kg(a, 1, 5); c = $g(a, 2, 1) | 0; if ((wb(a, 3) | 0) < 1) f = Ug(a, 1) | 0; else f = Fg(a, 3) | 0; if ((f | 0) < (c | 0)) { f = 0; i = g; return f | 0 } d = f - c | 0; if (d >>> 0 <= 2147483637 ? (b = d + 1 | 0, jb(a, b) | 0) : 0) { dc(a, 1, c); if ((f | 0) <= (c | 0)) { f = b; i = g; return f | 0 } do { c = c + 1 | 0; dc(a, 1, c) } while ((c | 0) != (f | 0)); i = g; return b | 0 } f = Og(a, 9242, e) | 0; i = g; return f | 0 } function Ck(a) { a = a | 0; var b = 0, c = 0, d = 0; Kg(a, 1, 5); b = Ug(a, 1) | 0; c = $g(a, 2, b) | 0; if ((c | 0) != (b | 0) ? (c | 0) < 1 | (c | 0) > (b + 1 | 0) : 0) Ag(a, 1, 9219) | 0; dc(a, 1, c); if ((c | 0) >= (b | 0)) { Pb(a); mc(a, 1, c); return 1 } do { d = c; c = c + 1 | 0; dc(a, 1, c); mc(a, 1, d) } while ((c | 0) != (b | 0)); Pb(a); mc(a, 1, b); return 1 } function Dk(a) { a = a | 0; var b = 0; Kg(a, 1, 5); b = Ug(a, 1) | 0; Jg(a, 40, 15616); if ((wb(a, 2) | 0) >= 1) Kg(a, 2, 6); qb(a, 2); Ek(a, 1, b); return 0 } function Ek(a, b, c) { a = a | 0; b = b | 0; c = c | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0; m = i; i = i + 16 | 0; l = m + 8 | 0; k = m; if ((c | 0) <= (b | 0)) { i = m; return } while (1) { dc(a, 1, b); dc(a, 1, c); if (!(Fk(a, -1, -2) | 0)) qb(a, -3); else { mc(a, 1, b); mc(a, 1, c) } d = c - b | 0; if ((d | 0) == 1) { c = 24; break } e = (c + b | 0) / 2 | 0; dc(a, 1, e); dc(a, 1, b); do if (!(Fk(a, -2, -1) | 0)) { qb(a, -2); dc(a, 1, c); if (!(Fk(a, -1, -2) | 0)) { qb(a, -3); break } else { mc(a, 1, e); mc(a, 1, c); break } } else { mc(a, 1, e); mc(a, 1, b) } while (0); if ((d | 0) == 2) { c = 24; break } dc(a, 1, e); vb(a, -1); j = c + -1 | 0; dc(a, 1, j); mc(a, 1, e); mc(a, 1, j); e = j; d = b; while (1) { f = d + 1 | 0; dc(a, 1, f); if (Fk(a, -1, -2) | 0) { d = f; while (1) { if ((c | 0) <= (d | 0)) Og(a, 9184, k) | 0; qb(a, -2); f = d + 1 | 0; dc(a, 1, f); if (!(Fk(a, -1, -2) | 0)) break; else d = f } } h = e + -1 | 0; dc(a, 1, h); if (!(Fk(a, -3, -1) | 0)) { g = e; e = h } else { g = h; while (1) { if ((g | 0) <= (b | 0)) Og(a, 9184, l) | 0; qb(a, -2); e = g + -1 | 0; dc(a, 1, e); if (!(Fk(a, -3, -1) | 0)) break; else g = e } } if ((g | 0) <= (f | 0)) break; mc(a, 1, f); mc(a, 1, e); d = f } qb(a, -4); dc(a, 1, j); dc(a, 1, f); mc(a, 1, j); mc(a, 1, f); h = (f - b | 0) < (c - f | 0); g = d + 2 | 0; f = b; b = h ? g : b; j = c; c = h ? c : d; Ek(a, h ? f : g, h ? d : j); if ((c | 0) <= (b | 0)) { c = 24; break } } if ((c | 0) == 24) { i = m; return } } function Fk(a, b, c) { a = a | 0; b = b | 0; c = c | 0; if (!(wb(a, 2) | 0)) { c = Eb(a, b, c, 1) | 0; return c | 0 } else { vb(a, 2); vb(a, b + -1 | 0); vb(a, c + -2 | 0); rc(a, 2, 1, 0, 0); c = Ib(a, -1) | 0; qb(a, -2); return c | 0 } return 0 } function Gk(a) { a = a | 0; Sg(a, -1001e3, 9362) | 0; fc(a, 0, 1); Xb(a, 169, 0); kc(a, -2, 9369); oc(a, -2) | 0; fc(a, 0, 3); jh(a, 1660, 0); fc(a, 4, 0); vb(a, -2); Xb(a, 170, 1); mc(a, -2, 1); vb(a, -2); Xb(a, 171, 1); mc(a, -2, 2); vb(a, -2); Xb(a, 172, 1); mc(a, -2, 3); vb(a, -2); Xb(a, 173, 1); mc(a, -2, 4); vb(a, -1); kc(a, -3, 9374); kc(a, -2, 9382); Mk(a, 9392, 9397, 9410, 9419); Mk(a, 9557, 9563, 9577, 9587); Tb(a, 9656, 10) | 0; kc(a, -2, 9667); Sg(a, -1001e3, 9674) | 0; kc(a, -2, 9682); Sg(a, -1001e3, 10187) | 0; kc(a, -2, 9689); dc(a, -1001e3, 2); vb(a, -2); jh(a, 1692, 1); qb(a, -2); return 1 } function Hk(a) { a = a | 0; var b = 0; b = Ug(a, 1) | 0; if ((b | 0) <= 0) return 0; while (1) { dc(a, 1, b); qb(a, -2); if ((b | 0) > 1) b = b + -1 | 0; else break } return 0 } function Ik(a) { a = a | 0; var b = 0, d = 0, e = 0; e = i; i = i + 16 | 0; d = e; b = Gg(a, 1, 0) | 0; bc(a, -1001e3, 10187); bc(a, -1, b); if (wb(a, -1) | 0) { i = e; return 1 } c[d >> 2] = b; Wb(a, 10051, d) | 0; i = e; return 1 } function Jk(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0; g = i; i = i + 32 | 0; f = g + 8 | 0; e = g; b = Gg(a, 1, 0) | 0; bc(a, -1001001, 9392); d = Jb(a, -1, 0) | 0; if (!d) { c[e >> 2] = 9392; Og(a, 9852, e) | 0 } b = Pk(a, b, d, 12624, 9882) | 0; if (!b) { f = 1; i = g; return f | 0 } if (!(Wg(a, b, 0) | 0)) { Ub(a, b) | 0; f = 2; i = g; return f | 0 } else { d = Jb(a, 1, 0) | 0; e = Jb(a, -1, 0) | 0; c[f >> 2] = d; c[f + 4 >> 2] = b; c[f + 8 >> 2] = e; f = Og(a, 9884, f) | 0; i = g; return f | 0 } return 0 } function Kk(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0; g = i; i = i + 32 | 0; f = g + 8 | 0; d = g; e = Gg(a, 1, 0) | 0; bc(a, -1001001, 9557); b = Jb(a, -1, 0) | 0; if (!b) { c[d >> 2] = 9557; Og(a, 9852, d) | 0 } b = Pk(a, e, b, 12624, 9882) | 0; if (!b) { f = 1; i = g; return f | 0 } if (!(Qk(a, b, e) | 0)) { Ub(a, b) | 0; f = 2; i = g; return f | 0 } else { d = Jb(a, 1, 0) | 0; e = Jb(a, -1, 0) | 0; c[f >> 2] = d; c[f + 4 >> 2] = b; c[f + 8 >> 2] = e; f = Og(a, 9884, f) | 0; i = g; return f | 0 } return 0 } function Lk(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 32 | 0; h = j + 24 | 0; g = j + 8 | 0; e = j; f = Gg(a, 1, 0) | 0; b = pm(f, 46) | 0; if (!b) { h = 0; i = j; return h | 0 } Tb(a, f, b - f | 0) | 0; b = Jb(a, -1, 0) | 0; bc(a, -1001001, 9557); d = Jb(a, -1, 0) | 0; if (!d) { c[e >> 2] = 9557; Og(a, 9852, e) | 0 } b = Pk(a, b, d, 12624, 9882) | 0; if (!b) { h = 1; i = j; return h | 0 } switch (Qk(a, b, f) | 0) { case 0: { Ub(a, b) | 0; h = 2; i = j; return h | 0 } case 2: { c[h >> 2] = f; c[h + 4 >> 2] = b; Wb(a, 9930, h) | 0; h = 1; i = j; return h | 0 } default: { f = Jb(a, 1, 0) | 0; h = Jb(a, -1, 0) | 0; c[g >> 2] = f; c[g + 4 >> 2] = b; c[g + 8 >> 2] = h; h = Og(a, 9884, g) | 0; i = j; return h | 0 } }return 0 } function Mk(a, b, c, d, e) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; e = e | 0; var f = 0, g = 0; c = Ga(c | 0) | 0; if (!c) { c = Ga(d | 0) | 0; if (c | 0) { f = c; g = 3 } } else { f = c; g = 3 } if ((g | 0) == 3 ? (bc(a, -1001e3, 9833), g = Ib(a, -1) | 0, qb(a, -2), (g | 0) == 0) : 0) { Tg(a, Tg(a, f, 9843, 9846) | 0, 9850, e) | 0; rb(a, -2); kc(a, -2, b); return } Ub(a, e) | 0; kc(a, -2, b); return } function Nk(a) { a = a | 0; var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0; f = i; i = i + 112 | 0; d = f; b = f + 4 | 0; c = Gg(a, 1, 0) | 0; e = pb(a) | 0; eh(a, c, 1); bc(a, -1, 9773); g = (wb(a, -1) | 0) == 0; qb(a, -2); if (g) { vb(a, -1); kc(a, -2, 9779); Ub(a, c) | 0; kc(a, -2, 9773); g = nm(c, 46) | 0; Tb(a, c, ((g | 0) == 0 ? c : g + 1 | 0) - c | 0) | 0; kc(a, -2, 9782) } vb(a, -1); if (!(((zd(a, 1, b) | 0) != 0 ? (xd(a, 9791, b) | 0) != 0 : 0) ? !(yb(a, -1) | 0) : 0)) Og(a, 9793, d) | 0; vb(a, -2); Gc(a, -2, 1) | 0; qb(a, -2); if ((e | 0) < 2) { i = f; return 1 } else b = 2; while (1) { if ((wb(a, b) | 0) == 6) { vb(a, b); vb(a, -2); rc(a, 1, 0, 0, 0) } if ((b | 0) == (e | 0)) break; else b = b + 1 | 0 } i = f; return 1 } function Ok(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0; g = i; i = i + 1056 | 0; f = g + 8 | 0; d = g + 16 | 0; e = Gg(a, 1, 0) | 0; qb(a, 1); bc(a, -1001e3, 9674); bc(a, 2, e); if (Ib(a, -1) | 0) { i = g; return 1 } qb(a, -2); Bg(a, d); bc(a, -1001001, 9382); if ((wb(a, 3) | 0) == 5) b = 1; else { Og(a, 9712, g) | 0; b = 1 } while (1) { dc(a, 3, b); if (!(wb(a, -1) | 0)) { qb(a, -2); fh(d); h = Jb(a, -1, 0) | 0; c[f >> 2] = e; c[f + 4 >> 2] = h; Og(a, 9748, f) | 0 } Ub(a, e) | 0; rc(a, 1, 2, 0, 0); if ((wb(a, -2) | 0) == 6) break; if (!(Ab(a, -2) | 0)) qb(a, -3); else { qb(a, -2); zg(d) } b = b + 1 | 0 } Ub(a, e) | 0; sb(a, -2); rc(a, 2, 1, 0, 0); if (wb(a, -1) | 0) kc(a, 2, e); bc(a, 2, e); if (wb(a, -1) | 0) { i = g; return 1 } Yb(a, 1); vb(a, -1); kc(a, 2, e); i = g; return 1 } function Pk(b, d, e, f, g) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; g = g | 0; var h = 0, j = 0, k = 0; k = i; i = i + 1056 | 0; h = k; j = k + 8 | 0; Bg(b, j); if (!(a[f >> 0] | 0)) g = d; else g = Tg(b, d, f, g) | 0; a: while (1) { d = e; b: while (1) { switch (a[d >> 0] | 0) { case 0: { e = 13; break a } case 59: break; default: break b }d = d + 1 | 0 } e = pm(d, 59) | 0; if (!e) e = d + (Vl(d) | 0) | 0; Tb(b, d, e - d | 0) | 0; if (!e) { e = 13; break } d = Tg(b, Jb(b, -1, 0) | 0, 10032, g) | 0; rb(b, -2); f = qm(d, 10034) | 0; if (f | 0) { e = 12; break } c[h >> 2] = d; Wb(b, 10036, h) | 0; rb(b, -2); zg(j) } if ((e | 0) == 12) { tm(f) | 0; j = d; i = k; return j | 0 } else if ((e | 0) == 13) { fh(j); j = 0; i = k; return j | 0 } return 0 } function Qk(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; h = i; i = i + 16 | 0; g = h + 8 | 0; f = h; d = Tg(a, d, 12624, 9960) | 0; e = pm(d, 45) | 0; if (e) { c[f >> 2] = Tb(a, d, e - d | 0) | 0; d = Rk(a, b, Wb(a, 9962, f) | 0) | 0; if ((d | 0) == 2) d = e + 1 | 0; else { g = d; i = h; return g | 0 } } c[g >> 2] = d; g = Rk(a, b, Wb(a, 9962, g) | 0) | 0; i = h; return g | 0 } function Rk(b, c, d) { b = b | 0; c = c | 0; d = d | 0; bc(b, -1001e3, 9362); bc(b, -1, c); c = Mb(b, -1) | 0; qb(b, -3); if (!c) { Tb(b, 9973, 58) | 0; d = 1; return d | 0 } if ((a[d >> 0] | 0) == 42) { Yb(b, 1); d = 0; return d | 0 } else { Tb(b, 9973, 58) | 0; d = 2; return d | 0 } return 0 } function Sk(a) { a = a | 0; var b = 0; b = Gg(a, 1, 0) | 0; b = Rk(a, b, Gg(a, 2, 0) | 0) | 0; if (!b) { b = 1; return b | 0 } Pb(a); sb(a, -2); Ub(a, (b | 0) == 1 ? 10118 : 10125) | 0; b = 3; return b | 0 } function Tk(a) { a = a | 0; var b = 0, c = 0, d = 0; d = Gg(a, 1, 0) | 0; c = Gg(a, 2, 0) | 0; b = ah(a, 3, 12624, 0) | 0; if (Pk(a, d, c, b, ah(a, 4, 9882, 0) | 0) | 0) { d = 1; return d | 0 } Pb(a); sb(a, -2); d = 2; return d | 0 } function Uk(a) { a = a | 0; Kg(a, 1, 5); if (!(gc(a, 1) | 0)) { fc(a, 0, 1); vb(a, -1); oc(a, 1) | 0 } dc(a, -1001e3, 2); kc(a, -2, 10110); return 0 } function Vk(a) { a = a | 0; ih(a, 10130, 174, 1); qb(a, -2); ih(a, 10133, 175, 1); qb(a, -2); ih(a, 10141, 176, 1); qb(a, -2); ih(a, 10151, 177, 1); qb(a, -2); ih(a, 10157, 178, 1); qb(a, -2); ih(a, 10160, 179, 1); qb(a, -2); ih(a, 10163, 180, 1); qb(a, -2); ih(a, 10170, 181, 1); qb(a, -2); ih(a, 10176, 182, 1); qb(a, -2); ih(a, 10181, 183, 1); qb(a, -2); Sg(a, -1001e3, 10187) | 0; qb(a, -2); return } function Wk(a) { a = a | 0; var b = 0, d = 0; b = i; i = i + 16 | 0; d = b; c[d >> 2] = c[a + 60 >> 2]; a = Zk(Pa(6, d | 0) | 0) | 0; i = b; return a | 0 } function Xk(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0; m = i; i = i + 48 | 0; h = m + 16 | 0; g = m; f = m + 32 | 0; c[f >> 2] = d; j = f + 4 | 0; l = b + 48 | 0; n = c[l >> 2] | 0; c[j >> 2] = e - ((n | 0) != 0 & 1); k = b + 44 | 0; c[f + 8 >> 2] = c[k >> 2]; c[f + 12 >> 2] = n; if (!(c[3248] | 0)) { c[h >> 2] = c[b + 60 >> 2]; c[h + 4 >> 2] = f; c[h + 8 >> 2] = 2; f = Zk(Va(145, h | 0) | 0) | 0 } else { oa(18, b | 0); c[g >> 2] = c[b + 60 >> 2]; c[g + 4 >> 2] = f; c[g + 8 >> 2] = 2; f = Zk(Va(145, g | 0) | 0) | 0; ha(0) } if ((f | 0) >= 1) { j = c[j >> 2] | 0; if (f >>> 0 > j >>> 0) { g = c[k >> 2] | 0; h = b + 4 | 0; c[h >> 2] = g; c[b + 8 >> 2] = g + (f - j); if (!(c[l >> 2] | 0)) f = e; else { c[h >> 2] = g + 1; a[d + (e + -1) >> 0] = a[g >> 0] | 0; f = e } } } else { c[b >> 2] = c[b >> 2] | f & 48 ^ 16; c[b + 8 >> 2] = 0; c[b + 4 >> 2] = 0 } i = m; return f | 0 } function Yk(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; f = i; i = i + 32 | 0; g = f; e = f + 20 | 0; c[g >> 2] = c[a + 60 >> 2]; c[g + 4 >> 2] = 0; c[g + 8 >> 2] = b; c[g + 12 >> 2] = e; c[g + 16 >> 2] = d; if ((Zk(Sa(140, g | 0) | 0) | 0) < 0) { c[e >> 2] = -1; a = -1 } else a = c[e >> 2] | 0; i = f; return a | 0 } function Zk(a) { a = a | 0; if (a >>> 0 > 4294963200) { c[(_k() | 0) >> 2] = 0 - a; a = -1 } return a | 0 } function _k() { var a = 0; if (!(c[3248] | 0)) a = 13036; else a = c[(un() | 0) + 64 >> 2] | 0; return a | 0 } function $k(a) { a = a | 0; if (!(c[a + 68 >> 2] | 0)) al(a); return } function al(a) { a = a | 0; return } function bl(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0; g = i; i = i + 80 | 0; f = g; c[b + 36 >> 2] = 21; if ((c[b >> 2] & 64 | 0) == 0 ? (c[f >> 2] = c[b + 60 >> 2], c[f + 4 >> 2] = 21505, c[f + 8 >> 2] = g + 12, Ia(54, f | 0) | 0) : 0) a[b + 75 >> 0] = -1; f = cl(b, d, e) | 0; i = g; return f | 0 } function cl(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; q = i; i = i + 48 | 0; n = q + 16 | 0; m = q; j = q + 32 | 0; o = a + 28 | 0; h = c[o >> 2] | 0; c[j >> 2] = h; p = a + 20 | 0; h = (c[p >> 2] | 0) - h | 0; c[j + 4 >> 2] = h; c[j + 8 >> 2] = b; c[j + 12 >> 2] = d; k = a + 60 | 0; l = a + 44 | 0; g = 2; b = h + d | 0; while (1) { if (!(c[3248] | 0)) { c[n >> 2] = c[k >> 2]; c[n + 4 >> 2] = j; c[n + 8 >> 2] = g; f = Zk(Wa(146, n | 0) | 0) | 0 } else { oa(19, a | 0); c[m >> 2] = c[k >> 2]; c[m + 4 >> 2] = j; c[m + 8 >> 2] = g; f = Zk(Wa(146, m | 0) | 0) | 0; ha(0) } if ((b | 0) == (f | 0)) { b = 6; break } if ((f | 0) < 0) { b = 8; break } b = b - f | 0; e = c[j + 4 >> 2] | 0; if (f >>> 0 <= e >>> 0) if ((g | 0) == 2) { c[o >> 2] = (c[o >> 2] | 0) + f; g = 2; h = j } else h = j; else { h = c[l >> 2] | 0; c[o >> 2] = h; c[p >> 2] = h; f = f - e | 0; g = g + -1 | 0; h = j + 8 | 0; e = c[j + 12 >> 2] | 0 } c[h >> 2] = (c[h >> 2] | 0) + f; c[h + 4 >> 2] = e - f; j = h } if ((b | 0) == 6) { n = c[l >> 2] | 0; c[a + 16 >> 2] = n + (c[a + 48 >> 2] | 0); a = n; c[o >> 2] = a; c[p >> 2] = a } else if ((b | 0) == 8) { c[a + 16 >> 2] = 0; c[o >> 2] = 0; c[p >> 2] = 0; c[a >> 2] = c[a >> 2] | 32; if ((g | 0) == 2) d = 0; else d = d - (c[j + 4 >> 2] | 0) | 0 } i = q; return d | 0 } function dl(a) { a = a | 0; if (!(c[a + 68 >> 2] | 0)) al(a); return } function el(a, b) { a = +a; b = b | 0; var d = 0; if ((b | 0) > 1023) { a = a * 8988465674311579538646525.0e283; d = b + -1023 | 0; b = b + -2046 | 0; if ((d | 0) > 1023) { a = a * 8988465674311579538646525.0e283; b = (b | 0) > 1023 ? 1023 : b } else b = d } else if ((b | 0) < -1022) { a = a * 2.2250738585072014e-308; d = b + 1022 | 0; b = b + 2044 | 0; if ((d | 0) < -1022) { a = a * 2.2250738585072014e-308; b = (b | 0) < -1022 ? -1022 : b } else b = d } b = jn(b + 1023 | 0, 0, 52) | 0; d = C; c[k >> 2] = b; c[k + 4 >> 2] = d; return +(a * +h[k >> 3]) } function fl(a) { a = +a; var b = 0, d = 0, e = 0, f = 0, g = 0.0, i = 0.0, j = 0.0, l = 0.0, m = 0.0; h[k >> 3] = a; b = c[k >> 2] | 0; d = c[k + 4 >> 2] | 0; e = (d | 0) < 0; do if (e | d >>> 0 < 1048576) { if ((b | 0) == 0 & (d & 2147483647 | 0) == 0) { a = -1.0 / (a * a); break } if (e) { a = (a - a) / 0.0; break } else { h[k >> 3] = a * 18014398509481984.0; d = c[k + 4 >> 2] | 0; e = -1077; b = c[k >> 2] | 0; f = 9; break } } else if (d >>> 0 <= 2146435071) if ((b | 0) == 0 & 0 == 0 & (d | 0) == 1072693248) a = 0.0; else { e = -1023; f = 9 } while (0); if ((f | 0) == 9) { f = d + 614242 | 0; c[k >> 2] = b; c[k + 4 >> 2] = (f & 1048575) + 1072079006; j = +h[k >> 3] + -1.0; i = j * (j * .5); l = j / (j + 2.0); m = l * l; a = m * m; h[k >> 3] = j - i; d = c[k + 4 >> 2] | 0; c[k >> 2] = 0; c[k + 4 >> 2] = d; g = +h[k >> 3]; a = j - g - i + l * (i + (a * (a * (a * .15313837699209373 + .22222198432149784) + .3999999999940942) + m * (a * (a * (a * .14798198605116586 + .1818357216161805) + .2857142874366239) + .6666666666666735))); m = g * .4342944818781689; i = +(e + (f >>> 20) | 0); l = i * .30102999566361177; j = l + m; a = j + (m + (l - j) + (a * .4342944818781689 + (i * 3.694239077158931e-13 + (g + a) * 2.5082946711645275e-11))) } return +a } function gl(a, b) { a = +a; b = b | 0; var d = 0, e = 0, f = 0, g = 0, i = 0.0; h[k >> 3] = a; f = c[k >> 2] | 0; g = c[k + 4 >> 2] | 0; d = ln(f | 0, g | 0, 52) | 0; d = d & 2047; e = d + -1023 | 0; do if ((e | 0) > 51) { h[b >> 3] = a; if ((f | 0) == 0 & (g & 1048575 | 0) == 0 | (e | 0) != 1024) { c[k >> 2] = 0; c[k + 4 >> 2] = g & -2147483648; a = +h[k >> 3] } } else { if (d >>> 0 < 1023) { f = b; c[f >> 2] = 0; c[f + 4 >> 2] = g & -2147483648; break } d = ln(-1, 1048575, e | 0) | 0; e = C; if ((d & f | 0) == 0 & (e & g | 0) == 0) { h[b >> 3] = a; c[k >> 2] = 0; c[k + 4 >> 2] = g & -2147483648; a = +h[k >> 3]; break } else { d = f & ~d; f = g & ~e; c[k >> 2] = d; c[k + 4 >> 2] = f; i = +h[k >> 3]; g = b; c[g >> 2] = d; c[g + 4 >> 2] = f; a = a - i; break } } while (0); return +a } function hl(a, b) { a = +a; b = +b; return +(+il(a, b)) } function il(a, b) { a = +a; b = +b; var d = 0, e = 0; h[k >> 3] = a; e = c[k >> 2] | 0; d = c[k + 4 >> 2] | 0; h[k >> 3] = b; d = c[k + 4 >> 2] & -2147483648 | d & 2147483647; c[k >> 2] = e; c[k + 4 >> 2] = d; return +(+h[k >> 3]) } function jl(a, b) { a = +a; b = b | 0; var d = 0, e = 0, f = 0; h[k >> 3] = a; d = c[k >> 2] | 0; e = c[k + 4 >> 2] | 0; f = ln(d | 0, e | 0, 52) | 0; switch (f & 2047) { case 0: { if (a != 0.0) { a = +jl(a * 18446744073709551616.0, b); d = (c[b >> 2] | 0) + -64 | 0 } else d = 0; c[b >> 2] = d; break } case 2047: break; default: { c[b >> 2] = (f & 2047) + -1022; c[k >> 2] = d; c[k + 4 >> 2] = e & -2146435073 | 1071644672; a = +h[k >> 3] } }return +a } function kl(a) { a = +a; var b = 0.0, d = 0.0, e = 0; h[k >> 3] = a; e = c[k + 4 >> 2] | 0; d = (e | 0) < 0 ? -.5 : .5; e = e & 2147483647; c[k >> 2] = c[k >> 2]; c[k + 4 >> 2] = e; b = +h[k >> 3]; do if (e >>> 0 < 1082535490) { b = +ll(b); if (e >>> 0 >= 1072693248) { a = d * (b + b / (b + 1.0)); break } if (e >>> 0 >= 1045430272) a = d * (b * 2.0 - b * b / (b + 1.0)) } else a = d * 2.0 * +ml(b); while (0); return +a } function ll(a) { a = +a; var b = 0.0, d = 0.0, e = 0, f = 0, g = 0, i = 0, j = 0.0, l = 0, m = 0.0; h[k >> 3] = a; e = c[k >> 2] | 0; f = c[k + 4 >> 2] | 0; g = f & 2147483647; i = ln(e | 0, f | 0, 63) | 0; do if (g >>> 0 > 1078159481) { g = f & 2147483647; if (!(g >>> 0 > 2146435072 | (g | 0) == 2146435072 & e >>> 0 > 0)) if (!i) if (a > 709.782712893384) a = a * 8988465674311579538646525.0e283; else l = 11; else a = -1.0 } else { if (g >>> 0 <= 1071001154) if (g >>> 0 < 1016070144) break; else { j = 0.0; g = 0; l = 14; break } if (g >>> 0 < 1072734898) if (!i) { e = 1; b = a + -.6931471803691238; d = 1.9082149292705877e-10; l = 12; break } else { e = -1; b = a + .6931471803691238; d = -1.9082149292705877e-10; l = 12; break } else l = 11 } while (0); if ((l | 0) == 11) { e = ~~(a * 1.4426950408889634 + (i | 0 ? -.5 : .5)); d = +(e | 0); b = a - d * .6931471803691238; d = d * 1.9082149292705877e-10; l = 12 } if ((l | 0) == 12) { j = b - d; a = j; j = b - j - d; g = e; l = 14 } a: do if ((l | 0) == 14) { d = a * .5; b = a * d; m = b * (b * (b * (b * (4.008217827329362e-06 - b * 2.0109921818362437e-07) + -7.93650757867488e-05) + 1.5873015872548146e-03) + -.03333333333333313) + 1.0; d = 3.0 - d * m; d = b * ((m - d) / (6.0 - a * d)); if (!g) { a = a - (a * d - b); break } b = a * (d - j) - j - b; switch (g | 0) { case -1: { a = (a - b) * .5 + -.5; break a } case 1: if (a < -.25) { a = (b - (a + .5)) * -2.0; break a } else { a = (a - b) * 2.0 + 1.0; break a } default: { i = jn(g + 1023 | 0, 0, 52) | 0; l = C; c[k >> 2] = i; c[k + 4 >> 2] = l; d = +h[k >> 3]; if (g >>> 0 > 56) { a = a - b + 1.0; a = ((g | 0) == 1024 ? a * 2.0 * 8988465674311579538646525.0e283 : d * a) + -1.0; break a } e = jn(1023 - g | 0, 0, 52) | 0; f = C; if ((g | 0) < 20) { c[k >> 2] = e; c[k + 4 >> 2] = f; a = 1.0 - +h[k >> 3] + (a - b) } else { c[k >> 2] = e; c[k + 4 >> 2] = f; a = a - (+h[k >> 3] + b) + 1.0 } a = d * a; break a } } } while (0); return +a } function ml(a) { a = +a; return +(+O(+(a + -1416.0996898839683)) * 2247116418577894884661631.0e283 * 2247116418577894884661631.0e283) } function nl(a) { a = +a; var b = 0, d = 0; h[k >> 3] = a; d = c[k + 4 >> 2] | 0; b = d & 2147483647; c[k >> 2] = c[k >> 2]; c[k + 4 >> 2] = b; a = +h[k >> 3]; do if (b >>> 0 > 1071748074) if (b >>> 0 > 1077149696) { a = 1.0 - 0.0 / a; break } else { a = 1.0 - 2.0 / (+ll(a * 2.0) + 2.0); break } else { if (b >>> 0 > 1070618798) { a = +ll(a * 2.0); a = a / (a + 2.0); break } if (b >>> 0 > 1048575) { a = +ll(a * -2.0); a = -a / (a + 2.0) } } while (0); return +((d | 0) < 0 ? -a : a) } function ol(a, b) { a = +a; b = b | 0; return +(+el(a, b)) } function pl(a) { a = +a; var b = 0; h[k >> 3] = a; b = c[k + 4 >> 2] & 2147483647; c[k >> 2] = c[k >> 2]; c[k + 4 >> 2] = b; a = +h[k >> 3]; do if (b >>> 0 < 1072049730) if (b >>> 0 < 1045430272) a = 1.0; else { a = +ll(a); a = a * a / ((a + 1.0) * 2.0) + 1.0 } else if (b >>> 0 < 1082535490) { a = +O(+a); a = (a + 1.0 / a) * .5; break } else { a = +ml(a); break } while (0); return +a } function ql(a, b) { a = +a; b = b | 0; return +(+el(a, b)) } function rl(a, b) { a = +a; b = b | 0; return +(+jl(a, b)) } function sl(a, b) { a = +a; b = +b; return +(+tl(a, b)) } function tl(a, b) { a = +a; b = +b; var d = 0, e = 0, f = 0, g = 0, i = 0, j = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; h[k >> 3] = a; i = c[k >> 2] | 0; l = c[k + 4 >> 2] | 0; h[k >> 3] = b; n = c[k >> 2] | 0; o = c[k + 4 >> 2] | 0; e = ln(i | 0, l | 0, 52) | 0; e = e & 2047; m = ln(n | 0, o | 0, 52) | 0; m = m & 2047; p = l & -2147483648; g = jn(n | 0, o | 0, 1) | 0; j = C; a: do if (!((g | 0) == 0 & (j | 0) == 0) ? (f = o & 2147483647, !(f >>> 0 > 2146435072 | (f | 0) == 2146435072 & n >>> 0 > 0 | (e | 0) == 2047)) : 0) { d = jn(i | 0, l | 0, 1) | 0; f = C; if (!(f >>> 0 > j >>> 0 | (f | 0) == (j | 0) & d >>> 0 > g >>> 0)) return +((d | 0) == (g | 0) & (f | 0) == (j | 0) ? a * 0.0 : a); if (!e) { d = jn(i | 0, l | 0, 12) | 0; f = C; if ((f | 0) > -1 | (f | 0) == -1 & d >>> 0 > 4294967295) { e = 0; do { e = e + -1 | 0; d = jn(d | 0, f | 0, 1) | 0; f = C } while ((f | 0) > -1 | (f | 0) == -1 & d >>> 0 > 4294967295) } else e = 0; i = jn(i | 0, l | 0, 1 - e | 0) | 0; g = C } else g = l & 1048575 | 1048576; if (!m) { f = jn(n | 0, o | 0, 12) | 0; j = C; if ((j | 0) > -1 | (j | 0) == -1 & f >>> 0 > 4294967295) { d = 0; do { d = d + -1 | 0; f = jn(f | 0, j | 0, 1) | 0; j = C } while ((j | 0) > -1 | (j | 0) == -1 & f >>> 0 > 4294967295) } else d = 0; n = jn(n | 0, o | 0, 1 - d | 0) | 0; m = d; l = C } else l = o & 1048575 | 1048576; f = fn(i | 0, g | 0, n | 0, l | 0) | 0; d = C; j = (d | 0) > -1 | (d | 0) == -1 & f >>> 0 > 4294967295; b: do if ((e | 0) > (m | 0)) { while (1) { if (j) { if ((f | 0) == 0 & (d | 0) == 0) break } else { f = i; d = g } i = jn(f | 0, d | 0, 1) | 0; g = C; e = e + -1 | 0; f = fn(i | 0, g | 0, n | 0, l | 0) | 0; d = C; j = (d | 0) > -1 | (d | 0) == -1 & f >>> 0 > 4294967295; if ((e | 0) <= (m | 0)) break b } b = a * 0.0; break a } while (0); if (j) { if ((f | 0) == 0 & (d | 0) == 0) { b = a * 0.0; break } } else { d = g; f = i } if (d >>> 0 < 1048576 | (d | 0) == 1048576 & f >>> 0 < 0) do { f = jn(f | 0, d | 0, 1) | 0; d = C; e = e + -1 | 0 } while (d >>> 0 < 1048576 | (d | 0) == 1048576 & f >>> 0 < 0); if ((e | 0) > 0) { o = gn(f | 0, d | 0, 0, -1048576) | 0; d = C; e = jn(e | 0, 0, 52) | 0; d = d | C; e = o | e } else { e = ln(f | 0, d | 0, 1 - e | 0) | 0; d = C } c[k >> 2] = e; c[k + 4 >> 2] = d | p; b = +h[k >> 3] } else q = 3; while (0); if ((q | 0) == 3) { b = a * b; b = b / b } return +b } function ul(a) { a = a | 0; return ((a | 0) == 32 | (a + -9 | 0) >>> 0 < 5) & 1 | 0 } function vl(a) { a = a | 0; return ((a + -48 | 0) >>> 0 < 10 | (wl(a) | 0) != 0) & 1 | 0 } function wl(a) { a = a | 0; return ((a | 32) + -97 | 0) >>> 0 < 26 | 0 } function xl(a) { a = a | 0; return (a + -65 | 0) >>> 0 < 26 | 0 } function yl(a) { a = a | 0; return (a + -97 | 0) >>> 0 < 26 | 0 } function zl(a, b) { a = a | 0; b = b | 0; return 10196 } function Al(a) { a = a | 0; return (a + -33 | 0) >>> 0 < 94 | 0 } function Bl(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0; f = i; i = i + 16 | 0; g = f; c[g >> 2] = e; e = Cl(a, b, d, g) | 0; i = f; return e | 0 } function Cl(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0; n = i; i = i + 128 | 0; g = n + 112 | 0; m = n; h = m; j = 2272; k = h + 112 | 0; do { c[h >> 2] = c[j >> 2]; h = h + 4 | 0; j = j + 4 | 0 } while ((h | 0) < (k | 0)); if ((d + -1 | 0) >>> 0 > 2147483646) if (!d) { b = g; d = 1; l = 4 } else { c[(_k() | 0) >> 2] = 75; d = -1 } else l = 4; if ((l | 0) == 4) { l = -2 - b | 0; l = d >>> 0 > l >>> 0 ? l : d; c[m + 48 >> 2] = l; g = m + 20 | 0; c[g >> 2] = b; c[m + 44 >> 2] = b; d = b + l | 0; b = m + 16 | 0; c[b >> 2] = d; c[m + 28 >> 2] = d; d = Dl(m, e, f) | 0; if (l) { m = c[g >> 2] | 0; a[m + (((m | 0) == (c[b >> 2] | 0)) << 31 >> 31) >> 0] = 0 } } i = n; return d | 0 } function Dl(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0; s = i; i = i + 224 | 0; n = s + 120 | 0; p = s + 80 | 0; q = s; r = s + 136 | 0; f = p; g = f + 40 | 0; do { c[f >> 2] = 0; f = f + 4 | 0 } while ((f | 0) < (g | 0)); c[n >> 2] = c[e >> 2]; if ((El(0, d, n, q, p) | 0) < 0) e = -1; else { if ((c[b + 76 >> 2] | 0) > -1) o = Fl(b) | 0; else o = 0; e = c[b >> 2] | 0; m = e & 32; if ((a[b + 74 >> 0] | 0) < 1) c[b >> 2] = e & -33; f = b + 48 | 0; if (!(c[f >> 2] | 0)) { g = b + 44 | 0; h = c[g >> 2] | 0; c[g >> 2] = r; j = b + 28 | 0; c[j >> 2] = r; k = b + 20 | 0; c[k >> 2] = r; c[f >> 2] = 80; l = b + 16 | 0; c[l >> 2] = r + 80; e = El(b, d, n, q, p) | 0; if (h) { Ya[c[b + 36 >> 2] & 31](b, 0, 0) | 0; e = (c[k >> 2] | 0) == 0 ? -1 : e; c[g >> 2] = h; c[f >> 2] = 0; c[l >> 2] = 0; c[j >> 2] = 0; c[k >> 2] = 0 } } else e = El(b, d, n, q, p) | 0; f = c[b >> 2] | 0; c[b >> 2] = f | m; if (o | 0) al(b); e = (f & 32 | 0) == 0 ? e : -1 } i = s; return e | 0 } function El(e, f, g, j, l) { e = e | 0; f = f | 0; g = g | 0; j = j | 0; l = l | 0; var m = 0, n = 0, o = 0, p = 0, q = 0.0, r = 0, s = 0, t = 0, u = 0, v = 0.0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, Z = 0, _ = 0, $ = 0, aa = 0, ba = 0, ca = 0, da = 0, ea = 0, fa = 0, ga = 0, ha = 0, ia = 0, ja = 0; ja = i; i = i + 624 | 0; fa = ja + 24 | 0; ga = ja + 16 | 0; ha = ja + 588 | 0; Y = ja + 576 | 0; ia = ja; T = ja + 536 | 0; N = ja + 8 | 0; O = ja + 528 | 0; P = (e | 0) != 0; Q = T + 40 | 0; S = Q; T = T + 39 | 0; U = N + 4 | 0; V = ha; W = 0 - V | 0; X = Y + 12 | 0; Y = Y + 11 | 0; Z = X; _ = Z - V | 0; $ = -2 - V | 0; aa = Z + 2 | 0; ba = fa + 288 | 0; ca = ha + 9 | 0; da = ca; ea = ha + 8 | 0; n = 0; m = 0; s = 0; a: while (1) { do if ((m | 0) > -1) if ((n | 0) > (2147483647 - m | 0)) { c[(_k() | 0) >> 2] = 75; m = -1; break } else { m = n + m | 0; break } while (0); n = a[f >> 0] | 0; if (!(n << 24 >> 24)) { M = 243; break } else o = f; b: while (1) { switch (n << 24 >> 24) { case 37: { n = o; M = 9; break b } case 0: { n = o; break b } default: { } }n = o + 1 | 0; o = n; n = a[n >> 0] | 0 } c: do if ((M | 0) == 9) while (1) { M = 0; if ((a[o + 1 >> 0] | 0) != 37) break c; n = n + 1 | 0; o = o + 2 | 0; if ((a[o >> 0] | 0) == 37) M = 9; else break } while (0); n = n - f | 0; if (P ? (c[e >> 2] & 32 | 0) == 0 : 0) Gl(f, n, e) | 0; if (n | 0) { f = o; continue } r = o + 1 | 0; p = a[r >> 0] | 0; n = (p << 24 >> 24) + -48 | 0; if (n >>> 0 < 10) { u = (a[o + 2 >> 0] | 0) == 36; r = u ? o + 3 | 0 : r; w = u ? n : -1; u = u ? 1 : s; n = a[r >> 0] | 0 } else { w = -1; u = s; n = p } o = (n << 24 >> 24) + -32 | 0; d: do if (o >>> 0 < 32) { p = 0; do { if (!(1 << o & 75913)) break d; p = 1 << (n << 24 >> 24) + -32 | p; r = r + 1 | 0; n = a[r >> 0] | 0; o = (n << 24 >> 24) + -32 | 0 } while (o >>> 0 < 32) } else p = 0; while (0); do if (n << 24 >> 24 != 42) { o = (n << 24 >> 24) + -48 | 0; if (o >>> 0 < 10) { s = 0; do { s = (s * 10 | 0) + o | 0; r = r + 1 | 0; n = a[r >> 0] | 0; o = (n << 24 >> 24) + -48 | 0 } while (o >>> 0 < 10); if ((s | 0) < 0) { m = -1; break a } else L = u } else { s = 0; L = u } } else { t = r + 1 | 0; n = a[t >> 0] | 0; o = (n << 24 >> 24) + -48 | 0; if (o >>> 0 < 10 ? (a[r + 2 >> 0] | 0) == 36 : 0) { c[l + (o << 2) >> 2] = 10; n = c[j + ((a[t >> 0] | 0) + -48 << 3) >> 2] | 0; o = 1; t = r + 3 | 0 } else { if (u | 0) { m = -1; break a } if (!P) { s = 0; L = 0; r = t; break } o = (c[g >> 2] | 0) + (4 - 1) & ~(4 - 1); n = c[o >> 2] | 0; c[g >> 2] = o + 4; o = 0 } L = (n | 0) < 0; s = L ? 0 - n | 0 : n; p = L ? p | 8192 : p; L = o; r = t; n = a[t >> 0] | 0 } while (0); e: do if (n << 24 >> 24 == 46) { n = r + 1 | 0; o = a[n >> 0] | 0; if (o << 24 >> 24 != 42) { r = (o << 24 >> 24) + -48 | 0; if (r >>> 0 < 10) o = 0; else { x = 0; break } while (1) { o = (o * 10 | 0) + r | 0; n = n + 1 | 0; r = (a[n >> 0] | 0) + -48 | 0; if (r >>> 0 >= 10) { x = o; break e } } } n = r + 2 | 0; o = (a[n >> 0] | 0) + -48 | 0; if (o >>> 0 < 10 ? (a[r + 3 >> 0] | 0) == 36 : 0) { c[l + (o << 2) >> 2] = 10; x = c[j + ((a[n >> 0] | 0) + -48 << 3) >> 2] | 0; n = r + 4 | 0; break } if (L | 0) { m = -1; break a } if (P) { K = (c[g >> 2] | 0) + (4 - 1) & ~(4 - 1); x = c[K >> 2] | 0; c[g >> 2] = K + 4 } else x = 0 } else { x = -1; n = r } while (0); u = 0; while (1) { o = (a[n >> 0] | 0) + -65 | 0; if (o >>> 0 > 57) { m = -1; break a } K = n + 1 | 0; o = a[10204 + (u * 58 | 0) + o >> 0] | 0; r = o & 255; if ((r + -1 | 0) >>> 0 < 8) { u = r; n = K } else break } if (!(o << 24 >> 24)) { m = -1; break } t = (w | 0) > -1; do if (o << 24 >> 24 == 19) if (t) { m = -1; break a } else M = 51; else { if (t) { c[l + (w << 2) >> 2] = r; I = j + (w << 3) | 0; J = c[I + 4 >> 2] | 0; M = ia; c[M >> 2] = c[I >> 2]; c[M + 4 >> 2] = J; M = 51; break } if (!P) { m = 0; break a } Hl(ia, r, g) } while (0); if ((M | 0) == 51 ? (M = 0, !P) : 0) { n = 0; s = L; f = K; continue } F = a[n >> 0] | 0; F = (u | 0) != 0 & (F & 15 | 0) == 3 ? F & -33 : F; t = p & -65537; J = (p & 8192 | 0) == 0 ? p : t; f: do switch (F | 0) { case 110: switch ((u & 255) << 24 >> 24) { case 0: { c[c[ia >> 2] >> 2] = m; n = 0; s = L; f = K; continue a } case 1: { c[c[ia >> 2] >> 2] = m; n = 0; s = L; f = K; continue a } case 2: { n = c[ia >> 2] | 0; c[n >> 2] = m; c[n + 4 >> 2] = ((m | 0) < 0) << 31 >> 31; n = 0; s = L; f = K; continue a } case 3: { b[c[ia >> 2] >> 1] = m; n = 0; s = L; f = K; continue a } case 4: { a[c[ia >> 2] >> 0] = m; n = 0; s = L; f = K; continue a } case 6: { c[c[ia >> 2] >> 2] = m; n = 0; s = L; f = K; continue a } case 7: { n = c[ia >> 2] | 0; c[n >> 2] = m; c[n + 4 >> 2] = ((m | 0) < 0) << 31 >> 31; n = 0; s = L; f = K; continue a } default: { n = 0; s = L; f = K; continue a } }case 112: { t = 120; u = x >>> 0 > 8 ? x : 8; n = J | 8; M = 63; break } case 88: case 120: { t = F; u = x; n = J; M = 63; break } case 111: { o = ia; n = c[o >> 2] | 0; o = c[o + 4 >> 2] | 0; if ((n | 0) == 0 & (o | 0) == 0) f = Q; else { f = Q; do { f = f + -1 | 0; a[f >> 0] = n & 7 | 48; n = ln(n | 0, o | 0, 3) | 0; o = C } while (!((n | 0) == 0 & (o | 0) == 0)) } if (!(J & 8)) { o = 0; p = 10684; r = x; n = J; M = 76 } else { r = S - f | 0; o = 0; p = 10684; r = (x | 0) > (r | 0) ? x : r + 1 | 0; n = J; M = 76 } break } case 105: case 100: { f = ia; n = c[f >> 2] | 0; f = c[f + 4 >> 2] | 0; if ((f | 0) < 0) { n = fn(0, 0, n | 0, f | 0) | 0; f = C; o = ia; c[o >> 2] = n; c[o + 4 >> 2] = f; o = 1; p = 10684; M = 75; break f } if (!(J & 2048)) { p = J & 1; o = p; p = (p | 0) == 0 ? 10684 : 10686; M = 75 } else { o = 1; p = 10685; M = 75 } break } case 117: { f = ia; o = 0; p = 10684; n = c[f >> 2] | 0; f = c[f + 4 >> 2] | 0; M = 75; break } case 99: { a[T >> 0] = c[ia >> 2]; f = T; w = 0; u = 10684; o = Q; n = 1; break } case 109: { n = Jl(c[(_k() | 0) >> 2] | 0) | 0; M = 81; break } case 115: { n = c[ia >> 2] | 0; n = n | 0 ? n : 10694; M = 81; break } case 67: { c[N >> 2] = c[ia >> 2]; c[U >> 2] = 0; c[ia >> 2] = N; t = -1; o = N; M = 85; break } case 83: { n = c[ia >> 2] | 0; if (!x) { Ll(e, 32, s, 0, J); n = 0; M = 96 } else { t = x; o = n; M = 85 } break } case 65: case 71: case 70: case 69: case 97: case 103: case 102: case 101: { q = +h[ia >> 3]; c[ga >> 2] = 0; h[k >> 3] = q; if ((c[k + 4 >> 2] | 0) >= 0) { n = J & 1; if (!(J & 2048)) { H = n; I = (n | 0) == 0 ? 10702 : 10707 } else { H = 1; I = 10704 } } else { q = -q; H = 1; I = 10701 } h[k >> 3] = q; G = c[k + 4 >> 2] & 2146435072; do if (G >>> 0 < 2146435072 | (G | 0) == 2146435072 & 0 < 0) { v = +rl(q, ga) * 2.0; f = v != 0.0; if (f) c[ga >> 2] = (c[ga >> 2] | 0) + -1; z = F | 32; if ((z | 0) == 97) { r = F & 32; w = (r | 0) == 0 ? I : I + 9 | 0; u = H | 2; n = 12 - x | 0; do if (!(x >>> 0 > 11 | (n | 0) == 0)) { q = 8.0; do { n = n + -1 | 0; q = q * 16.0 } while ((n | 0) != 0); if ((a[w >> 0] | 0) == 45) { q = -(q + (-v - q)); break } else { q = v + q - q; break } } else q = v; while (0); f = c[ga >> 2] | 0; n = (f | 0) < 0 ? 0 - f | 0 : f; n = Il(n, ((n | 0) < 0) << 31 >> 31, X) | 0; if ((n | 0) == (X | 0)) { a[Y >> 0] = 48; n = Y } a[n + -1 >> 0] = (f >> 31 & 2) + 43; t = n + -2 | 0; a[t >> 0] = F + 15; p = (x | 0) < 1; o = (J & 8 | 0) == 0; n = ha; do { I = ~~q; f = n + 1 | 0; a[n >> 0] = d[10668 + I >> 0] | r; q = (q - +(I | 0)) * 16.0; do if ((f - V | 0) == 1) { if (o & (p & q == 0.0)) { n = f; break } a[f >> 0] = 46; n = n + 2 | 0 } else n = f; while (0) } while (q != 0.0); p = t; o = (x | 0) != 0 & ($ + n | 0) < (x | 0) ? aa + x - p | 0 : _ - p + n | 0; r = o + u | 0; Ll(e, 32, s, r, J); if (!(c[e >> 2] & 32)) Gl(w, u, e) | 0; Ll(e, 48, s, r, J ^ 65536); f = n - V | 0; if (!(c[e >> 2] & 32)) Gl(ha, f, e) | 0; n = Z - p | 0; Ll(e, 48, o - (f + n) | 0, 0, 0); if (!(c[e >> 2] & 32)) Gl(t, n, e) | 0; Ll(e, 32, s, r, J ^ 8192); n = (r | 0) < (s | 0) ? s : r; break } n = (x | 0) < 0 ? 6 : x; if (f) { f = (c[ga >> 2] | 0) + -28 | 0; c[ga >> 2] = f; q = v * 268435456.0 } else { q = v; f = c[ga >> 2] | 0 } G = (f | 0) < 0 ? fa : ba; o = G; do { E = ~~q >>> 0; c[o >> 2] = E; o = o + 4 | 0; q = (q - +(E >>> 0)) * 1.0e9 } while (q != 0.0); if ((f | 0) > 0) { p = G; t = o; while (1) { r = (f | 0) > 29 ? 29 : f; f = t + -4 | 0; do if (f >>> 0 >= p >>> 0) { o = 0; do { D = jn(c[f >> 2] | 0, 0, r | 0) | 0; D = gn(D | 0, C | 0, o | 0, 0) | 0; E = C; B = tn(D | 0, E | 0, 1e9, 0) | 0; c[f >> 2] = B; o = qn(D | 0, E | 0, 1e9, 0) | 0; f = f + -4 | 0 } while (f >>> 0 >= p >>> 0); if (!o) break; p = p + -4 | 0; c[p >> 2] = o } while (0); o = t; while (1) { if (o >>> 0 <= p >>> 0) break; f = o + -4 | 0; if (!(c[f >> 2] | 0)) o = f; else break } f = (c[ga >> 2] | 0) - r | 0; c[ga >> 2] = f; if ((f | 0) > 0) t = o; else break } } else p = G; if ((f | 0) < 0) { x = ((n + 25 | 0) / 9 | 0) + 1 | 0; y = (z | 0) == 102; do { w = 0 - f | 0; w = (w | 0) > 9 ? 9 : w; do if (p >>> 0 < o >>> 0) { r = (1 << w) + -1 | 0; t = 1e9 >>> w; u = 0; f = p; do { E = c[f >> 2] | 0; c[f >> 2] = (E >>> w) + u; u = R(E & r, t) | 0; f = f + 4 | 0 } while (f >>> 0 < o >>> 0); f = (c[p >> 2] | 0) == 0 ? p + 4 | 0 : p; if (!u) { p = f; f = o; break } c[o >> 2] = u; p = f; f = o + 4 | 0 } else { p = (c[p >> 2] | 0) == 0 ? p + 4 | 0 : p; f = o } while (0); o = y ? G : p; o = (f - o >> 2 | 0) > (x | 0) ? o + (x << 2) | 0 : f; f = (c[ga >> 2] | 0) + w | 0; c[ga >> 2] = f } while ((f | 0) < 0) } E = G; do if (p >>> 0 < o >>> 0) { f = (E - p >> 2) * 9 | 0; t = c[p >> 2] | 0; if (t >>> 0 < 10) break; else r = 10; do { r = r * 10 | 0; f = f + 1 | 0 } while (t >>> 0 >= r >>> 0) } else f = 0; while (0); A = (z | 0) == 103; B = (n | 0) != 0; r = n - ((z | 0) != 102 ? f : 0) + ((B & A) << 31 >> 31) | 0; if ((r | 0) < (((o - E >> 2) * 9 | 0) + -9 | 0)) { r = r + 9216 | 0; u = G + 4 + (((r | 0) / 9 | 0) + -1024 << 2) | 0; r = ((r | 0) % 9 | 0) + 1 | 0; if ((r | 0) < 9) { t = 10; do { t = t * 10 | 0; r = r + 1 | 0 } while ((r | 0) != 9) } else t = 10; x = c[u >> 2] | 0; y = (x >>> 0) % (t >>> 0) | 0; r = (u + 4 | 0) == (o | 0); do if (r & (y | 0) == 0) r = u; else { v = (((x >>> 0) / (t >>> 0) | 0) & 1 | 0) == 0 ? 9007199254740992.0 : 9007199254740994.0; w = (t | 0) / 2 | 0; if (y >>> 0 < w >>> 0) q = .5; else q = r & (y | 0) == (w | 0) ? 1.0 : 1.5; do if (H) { if ((a[I >> 0] | 0) != 45) break; q = -q; v = -v } while (0); r = x - y | 0; c[u >> 2] = r; if (!(v + q != v)) { r = u; break } D = r + t | 0; c[u >> 2] = D; if (D >>> 0 > 999999999) { r = u; while (1) { f = r + -4 | 0; c[r >> 2] = 0; if (f >>> 0 < p >>> 0) { p = p + -4 | 0; c[p >> 2] = 0 } D = (c[f >> 2] | 0) + 1 | 0; c[f >> 2] = D; if (D >>> 0 > 999999999) r = f; else { u = f; break } } } f = (E - p >> 2) * 9 | 0; t = c[p >> 2] | 0; if (t >>> 0 < 10) { r = u; break } else r = 10; do { r = r * 10 | 0; f = f + 1 | 0 } while (t >>> 0 >= r >>> 0); r = u } while (0); D = r + 4 | 0; o = o >>> 0 > D >>> 0 ? D : o } y = 0 - f | 0; D = o; while (1) { if (D >>> 0 <= p >>> 0) { z = 0; break } o = D + -4 | 0; if (!(c[o >> 2] | 0)) D = o; else { z = 1; break } } do if (A) { n = (B & 1 ^ 1) + n | 0; if ((n | 0) > (f | 0) & (f | 0) > -5) { u = F + -1 | 0; n = n + -1 - f | 0 } else { u = F + -2 | 0; n = n + -1 | 0 } o = J & 8; if (o | 0) { w = o; break } do if (z) { t = c[D + -4 >> 2] | 0; if (!t) { r = 9; break } if (!((t >>> 0) % 10 | 0)) { r = 0; o = 10 } else { r = 0; break } do { o = o * 10 | 0; r = r + 1 | 0 } while (!((t >>> 0) % (o >>> 0) | 0 | 0)) } else r = 9; while (0); o = ((D - E >> 2) * 9 | 0) + -9 | 0; if ((u | 32 | 0) == 102) { w = o - r | 0; w = (w | 0) < 0 ? 0 : w; n = (n | 0) < (w | 0) ? n : w; w = 0; break } else { w = o + f - r | 0; w = (w | 0) < 0 ? 0 : w; n = (n | 0) < (w | 0) ? n : w; w = 0; break } } else { u = F; w = J & 8 } while (0); x = n | w; r = (x | 0) != 0 & 1; t = (u | 32 | 0) == 102; if (t) { y = 0; f = (f | 0) > 0 ? f : 0 } else { o = (f | 0) < 0 ? y : f; o = Il(o, ((o | 0) < 0) << 31 >> 31, X) | 0; if ((Z - o | 0) < 2) do { o = o + -1 | 0; a[o >> 0] = 48 } while ((Z - o | 0) < 2); a[o + -1 >> 0] = (f >> 31 & 2) + 43; f = o + -2 | 0; a[f >> 0] = u; y = f; f = Z - f | 0 } A = H + 1 + n + r + f | 0; Ll(e, 32, s, A, J); if (!(c[e >> 2] & 32)) Gl(I, H, e) | 0; Ll(e, 48, s, A, J ^ 65536); do if (t) { p = p >>> 0 > G >>> 0 ? G : p; o = p; do { f = Il(c[o >> 2] | 0, 0, ca) | 0; do if ((o | 0) == (p | 0)) { if ((f | 0) != (ca | 0)) break; a[ea >> 0] = 48; f = ea } else { if (f >>> 0 <= ha >>> 0) break; hn(ha | 0, 48, f - V | 0) | 0; do f = f + -1 | 0; while (f >>> 0 > ha >>> 0) } while (0); if (!(c[e >> 2] & 32)) Gl(f, da - f | 0, e) | 0; o = o + 4 | 0 } while (o >>> 0 <= G >>> 0); do if (x | 0) { if (c[e >> 2] & 32 | 0) break; Gl(12624, 1, e) | 0 } while (0); if ((n | 0) > 0 & o >>> 0 < D >>> 0) while (1) { f = Il(c[o >> 2] | 0, 0, ca) | 0; if (f >>> 0 > ha >>> 0) { hn(ha | 0, 48, f - V | 0) | 0; do f = f + -1 | 0; while (f >>> 0 > ha >>> 0) } if (!(c[e >> 2] & 32)) Gl(f, (n | 0) > 9 ? 9 : n, e) | 0; o = o + 4 | 0; f = n + -9 | 0; if (!((n | 0) > 9 & o >>> 0 < D >>> 0)) { n = f; break } else n = f } Ll(e, 48, n + 9 | 0, 9, 0) } else { u = z ? D : p + 4 | 0; if ((n | 0) > -1) { t = (w | 0) == 0; r = p; do { f = Il(c[r >> 2] | 0, 0, ca) | 0; if ((f | 0) == (ca | 0)) { a[ea >> 0] = 48; f = ea } do if ((r | 0) == (p | 0)) { o = f + 1 | 0; if (!(c[e >> 2] & 32)) Gl(f, 1, e) | 0; if (t & (n | 0) < 1) { f = o; break } if (c[e >> 2] & 32 | 0) { f = o; break } Gl(12624, 1, e) | 0; f = o } else { if (f >>> 0 <= ha >>> 0) break; hn(ha | 0, 48, f + W | 0) | 0; do f = f + -1 | 0; while (f >>> 0 > ha >>> 0) } while (0); o = da - f | 0; if (!(c[e >> 2] & 32)) Gl(f, (n | 0) > (o | 0) ? o : n, e) | 0; n = n - o | 0; r = r + 4 | 0 } while (r >>> 0 < u >>> 0 & (n | 0) > -1) } Ll(e, 48, n + 18 | 0, 18, 0); if (c[e >> 2] & 32 | 0) break; Gl(y, Z - y | 0, e) | 0 } while (0); Ll(e, 32, s, A, J ^ 8192); n = (A | 0) < (s | 0) ? s : A } else { r = (F & 32 | 0) != 0; p = q != q | 0.0 != 0.0; f = p ? 0 : H; o = f + 3 | 0; Ll(e, 32, s, o, t); n = c[e >> 2] | 0; if (!(n & 32)) { Gl(I, f, e) | 0; n = c[e >> 2] | 0 } if (!(n & 32)) Gl(p ? (r ? 12901 : 10728) : r ? 10720 : 10724, 3, e) | 0; Ll(e, 32, s, o, J ^ 8192); n = (o | 0) < (s | 0) ? s : o } while (0); s = L; f = K; continue a } default: { w = 0; u = 10684; o = Q; n = x; t = J } } while (0); g: do if ((M | 0) == 63) { p = ia; o = c[p >> 2] | 0; p = c[p + 4 >> 2] | 0; r = t & 32; if ((o | 0) == 0 & (p | 0) == 0) { f = Q; o = 0; p = 0 } else { f = Q; do { f = f + -1 | 0; a[f >> 0] = d[10668 + (o & 15) >> 0] | r; o = ln(o | 0, p | 0, 4) | 0; p = C } while (!((o | 0) == 0 & (p | 0) == 0)); p = ia; o = c[p >> 2] | 0; p = c[p + 4 >> 2] | 0 } p = (n & 8 | 0) == 0 | (o | 0) == 0 & (p | 0) == 0; o = p ? 0 : 2; p = p ? 10684 : 10684 + (t >> 4) | 0; r = u; M = 76 } else if ((M | 0) == 75) { f = Il(n, f, Q) | 0; r = x; n = J; M = 76 } else if ((M | 0) == 81) { M = 0; J = Kl(n, 0, x) | 0; I = (J | 0) == 0; f = n; w = 0; u = 10684; o = I ? n + x | 0 : J; n = I ? x : J - n | 0 } else if ((M | 0) == 85) { M = 0; r = o; n = 0; f = 0; while (1) { p = c[r >> 2] | 0; if (!p) break; f = Ml(O, p) | 0; if ((f | 0) < 0 | f >>> 0 > (t - n | 0) >>> 0) break; n = f + n | 0; if (t >>> 0 > n >>> 0) r = r + 4 | 0; else break } if ((f | 0) < 0) { m = -1; break a } Ll(e, 32, s, n, J); if (!n) { n = 0; M = 96 } else { p = 0; while (1) { f = c[o >> 2] | 0; if (!f) { M = 96; break g } f = Ml(O, f) | 0; p = f + p | 0; if ((p | 0) > (n | 0)) { M = 96; break g } if (!(c[e >> 2] & 32)) Gl(O, f, e) | 0; if (p >>> 0 >= n >>> 0) { M = 96; break } else o = o + 4 | 0 } } } while (0); if ((M | 0) == 96) { M = 0; Ll(e, 32, s, n, J ^ 8192); n = (s | 0) > (n | 0) ? s : n; s = L; f = K; continue } if ((M | 0) == 76) { M = 0; t = (r | 0) > -1 ? n & -65537 : n; n = ia; n = (c[n >> 2] | 0) != 0 | (c[n + 4 >> 2] | 0) != 0; if ((r | 0) != 0 | n) { n = (n & 1 ^ 1) + (S - f) | 0; w = o; u = p; o = Q; n = (r | 0) > (n | 0) ? r : n } else { f = Q; w = o; u = p; o = Q; n = 0 } } r = o - f | 0; o = (n | 0) < (r | 0) ? r : n; p = o + w | 0; n = (s | 0) < (p | 0) ? p : s; Ll(e, 32, n, p, t); if (!(c[e >> 2] & 32)) Gl(u, w, e) | 0; Ll(e, 48, n, p, t ^ 65536); Ll(e, 48, o, r, 0); if (!(c[e >> 2] & 32)) Gl(f, r, e) | 0; Ll(e, 32, n, p, t ^ 8192); s = L; f = K } h: do if ((M | 0) == 243) if (!e) if (!s) m = 0; else { m = 1; while (1) { n = c[l + (m << 2) >> 2] | 0; if (!n) break; Hl(j + (m << 3) | 0, n, g); m = m + 1 | 0; if ((m | 0) >= 10) { m = 1; break h } } while (1) { if (c[l + (m << 2) >> 2] | 0) { m = -1; break h } m = m + 1 | 0; if ((m | 0) >= 10) { m = 1; break } } } while (0); i = ja; return m | 0 } function Fl(a) { a = a | 0; return 0 } function Gl(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; f = e + 16 | 0; g = c[f >> 2] | 0; if (!g) if (!(Ol(e) | 0)) { f = c[f >> 2] | 0; h = 5 } else f = 0; else { f = g; h = 5 } a: do if ((h | 0) == 5) { i = e + 20 | 0; h = c[i >> 2] | 0; g = h; if ((f - h | 0) >>> 0 < d >>> 0) { f = Ya[c[e + 36 >> 2] & 31](e, b, d) | 0; break } b: do if ((a[e + 75 >> 0] | 0) > -1) { f = d; while (1) { if (!f) { h = d; f = 0; break b } h = f + -1 | 0; if ((a[b + h >> 0] | 0) == 10) break; else f = h } if ((Ya[c[e + 36 >> 2] & 31](e, b, f) | 0) >>> 0 < f >>> 0) break a; h = d - f | 0; b = b + f | 0; g = c[i >> 2] | 0 } else { h = d; f = 0 } while (0); nn(g | 0, b | 0, h | 0) | 0; c[i >> 2] = (c[i >> 2] | 0) + h; f = f + h | 0 } while (0); return f | 0 } function Hl(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0.0; a: do if (b >>> 0 <= 20) do switch (b | 0) { case 9: { e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1); b = c[e >> 2] | 0; c[d >> 2] = e + 4; c[a >> 2] = b; break a } case 10: { e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1); b = c[e >> 2] | 0; c[d >> 2] = e + 4; e = a; c[e >> 2] = b; c[e + 4 >> 2] = ((b | 0) < 0) << 31 >> 31; break a } case 11: { e = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1); b = c[e >> 2] | 0; c[d >> 2] = e + 4; e = a; c[e >> 2] = b; c[e + 4 >> 2] = 0; break a } case 12: { e = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1); b = e; f = c[b >> 2] | 0; b = c[b + 4 >> 2] | 0; c[d >> 2] = e + 8; e = a; c[e >> 2] = f; c[e + 4 >> 2] = b; break a } case 13: { f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1); e = c[f >> 2] | 0; c[d >> 2] = f + 4; e = (e & 65535) << 16 >> 16; f = a; c[f >> 2] = e; c[f + 4 >> 2] = ((e | 0) < 0) << 31 >> 31; break a } case 14: { f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1); e = c[f >> 2] | 0; c[d >> 2] = f + 4; f = a; c[f >> 2] = e & 65535; c[f + 4 >> 2] = 0; break a } case 15: { f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1); e = c[f >> 2] | 0; c[d >> 2] = f + 4; e = (e & 255) << 24 >> 24; f = a; c[f >> 2] = e; c[f + 4 >> 2] = ((e | 0) < 0) << 31 >> 31; break a } case 16: { f = (c[d >> 2] | 0) + (4 - 1) & ~(4 - 1); e = c[f >> 2] | 0; c[d >> 2] = f + 4; f = a; c[f >> 2] = e & 255; c[f + 4 >> 2] = 0; break a } case 17: { f = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1); g = +h[f >> 3]; c[d >> 2] = f + 8; h[a >> 3] = g; break a } case 18: { f = (c[d >> 2] | 0) + (8 - 1) & ~(8 - 1); g = +h[f >> 3]; c[d >> 2] = f + 8; h[a >> 3] = g; break a } default: break a } while (0); while (0); return } function Il(b, c, d) { b = b | 0; c = c | 0; d = d | 0; var e = 0; if (c >>> 0 > 0 | (c | 0) == 0 & b >>> 0 > 4294967295) { while (1) { e = tn(b | 0, c | 0, 10, 0) | 0; d = d + -1 | 0; a[d >> 0] = e | 48; e = b; b = qn(b | 0, c | 0, 10, 0) | 0; if (!(c >>> 0 > 9 | (c | 0) == 9 & e >>> 0 > 4294967295)) break; else c = C } c = b } else c = b; if (c) while (1) { d = d + -1 | 0; a[d >> 0] = (c >>> 0) % 10 | 0 | 48; if (c >>> 0 < 10) break; else c = (c >>> 0) / 10 | 0 } return d | 0 } function Jl(b) { b = b | 0; var c = 0, e = 0; e = 0; while (1) { if ((d[10732 + e >> 0] | 0) == (b | 0)) { b = 2; break } c = e + 1 | 0; if ((c | 0) == 87) { c = 10820; e = 87; b = 5; break } else e = c } if ((b | 0) == 2) if (!e) c = 10820; else { c = 10820; b = 5 } if ((b | 0) == 5) while (1) { do { b = c; c = c + 1 | 0 } while ((a[b >> 0] | 0) != 0); e = e + -1 | 0; if (!e) break; else b = 5 } return c | 0 } function Kl(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; h = d & 255; f = (e | 0) != 0; a: do if (f & (b & 3 | 0) != 0) { g = d & 255; while (1) { if ((a[b >> 0] | 0) == g << 24 >> 24) { i = 6; break a } b = b + 1 | 0; e = e + -1 | 0; f = (e | 0) != 0; if (!(f & (b & 3 | 0) != 0)) { i = 5; break } } } else i = 5; while (0); if ((i | 0) == 5) if (f) i = 6; else e = 0; b: do if ((i | 0) == 6) { g = d & 255; if ((a[b >> 0] | 0) != g << 24 >> 24) { f = R(h, 16843009) | 0; c: do if (e >>> 0 > 3) while (1) { h = c[b >> 2] ^ f; if ((h & -2139062144 ^ -2139062144) & h + -16843009 | 0) break; b = b + 4 | 0; e = e + -4 | 0; if (e >>> 0 <= 3) { i = 11; break c } } else i = 11; while (0); if ((i | 0) == 11) if (!e) { e = 0; break } while (1) { if ((a[b >> 0] | 0) == g << 24 >> 24) break b; b = b + 1 | 0; e = e + -1 | 0; if (!e) { e = 0; break } } } } while (0); return (e | 0 ? b : 0) | 0 } function Ll(a, b, d, e, f) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0; j = i; i = i + 256 | 0; h = j; do if ((d | 0) > (e | 0) & (f & 73728 | 0) == 0) { f = d - e | 0; hn(h | 0, b | 0, (f >>> 0 > 256 ? 256 : f) | 0) | 0; b = c[a >> 2] | 0; g = (b & 32 | 0) == 0; if (f >>> 0 > 255) { d = d - e | 0; do { if (g) { Gl(h, 256, a) | 0; b = c[a >> 2] | 0 } f = f + -256 | 0; g = (b & 32 | 0) == 0 } while (f >>> 0 > 255); if (g) f = d & 255; else break } else if (!g) break; Gl(h, f, a) | 0 } while (0); i = j; return } function Ml(a, b) { a = a | 0; b = b | 0; if (!a) a = 0; else a = Nl(a, b, 0) | 0; return a | 0 } function Nl(b, d, e) { b = b | 0; d = d | 0; e = e | 0; do if (b) { if (d >>> 0 < 128) { a[b >> 0] = d; b = 1; break } if (d >>> 0 < 2048) { a[b >> 0] = d >>> 6 | 192; a[b + 1 >> 0] = d & 63 | 128; b = 2; break } if (d >>> 0 < 55296 | (d & -8192 | 0) == 57344) { a[b >> 0] = d >>> 12 | 224; a[b + 1 >> 0] = d >>> 6 & 63 | 128; a[b + 2 >> 0] = d & 63 | 128; b = 3; break } if ((d + -65536 | 0) >>> 0 < 1048576) { a[b >> 0] = d >>> 18 | 240; a[b + 1 >> 0] = d >>> 12 & 63 | 128; a[b + 2 >> 0] = d >>> 6 & 63 | 128; a[b + 3 >> 0] = d & 63 | 128; b = 4; break } else { c[(_k() | 0) >> 2] = 84; b = -1; break } } else b = 1; while (0); return b | 0 } function Ol(b) { b = b | 0; var d = 0, e = 0; d = b + 74 | 0; e = a[d >> 0] | 0; a[d >> 0] = e + 255 | e; d = c[b >> 2] | 0; if (!(d & 8)) { c[b + 8 >> 2] = 0; c[b + 4 >> 2] = 0; e = c[b + 44 >> 2] | 0; c[b + 28 >> 2] = e; c[b + 20 >> 2] = e; c[b + 16 >> 2] = e + (c[b + 48 >> 2] | 0); b = 0 } else { c[b >> 2] = d | 32; b = -1 } return b | 0 } function Pl(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; e = a + 20 | 0; f = c[e >> 2] | 0; a = (c[a + 16 >> 2] | 0) - f | 0; a = a >>> 0 > d >>> 0 ? d : a; nn(f | 0, b | 0, a | 0) | 0; c[e >> 2] = (c[e >> 2] | 0) + a; return d | 0 } function Ql(a) { a = a | 0; var b = 0; b = (yl(a) | 0) == 0; return (b ? a : a & 95) | 0 } function Rl(a) { a = a | 0; var b = 0; b = (xl(a) | 0) == 0; return (b ? a : a | 32) | 0 } function Sl(a) { a = a | 0; return (a >>> 0 < 32 | (a | 0) == 127) & 1 | 0 } function Tl(b, c) { b = b | 0; c = c | 0; var d = 0, e = 0; d = a[b >> 0] | 0; e = a[c >> 0] | 0; if (d << 24 >> 24 == 0 ? 1 : d << 24 >> 24 != e << 24 >> 24) b = e; else { do { b = b + 1 | 0; c = c + 1 | 0; d = a[b >> 0] | 0; e = a[c >> 0] | 0 } while (!(d << 24 >> 24 == 0 ? 1 : d << 24 >> 24 != e << 24 >> 24)); b = e } return (d & 255) - (b & 255) | 0 } function Ul(a, b) { a = a | 0; b = b | 0; return Tl(a, b) | 0 } function Vl(b) { b = b | 0; var d = 0, e = 0, f = 0; f = b; a: do if (!(f & 3)) e = 4; else { d = f; while (1) { if (!(a[b >> 0] | 0)) { b = d; break a } b = b + 1 | 0; d = b; if (!(d & 3)) { e = 4; break } } } while (0); if ((e | 0) == 4) { while (1) { d = c[b >> 2] | 0; if (!((d & -2139062144 ^ -2139062144) & d + -16843009)) b = b + 4 | 0; else break } if ((d & 255) << 24 >> 24) do b = b + 1 | 0; while ((a[b >> 0] | 0) != 0) } return b - f | 0 } function Wl(a) { a = a | 0; if (!(Al(a) | 0)) a = 0; else a = (vl(a) | 0) == 0; return a & 1 | 0 } function Xl() { return 2384 } function Yl(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0; l = i; i = i + 16 | 0; g = l; j = (f | 0) == 0 ? 13040 : f; f = c[j >> 2] | 0; a: do if (!d) if (!f) f = 0; else k = 15; else { h = (b | 0) == 0 ? g : b; if (!e) f = -2; else { if (!f) { f = a[d >> 0] | 0; b = f & 255; if (f << 24 >> 24 > -1) { c[h >> 2] = b; f = f << 24 >> 24 != 0 & 1; break } f = b + -194 | 0; if (f >>> 0 > 50) { k = 15; break } f = c[1716 + (f << 2) >> 2] | 0; g = e + -1 | 0; if (g) { d = d + 1 | 0; k = 9 } } else { g = e; k = 9 } b: do if ((k | 0) == 9) { b = a[d >> 0] | 0; m = (b & 255) >>> 3; if ((m + -16 | m + (f >> 26)) >>> 0 > 7) { k = 15; break a } while (1) { d = d + 1 | 0; f = (b & 255) + -128 | f << 6; g = g + -1 | 0; if ((f | 0) >= 0) break; if (!g) break b; b = a[d >> 0] | 0; if ((b & -64) << 24 >> 24 != -128) { k = 15; break a } } c[j >> 2] = 0; c[h >> 2] = f; f = e - g | 0; break a } while (0); c[j >> 2] = f; f = -2 } } while (0); if ((k | 0) == 15) { c[j >> 2] = 0; c[(_k() | 0) >> 2] = 84; f = -1 } i = l; return f | 0 } function Zl(a) { a = a | 0; return ((a + -48 | 0) >>> 0 < 10 | ((a | 32) + -97 | 0) >>> 0 < 6) & 1 | 0 } function _l(a) { a = a | 0; if (!a) a = 1; else a = (c[a >> 2] | 0) == 0; return a & 1 | 0 } function $l(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0; c[a + 104 >> 2] = b; d = c[a + 8 >> 2] | 0; e = c[a + 4 >> 2] | 0; f = d - e | 0; c[a + 108 >> 2] = f; if ((b | 0) != 0 & (f | 0) > (b | 0)) c[a + 100 >> 2] = e + b; else c[a + 100 >> 2] = d; return } function am(b, e, f, g, h) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; h = h | 0; var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0; a: do if (e >>> 0 > 36) { c[(_k() | 0) >> 2] = 22; h = 0; g = 0 } else { r = b + 4 | 0; q = b + 100 | 0; do { i = c[r >> 2] | 0; if (i >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = i + 1; i = d[i >> 0] | 0 } else i = bm(b) | 0 } while ((ul(i) | 0) != 0); b: do switch (i | 0) { case 43: case 45: { i = ((i | 0) == 45) << 31 >> 31; j = c[r >> 2] | 0; if (j >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = j + 1; p = i; i = d[j >> 0] | 0; break b } else { p = i; i = bm(b) | 0; break b } } default: p = 0 } while (0); j = (e | 0) == 0; do if ((e | 16 | 0) == 16 & (i | 0) == 48) { i = c[r >> 2] | 0; if (i >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = i + 1; i = d[i >> 0] | 0 } else i = bm(b) | 0; if ((i | 32 | 0) != 120) if (j) { e = 8; n = 46; break } else { n = 32; break } i = c[r >> 2] | 0; if (i >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = i + 1; i = d[i >> 0] | 0 } else i = bm(b) | 0; if ((d[12627 + i >> 0] | 0) > 15) { g = (c[q >> 2] | 0) == 0; if (!g) c[r >> 2] = (c[r >> 2] | 0) + -1; if (!f) { $l(b, 0); h = 0; g = 0; break a } if (g) { h = 0; g = 0; break a } c[r >> 2] = (c[r >> 2] | 0) + -1; h = 0; g = 0; break a } else { e = 16; n = 46 } } else { e = j ? 10 : e; if ((d[12627 + i >> 0] | 0) >>> 0 < e >>> 0) n = 32; else { if (c[q >> 2] | 0) c[r >> 2] = (c[r >> 2] | 0) + -1; $l(b, 0); c[(_k() | 0) >> 2] = 22; h = 0; g = 0; break a } } while (0); if ((n | 0) == 32) if ((e | 0) == 10) { e = i + -48 | 0; if (e >>> 0 < 10) { i = 0; j = e; do { i = (i * 10 | 0) + j | 0; e = c[r >> 2] | 0; if (e >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(b) | 0; j = e + -48 | 0 } while (j >>> 0 < 10 & i >>> 0 < 429496729); f = 0 } else { e = i; i = 0; f = 0 } j = e + -48 | 0; if (j >>> 0 < 10) { m = j; while (1) { j = sn(i | 0, f | 0, 10, 0) | 0; k = C; l = ((m | 0) < 0) << 31 >> 31; o = ~l; if (k >>> 0 > o >>> 0 | (k | 0) == (o | 0) & j >>> 0 > ~m >>> 0) { j = e; e = m; break } i = gn(j | 0, k | 0, m | 0, l | 0) | 0; f = C; e = c[r >> 2] | 0; if (e >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(b) | 0; k = e + -48 | 0; if (k >>> 0 < 10 & (f >>> 0 < 429496729 | (f | 0) == 429496729 & i >>> 0 < 2576980378)) m = k; else { j = e; e = k; break } } if (e >>> 0 > 9) { j = p; e = f } else { e = 10; n = 72 } } else { j = p; e = f } } else n = 46; c: do if ((n | 0) == 46) { if (!(e + -1 & e)) { n = a[12883 + ((e * 23 | 0) >>> 5 & 7) >> 0] | 0; f = a[12627 + i >> 0] | 0; j = f & 255; if (j >>> 0 < e >>> 0) { i = 0; k = j; do { i = k | i << n; j = c[r >> 2] | 0; if (j >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = j + 1; j = d[j >> 0] | 0 } else j = bm(b) | 0; f = a[12627 + j >> 0] | 0; k = f & 255 } while (i >>> 0 < 134217728 & k >>> 0 < e >>> 0); k = 0 } else { j = i; k = 0; i = 0 } l = ln(-1, -1, n | 0) | 0; m = C; if ((f & 255) >>> 0 >= e >>> 0 | (k >>> 0 > m >>> 0 | (k | 0) == (m | 0) & i >>> 0 > l >>> 0)) { f = k; n = 72; break } else j = k; while (1) { i = jn(i | 0, j | 0, n | 0) | 0; k = C; i = f & 255 | i; j = c[r >> 2] | 0; if (j >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = j + 1; j = d[j >> 0] | 0 } else j = bm(b) | 0; f = a[12627 + j >> 0] | 0; if ((f & 255) >>> 0 >= e >>> 0 | (k >>> 0 > m >>> 0 | (k | 0) == (m | 0) & i >>> 0 > l >>> 0)) { f = k; n = 72; break c } else j = k } } f = a[12627 + i >> 0] | 0; j = f & 255; if (j >>> 0 < e >>> 0) { i = 0; k = j; do { i = k + (R(i, e) | 0) | 0; j = c[r >> 2] | 0; if (j >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = j + 1; j = d[j >> 0] | 0 } else j = bm(b) | 0; f = a[12627 + j >> 0] | 0; k = f & 255 } while (i >>> 0 < 119304647 & k >>> 0 < e >>> 0); k = 0 } else { j = i; i = 0; k = 0 } if ((f & 255) >>> 0 < e >>> 0) { n = qn(-1, -1, e | 0, 0) | 0; o = C; m = k; while (1) { if (m >>> 0 > o >>> 0 | (m | 0) == (o | 0) & i >>> 0 > n >>> 0) { f = m; n = 72; break c } k = sn(i | 0, m | 0, e | 0, 0) | 0; l = C; f = f & 255; if (l >>> 0 > 4294967295 | (l | 0) == -1 & k >>> 0 > ~f >>> 0) { f = m; n = 72; break c } i = gn(f | 0, 0, k | 0, l | 0) | 0; k = C; j = c[r >> 2] | 0; if (j >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = j + 1; j = d[j >> 0] | 0 } else j = bm(b) | 0; f = a[12627 + j >> 0] | 0; if ((f & 255) >>> 0 >= e >>> 0) { f = k; n = 72; break } else m = k } } else { f = k; n = 72 } } while (0); if ((n | 0) == 72) if ((d[12627 + j >> 0] | 0) >>> 0 < e >>> 0) { do { i = c[r >> 2] | 0; if (i >>> 0 < (c[q >> 2] | 0) >>> 0) { c[r >> 2] = i + 1; i = d[i >> 0] | 0 } else i = bm(b) | 0 } while ((d[12627 + i >> 0] | 0) >>> 0 < e >>> 0); c[(_k() | 0) >> 2] = 34; j = (g & 1 | 0) == 0 & 0 == 0 ? p : 0; e = h; i = g } else { j = p; e = f } if (c[q >> 2] | 0) c[r >> 2] = (c[r >> 2] | 0) + -1; if (!(e >>> 0 < h >>> 0 | (e | 0) == (h | 0) & i >>> 0 < g >>> 0)) { if (!((g & 1 | 0) != 0 | 0 != 0 | (j | 0) != 0)) { c[(_k() | 0) >> 2] = 34; g = gn(g | 0, h | 0, -1, -1) | 0; h = C; break } if (e >>> 0 > h >>> 0 | (e | 0) == (h | 0) & i >>> 0 > g >>> 0) { c[(_k() | 0) >> 2] = 34; break } } g = ((j | 0) < 0) << 31 >> 31; g = fn(i ^ j | 0, e ^ g | 0, j | 0, g | 0) | 0; h = C } while (0); C = h; return g | 0 } function bm(b) { b = b | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0; f = b + 104 | 0; i = c[f >> 2] | 0; if ((i | 0) != 0 ? (c[b + 108 >> 2] | 0) >= (i | 0) : 0) j = 4; else { e = cm(b) | 0; if ((e | 0) >= 0) { f = c[f >> 2] | 0; i = c[b + 8 >> 2] | 0; if (f) { h = c[b + 4 >> 2] | 0; f = f - (c[b + 108 >> 2] | 0) | 0; g = i; if ((i - h | 0) < (f | 0)) j = 9; else c[b + 100 >> 2] = h + (f + -1) } else { g = i; j = 9 } if ((j | 0) == 9) c[b + 100 >> 2] = i; f = b + 4 | 0; if (!g) f = c[f >> 2] | 0; else { f = c[f >> 2] | 0; b = b + 108 | 0; c[b >> 2] = g + 1 - f + (c[b >> 2] | 0) } f = f + -1 | 0; if ((d[f >> 0] | 0 | 0) != (e | 0)) a[f >> 0] = e } else j = 4 } if ((j | 0) == 4) { c[b + 100 >> 2] = 0; e = -1 } return e | 0 } function cm(a) { a = a | 0; var b = 0, e = 0; e = i; i = i + 16 | 0; b = e; if ((c[a + 8 >> 2] | 0) == 0 ? (dm(a) | 0) != 0 : 0) a = -1; else if ((Ya[c[a + 32 >> 2] & 31](a, b, 1) | 0) == 1) a = d[b >> 0] | 0; else a = -1; i = e; return a | 0 } function dm(b) { b = b | 0; var d = 0, e = 0; d = b + 74 | 0; e = a[d >> 0] | 0; a[d >> 0] = e + 255 | e; d = b + 20 | 0; e = b + 44 | 0; if ((c[d >> 2] | 0) >>> 0 > (c[e >> 2] | 0) >>> 0) Ya[c[b + 36 >> 2] & 31](b, 0, 0) | 0; c[b + 16 >> 2] = 0; c[b + 28 >> 2] = 0; c[d >> 2] = 0; d = c[b >> 2] | 0; if (d & 20) if (!(d & 4)) d = -1; else { c[b >> 2] = d | 32; d = -1 } else { d = c[e >> 2] | 0; c[b + 8 >> 2] = d; c[b + 4 >> 2] = d; d = 0 } return d | 0 } function em(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; e = i; i = i + 16 | 0; f = e; c[f >> 2] = d; d = fm(a, b, f) | 0; i = e; return d | 0 } function fm(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Cl(a, 2147483647, b, c) | 0 } function gm(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0.0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 112 | 0; h = j; f = h; g = f + 112 | 0; do { c[f >> 2] = 0; f = f + 4 | 0 } while ((f | 0) < (g | 0)); f = h + 4 | 0; c[f >> 2] = a; g = h + 8 | 0; c[g >> 2] = -1; c[h + 44 >> 2] = a; c[h + 76 >> 2] = -1; $l(h, 0); e = +hm(h, d, 1); d = (c[f >> 2] | 0) - (c[g >> 2] | 0) + (c[h + 108 >> 2] | 0) | 0; if (b | 0) c[b >> 2] = d | 0 ? a + d | 0 : a; i = j; return +e } function hm(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0.0, h = 0, j = 0.0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0.0, q = 0.0, t = 0, u = 0.0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, D = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0.0; M = i; i = i + 512 | 0; I = M; switch (e | 0) { case 0: { J = -149; L = 24; A = 4; break } case 1: { J = -1074; L = 53; A = 4; break } case 2: { J = -1074; L = 53; A = 4; break } default: g = 0.0 }a: do if ((A | 0) == 4) { D = b + 4 | 0; B = b + 100 | 0; do { e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(b) | 0 } while ((ul(e) | 0) != 0); b: do switch (e | 0) { case 43: case 45: { h = 1 - (((e | 0) == 45 & 1) << 1) | 0; e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; k = d[e >> 0] | 0; K = h; break b } else { k = bm(b) | 0; K = h; break b } } default: { k = e; K = 1 } } while (0); e = 0; do { if ((k | 32 | 0) != (a[12892 + e >> 0] | 0)) break; do if (e >>> 0 < 7) { h = c[D >> 2] | 0; if (h >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = h + 1; k = d[h >> 0] | 0; break } else { k = bm(b) | 0; break } } while (0); e = e + 1 | 0 } while (e >>> 0 < 8); c: do switch (e | 0) { case 8: break; case 3: { A = 23; break } default: { l = (f | 0) != 0; if (l & e >>> 0 > 3) if ((e | 0) == 8) break c; else { A = 23; break c } d: do if (!e) { e = 0; do { if ((k | 32 | 0) != (a[12901 + e >> 0] | 0)) break d; do if (e >>> 0 < 2) { h = c[D >> 2] | 0; if (h >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = h + 1; k = d[h >> 0] | 0; break } else { k = bm(b) | 0; break } } while (0); e = e + 1 | 0 } while (e >>> 0 < 3) } while (0); switch (e | 0) { case 3: { e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(b) | 0; if ((e | 0) == 40) e = 1; else { if (!(c[B >> 2] | 0)) { g = r; break a } c[D >> 2] = (c[D >> 2] | 0) + -1; g = r; break a } while (1) { h = c[D >> 2] | 0; if (h >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = h + 1; h = d[h >> 0] | 0 } else h = bm(b) | 0; if (!((h + -48 | 0) >>> 0 < 10 | (h + -65 | 0) >>> 0 < 26) ? !((h | 0) == 95 | (h + -97 | 0) >>> 0 < 26) : 0) break; e = e + 1 | 0 } if ((h | 0) == 41) { g = r; break a } h = (c[B >> 2] | 0) == 0; if (!h) c[D >> 2] = (c[D >> 2] | 0) + -1; if (!l) { c[(_k() | 0) >> 2] = 22; $l(b, 0); g = 0.0; break a } if (!e) { g = r; break a } while (1) { e = e + -1 | 0; if (!h) c[D >> 2] = (c[D >> 2] | 0) + -1; if (!e) { g = r; break a } } } case 0: { do if ((k | 0) == 48) { e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(b) | 0; if ((e | 32 | 0) != 120) { if (!(c[B >> 2] | 0)) { e = 48; break } c[D >> 2] = (c[D >> 2] | 0) + -1; e = 48; break } e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; h = d[e >> 0] | 0; k = 0 } else { h = bm(b) | 0; k = 0 } e: while (1) { switch (h | 0) { case 46: { A = 74; break e } case 48: break; default: { v = 0; m = 0; p = 1.0; g = 0.0; e = 0; l = h; w = k; y = 0; x = 0; k = 0; h = 0; break e } }e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; h = d[e >> 0] | 0; k = 1; continue } else { h = bm(b) | 0; k = 1; continue } } if ((A | 0) == 74) { e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; h = d[e >> 0] | 0 } else h = bm(b) | 0; if ((h | 0) == 48) { k = 0; h = 0; do { e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; l = d[e >> 0] | 0 } else l = bm(b) | 0; k = gn(k | 0, h | 0, -1, -1) | 0; h = C } while ((l | 0) == 48); v = 1; m = 0; p = 1.0; g = 0.0; e = 0; w = 1; y = 0; x = 0 } else { v = 1; m = 0; p = 1.0; g = 0.0; e = 0; l = h; w = k; y = 0; x = 0; k = 0; h = 0 } } while (1) { o = l + -48 | 0; n = l | 32; if (o >>> 0 >= 10) { t = (l | 0) == 46; if (!(t | (n + -97 | 0) >>> 0 < 6)) { n = l; break } if (t) if (!v) { v = 1; j = p; t = w; k = x; h = y; o = x; n = y } else { n = 46; break } else A = 86 } else A = 86; if ((A | 0) == 86) { A = 0; l = (l | 0) > 57 ? n + -87 | 0 : o; do if (!((y | 0) < 0 | (y | 0) == 0 & x >>> 0 < 8)) { if ((y | 0) < 0 | (y | 0) == 0 & x >>> 0 < 14) { u = p * .0625; j = u; g = g + u * +(l | 0); break } if ((m | 0) != 0 | (l | 0) == 0) j = p; else { m = 1; j = p; g = g + p * .5 } } else { j = p; e = l + (e << 4) | 0 } while (0); o = gn(x | 0, y | 0, 1, 0) | 0; t = 1; n = C } l = c[D >> 2] | 0; if (l >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = l + 1; p = j; l = d[l >> 0] | 0; w = t; y = n; x = o; continue } else { p = j; l = bm(b) | 0; w = t; y = n; x = o; continue } } if (!w) { e = (c[B >> 2] | 0) == 0; if (!e) c[D >> 2] = (c[D >> 2] | 0) + -1; if (f) { if (!e ? (z = c[D >> 2] | 0, c[D >> 2] = z + -1, v | 0) : 0) c[D >> 2] = z + -2 } else $l(b, 0); g = +(K | 0) * 0.0; break a } m = (v | 0) == 0; o = m ? x : k; m = m ? y : h; if ((y | 0) < 0 | (y | 0) == 0 & x >>> 0 < 8) { k = x; h = y; do { e = e << 4; k = gn(k | 0, h | 0, 1, 0) | 0; h = C } while ((h | 0) < 0 | (h | 0) == 0 & k >>> 0 < 8); l = e } else l = e; if ((n | 32 | 0) == 112) { h = im(b, f) | 0; e = C; if ((h | 0) == 0 & (e | 0) == -2147483648) { if (!f) { $l(b, 0); g = 0.0; break a } if (!(c[B >> 2] | 0)) { h = 0; e = 0 } else { c[D >> 2] = (c[D >> 2] | 0) + -1; h = 0; e = 0 } } } else if (!(c[B >> 2] | 0)) { h = 0; e = 0 } else { c[D >> 2] = (c[D >> 2] | 0) + -1; h = 0; e = 0 } k = jn(o | 0, m | 0, 2) | 0; k = gn(k | 0, C | 0, -32, -1) | 0; k = gn(k | 0, C | 0, h | 0, e | 0) | 0; e = C; if (!l) { g = +(K | 0) * 0.0; break a } if ((e | 0) > 0 | (e | 0) == 0 & k >>> 0 > (0 - J | 0) >>> 0) { c[(_k() | 0) >> 2] = 34; g = +(K | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284; break a } I = J + -106 | 0; H = ((I | 0) < 0) << 31 >> 31; if ((e | 0) < (H | 0) | (e | 0) == (H | 0) & k >>> 0 < I >>> 0) { c[(_k() | 0) >> 2] = 34; g = +(K | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308; break a } if ((l | 0) > -1) { h = l; do { H = !(g >= .5); I = H & 1 | h << 1; h = I ^ 1; g = g + (H ? g : g + -1.0); k = gn(k | 0, e | 0, -1, -1) | 0; e = C } while ((I | 0) > -1); p = g; l = h } else p = g; J = fn(32, 0, J | 0, ((J | 0) < 0) << 31 >> 31 | 0) | 0; e = gn(k | 0, e | 0, J | 0, C | 0) | 0; J = C; if (0 > (J | 0) | 0 == (J | 0) & L >>> 0 > e >>> 0) if ((e | 0) < 0) { h = 0; e = 84; A = 127 } else A = 125; else { e = L; A = 125 } if ((A | 0) == 125) if ((e | 0) < 53) { h = e; e = 84 - e | 0; A = 127 } else { j = 0.0; g = +(K | 0) } if ((A | 0) == 127) { g = +(K | 0); j = +hl(+el(1.0, e), g); e = h } L = (l & 1 | 0) == 0 & (p != 0.0 & (e | 0) < 32); g = g * (L ? 0.0 : p) + (j + g * +(((L & 1) + l | 0) >>> 0)) - j; if (!(g != 0.0)) c[(_k() | 0) >> 2] = 34; g = +ol(g, k); break a } else e = k; while (0); F = J + L | 0; H = 0 - F | 0; h = 0; f: while (1) { switch (e | 0) { case 46: { A = 138; break f } case 48: break; default: { n = 0; l = h; o = 0; m = 0; break f } }e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; e = d[e >> 0] | 0; h = 1; continue } else { e = bm(b) | 0; h = 1; continue } } if ((A | 0) == 138) { e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(b) | 0; if ((e | 0) == 48) { h = 0; e = 0; while (1) { h = gn(h | 0, e | 0, -1, -1) | 0; m = C; e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(b) | 0; if ((e | 0) == 48) e = m; else { n = 1; l = 1; o = h; break } } } else { n = 1; l = h; o = 0; m = 0 } } c[I >> 2] = 0; t = e + -48 | 0; k = (e | 0) == 46; g: do if (k | t >>> 0 < 10) { A = I + 496 | 0; w = 0; h = 0; z = 0; x = n; y = l; n = 0; l = 0; h: while (1) { do if (k) if (!x) { x = 1; v = z; o = n; m = l } else break h; else { n = gn(n | 0, l | 0, 1, 0) | 0; l = C; v = (e | 0) != 48; if ((h | 0) >= 125) { if (!v) { v = z; break } c[A >> 2] = c[A >> 2] | 1; v = z; break } k = I + (h << 2) | 0; if (!w) e = t; else e = e + -48 + ((c[k >> 2] | 0) * 10 | 0) | 0; c[k >> 2] = e; w = w + 1 | 0; y = (w | 0) == 9; w = y ? 0 : w; h = (y & 1) + h | 0; v = v ? n : z; y = 1 } while (0); e = c[D >> 2] | 0; if (e >>> 0 < (c[B >> 2] | 0) >>> 0) { c[D >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(b) | 0; t = e + -48 | 0; k = (e | 0) == 46; if (!(k | t >>> 0 < 10)) { t = v; v = x; k = y; A = 161; break g } else z = v } e = w; t = z; k = (y | 0) != 0; A = 169 } else { w = 0; h = 0; t = 0; v = n; k = l; n = 0; l = 0; A = 161 } while (0); do if ((A | 0) == 161) { z = (v | 0) == 0; o = z ? n : o; m = z ? l : m; k = (k | 0) != 0; if (!(k & (e | 32 | 0) == 101)) if ((e | 0) > -1) { e = w; A = 169; break } else { e = w; A = 171; break } k = im(b, f) | 0; e = C; if ((k | 0) == 0 & (e | 0) == -2147483648) { if (!f) { $l(b, 0); g = 0.0; break } if (!(c[B >> 2] | 0)) { k = 0; e = 0 } else { c[D >> 2] = (c[D >> 2] | 0) + -1; k = 0; e = 0 } } y = gn(k | 0, e | 0, o | 0, m | 0) | 0; e = w; m = C; A = 173 } while (0); if ((A | 0) == 169) if (c[B >> 2] | 0) { c[D >> 2] = (c[D >> 2] | 0) + -1; if (k) { y = o; A = 173 } else A = 172 } else A = 171; if ((A | 0) == 171) if (k) { y = o; A = 173 } else A = 172; do if ((A | 0) == 172) { c[(_k() | 0) >> 2] = 22; $l(b, 0); g = 0.0 } else if ((A | 0) == 173) { k = c[I >> 2] | 0; if (!k) { g = +(K | 0) * 0.0; break } if (((l | 0) < 0 | (l | 0) == 0 & n >>> 0 < 10) & ((y | 0) == (n | 0) & (m | 0) == (l | 0)) ? L >>> 0 > 30 | (k >>> L | 0) == 0 : 0) { g = +(K | 0) * +(k >>> 0); break } b = (J | 0) / -2 | 0; D = ((b | 0) < 0) << 31 >> 31; if ((m | 0) > (D | 0) | (m | 0) == (D | 0) & y >>> 0 > b >>> 0) { c[(_k() | 0) >> 2] = 34; g = +(K | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284; break } b = J + -106 | 0; D = ((b | 0) < 0) << 31 >> 31; if ((m | 0) < (D | 0) | (m | 0) == (D | 0) & y >>> 0 < b >>> 0) { c[(_k() | 0) >> 2] = 34; g = +(K | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308; break } if (e) { if ((e | 0) < 9) { l = I + (h << 2) | 0; k = c[l >> 2] | 0; do { k = k * 10 | 0; e = e + 1 | 0 } while ((e | 0) != 9); c[l >> 2] = k } h = h + 1 | 0 } if ((t | 0) < 9 ? (t | 0) <= (y | 0) & (y | 0) < 18 : 0) { if ((y | 0) == 9) { g = +(K | 0) * +((c[I >> 2] | 0) >>> 0); break } if ((y | 0) < 9) { g = +(K | 0) * +((c[I >> 2] | 0) >>> 0) / +(c[2440 + (8 - y << 2) >> 2] | 0); break } b = L + 27 + (R(y, -3) | 0) | 0; e = c[I >> 2] | 0; if ((b | 0) > 30 | (e >>> b | 0) == 0) { g = +(K | 0) * +(e >>> 0) * +(c[2440 + (y + -10 << 2) >> 2] | 0); break } } e = (y | 0) % 9 | 0; if (!e) { e = 0; l = 0 } else { t = (y | 0) > -1 ? e : e + 9 | 0; n = c[2440 + (8 - t << 2) >> 2] | 0; if (h) { o = 1e9 / (n | 0) | 0; l = 0; m = 0; k = y; e = 0; do { B = I + (e << 2) | 0; D = c[B >> 2] | 0; b = ((D >>> 0) / (n >>> 0) | 0) + l | 0; c[B >> 2] = b; l = R((D >>> 0) % (n >>> 0) | 0, o) | 0; b = (e | 0) == (m | 0) & (b | 0) == 0; k = b ? k + -9 | 0 : k; m = b ? m + 1 & 127 : m; e = e + 1 | 0 } while ((e | 0) != (h | 0)); if (!l) l = m; else { c[I + (h << 2) >> 2] = l; l = m; h = h + 1 | 0 } } else { l = 0; h = 0; k = y } e = 0; y = 9 - t + k | 0 } i: while (1) { t = (y | 0) < 18; v = (y | 0) == 18; w = I + (l << 2) | 0; while (1) { if (!t) { if (!v) { k = y; break i } if ((c[w >> 2] | 0) >>> 0 >= 9007199) { k = 18; break i } } k = 0; x = h; h = h + 127 | 0; while (1) { m = h & 127; n = I + (m << 2) | 0; h = jn(c[n >> 2] | 0, 0, 29) | 0; h = gn(h | 0, C | 0, k | 0, 0) | 0; k = C; if (k >>> 0 > 0 | (k | 0) == 0 & h >>> 0 > 1e9) { o = qn(h | 0, k | 0, 1e9, 0) | 0; h = tn(h | 0, k | 0, 1e9, 0) | 0 } else o = 0; c[n >> 2] = h; b = (m | 0) == (l | 0); x = (m | 0) != (x + 127 & 127 | 0) | b ? x : (h | 0) == 0 ? m : x; if (b) break; else { k = o; h = m + -1 | 0 } } e = e + -29 | 0; if (o | 0) break; else h = x } l = l + 127 & 127; h = x + 127 & 127; k = I + ((x + 126 & 127) << 2) | 0; if ((l | 0) == (x | 0)) c[k >> 2] = c[k >> 2] | c[I + (h << 2) >> 2]; else h = x; c[I + (l << 2) >> 2] = o; y = y + 9 | 0 } j: while (1) { w = h + 1 & 127; x = I + ((h + 127 & 127) << 2) | 0; while (1) { o = (k | 0) == 18; v = (k | 0) > 27 ? 9 : 1; y = l; while (1) { l = 0; while (1) { m = l + y & 127; if ((m | 0) == (h | 0)) { G = 2; A = 220; break } m = c[I + (m << 2) >> 2] | 0; n = c[2472 + (l << 2) >> 2] | 0; if (m >>> 0 < n >>> 0) { G = 2; A = 220; break } if (m >>> 0 > n >>> 0) break; l = l + 1 | 0; if ((l | 0) >= 2) { G = l; A = 220; break } } if ((A | 0) == 220 ? (A = 0, o & (G | 0) == 2) : 0) { g = 0.0; m = 0; break j } e = e + v | 0; if ((y | 0) == (h | 0)) y = h; else break } o = (1 << v) + -1 | 0; t = 1e9 >>> v; n = 0; l = y; m = y; do { B = I + (m << 2) | 0; D = c[B >> 2] | 0; b = (D >>> v) + n | 0; c[B >> 2] = b; n = R(D & o, t) | 0; b = (m | 0) == (l | 0) & (b | 0) == 0; k = b ? k + -9 | 0 : k; l = b ? l + 1 & 127 : l; m = m + 1 & 127 } while ((m | 0) != (h | 0)); if (!n) continue; if ((w | 0) != (l | 0)) break; c[x >> 2] = c[x >> 2] | 1 } c[I + (h << 2) >> 2] = n; h = w } while (1) { l = m + y & 127; k = h + 1 & 127; if ((l | 0) == (h | 0)) c[I + (k + -1 << 2) >> 2] = 0; else k = h; g = g * 1.0e9 + +((c[I + (l << 2) >> 2] | 0) >>> 0); m = m + 1 | 0; if ((m | 0) == 2) break; else h = k } u = +(K | 0); j = u * g; n = e + 53 | 0; o = n - J | 0; t = (o | 0) < (L | 0); h = t & 1; m = t ? ((o | 0) < 0 ? 0 : o) : L; if ((m | 0) < 53) { N = +hl(+el(1.0, 105 - m | 0), j); p = +sl(j, +el(1.0, 53 - m | 0)); q = N; g = p; p = N + (j - p) } else { q = 0.0; g = 0.0; p = j } l = y + 2 & 127; do if ((l | 0) != (k | 0)) { l = c[I + (l << 2) >> 2] | 0; do if (l >>> 0 >= 5e8) { if ((l | 0) != 5e8) { g = u * .75 + g; break } if ((y + 3 & 127 | 0) == (k | 0)) { g = u * .5 + g; break } else { g = u * .75 + g; break } } else { if ((l | 0) == 0 ? (y + 3 & 127 | 0) == (k | 0) : 0) break; g = u * .25 + g } while (0); if ((53 - m | 0) > 1) { if (+sl(g, 1.0) != 0.0) { j = g; break } j = g + 1.0 } else j = g } else j = g; while (0); g = p + j - q; do if ((n & 2147483647 | 0) > (-2 - F | 0)) { if (+E(+g) >= 9007199254740992.0) { g = g * .5; h = t & (m | 0) == (o | 0) ? 0 : h; e = e + 1 | 0 } if ((e + 50 | 0) <= (H | 0) ? !(j != 0.0 & (h | 0) != 0) : 0) break; c[(_k() | 0) >> 2] = 34 } while (0); g = +ol(g, e) } while (0); break a } default: { if (c[B >> 2] | 0) c[D >> 2] = (c[D >> 2] | 0) + -1; c[(_k() | 0) >> 2] = 22; $l(b, 0); g = 0.0; break a } } } } while (0); if ((A | 0) == 23) { h = (c[B >> 2] | 0) == 0; if (!h) c[D >> 2] = (c[D >> 2] | 0) + -1; if ((f | 0) != 0 & e >>> 0 > 3) do { if (!h) c[D >> 2] = (c[D >> 2] | 0) + -1; e = e + -1 | 0 } while (e >>> 0 > 3) } g = +(K | 0) * s } while (0); i = M; return +g } function im(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, h = 0, i = 0; h = a + 4 | 0; e = c[h >> 2] | 0; i = a + 100 | 0; if (e >>> 0 < (c[i >> 2] | 0) >>> 0) { c[h >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(a) | 0; switch (e | 0) { case 43: case 45: { f = (e | 0) == 45 & 1; e = c[h >> 2] | 0; if (e >>> 0 < (c[i >> 2] | 0) >>> 0) { c[h >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(a) | 0; if ((b | 0) != 0 & (e + -48 | 0) >>> 0 > 9 ? (c[i >> 2] | 0) != 0 : 0) c[h >> 2] = (c[h >> 2] | 0) + -1; break } default: f = 0 }if ((e + -48 | 0) >>> 0 > 9) if (!(c[i >> 2] | 0)) { f = -2147483648; e = 0 } else { c[h >> 2] = (c[h >> 2] | 0) + -1; f = -2147483648; e = 0 } else { g = 0; do { g = e + -48 + (g * 10 | 0) | 0; e = c[h >> 2] | 0; if (e >>> 0 < (c[i >> 2] | 0) >>> 0) { c[h >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(a) | 0 } while ((e + -48 | 0) >>> 0 < 10 & (g | 0) < 214748364); b = ((g | 0) < 0) << 31 >> 31; if ((e + -48 | 0) >>> 0 < 10) do { b = sn(g | 0, b | 0, 10, 0) | 0; g = C; e = gn(e | 0, ((e | 0) < 0) << 31 >> 31 | 0, -48, -1) | 0; g = gn(e | 0, C | 0, b | 0, g | 0) | 0; b = C; e = c[h >> 2] | 0; if (e >>> 0 < (c[i >> 2] | 0) >>> 0) { c[h >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(a) | 0 } while ((e + -48 | 0) >>> 0 < 10 & ((b | 0) < 21474836 | (b | 0) == 21474836 & g >>> 0 < 2061584302)); if ((e + -48 | 0) >>> 0 < 10) do { e = c[h >> 2] | 0; if (e >>> 0 < (c[i >> 2] | 0) >>> 0) { c[h >> 2] = e + 1; e = d[e >> 0] | 0 } else e = bm(a) | 0 } while ((e + -48 | 0) >>> 0 < 10); if (c[i >> 2] | 0) c[h >> 2] = (c[h >> 2] | 0) + -1; i = (f | 0) != 0; e = fn(0, 0, g | 0, b | 0) | 0; f = i ? C : b; e = i ? e : g } C = f; return e | 0 } function jm(a, b) { a = a | 0; b = b | 0; return +(+gm(a, b, 1)) } function km(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; g = i; i = i + 32 | 0; f = g; c[f >> 2] = 0; c[f + 4 >> 2] = 0; c[f + 8 >> 2] = 0; c[f + 12 >> 2] = 0; c[f + 16 >> 2] = 0; c[f + 20 >> 2] = 0; c[f + 24 >> 2] = 0; c[f + 28 >> 2] = 0; e = a[d >> 0] | 0; do if (!(e << 24 >> 24)) d = 0; else { if (!(a[d + 1 >> 0] | 0)) { d = b; while (1) if ((a[d >> 0] | 0) == e << 24 >> 24) d = d + 1 | 0; else break; d = d - b | 0; break } do { h = f + (((e & 255) >>> 5 & 255) << 2) | 0; c[h >> 2] = c[h >> 2] | 1 << (e & 31); d = d + 1 | 0; e = a[d >> 0] | 0 } while (e << 24 >> 24 != 0); e = a[b >> 0] | 0; a: do if (!(e << 24 >> 24)) d = b; else { d = b; do { if (!(c[f + (((e & 255) >>> 5 & 255) << 2) >> 2] & 1 << (e & 31))) break a; d = d + 1 | 0; e = a[d >> 0] | 0 } while (e << 24 >> 24 != 0) } while (0); d = d - b | 0 } while (0); i = g; return d | 0 } function lm(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; g = i; i = i + 32 | 0; f = g; e = a[d >> 0] | 0; if (e << 24 >> 24 != 0 ? (a[d + 1 >> 0] | 0) != 0 : 0) { c[f >> 2] = 0; c[f + 4 >> 2] = 0; c[f + 8 >> 2] = 0; c[f + 12 >> 2] = 0; c[f + 16 >> 2] = 0; c[f + 20 >> 2] = 0; c[f + 24 >> 2] = 0; c[f + 28 >> 2] = 0; do { h = f + (((e & 255) >>> 5 & 255) << 2) | 0; c[h >> 2] = c[h >> 2] | 1 << (e & 31); d = d + 1 | 0; e = a[d >> 0] | 0 } while (e << 24 >> 24 != 0); e = a[b >> 0] | 0; a: do if (!(e << 24 >> 24)) d = b; else { d = b; do { if (c[f + (((e & 255) >>> 5 & 255) << 2) >> 2] & 1 << (e & 31) | 0) break a; d = d + 1 | 0; e = a[d >> 0] | 0 } while (e << 24 >> 24 != 0) } while (0); d = d - b | 0 } else d = (mm(b, e << 24 >> 24) | 0) - b | 0; i = g; return d | 0 } function mm(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; f = d & 255; a: do if (!f) b = b + (Vl(b) | 0) | 0; else { if (b & 3) { e = d & 255; do { g = a[b >> 0] | 0; if (g << 24 >> 24 == 0 ? 1 : g << 24 >> 24 == e << 24 >> 24) break a; b = b + 1 | 0 } while ((b & 3 | 0) != 0) } f = R(f, 16843009) | 0; e = c[b >> 2] | 0; b: do if (!((e & -2139062144 ^ -2139062144) & e + -16843009)) do { g = e ^ f; if ((g & -2139062144 ^ -2139062144) & g + -16843009 | 0) break b; b = b + 4 | 0; e = c[b >> 2] | 0 } while (!((e & -2139062144 ^ -2139062144) & e + -16843009 | 0)); while (0); e = d & 255; while (1) { g = a[b >> 0] | 0; if (g << 24 >> 24 == 0 ? 1 : g << 24 >> 24 == e << 24 >> 24) break; else b = b + 1 | 0 } } while (0); return b | 0 } function nm(a, b) { a = a | 0; b = b | 0; return om(a, b, (Vl(a) | 0) + 1 | 0) | 0 } function om(b, c, d) { b = b | 0; c = c | 0; d = d | 0; var e = 0; e = c & 255; do { if (!d) { c = 0; break } d = d + -1 | 0; c = b + d | 0 } while ((a[c >> 0] | 0) != e << 24 >> 24); return c | 0 } function pm(b, c) { b = b | 0; c = c | 0; b = mm(b, c) | 0; return ((a[b >> 0] | 0) == (c & 255) << 24 >> 24 ? b : 0) | 0 } function qm(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; g = i; i = i + 32 | 0; f = g + 16 | 0; e = g; if (Kl(12905, a[d >> 0] | 0, 4) | 0) { h = rm(d) | 0 | 32768; c[e >> 2] = b; c[e + 4 >> 2] = h; c[e + 8 >> 2] = 438; e = Zk(Qa(5, e | 0) | 0) | 0; if ((e | 0) >= 0) { b = sm(e, d) | 0; if (!b) { c[f >> 2] = e; Pa(6, f | 0) | 0; b = 0 } } else b = 0 } else { c[(_k() | 0) >> 2] = 22; b = 0 } i = g; return b | 0 } function rm(b) { b = b | 0; var c = 0, d = 0, e = 0; d = (pm(b, 43) | 0) == 0; c = a[b >> 0] | 0; d = d ? c << 24 >> 24 != 114 & 1 : 2; e = (pm(b, 120) | 0) == 0; d = e ? d : d | 128; b = (pm(b, 101) | 0) == 0; b = b ? d : d | 524288; b = c << 24 >> 24 == 114 ? b : b | 64; b = c << 24 >> 24 == 119 ? b | 512 : b; return (c << 24 >> 24 == 97 ? b | 1024 : b) | 0 } function sm(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; o = i; i = i + 112 | 0; n = o + 40 | 0; l = o + 24 | 0; k = o + 16 | 0; g = o; m = o + 52 | 0; f = a[d >> 0] | 0; if (Kl(12905, f << 24 >> 24, 4) | 0) { e = $m(1144) | 0; if (!e) e = 0; else { h = e; j = h + 112 | 0; do { c[h >> 2] = 0; h = h + 4 | 0 } while ((h | 0) < (j | 0)); if (!(pm(d, 43) | 0)) c[e >> 2] = f << 24 >> 24 == 114 ? 8 : 4; if (pm(d, 101) | 0) { c[g >> 2] = b; c[g + 4 >> 2] = 2; c[g + 8 >> 2] = 1; ia(221, g | 0) | 0; f = a[d >> 0] | 0 } if (f << 24 >> 24 == 97) { c[k >> 2] = b; c[k + 4 >> 2] = 3; f = ia(221, k | 0) | 0; if (!(f & 1024)) { c[l >> 2] = b; c[l + 4 >> 2] = 4; c[l + 8 >> 2] = f | 1024; ia(221, l | 0) | 0 } d = c[e >> 2] | 128; c[e >> 2] = d } else d = c[e >> 2] | 0; c[e + 60 >> 2] = b; c[e + 44 >> 2] = e + 120; c[e + 48 >> 2] = 1024; f = e + 75 | 0; a[f >> 0] = -1; if ((d & 8 | 0) == 0 ? (c[n >> 2] = b, c[n + 4 >> 2] = 21505, c[n + 8 >> 2] = m, (Ia(54, n | 0) | 0) == 0) : 0) a[f >> 0] = 10; c[e + 32 >> 2] = 18; c[e + 36 >> 2] = 21; c[e + 40 >> 2] = 19; c[e + 12 >> 2] = 158; if (!(c[3249] | 0)) c[e + 76 >> 2] = -1; Oa(13020); f = c[3254] | 0; c[e + 56 >> 2] = f; if (f | 0) c[f + 52 >> 2] = e; c[3254] = e; Ja(13020) } } else { c[(_k() | 0) >> 2] = 22; e = 0 } i = o; return e | 0 } function tm(a) { a = a | 0; var b = 0, d = 0, e = 0; e = (c[a >> 2] & 1 | 0) != 0; if (!e) { Oa(13020); d = c[a + 52 >> 2] | 0; b = a + 56 | 0; if (d | 0) c[d + 56 >> 2] = c[b >> 2]; b = c[b >> 2] | 0; if (b | 0) c[b + 52 >> 2] = d; if ((c[3254] | 0) == (a | 0)) c[3254] = b; Ja(13020) } b = um(a) | 0; b = $a[c[a + 12 >> 2] & 255](a) | 0 | b; d = c[a + 92 >> 2] | 0; if (d | 0) an(d); if (!e) an(a); return b | 0 } function um(a) { a = a | 0; var b = 0, d = 0; do if (a) { if ((c[a + 76 >> 2] | 0) <= -1) { b = vm(a) | 0; break } d = (Fl(a) | 0) == 0; b = vm(a) | 0; if (!d) al(a) } else { if (!(c[538] | 0)) b = 0; else b = um(c[538] | 0) | 0; Oa(13020); a = c[3254] | 0; if (a) do { if ((c[a + 76 >> 2] | 0) > -1) d = Fl(a) | 0; else d = 0; if ((c[a + 20 >> 2] | 0) >>> 0 > (c[a + 28 >> 2] | 0) >>> 0) b = vm(a) | 0 | b; if (d | 0) al(a); a = c[a + 56 >> 2] | 0 } while ((a | 0) != 0); Ja(13020) } while (0); return b | 0 } function vm(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0; b = a + 20 | 0; h = a + 28 | 0; if ((c[b >> 2] | 0) >>> 0 > (c[h >> 2] | 0) >>> 0 ? (Ya[c[a + 36 >> 2] & 31](a, 0, 0) | 0, (c[b >> 2] | 0) == 0) : 0) a = -1; else { d = a + 4 | 0; e = c[d >> 2] | 0; f = a + 8 | 0; g = c[f >> 2] | 0; if (e >>> 0 < g >>> 0) Ya[c[a + 40 >> 2] & 31](a, e - g | 0, 1) | 0; c[a + 16 >> 2] = 0; c[h >> 2] = 0; c[b >> 2] = 0; c[f >> 2] = 0; c[d >> 2] = 0; a = 0 } return a | 0 } function wm(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; if ((c[f + 76 >> 2] | 0) > -1) m = Fl(f) | 0; else m = 0; g = e + -1 | 0; if ((e | 0) < 2) { n = f + 74 | 0; l = a[n >> 0] | 0; a[n >> 0] = l + 255 | l; if (m | 0) al(f); if (!g) a[b >> 0] = 0; else b = 0 } else { a: do if (g) { k = f + 4 | 0; l = f + 8 | 0; e = b; while (1) { h = c[k >> 2] | 0; o = h; p = (c[l >> 2] | 0) - o | 0; i = Kl(h, 10, p) | 0; j = (i | 0) == 0; i = j ? p : 1 - o + i | 0; i = i >>> 0 < g >>> 0 ? i : g; nn(e | 0, h | 0, i | 0) | 0; h = (c[k >> 2] | 0) + i | 0; c[k >> 2] = h; e = e + i | 0; i = g - i | 0; if (!(j & (i | 0) != 0)) { n = 17; break a } if (h >>> 0 >= (c[l >> 2] | 0) >>> 0) { g = cm(f) | 0; if ((g | 0) < 0) break; else j = g } else { c[k >> 2] = h + 1; j = d[h >> 0] | 0 } g = i + -1 | 0; h = e + 1 | 0; a[e >> 0] = j; if (!((g | 0) != 0 & (j & 255 | 0) != 10)) { e = h; n = 17; break a } else e = h } if ((e | 0) != (b | 0) ? (c[f >> 2] & 16 | 0) != 0 : 0) n = 17; else b = 0 } else { e = b; n = 17 } while (0); if ((n | 0) == 17) if (!b) b = 0; else a[e >> 0] = 0; if (m) al(f) } return b | 0 } function xm(a) { a = a | 0; var b = 0, d = 0; if ((c[a + 76 >> 2] | 0) > -1) { d = (Fl(a) | 0) == 0; b = (c[a >> 2] | 0) >>> 4 & 1; if (!d) al(a) } else b = (c[a >> 2] | 0) >>> 4 & 1; return b | 0 } function ym(a) { a = a | 0; var b = 0; if ((c[a + 76 >> 2] | 0) > -1) { b = (Fl(a) | 0) == 0; a = (c[a >> 2] | 0) >>> 5 & 1 } else a = (c[a >> 2] | 0) >>> 5 & 1; return a | 0 } function zm(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; e = i; i = i + 16 | 0; f = e; c[f >> 2] = d; d = Am(a, b, f) | 0; i = e; return d | 0 } function Am(e, f, j) { e = e | 0; f = f | 0; j = j | 0; var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0.0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0; R = i; i = i + 304 | 0; K = R + 16 | 0; L = R + 8 | 0; M = R + 33 | 0; N = R; O = R + 32 | 0; if ((c[e + 76 >> 2] | 0) > -1) Q = Fl(e) | 0; else Q = 0; m = a[f >> 0] | 0; a: do if (m << 24 >> 24) { z = e + 4 | 0; A = e + 100 | 0; B = e + 108 | 0; D = e + 8 | 0; E = M + 10 | 0; F = M + 33 | 0; y = L + 4 | 0; G = M + 46 | 0; H = M + 94 | 0; I = M + 1 | 0; J = M + 1 | 0; q = f; v = 0; f = 0; l = 0; k = 0; b: while (1) { c: do if (!(ul(m & 255) | 0)) { m = m << 24 >> 24 == 37; d: do if (m) { n = q + 1 | 0; o = a[n >> 0] | 0; e: do switch (o << 24 >> 24) { case 37: break d; case 42: { x = 0; n = q + 2 | 0; break } default: { m = (o & 255) + -48 | 0; if (m >>> 0 < 10 ? (a[q + 2 >> 0] | 0) == 36 : 0) { c[K >> 2] = c[j >> 2]; while (1) { x = (c[K >> 2] | 0) + (4 - 1) & ~(4 - 1); n = c[x >> 2] | 0; c[K >> 2] = x + 4; if (m >>> 0 > 1) m = m + -1 | 0; else break } x = n; n = q + 3 | 0; break e } w = (c[j >> 2] | 0) + (4 - 1) & ~(4 - 1); x = c[w >> 2] | 0; c[j >> 2] = w + 4 } } while (0); q = a[n >> 0] | 0; m = q & 255; if ((m + -48 | 0) >>> 0 < 10) { o = 0; do { o = (o * 10 | 0) + -48 + m | 0; n = n + 1 | 0; q = a[n >> 0] | 0; m = q & 255 } while ((m + -48 | 0) >>> 0 < 10) } else o = 0; if (q << 24 >> 24 == 109) { q = n + 1 | 0; m = (x | 0) != 0 & 1; l = 0; k = 0; n = q; q = a[q >> 0] | 0 } else m = 0; r = n + 1 | 0; switch (q << 24 >> 24) { case 104: { w = (a[r >> 0] | 0) == 104; q = w ? -2 : -1; n = w ? n + 2 | 0 : r; break } case 108: { w = (a[r >> 0] | 0) == 108; q = w ? 3 : 1; n = w ? n + 2 | 0 : r; break } case 106: { q = 3; n = r; break } case 116: case 122: { q = 1; n = r; break } case 76: { q = 2; n = r; break } case 110: case 112: case 67: case 83: case 91: case 99: case 115: case 88: case 71: case 70: case 69: case 65: case 103: case 102: case 101: case 97: case 120: case 117: case 111: case 105: case 100: { q = 0; break } default: { P = 154; break b } }t = d[n >> 0] | 0; u = (t & 47 | 0) == 3; t = u ? t | 32 : t; u = u ? 1 : q; s = t & 255; switch (s << 24 >> 24) { case 99: { o = (o | 0) < 1 ? 1 : o; break } case 91: break; case 110: { if (!x) { o = v; break c } switch (u | 0) { case -2: { a[x >> 0] = v; o = v; break c } case -1: { b[x >> 1] = v; o = v; break c } case 0: { c[x >> 2] = v; o = v; break c } case 1: { c[x >> 2] = v; o = v; break c } case 3: { o = x; c[o >> 2] = v; c[o + 4 >> 2] = ((v | 0) < 0) << 31 >> 31; o = v; break c } default: { o = v; break c } } } default: { $l(e, 0); do { q = c[z >> 2] | 0; if (q >>> 0 < (c[A >> 2] | 0) >>> 0) { c[z >> 2] = q + 1; q = d[q >> 0] | 0 } else q = bm(e) | 0 } while ((ul(q) | 0) != 0); if (!(c[A >> 2] | 0)) q = c[z >> 2] | 0; else { q = (c[z >> 2] | 0) + -1 | 0; c[z >> 2] = q } v = (c[B >> 2] | 0) + v + q - (c[D >> 2] | 0) | 0 } }$l(e, o); q = c[z >> 2] | 0; r = c[A >> 2] | 0; if (q >>> 0 < r >>> 0) c[z >> 2] = q + 1; else { if ((bm(e) | 0) < 0) { P = 154; break b } r = c[A >> 2] | 0 } if (r | 0) c[z >> 2] = (c[z >> 2] | 0) + -1; f: do switch (s << 24 >> 24) { case 91: case 99: case 115: { w = (t | 0) == 99; g: do if ((t | 16 | 0) == 115) { hn(I | 0, -1, 256) | 0; a[M >> 0] = 0; if ((t | 0) == 115) { a[F >> 0] = 0; a[E >> 0] = 0; a[E + 1 >> 0] = 0; a[E + 2 >> 0] = 0; a[E + 3 >> 0] = 0; a[E + 4 >> 0] = 0 } } else { s = n + 1 | 0; t = (a[s >> 0] | 0) == 94; q = t & 1; n = t ? n + 2 | 0 : s; hn(J | 0, t & 1 | 0, 256) | 0; a[M >> 0] = 0; switch (a[n >> 0] | 0) { case 45: { t = (q ^ 1) & 255; a[G >> 0] = t; n = n + 1 | 0; break } case 93: { t = (q ^ 1) & 255; a[H >> 0] = t; n = n + 1 | 0; break } default: t = (q ^ 1) & 255 } while (1) { q = a[n >> 0] | 0; h: do switch (q << 24 >> 24) { case 0: { P = 154; break b } case 93: break g; case 45: { s = n + 1 | 0; q = a[s >> 0] | 0; switch (q << 24 >> 24) { case 93: case 0: { q = 45; break h } default: { } }n = a[n + -1 >> 0] | 0; if ((n & 255) < (q & 255)) { n = n & 255; do { n = n + 1 | 0; a[M + n >> 0] = t; q = a[s >> 0] | 0 } while ((n | 0) < (q & 255 | 0)); n = s } else n = s; break } default: { } } while (0); a[M + ((q & 255) + 1) >> 0] = t; n = n + 1 | 0 } } while (0); q = w ? o + 1 | 0 : 31; t = (u | 0) == 1; u = (m | 0) != 0; i: do if (t) { if (u) { l = $m(q << 2) | 0; if (!l) { k = 0; P = 154; break b } } else l = x; c[L >> 2] = 0; c[y >> 2] = 0; s = q; k = 0; j: while (1) { r = (l | 0) == 0; do { k: while (1) { q = c[z >> 2] | 0; if (q >>> 0 < (c[A >> 2] | 0) >>> 0) { c[z >> 2] = q + 1; q = d[q >> 0] | 0 } else q = bm(e) | 0; if (!(a[M + (q + 1) >> 0] | 0)) break j; a[O >> 0] = q; switch (Yl(N, O, 1, L) | 0) { case -1: { k = 0; P = 154; break b } case -2: break; default: break k } } if (!r) { c[l + (k << 2) >> 2] = c[N >> 2]; k = k + 1 | 0 } } while (!(u & (k | 0) == (s | 0))); k = s << 1 | 1; q = bn(l, k << 2) | 0; if (!q) { k = 0; P = 154; break b } else { r = s; s = k; l = q; k = r } } if (!(_l(L) | 0)) { k = 0; P = 154; break b } else { r = k; k = 0 } } else { if (u) { k = $m(q) | 0; if (!k) { k = 0; l = 0; P = 154; break b } else { r = q; l = 0 } while (1) { do { q = c[z >> 2] | 0; if (q >>> 0 < (c[A >> 2] | 0) >>> 0) { c[z >> 2] = q + 1; q = d[q >> 0] | 0 } else q = bm(e) | 0; if (!(a[M + (q + 1) >> 0] | 0)) { r = l; l = 0; break i } a[k + l >> 0] = q; l = l + 1 | 0 } while ((l | 0) != (r | 0)); l = r << 1 | 1; q = bn(k, l) | 0; if (!q) { l = 0; P = 154; break b } else { s = r; r = l; k = q; l = s } } } if (!x) { l = r; while (1) { k = c[z >> 2] | 0; if (k >>> 0 < l >>> 0) { c[z >> 2] = k + 1; k = d[k >> 0] | 0 } else k = bm(e) | 0; if (!(a[M + (k + 1) >> 0] | 0)) { r = 0; k = 0; l = 0; break i } l = c[A >> 2] | 0 } } else { q = 0; l = r; while (1) { k = c[z >> 2] | 0; if (k >>> 0 < l >>> 0) { c[z >> 2] = k + 1; k = d[k >> 0] | 0 } else k = bm(e) | 0; if (!(a[M + (k + 1) >> 0] | 0)) { r = q; k = x; l = 0; break i } a[x + q >> 0] = k; q = q + 1 | 0; l = c[A >> 2] | 0 } } } while (0); if (!(c[A >> 2] | 0)) q = c[z >> 2] | 0; else { q = (c[z >> 2] | 0) + -1 | 0; c[z >> 2] = q } q = q - (c[D >> 2] | 0) + (c[B >> 2] | 0) | 0; if (!q) break b; if (!((q | 0) == (o | 0) | w ^ 1)) break b; do if (u) if (t) { c[x >> 2] = l; break } else { c[x >> 2] = k; break } while (0); if (!w) { if (l | 0) c[l + (r << 2) >> 2] = 0; if (!k) { k = 0; break f } a[k + r >> 0] = 0 } break } case 120: case 88: case 112: { o = 16; P = 136; break } case 111: { o = 8; P = 136; break } case 117: case 100: { o = 10; P = 136; break } case 105: { o = 0; P = 136; break } case 71: case 103: case 70: case 102: case 69: case 101: case 65: case 97: { p = +hm(e, u, 0); if ((c[B >> 2] | 0) == ((c[D >> 2] | 0) - (c[z >> 2] | 0) | 0)) break b; if (x) switch (u | 0) { case 0: { g[x >> 2] = p; break f } case 1: { h[x >> 3] = p; break f } case 2: { h[x >> 3] = p; break f } default: break f }break } default: { } } while (0); l: do if ((P | 0) == 136) { P = 0; o = am(e, o, 0, -1, -1) | 0; if ((c[B >> 2] | 0) == ((c[D >> 2] | 0) - (c[z >> 2] | 0) | 0)) break b; if ((x | 0) != 0 & (t | 0) == 112) { c[x >> 2] = o; break } if (x) switch (u | 0) { case -2: { a[x >> 0] = o; break l } case -1: { b[x >> 1] = o; break l } case 0: { c[x >> 2] = o; break l } case 1: { c[x >> 2] = o; break l } case 3: { w = x; c[w >> 2] = o; c[w + 4 >> 2] = C; break l } default: break l } } while (0); f = ((x | 0) != 0 & 1) + f | 0; o = (c[B >> 2] | 0) + v + (c[z >> 2] | 0) - (c[D >> 2] | 0) | 0; break c } while (0); n = q + (m & 1) | 0; $l(e, 0); m = c[z >> 2] | 0; if (m >>> 0 < (c[A >> 2] | 0) >>> 0) { c[z >> 2] = m + 1; m = d[m >> 0] | 0 } else m = bm(e) | 0; if ((m | 0) != (d[n >> 0] | 0)) { P = 22; break b } o = v + 1 | 0 } else { n = q; while (1) { m = n + 1 | 0; if (!(ul(d[m >> 0] | 0) | 0)) break; else n = m } $l(e, 0); do { m = c[z >> 2] | 0; if (m >>> 0 < (c[A >> 2] | 0) >>> 0) { c[z >> 2] = m + 1; m = d[m >> 0] | 0 } else m = bm(e) | 0 } while ((ul(m) | 0) != 0); if (!(c[A >> 2] | 0)) m = c[z >> 2] | 0; else { m = (c[z >> 2] | 0) + -1 | 0; c[z >> 2] = m } o = (c[B >> 2] | 0) + v + m - (c[D >> 2] | 0) | 0 } while (0); q = n + 1 | 0; m = a[q >> 0] | 0; if (!(m << 24 >> 24)) break a; else v = o } if ((P | 0) == 22) { if (c[A >> 2] | 0) c[z >> 2] = (c[z >> 2] | 0) + -1; if ((f | 0) != 0 | (m | 0) > -1) break; else { m = 0; f = l; P = 155 } } else if ((P | 0) == 154) if (!f) { f = l; P = 155 } if ((P | 0) == 155) { l = f; f = -1 } if (m) { an(k); an(l) } } else f = 0; while (0); if (Q | 0) al(e); i = R; return f | 0 } function Bm(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Dm(a, b, c) | 0 } function Cm(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; e = i; i = i + 16 | 0; f = e; c[f >> 2] = d; d = Dl(a, b, f) | 0; i = e; return d | 0 } function Dm(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0; if ((c[a + 76 >> 2] | 0) > -1) { e = (Fl(a) | 0) == 0; b = Em(a, b, d) | 0; if (!e) al(a) } else b = Em(a, b, d) | 0; return b | 0 } function Em(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; if ((d | 0) == 1) b = b - (c[a + 8 >> 2] | 0) + (c[a + 4 >> 2] | 0) | 0; e = a + 20 | 0; f = a + 28 | 0; if ((c[e >> 2] | 0) >>> 0 > (c[f >> 2] | 0) >>> 0 ? (Ya[c[a + 36 >> 2] & 31](a, 0, 0) | 0, (c[e >> 2] | 0) == 0) : 0) b = -1; else { c[a + 16 >> 2] = 0; c[f >> 2] = 0; c[e >> 2] = 0; if ((Ya[c[a + 40 >> 2] & 31](a, b, d) | 0) < 0) b = -1; else { c[a + 8 >> 2] = 0; c[a + 4 >> 2] = 0; c[a >> 2] = c[a >> 2] & -17; b = 0 } } return b | 0 } function Fm(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0; w = i; i = i + 1056 | 0; u = w + 1024 | 0; v = w; l = a[e >> 0] | 0; do if (l << 24 >> 24) { t = pm(b, l << 24 >> 24) | 0; if (t) { h = a[e + 1 >> 0] | 0; if (h << 24 >> 24) { f = t + 1 | 0; m = a[f >> 0] | 0; if (m << 24 >> 24) { j = a[e + 2 >> 0] | 0; if (!(j << 24 >> 24)) { h = h & 255 | (l & 255) << 8; g = d[t >> 0] << 8 | m & 255; b = m; while (1) { g = g & 65535; if ((g | 0) == (h | 0)) break; f = f + 1 | 0; b = a[f >> 0] | 0; if (!(b << 24 >> 24)) { b = 0; break } else g = b & 255 | g << 8 } b = b << 24 >> 24 ? f + -1 | 0 : 0; break } f = t + 2 | 0; b = a[f >> 0] | 0; if (b << 24 >> 24) { g = a[e + 3 >> 0] | 0; if (!(g << 24 >> 24)) { h = (h & 255) << 16 | (l & 255) << 24 | (j & 255) << 8; g = (b & 255) << 8 | (m & 255) << 16 | d[t >> 0] << 24; if ((g | 0) != (h | 0)) do { f = f + 1 | 0; b = a[f >> 0] | 0; g = (b & 255 | g) << 8 } while (!(b << 24 >> 24 == 0 | (g | 0) == (h | 0))); b = b << 24 >> 24 ? f + -2 | 0 : 0; break } f = t + 3 | 0; k = a[f >> 0] | 0; if (k << 24 >> 24) { if (!(a[e + 4 >> 0] | 0)) { h = (h & 255) << 16 | (l & 255) << 24 | (j & 255) << 8 | g & 255; g = (b & 255) << 8 | (m & 255) << 16 | k & 255 | d[t >> 0] << 24; if ((g | 0) == (h | 0)) b = k; else do { f = f + 1 | 0; b = a[f >> 0] | 0; g = b & 255 | g << 8 } while (!(b << 24 >> 24 == 0 | (g | 0) == (h | 0))); b = b << 24 >> 24 ? f + -3 | 0 : 0; break }; c[u >> 2] = 0; c[u + 4 >> 2] = 0; c[u + 8 >> 2] = 0; c[u + 12 >> 2] = 0; c[u + 16 >> 2] = 0; c[u + 20 >> 2] = 0; c[u + 24 >> 2] = 0; c[u + 28 >> 2] = 0; s = 0; b = l; while (1) { if (!(a[t + s >> 0] | 0)) { b = 0; break } r = u + (((b & 255) >>> 5 & 255) << 2) | 0; c[r >> 2] = c[r >> 2] | 1 << (b & 31); r = s + 1 | 0; c[v + ((b & 255) << 2) >> 2] = r; b = a[e + r >> 0] | 0; if (!(b << 24 >> 24)) { n = 23; break } else s = r } a: do if ((n | 0) == 23) { b: do if (r >>> 0 > 1) { f = 0; l = -1; g = 1; c: while (1) { h = 1; b = f; while (1) { f = g; d: while (1) { k = 1; while (1) { g = a[e + (k + l) >> 0] | 0; j = a[e + f >> 0] | 0; if (g << 24 >> 24 != j << 24 >> 24) break d; if ((k | 0) == (h | 0)) break; k = k + 1 | 0; f = k + b | 0; if (f >>> 0 >= r >>> 0) { m = h; b = l; break c } } b = b + h | 0; f = b + 1 | 0; if (f >>> 0 >= r >>> 0) { m = h; b = l; break c } } h = f - l | 0; if ((g & 255) <= (j & 255)) break; g = f + 1 | 0; if (g >>> 0 >= r >>> 0) { m = h; b = l; break c } else b = f } g = b + 2 | 0; if (g >>> 0 >= r >>> 0) { m = 1; break } else { f = b + 1 | 0; l = b } } h = 0; n = -1; j = 1; while (1) { g = 1; f = h; while (1) { h = j; e: while (1) { l = 1; while (1) { j = a[e + (l + n) >> 0] | 0; k = a[e + h >> 0] | 0; if (j << 24 >> 24 != k << 24 >> 24) break e; if ((l | 0) == (g | 0)) break; l = l + 1 | 0; h = l + f | 0; if (h >>> 0 >= r >>> 0) { h = m; f = n; break b } } f = f + g | 0; h = f + 1 | 0; if (h >>> 0 >= r >>> 0) { h = m; f = n; break b } } g = h - n | 0; if ((j & 255) >= (k & 255)) break; j = h + 1 | 0; if (j >>> 0 >= r >>> 0) { h = m; f = n; break b } else f = h } j = f + 2 | 0; if (j >>> 0 >= r >>> 0) { h = m; g = 1; break } else { h = f + 1 | 0; n = f } } } else { h = 1; b = -1; g = 1; f = -1 } while (0); p = (f + 1 | 0) >>> 0 > (b + 1 | 0) >>> 0; g = p ? g : h; p = p ? f : b; q = p + 1 | 0; if (!(Gm(e, e + g | 0, q) | 0)) o = r - g | 0; else { g = r - p + -1 | 0; o = 0; g = (p >>> 0 > g >>> 0 ? p : g) + 1 | 0 } l = r | 63; m = (o | 0) != 0; n = r - g | 0; b = t; k = 0; f = t; f: while (1) { h = b; do if ((f - h | 0) >>> 0 < r >>> 0) { j = Kl(f, 0, l) | 0; if (j) if ((j - h | 0) >>> 0 < r >>> 0) { b = 0; break a } else break; else { j = f + l | 0; break } } else j = f; while (0); f = a[b + s >> 0] | 0; if (!(1 << (f & 31) & c[u + (((f & 255) >>> 5 & 255) << 2) >> 2])) { b = b + r | 0; k = 0; f = j; continue } f = r - (c[v + ((f & 255) << 2) >> 2] | 0) | 0; if (f | 0) { b = b + (m & (k | 0) != 0 & f >>> 0 < g >>> 0 ? n : f) | 0; k = 0; f = j; continue } f = q >>> 0 > k >>> 0 ? q : k; h = a[e + f >> 0] | 0; g: do if (!(h << 24 >> 24)) f = q; else { while (1) { if (h << 24 >> 24 != (a[b + f >> 0] | 0)) break; f = f + 1 | 0; h = a[e + f >> 0] | 0; if (!(h << 24 >> 24)) { f = q; break g } } b = b + (f - p) | 0; k = 0; f = j; continue f } while (0); do { if (f >>> 0 <= k >>> 0) break a; f = f + -1 | 0 } while ((a[e + f >> 0] | 0) == (a[b + f >> 0] | 0)); b = b + g | 0; k = o; f = j } } while (0) } else b = 0 } else b = 0 } else b = 0 } else b = t } else b = 0 } while (0); i = w; return b | 0 } function Gm(b, c, d) { b = b | 0; c = c | 0; d = d | 0; var e = 0, f = 0; a: do if (!d) b = 0; else { while (1) { e = a[b >> 0] | 0; f = a[c >> 0] | 0; if (e << 24 >> 24 != f << 24 >> 24) break; d = d + -1 | 0; if (!d) { b = 0; break a } else { b = b + 1 | 0; c = c + 1 | 0 } } b = (e & 255) - (f & 255) | 0 } while (0); return b | 0 } function Hm(b, c) { b = b | 0; c = c | 0; c = b + (lm(b, c) | 0) | 0; return (a[c >> 0] | 0 ? c : 0) | 0 } function Im(a) { a = a | 0; var b = 0; b = 12984; c[b >> 2] = a + -1; c[b + 4 >> 2] = 0; return } function Jm() { var a = 0, b = 0, d = 0; b = 12984; b = sn(c[b >> 2] | 0, c[b + 4 >> 2] | 0, 1284865837, 1481765933) | 0; b = gn(b | 0, C | 0, 1, 0) | 0; a = C; d = 12984; c[d >> 2] = b; c[d + 4 >> 2] = a; a = ln(b | 0, a | 0, 33) | 0; return a | 0 } function Km(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0; k = R(e, d) | 0; if ((c[f + 76 >> 2] | 0) > -1) j = Fl(f) | 0; else j = 0; g = f + 74 | 0; i = a[g >> 0] | 0; a[g >> 0] = i + 255 | i; g = f + 4 | 0; i = c[g >> 2] | 0; h = (c[f + 8 >> 2] | 0) - i | 0; if ((h | 0) > 0) { h = h >>> 0 < k >>> 0 ? h : k; nn(b | 0, i | 0, h | 0) | 0; c[g >> 2] = i + h; g = k - h | 0; b = b + h | 0 } else g = k; a: do if (!g) l = 13; else { i = f + 32 | 0; while (1) { if (dm(f) | 0) break; h = Ya[c[i >> 2] & 31](f, b, g) | 0; if ((h + 1 | 0) >>> 0 < 2) break; g = g - h | 0; if (!g) { l = 13; break a } else b = b + h | 0 } if (j | 0) al(f); e = ((k - g | 0) >>> 0) / (d >>> 0) | 0 } while (0); if ((l | 0) == 13) if (j) al(f); return e | 0 } function Lm(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0; m = i; i = i + 16 | 0; k = m; l = e & 255; a[k >> 0] = l; g = b + 16 | 0; h = c[g >> 2] | 0; if (!h) if (!(Ol(b) | 0)) { h = c[g >> 2] | 0; j = 4 } else f = -1; else j = 4; do if ((j | 0) == 4) { j = b + 20 | 0; g = c[j >> 2] | 0; if (g >>> 0 < h >>> 0 ? (f = e & 255, (f | 0) != (a[b + 75 >> 0] | 0)) : 0) { c[j >> 2] = g + 1; a[g >> 0] = l; break } if ((Ya[c[b + 36 >> 2] & 31](b, k, 1) | 0) == 1) f = d[k >> 0] | 0; else f = -1 } while (0); i = m; return f | 0 } function Mm(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0; f = R(d, b) | 0; if ((c[e + 76 >> 2] | 0) > -1) { g = (Fl(e) | 0) == 0; a = Gl(a, f, e) | 0; if (!g) al(e) } else a = Gl(a, f, e) | 0; if ((a | 0) != (f | 0)) d = (a >>> 0) / (b >>> 0) | 0; return d | 0 } function Nm(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0; if ((c[d + 76 >> 2] | 0) >= 0 ? (Fl(d) | 0) != 0 : 0) { if ((a[d + 75 >> 0] | 0) != (b | 0) ? (g = d + 20 | 0, h = c[g >> 2] | 0, h >>> 0 < (c[d + 16 >> 2] | 0) >>> 0) : 0) { c[g >> 2] = h + 1; a[h >> 0] = b; b = b & 255 } else b = Lm(d, b) | 0; al(d) } else i = 3; do if ((i | 0) == 3) { if ((a[d + 75 >> 0] | 0) != (b | 0) ? (e = d + 20 | 0, f = c[e >> 2] | 0, f >>> 0 < (c[d + 16 >> 2] | 0) >>> 0) : 0) { c[e >> 2] = f + 1; a[f >> 0] = b; b = b & 255; break } b = Lm(d, b) | 0 } while (0); return b | 0 } function Om(a) { a = a | 0; var b = 0, e = 0, f = 0; if ((c[a + 76 >> 2] | 0) >= 0 ? (Fl(a) | 0) != 0 : 0) { b = a + 4 | 0; e = c[b >> 2] | 0; if (e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0) { c[b >> 2] = e + 1; b = d[e >> 0] | 0 } else b = cm(a) | 0 } else f = 3; do if ((f | 0) == 3) { b = a + 4 | 0; e = c[b >> 2] | 0; if (e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0) { c[b >> 2] = e + 1; b = d[e >> 0] | 0; break } else { b = cm(a) | 0; break } } while (0); return b | 0 } function Pm(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; d = b + 75 | 0; a[d >> 0] = -1; switch (e | 0) { case 2: { c[b + 48 >> 2] = 0; break } case 1: { a[d >> 0] = 10; break } default: { } }c[b >> 2] = c[b >> 2] | 64; return 0 } function Qm(a) { a = a | 0; var b = 0; if (!(c[a >> 2] & 128)) b = 1; else b = (c[a + 20 >> 2] | 0) >>> 0 > (c[a + 28 >> 2] | 0) >>> 0 ? 2 : 1; b = Ya[c[a + 40 >> 2] & 31](a, 0, b) | 0; if ((b | 0) >= 0) b = b - (c[a + 8 >> 2] | 0) + (c[a + 4 >> 2] | 0) + (c[a + 20 >> 2] | 0) - (c[a + 28 >> 2] | 0) | 0; return b | 0 } function Rm(a) { a = a | 0; var b = 0; if ((c[a + 76 >> 2] | 0) > -1) { b = (Fl(a) | 0) == 0; a = Qm(a) | 0 } else a = Qm(a) | 0; return a | 0 } function Sm(a) { a = a | 0; return Rm(a) | 0 } function Tm(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; do if ((b | 0) != -1) { if ((c[d + 76 >> 2] | 0) > -1) g = Fl(d) | 0; else g = 0; if (!((c[d + 8 >> 2] | 0) == 0 ? (dm(d) | 0) != 0 : 0)) h = 6; if ((h | 0) == 6 ? (e = d + 4 | 0, f = c[e >> 2] | 0, f >>> 0 > ((c[d + 44 >> 2] | 0) + -8 | 0) >>> 0) : 0) { h = f + -1 | 0; c[e >> 2] = h; a[h >> 0] = b; c[d >> 2] = c[d >> 2] & -17; if (!g) break; al(d); break } if (g) { al(d); b = -1 } else b = -1 } else b = -1; while (0); return b | 0 } function Um(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0; d = i; i = i + 16 | 0; e = d; c[e >> 2] = a; c[e + 4 >> 2] = b; b = Zk(La(38, e | 0) | 0) | 0; i = d; return b | 0 } function Vm(a) { a = a | 0; var b = 0, d = 0, e = 0; e = i; i = i + 16 | 0; d = e + 8 | 0; b = e; c[b >> 2] = a; b = Zk(Ma(10, b | 0) | 0) | 0; if (b) { if ((c[(_k() | 0) >> 2] | 0) == 21) { c[d >> 2] = a; b = Zk(na(40, d | 0) | 0) | 0 } } else b = 0; i = e; return b | 0 } function Wm(a) { a = a | 0; var b = 0; if ((c[a + 76 >> 2] | 0) > -1) { b = (Fl(a) | 0) == 0; c[a >> 2] = c[a >> 2] & -49; if (!b) al(a) } else c[a >> 2] = c[a >> 2] & -49; return } + function cb(a) { a = a | 0; var b = 0; b = i; i = i + a | 0; i = i + 15 & -16; return b | 0 } function db() { return i | 0 } function eb(a) { a = a | 0; i = a } function fb(a, b) { a = a | 0; b = b | 0; i = a; j = b } function gb(a, b) { a = a | 0; b = b | 0; if (!n) { n = a; o = b } } function hb(a) { a = a | 0; C = a } function ib() { return C | 0 } function jb(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0; h = i; i = i + 16 | 0; f = h; c[f >> 2] = b; g = c[a + 16 >> 2] | 0; e = a + 8 | 0; d = c[e >> 2] | 0; do if (((c[a + 24 >> 2] | 0) - d >> 4 | 0) <= (b | 0)) { if (((d - (c[a + 28 >> 2] | 0) >> 4) + 5 | 0) > (1e6 - b | 0)) { g = 0; i = h; return g | 0 } if (!(Nd(a, 18, f) | 0)) { d = c[e >> 2] | 0; b = c[f >> 2] | 0; break } else { g = 0; i = h; return g | 0 } } while (0); a = g + 4 | 0; b = d + (b << 4) | 0; if ((c[a >> 2] | 0) >>> 0 >= b >>> 0) { g = 1; i = h; return g | 0 } c[a >> 2] = b; g = 1; i = h; return g | 0 } function kb(a, b) { a = a | 0; b = b | 0; Td(a, c[b >> 2] | 0); return } function lb(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0; if ((a | 0) == (b | 0)) return; g = a + 8 | 0; a = c[g >> 2] | 0; e = 0 - d | 0; f = a + (e << 4) | 0; c[g >> 2] = f; if ((d | 0) <= 0) return; b = b + 8 | 0; h = c[b >> 2] | 0; c[b >> 2] = h + 16; j = f; i = c[j + 4 >> 2] | 0; f = h; c[f >> 2] = c[j >> 2]; c[f + 4 >> 2] = i; c[h + 8 >> 2] = c[a + (e << 4) + 8 >> 2]; if ((d | 0) == 1) return; else a = 1; do { i = c[g >> 2] | 0; j = c[b >> 2] | 0; c[b >> 2] = j + 16; e = i + (a << 4) | 0; f = c[e + 4 >> 2] | 0; h = j; c[h >> 2] = c[e >> 2]; c[h + 4 >> 2] = f; c[j + 8 >> 2] = c[i + (a << 4) + 8 >> 2]; a = a + 1 | 0 } while ((a | 0) != (d | 0)); return } function mb(a, b) { a = a | 0; b = b | 0; var d = 0; d = (c[a + 12 >> 2] | 0) + 168 | 0; a = c[d >> 2] | 0; c[d >> 2] = b; return a | 0 } function nb(a) { a = a | 0; if (!a) { a = 8; return a | 0 } a = c[(c[a + 12 >> 2] | 0) + 176 >> 2] | 0; return a | 0 } function ob(a, b) { a = a | 0; b = b | 0; if ((b + 1000999 | 0) >>> 0 > 1000999) return b | 0; b = ((c[a + 8 >> 2] | 0) - (c[c[a + 16 >> 2] >> 2] | 0) >> 4) + b | 0; return b | 0 } function pb(a) { a = a | 0; return (c[a + 8 >> 2] | 0) - ((c[c[a + 16 >> 2] >> 2] | 0) + 16) >> 4 | 0 } function qb(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0; if ((b | 0) <= -1) { g = a + 8 | 0; c[g >> 2] = (c[g >> 2] | 0) + (b + 1 << 4); return } d = c[c[a + 16 >> 2] >> 2] | 0; e = a + 8 | 0; f = c[e >> 2] | 0; g = d + 16 + (b << 4) | 0; if (f >>> 0 < g >>> 0) { a = ((d + (b << 4) + 8 + 4 + (3 - f) | 0) >>> 4) + 1 | 0; b = f; do { c[b + 8 >> 2] = 0; b = b + 16 | 0 } while (b >>> 0 < g >>> 0); c[e >> 2] = f + (a << 4) } c[e >> 2] = g; return } function rb(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, h = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); f = b + 16 | 0; a = a + 8 | 0; e = c[a >> 2] | 0; if (f >>> 0 >= e >>> 0) { f = e; f = f + -16 | 0; c[a >> 2] = f; return } while (1) { h = f; g = c[h + 4 >> 2] | 0; e = b; c[e >> 2] = c[h >> 2]; c[e + 4 >> 2] = g; c[b + 8 >> 2] = c[b + 24 >> 2]; e = f + 16 | 0; b = c[a >> 2] | 0; if (e >>> 0 < b >>> 0) { b = f; f = e } else break } h = b + -16 | 0; c[a >> 2] = h; return } function sb(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, h = 0, i = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { f = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { f = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) f = 12936; else { f = c[b >> 2] | 0; f = (e | 0) > (d[f + 6 >> 0] | 0 | 0) ? 12936 : f + 16 + (e + -1 << 4) | 0 } } else { f = (c[f >> 2] | 0) + (b << 4) | 0; f = f >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? f : 12936 } while (0); e = a + 8 | 0; b = c[e >> 2] | 0; if (b >>> 0 > f >>> 0) { do { a = b; b = b + -16 | 0; i = b; h = c[i + 4 >> 2] | 0; g = a; c[g >> 2] = c[i >> 2]; c[g + 4 >> 2] = h; c[a + 8 >> 2] = c[a + -8 >> 2] } while (b >>> 0 > f >>> 0); b = c[e >> 2] | 0 } g = b; h = c[g + 4 >> 2] | 0; i = f; c[i >> 2] = c[g >> 2]; c[i + 4 >> 2] = h; c[f + 8 >> 2] = c[b + 8 >> 2]; return } function tb(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; h = b + 8 | 0; i = c[h >> 2] | 0; j = i + -16 | 0; l = b + 16 | 0; f = c[l >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { f = i + (e << 4) | 0; break } if ((e | 0) == -1001e3) { f = (c[b + 12 >> 2] | 0) + 40 | 0; break } g = -1001e3 - e | 0; f = c[f >> 2] | 0; if ((c[f + 8 >> 2] | 0) == 22) f = 12936; else { f = c[f >> 2] | 0; f = (g | 0) > (d[f + 6 >> 0] | 0 | 0) ? 12936 : f + 16 + (g + -1 << 4) | 0 } } else { f = (c[f >> 2] | 0) + (e << 4) | 0; f = f >>> 0 < i >>> 0 ? f : 12936 } while (0); o = j; n = c[o + 4 >> 2] | 0; g = f; c[g >> 2] = c[o >> 2]; c[g + 4 >> 2] = n; i = i + -8 | 0; c[f + 8 >> 2] = c[i >> 2]; if ((((e | 0) < -1001e3 ? c[i >> 2] & 64 | 0 : 0) ? (k = c[j >> 2] | 0, a[k + 5 >> 0] & 3) : 0) ? (m = c[c[c[l >> 2] >> 2] >> 2] | 0, a[m + 5 >> 0] & 4) : 0) je(b, m, k); c[h >> 2] = (c[h >> 2] | 0) + -16; return } function ub(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0; j = b + 16 | 0; i = c[j >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { h = (c[b + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { h = (c[b + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - e | 0; g = c[i >> 2] | 0; if ((c[g + 8 >> 2] | 0) == 22) h = 12936; else { h = c[g >> 2] | 0; h = (e | 0) > (d[h + 6 >> 0] | 0 | 0) ? 12936 : h + 16 + (e + -1 << 4) | 0 } } else { h = (c[i >> 2] | 0) + (e << 4) | 0; h = h >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? h : 12936 } while (0); do if ((f | 0) <= 0) { if ((f | 0) >= -1000999) { e = (c[b + 8 >> 2] | 0) + (f << 4) | 0; break } if ((f | 0) == -1001e3) { e = (c[b + 12 >> 2] | 0) + 40 | 0; break } g = -1001e3 - f | 0; e = c[i >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) e = 12936; else { e = c[e >> 2] | 0; e = (g | 0) > (d[e + 6 >> 0] | 0 | 0) ? 12936 : e + 16 + (g + -1 << 4) | 0 } } else { e = (c[i >> 2] | 0) + (f << 4) | 0; e = e >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); k = h; i = c[k + 4 >> 2] | 0; g = e; c[g >> 2] = c[k >> 2]; c[g + 4 >> 2] = i; g = h + 8 | 0; c[e + 8 >> 2] = c[g >> 2]; if ((f | 0) >= -1001e3) return; if (!(c[g >> 2] & 64)) return; g = c[h >> 2] | 0; if (!(a[g + 5 >> 0] & 3)) return; e = c[c[c[j >> 2] >> 2] >> 2] | 0; if (!(a[e + 5 >> 0] & 4)) return; je(b, e, g); return } function vb(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, h = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); a = a + 8 | 0; f = c[a >> 2] | 0; h = b; g = c[h + 4 >> 2] | 0; e = f; c[e >> 2] = c[h >> 2]; c[e + 4 >> 2] = g; c[f + 8 >> 2] = c[b + 8 >> 2]; c[a >> 2] = (c[a >> 2] | 0) + 16; return } function wb(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) > 0) { b = (c[e >> 2] | 0) + (b << 4) | 0; if (b >>> 0 >= (c[a + 8 >> 2] | 0) >>> 0) { e = -1; return e | 0 } } else { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } a = -1001e3 - b | 0; b = c[e >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) { e = -1; return e | 0 } b = c[b >> 2] | 0; if ((a | 0) > (d[b + 6 >> 0] | 0 | 0)) { e = -1; return e | 0 } else b = b + 16 + (a + -1 << 4) | 0 } while (0); if ((b | 0) == 12936) { e = -1; return e | 0 } e = c[b + 8 >> 2] & 15; return e | 0 } function xb(a, b) { a = a | 0; b = b | 0; return c[148 + (b + 1 << 2) >> 2] | 0 } function yb(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[e >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { e = (c[e >> 2] | 0) + (b << 4) | 0; a = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); e = c[a + 8 >> 2] | 0; return ((e | 0) == 22 | (e | 0) == 102) & 1 | 0 } function zb(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0; g = i; i = i + 16 | 0; f = g; e = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[e >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { e = (c[e >> 2] | 0) + (b << 4) | 0; a = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); if ((c[a + 8 >> 2] | 0) == 3) { f = 1; f = f & 1; i = g; return f | 0 } f = (hg(a, f) | 0) != 0; f = f & 1; i = g; return f | 0 } function Ab(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) > 0) { b = (c[e >> 2] | 0) + (b << 4) | 0; if (b >>> 0 >= (c[a + 8 >> 2] | 0) >>> 0) { e = 0; e = e & 1; return e | 0 } } else { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } a = -1001e3 - b | 0; b = c[e >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) { e = 0; e = e & 1; return e | 0 } b = c[b >> 2] | 0; if ((a | 0) > (d[b + 6 >> 0] | 0 | 0)) { e = 0; e = e & 1; return e | 0 } else b = b + 16 + (a + -1 << 4) | 0 } while (0); if ((b | 0) == 12936) { e = 0; e = e & 1; return e | 0 } e = ((c[b + 8 >> 2] & 15) + -3 | 0) >>> 0 < 2; e = e & 1; return e | 0 } function Bb(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[e >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { e = (c[e >> 2] | 0) + (b << 4) | 0; a = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); e = c[a + 8 >> 2] | 0; return ((e | 0) == 71 | (e | 0) == 2) & 1 | 0 } function Cb(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, h = 0; h = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { g = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { g = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; f = c[h >> 2] | 0; if ((c[f + 8 >> 2] | 0) == 22) g = 12936; else { g = c[f >> 2] | 0; g = (b | 0) > (d[g + 6 >> 0] | 0 | 0) ? 12936 : g + 16 + (b + -1 << 4) | 0 } } else { g = (c[h >> 2] | 0) + (b << 4) | 0; g = g >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? g : 12936 } while (0); do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - e | 0; b = c[h >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) { h = 0; return h | 0 } else { b = c[b >> 2] | 0; b = (f | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (f + -1 << 4) | 0; break } } else { b = (c[h >> 2] | 0) + (e << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); if (!((g | 0) != 12936 & (b | 0) != 12936)) { h = 0; return h | 0 } if ((c[g + 8 >> 2] | 0) == (c[b + 8 >> 2] | 0)) b = (ng(0, g, b) | 0) != 0; else b = 0; h = b & 1; return h | 0 } function Db(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, i = 0; i = a + 8 | 0; d = c[i >> 2] | 0; if ((b | 0) == 6) { e = d + -16 | 0; f = c[e + 4 >> 2] | 0; g = d; c[g >> 2] = c[e >> 2]; c[g + 4 >> 2] = f; c[d + 8 >> 2] = c[d + -8 >> 2]; d = (c[i >> 2] | 0) + 16 | 0; c[i >> 2] = d } e = d + -32 | 0; f = d + -16 | 0; g = d + -24 | 0; if ((c[g >> 2] | 0) == 3 ? (c[d + -8 >> 2] | 0) == 3 : 0) { h[e >> 3] = +Ye(b, +h[e >> 3], +h[f >> 3]); c[g >> 2] = 3; b = c[i >> 2] | 0; b = b + -16 | 0; c[i >> 2] = b; return } qg(a, e, e, f, b + 6 | 0); b = c[i >> 2] | 0; b = b + -16 | 0; c[i >> 2] = b; return } function Eb(a, b, e, f) { a = a | 0; b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0; i = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { h = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { h = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; g = c[i >> 2] | 0; if ((c[g + 8 >> 2] | 0) == 22) h = 12936; else { h = c[g >> 2] | 0; h = (b | 0) > (d[h + 6 >> 0] | 0 | 0) ? 12936 : h + 16 + (b + -1 << 4) | 0 } } else { h = (c[i >> 2] | 0) + (b << 4) | 0; h = h >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? h : 12936 } while (0); do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } g = -1001e3 - e | 0; b = c[i >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) { f = 0; return f | 0 } else { b = c[b >> 2] | 0; b = (g | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (g + -1 << 4) | 0; break } } else { b = (c[i >> 2] | 0) + (e << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); if (!((h | 0) != 12936 & (b | 0) != 12936)) { f = 0; return f | 0 } switch (f | 0) { case 0: { if ((c[h + 8 >> 2] | 0) == (c[b + 8 >> 2] | 0)) b = (ng(a, h, b) | 0) != 0; else b = 0; f = b & 1; return f | 0 } case 1: { f = lg(a, h, b) | 0; return f | 0 } case 2: { f = mg(a, h, b) | 0; return f | 0 } default: { f = 0; return f | 0 } }return 0 } function Fb(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0.0; j = i; i = i + 16 | 0; g = j; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[f >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { f = (c[f >> 2] | 0) + (b << 4) | 0; a = f >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? f : 12936 } while (0); if ((c[a + 8 >> 2] | 0) != 3) { a = hg(a, g) | 0; if (!a) { if (!e) { k = 0.0; i = j; return +k } c[e >> 2] = 0; k = 0.0; i = j; return +k } } if (e | 0) c[e >> 2] = 1; k = +h[a >> 3]; i = j; return +k } function Gb(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, j = 0; j = i; i = i + 16 | 0; g = j; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[f >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { f = (c[f >> 2] | 0) + (b << 4) | 0; a = f >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? f : 12936 } while (0); if ((c[a + 8 >> 2] | 0) != 3) { a = hg(a, g) | 0; if (!a) { if (!e) { e = 0; i = j; return e | 0 } c[e >> 2] = 0; e = 0; i = j; return e | 0 } } a = ~~+h[a >> 3]; if (!e) { e = a; i = j; return e | 0 } c[e >> 2] = 1; e = a; i = j; return e | 0 } function Hb(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0; k = i; i = i + 32 | 0; g = k + 8 | 0; j = k; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[f >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { f = (c[f >> 2] | 0) + (b << 4) | 0; a = f >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? f : 12936 } while (0); if ((c[a + 8 >> 2] | 0) != 3) { a = hg(a, g) | 0; if (!a) { if (!e) { e = 0; i = k; return e | 0 } c[e >> 2] = 0; e = 0; i = k; return e | 0 } } h[j >> 3] = +h[a >> 3] + 6755399441055744.0; a = c[j >> 2] | 0; if (!e) { e = a; i = k; return e | 0 } c[e >> 2] = 1; e = a; i = k; return e | 0 } function Ib(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[e >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { e = (c[e >> 2] | 0) + (b << 4) | 0; a = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); b = c[a + 8 >> 2] | 0; if (!b) { e = 0; e = e & 1; return e | 0 } if ((b | 0) != 1) { e = 1; e = e & 1; return e | 0 } e = (c[a >> 2] | 0) != 0; e = e & 1; return e | 0 } function Jb(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; h = a + 16 | 0; f = c[h >> 2] | 0; i = (b | 0) > 0; do if (!i) { if ((b | 0) >= -1000999) { f = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { f = (c[a + 12 >> 2] | 0) + 40 | 0; break } g = -1001e3 - b | 0; f = c[f >> 2] | 0; if ((c[f + 8 >> 2] | 0) == 22) f = 12936; else { f = c[f >> 2] | 0; f = (g | 0) > (d[f + 6 >> 0] | 0 | 0) ? 12936 : f + 16 + (g + -1 << 4) | 0 } } else { f = (c[f >> 2] | 0) + (b << 4) | 0; f = f >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? f : 12936 } while (0); do if ((c[f + 8 >> 2] & 15 | 0) != 4) { if (!(ig(a, f) | 0)) { if (!e) { e = 0; return e | 0 } c[e >> 2] = 0; e = 0; return e | 0 } f = a + 12 | 0; if ((c[(c[f >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); h = c[h >> 2] | 0; if (i) { f = (c[h >> 2] | 0) + (b << 4) | 0; f = f >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? f : 12936; break } if ((b | 0) >= -1000999) { f = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { f = (c[f >> 2] | 0) + 40 | 0; break } g = -1001e3 - b | 0; f = c[h >> 2] | 0; if ((c[f + 8 >> 2] | 0) == 22) f = 12936; else { f = c[f >> 2] | 0; f = (g | 0) > (d[f + 6 >> 0] | 0 | 0) ? 12936 : f + 16 + (g + -1 << 4) | 0 } } while (0); if (!e) f = c[f >> 2] | 0; else { f = c[f >> 2] | 0; c[e >> 2] = c[f + 12 >> 2] } e = f + 16 | 0; return e | 0 } function Kb(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[e >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { e = (c[e >> 2] | 0) + (b << 4) | 0; a = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); switch (c[a + 8 >> 2] & 15) { case 4: { e = c[(c[a >> 2] | 0) + 12 >> 2] | 0; return e | 0 } case 7: { e = c[(c[a >> 2] | 0) + 16 >> 2] | 0; return e | 0 } case 5: { e = $f(c[a >> 2] | 0) | 0; return e | 0 } default: { e = 0; return e | 0 } }return 0 } function Lb(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[e >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { e = (c[e >> 2] | 0) + (b << 4) | 0; a = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); switch (c[a + 8 >> 2] | 0) { case 22: { e = c[a >> 2] | 0; return e | 0 } case 102: { e = c[(c[a >> 2] | 0) + 12 >> 2] | 0; return e | 0 } default: { e = 0; return e | 0 } }return 0 } function Mb(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[e >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { e = (c[e >> 2] | 0) + (b << 4) | 0; a = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); switch (c[a + 8 >> 2] & 15) { case 7: { e = (c[a >> 2] | 0) + 24 | 0; return e | 0 } case 2: { e = c[a >> 2] | 0; return e | 0 } default: { e = 0; return e | 0 } }return 0 } function Nb(a, b) { a = a | 0; b = b | 0; var e = 0; e = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { a = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { a = (c[a + 12 >> 2] | 0) + 40 | 0; break } b = -1001e3 - b | 0; a = c[e >> 2] | 0; if ((c[a + 8 >> 2] | 0) == 22) a = 12936; else { a = c[a >> 2] | 0; a = (b | 0) > (d[a + 6 >> 0] | 0 | 0) ? 12936 : a + 16 + (b + -1 << 4) | 0 } } else { e = (c[e >> 2] | 0) + (b << 4) | 0; a = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); if ((c[a + 8 >> 2] | 0) != 72) { e = 0; return e | 0 } e = c[a >> 2] | 0; return e | 0 } function Ob(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, h = 0; h = c[a + 16 >> 2] | 0; g = (b | 0) > 0; do if (!g) { if ((b | 0) >= -1000999) { e = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { e = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; f = c[h >> 2] | 0; if ((c[f + 8 >> 2] | 0) == 22) e = 12936; else { f = c[f >> 2] | 0; e = (e | 0) > (d[f + 6 >> 0] | 0 | 0) ? 12936 : f + 16 + (e + -1 << 4) | 0 } } else { e = (c[h >> 2] | 0) + (b << 4) | 0; e = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); switch (c[e + 8 >> 2] & 63) { case 5: { h = c[e >> 2] | 0; return h | 0 } case 6: { h = c[e >> 2] | 0; return h | 0 } case 38: { h = c[e >> 2] | 0; return h | 0 } case 22: { h = c[e >> 2] | 0; return h | 0 } case 8: { h = c[e >> 2] | 0; return h | 0 } case 2: case 7: { do if (!g) { if ((b | 0) >= -1000999) { e = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { e = (c[a + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - b | 0; e = c[h >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) e = 12936; else { e = c[e >> 2] | 0; e = (f | 0) > (d[e + 6 >> 0] | 0 | 0) ? 12936 : e + 16 + (f + -1 << 4) | 0 } } else { e = (c[h >> 2] | 0) + (b << 4) | 0; e = e >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); switch (c[e + 8 >> 2] & 15) { case 7: { h = (c[e >> 2] | 0) + 24 | 0; return h | 0 } case 2: { h = c[e >> 2] | 0; return h | 0 } default: { h = 0; return h | 0 } } } default: { h = 0; return h | 0 } }return 0 } function Pb(a) { a = a | 0; var b = 0; a = a + 8 | 0; b = c[a >> 2] | 0; c[b + 8 >> 2] = 0; c[a >> 2] = b + 16; return } function Qb(a, b) { a = a | 0; b = +b; var d = 0; a = a + 8 | 0; d = c[a >> 2] | 0; h[d >> 3] = b; c[d + 8 >> 2] = 3; c[a >> 2] = d + 16; return } function Rb(a, b) { a = a | 0; b = b | 0; var d = 0; a = a + 8 | 0; d = c[a >> 2] | 0; h[d >> 3] = +(b | 0); c[d + 8 >> 2] = 3; c[a >> 2] = d + 16; return } function Sb(a, b) { a = a | 0; b = b | 0; var d = 0; a = a + 8 | 0; d = c[a >> 2] | 0; h[d >> 3] = (b | 0) > -1 ? +(b | 0) : +(b >>> 0); c[d + 8 >> 2] = 3; c[a >> 2] = d + 16; return } function Tb(a, b, e) { a = a | 0; b = b | 0; e = e | 0; if ((c[(c[a + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); e = Mf(a, b, e) | 0; b = a + 8 | 0; a = c[b >> 2] | 0; c[a >> 2] = e; c[a + 8 >> 2] = d[e + 4 >> 0] | 0 | 64; c[b >> 2] = (c[b >> 2] | 0) + 16; return e + 16 | 0 } function Ub(a, b) { a = a | 0; b = b | 0; var e = 0; if (!b) { b = a + 8 | 0; a = c[b >> 2] | 0; c[a + 8 >> 2] = 0; c[b >> 2] = a + 16; b = 0; return b | 0 } if ((c[(c[a + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); b = Nf(a, b) | 0; a = a + 8 | 0; e = c[a >> 2] | 0; c[e >> 2] = b; c[e + 8 >> 2] = d[b + 4 >> 0] | 0 | 64; c[a >> 2] = (c[a >> 2] | 0) + 16; b = b + 16 | 0; return b | 0 } function Vb(a, b, d) { a = a | 0; b = b | 0; d = d | 0; if ((c[(c[a + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); return $e(a, b, d) | 0 } function Wb(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; f = i; i = i + 16 | 0; e = f; if ((c[(c[a + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); c[e >> 2] = d; d = $e(a, b, e) | 0; i = f; return d | 0 } function Xb(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; if (!d) { e = a + 8 | 0; a = c[e >> 2] | 0; c[a >> 2] = b; c[a + 8 >> 2] = 22; b = c[e >> 2] | 0; b = b + 16 | 0; c[e >> 2] = b; return } if ((c[(c[a + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); e = ae(a, d) | 0; c[e + 12 >> 2] = b; b = a + 8 | 0; a = (c[b >> 2] | 0) + (0 - d << 4) | 0; c[b >> 2] = a; do { d = d + -1 | 0; h = a + (d << 4) | 0; g = c[h + 4 >> 2] | 0; f = e + 16 + (d << 4) | 0; c[f >> 2] = c[h >> 2]; c[f + 4 >> 2] = g; c[e + 16 + (d << 4) + 8 >> 2] = c[a + (d << 4) + 8 >> 2]; a = c[b >> 2] | 0 } while ((d | 0) != 0); c[a >> 2] = e; c[a + 8 >> 2] = 102; h = b; g = c[h >> 2] | 0; g = g + 16 | 0; c[h >> 2] = g; return } function Yb(a, b) { a = a | 0; b = b | 0; var d = 0; a = a + 8 | 0; d = c[a >> 2] | 0; c[d >> 2] = (b | 0) != 0 & 1; c[d + 8 >> 2] = 1; c[a >> 2] = d + 16; return } function Zb(a, b) { a = a | 0; b = b | 0; var d = 0; a = a + 8 | 0; d = c[a >> 2] | 0; c[d >> 2] = b; c[d + 8 >> 2] = 2; c[a >> 2] = (c[a >> 2] | 0) + 16; return } function _b(a) { a = a | 0; var b = 0, d = 0; b = a + 8 | 0; d = c[b >> 2] | 0; c[d >> 2] = a; c[d + 8 >> 2] = 72; c[b >> 2] = (c[b >> 2] | 0) + 16; return (c[(c[a + 12 >> 2] | 0) + 172 >> 2] | 0) == (a | 0) | 0 } function $b(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0; e = Zf(c[(c[a + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0; f = a + 8 | 0; g = c[f >> 2] | 0; c[f >> 2] = g + 16; b = Nf(a, b) | 0; c[g >> 2] = b; c[g + 8 >> 2] = d[b + 4 >> 0] | 0 | 64; b = (c[f >> 2] | 0) + -16 | 0; jg(a, e, b, b); return } function ac(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); f = (c[a + 8 >> 2] | 0) + -16 | 0; jg(a, b, f, f); return } function bc(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0; g = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - b | 0; b = c[g >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (f | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (f + -1 << 4) | 0 } } else { b = (c[g >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); g = a + 8 | 0; f = c[g >> 2] | 0; e = Nf(a, e) | 0; c[f >> 2] = e; c[f + 8 >> 2] = d[e + 4 >> 0] | 0 | 64; e = c[g >> 2] | 0; c[g >> 2] = e + 16; jg(a, b, e, e); return } function cc(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); a = a + 8 | 0; f = Tf(c[b >> 2] | 0, (c[a >> 2] | 0) + -16 | 0) | 0; a = c[a >> 2] | 0; g = f; b = c[g + 4 >> 2] | 0; e = a + -16 | 0; c[e >> 2] = c[g >> 2]; c[e + 4 >> 2] = b; c[a + -8 >> 2] = c[f + 8 >> 2]; return } function dc(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, h = 0; g = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - b | 0; b = c[g >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (f | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (f + -1 << 4) | 0 } } else { b = (c[g >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); g = Zf(c[b >> 2] | 0, e) | 0; e = a + 8 | 0; a = c[e >> 2] | 0; h = g; b = c[h + 4 >> 2] | 0; f = a; c[f >> 2] = c[h >> 2]; c[f + 4 >> 2] = b; c[a + 8 >> 2] = c[g + 8 >> 2]; c[e >> 2] = (c[e >> 2] | 0) + 16; return } function ec(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0; j = i; i = i + 16 | 0; h = j; g = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - b | 0; b = c[g >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (f | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (f + -1 << 4) | 0 } } else { b = (c[g >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); c[h >> 2] = e; c[h + 8 >> 2] = 2; g = Tf(c[b >> 2] | 0, h) | 0; h = a + 8 | 0; e = c[h >> 2] | 0; b = g; f = c[b + 4 >> 2] | 0; a = e; c[a >> 2] = c[b >> 2]; c[a + 4 >> 2] = f; c[e + 8 >> 2] = c[g + 8 >> 2]; c[h >> 2] = (c[h >> 2] | 0) + 16; i = j; return } function fc(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; if ((c[(c[a + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); e = Xf(a) | 0; f = a + 8 | 0; g = c[f >> 2] | 0; c[g >> 2] = e; c[g + 8 >> 2] = 69; c[f >> 2] = (c[f >> 2] | 0) + 16; if (!((b | 0) > 0 | (d | 0) > 0)) return; Rf(a, e, b, d); return } function gc(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); e = c[b + 8 >> 2] | 0; switch (e & 15) { case 5: { b = (c[b >> 2] | 0) + 24 | 0; break } case 7: { b = (c[b >> 2] | 0) + 8 | 0; break } default: b = (c[a + 12 >> 2] | 0) + 252 + ((e & 15) << 2) | 0 }b = c[b >> 2] | 0; if (!b) { a = 0; return a | 0 } a = a + 8 | 0; f = c[a >> 2] | 0; c[f >> 2] = b; c[f + 8 >> 2] = 69; c[a >> 2] = (c[a >> 2] | 0) + 16; a = 1; return a | 0 } function hc(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); f = c[(c[b >> 2] | 0) + 12 >> 2] | 0; b = a + 8 | 0; e = c[b >> 2] | 0; if (!f) { f = 0; a = e + 8 | 0; c[a >> 2] = f; a = c[b >> 2] | 0; a = a + 16 | 0; c[b >> 2] = a; return } c[e >> 2] = f; f = 69; a = e + 8 | 0; c[a >> 2] = f; a = c[b >> 2] | 0; a = a + 16 | 0; c[b >> 2] = a; return } function ic(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0; f = Zf(c[(c[a + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0; e = a + 8 | 0; g = c[e >> 2] | 0; c[e >> 2] = g + 16; b = Nf(a, b) | 0; c[g >> 2] = b; c[g + 8 >> 2] = d[b + 4 >> 0] | 0 | 64; b = c[e >> 2] | 0; kg(a, f, b + -16 | 0, b + -32 | 0); c[e >> 2] = (c[e >> 2] | 0) + -32; return } function jc(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); f = a + 8 | 0; e = c[f >> 2] | 0; kg(a, b, e + -32 | 0, e + -16 | 0); c[f >> 2] = (c[f >> 2] | 0) + -32; return } function kc(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0; g = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - b | 0; b = c[g >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (f | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (f + -1 << 4) | 0 } } else { b = (c[g >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); g = a + 8 | 0; f = c[g >> 2] | 0; c[g >> 2] = f + 16; e = Nf(a, e) | 0; c[f >> 2] = e; c[f + 8 >> 2] = d[e + 4 >> 0] | 0 | 64; e = c[g >> 2] | 0; kg(a, b, e + -16 | 0, e + -32 | 0); c[g >> 2] = (c[g >> 2] | 0) + -32; return } function lc(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0; g = c[b + 16 >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { e = (c[b + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { e = (c[b + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - e | 0; e = c[g >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) e = 12936; else { e = c[e >> 2] | 0; e = (f | 0) > (d[e + 6 >> 0] | 0 | 0) ? 12936 : e + 16 + (f + -1 << 4) | 0 } } else { e = (c[g >> 2] | 0) + (e << 4) | 0; e = e >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); g = b + 8 | 0; h = c[g >> 2] | 0; f = Vf(b, c[e >> 2] | 0, h + -32 | 0) | 0; k = h + -16 | 0; j = c[k + 4 >> 2] | 0; i = f; c[i >> 2] = c[k >> 2]; c[i + 4 >> 2] = j; c[f + 8 >> 2] = c[h + -8 >> 2]; e = c[e >> 2] | 0; a[e + 6 >> 0] = 0; f = c[g >> 2] | 0; if (!(c[f + -8 >> 2] & 64)) { k = f; k = k + -32 | 0; c[g >> 2] = k; return } if (!(a[(c[f + -16 >> 2] | 0) + 5 >> 0] & 3)) { k = f; k = k + -32 | 0; c[g >> 2] = k; return } if (!(a[e + 5 >> 0] & 4)) { k = f; k = k + -32 | 0; c[g >> 2] = k; return } le(b, e); k = c[g >> 2] | 0; k = k + -32 | 0; c[g >> 2] = k; return } function mc(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0; h = c[b + 16 >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { e = (c[b + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { e = (c[b + 12 >> 2] | 0) + 40 | 0; break } g = -1001e3 - e | 0; e = c[h >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) e = 12936; else { e = c[e >> 2] | 0; e = (g | 0) > (d[e + 6 >> 0] | 0 | 0) ? 12936 : e + 16 + (g + -1 << 4) | 0 } } else { e = (c[h >> 2] | 0) + (e << 4) | 0; e = e >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); h = b + 8 | 0; Uf(b, c[e >> 2] | 0, f, (c[h >> 2] | 0) + -16 | 0); g = c[h >> 2] | 0; if (!(c[g + -8 >> 2] & 64)) { b = g; b = b + -16 | 0; c[h >> 2] = b; return } if (!(a[(c[g + -16 >> 2] | 0) + 5 >> 0] & 3)) { b = g; b = b + -16 | 0; c[h >> 2] = b; return } e = c[e >> 2] | 0; if (!(a[e + 5 >> 0] & 4)) { b = g; b = b + -16 | 0; c[h >> 2] = b; return } le(b, e); b = c[h >> 2] | 0; b = b + -16 | 0; c[h >> 2] = b; return } function nc(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0; k = i; i = i + 16 | 0; j = k; h = c[b + 16 >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { e = (c[b + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { e = (c[b + 12 >> 2] | 0) + 40 | 0; break } g = -1001e3 - e | 0; e = c[h >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) e = 12936; else { e = c[e >> 2] | 0; e = (g | 0) > (d[e + 6 >> 0] | 0 | 0) ? 12936 : e + 16 + (g + -1 << 4) | 0 } } else { e = (c[h >> 2] | 0) + (e << 4) | 0; e = e >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); c[j >> 2] = f; c[j + 8 >> 2] = 2; h = b + 8 | 0; f = c[h >> 2] | 0; g = Vf(b, c[e >> 2] | 0, j) | 0; m = f + -16 | 0; l = c[m + 4 >> 2] | 0; j = g; c[j >> 2] = c[m >> 2]; c[j + 4 >> 2] = l; c[g + 8 >> 2] = c[f + -8 >> 2]; g = c[h >> 2] | 0; if (!(c[g + -8 >> 2] & 64)) { m = g; m = m + -16 | 0; c[h >> 2] = m; i = k; return } if (!(a[(c[g + -16 >> 2] | 0) + 5 >> 0] & 3)) { m = g; m = m + -16 | 0; c[h >> 2] = m; i = k; return } e = c[e >> 2] | 0; if (!(a[e + 5 >> 0] & 4)) { m = g; m = m + -16 | 0; c[h >> 2] = m; i = k; return } le(b, e); m = c[h >> 2] | 0; m = m + -16 | 0; c[h >> 2] = m; i = k; return } function oc(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0; g = c[b + 16 >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { g = (c[b + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { g = (c[b + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - e | 0; e = c[g >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) g = 12936; else { g = c[e >> 2] | 0; g = (f | 0) > (d[g + 6 >> 0] | 0 | 0) ? 12936 : g + 16 + (f + -1 << 4) | 0 } } else { g = (c[g >> 2] | 0) + (e << 4) | 0; g = g >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? g : 12936 } while (0); h = b + 8 | 0; e = c[h >> 2] | 0; if (!(c[e + -8 >> 2] | 0)) e = 0; else e = c[e + -16 >> 2] | 0; f = c[g + 8 >> 2] | 0; switch (f & 15) { case 5: { c[(c[g >> 2] | 0) + 24 >> 2] = e; if (!e) { j = c[h >> 2] | 0; j = j + -16 | 0; c[h >> 2] = j; return 1 } if (a[e + 5 >> 0] & 3 ? (i = c[g >> 2] | 0, a[i + 5 >> 0] & 4) : 0) le(b, i); pe(b, c[g >> 2] | 0, e); j = c[h >> 2] | 0; j = j + -16 | 0; c[h >> 2] = j; return 1 } case 7: { c[(c[g >> 2] | 0) + 8 >> 2] = e; if (!e) { j = c[h >> 2] | 0; j = j + -16 | 0; c[h >> 2] = j; return 1 } if (a[e + 5 >> 0] & 3 ? (j = c[g >> 2] | 0, a[j + 5 >> 0] & 4) : 0) je(b, j, e); pe(b, c[g >> 2] | 0, e); j = c[h >> 2] | 0; j = j + -16 | 0; c[h >> 2] = j; return 1 } default: { c[(c[b + 12 >> 2] | 0) + 252 + ((f & 15) << 2) >> 2] = e; j = c[h >> 2] | 0; j = j + -16 | 0; c[h >> 2] = j; return 1 } }return 0 } function pc(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0; g = c[b + 16 >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { e = (c[b + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { e = (c[b + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - e | 0; e = c[g >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) e = 12936; else { e = c[e >> 2] | 0; e = (f | 0) > (d[e + 6 >> 0] | 0 | 0) ? 12936 : e + 16 + (f + -1 << 4) | 0 } } else { e = (c[g >> 2] | 0) + (e << 4) | 0; e = e >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); f = b + 8 | 0; g = c[f >> 2] | 0; if (!(c[g + -8 >> 2] | 0)) { c[(c[e >> 2] | 0) + 12 >> 2] = 0; b = g; b = b + -16 | 0; c[f >> 2] = b; return } h = g + -16 | 0; c[(c[e >> 2] | 0) + 12 >> 2] = c[h >> 2]; h = c[h >> 2] | 0; if (!(a[h + 5 >> 0] & 3)) { b = g; b = b + -16 | 0; c[f >> 2] = b; return } e = c[e >> 2] | 0; if (!(a[e + 5 >> 0] & 4)) { b = g; b = b + -16 | 0; c[f >> 2] = b; return } je(b, e, h); b = c[f >> 2] | 0; b = b + -16 | 0; c[f >> 2] = b; return } function qc(b, e) { b = b | 0; e = e | 0; b = c[b + 16 >> 2] | 0; if (!(a[b + 18 >> 0] & 8)) { e = 0; return e | 0 } if (e | 0) c[e >> 2] = c[b + 24 >> 2]; e = d[b + 37 >> 0] | 0; return e | 0 } function rc(a, d, e, f, g) { a = a | 0; d = d | 0; e = e | 0; f = f | 0; g = g | 0; var h = 0, i = 0; h = a + 8 | 0; d = (c[h >> 2] | 0) + (~d << 4) | 0; if ((g | 0) != 0 ? (b[a + 36 >> 1] | 0) == 0 : 0) { i = c[a + 16 >> 2] | 0; c[i + 28 >> 2] = g; c[i + 24 >> 2] = f; Wd(a, d, e, 1) } else Wd(a, d, e, 0); if ((e | 0) != -1) return; a = (c[a + 16 >> 2] | 0) + 4 | 0; d = c[h >> 2] | 0; if ((c[a >> 2] | 0) >>> 0 >= d >>> 0) return; c[a >> 2] = d; return } function sc(e, f, g, h, j, k) { e = e | 0; f = f | 0; g = g | 0; h = h | 0; j = j | 0; k = k | 0; var l = 0, m = 0, n = 0, o = 0, p = 0; p = i; i = i + 16 | 0; o = p; if (!h) m = 0; else { m = c[e + 16 >> 2] | 0; do if ((h | 0) <= 0) { if ((h | 0) >= -1000999) { h = (c[e + 8 >> 2] | 0) + (h << 4) | 0; break } if ((h | 0) == -1001e3) { h = (c[e + 12 >> 2] | 0) + 40 | 0; break } l = -1001e3 - h | 0; h = c[m >> 2] | 0; if ((c[h + 8 >> 2] | 0) == 22) h = 12936; else { h = c[h >> 2] | 0; h = (l | 0) > (d[h + 6 >> 0] | 0) ? 12936 : h + 16 + (l + -1 << 4) | 0 } } else { h = (c[m >> 2] | 0) + (h << 4) | 0; h = h >>> 0 < (c[e + 8 >> 2] | 0) >>> 0 ? h : 12936 } while (0); m = h - (c[e + 28 >> 2] | 0) | 0 } n = e + 8 | 0; h = (c[n >> 2] | 0) + (~f << 4) | 0; c[o >> 2] = h; l = h; if ((k | 0) != 0 ? (b[e + 36 >> 1] | 0) == 0 : 0) { f = c[e + 16 >> 2] | 0; c[f + 28 >> 2] = k; c[f + 24 >> 2] = j; c[f + 20 >> 2] = l - (c[e + 28 >> 2] | 0); a[f + 36 >> 0] = a[e + 41 >> 0] | 0; o = e + 68 | 0; k = f + 32 | 0; c[k >> 2] = c[o >> 2]; c[o >> 2] = m; m = f + 18 | 0; a[m >> 0] = d[m >> 0] | 16; Wd(e, h, g, 1); a[m >> 0] = d[m >> 0] & 239; c[o >> 2] = c[k >> 2]; m = 0 } else { c[o + 4 >> 2] = g; m = Xd(e, 19, o, l - (c[e + 28 >> 2] | 0) | 0, m) | 0 } if ((g | 0) != -1) { i = p; return m | 0 } l = (c[e + 16 >> 2] | 0) + 4 | 0; h = c[n >> 2] | 0; if ((c[l >> 2] | 0) >>> 0 >= h >>> 0) { i = p; return m | 0 } c[l >> 2] = h; i = p; return m | 0 } function tc(a, b) { a = a | 0; b = b | 0; Wd(a, c[b >> 2] | 0, c[b + 4 >> 2] | 0, 0); return } function uc(b, d, e, f, g) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; g = g | 0; var h = 0, j = 0, k = 0, l = 0; h = i; i = i + 32 | 0; j = h; ug(b, j, d, e); f = Yd(b, j, (f | 0) == 0 ? 10032 : f, g) | 0; if (f | 0) { i = h; return f | 0 } d = c[(c[b + 8 >> 2] | 0) + -16 >> 2] | 0; if ((a[d + 6 >> 0] | 0) != 1) { i = h; return f | 0 } e = Zf(c[(c[b + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0; d = d + 16 | 0; g = c[(c[d >> 2] | 0) + 8 >> 2] | 0; l = e; k = c[l + 4 >> 2] | 0; j = g; c[j >> 2] = c[l >> 2]; c[j + 4 >> 2] = k; j = e + 8 | 0; c[g + 8 >> 2] = c[j >> 2]; if (!(c[j >> 2] & 64)) { i = h; return f | 0 } e = c[e >> 2] | 0; if (!(a[e + 5 >> 0] & 3)) { i = h; return f | 0 } d = c[d >> 2] | 0; if (!(a[d + 5 >> 0] & 4)) { i = h; return f | 0 } je(b, d, e); i = h; return f | 0 } function vc(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0; e = c[a + 8 >> 2] | 0; if ((c[e + -8 >> 2] | 0) != 70) { e = 1; return e | 0 } e = _d(a, c[(c[e + -16 >> 2] | 0) + 12 >> 2] | 0, b, d, 0) | 0; return e | 0 } function wc(a) { a = a | 0; return d[a + 6 >> 0] | 0 | 0 } function xc(e, f, g) { e = e | 0; f = f | 0; g = g | 0; var h = 0, i = 0; i = c[e + 12 >> 2] | 0; do switch (f | 0) { case 0: { a[i + 63 >> 0] = 0; i = 0; return i | 0 } case 1: { Ef(i, 0); a[i + 63 >> 0] = 1; i = 0; return i | 0 } case 2: { De(e, 0); i = 0; return i | 0 } case 3: { i = ((c[i + 12 >> 2] | 0) + (c[i + 8 >> 2] | 0) | 0) >>> 10; return i | 0 } case 4: { i = (c[i + 12 >> 2] | 0) + (c[i + 8 >> 2] | 0) & 1023; return i | 0 } case 5: { h = b[i + 62 >> 1] | 0; if ((h & 255) << 24 >> 24 == 2) { i = (c[i + 20 >> 2] | 0) == 0 & 1; Ce(e); return i | 0 } f = (g << 10) + -1600 | 0; if ((h & 65535) >= 256) f = (c[i + 12 >> 2] | 0) + f | 0; Ef(i, f); Ce(e); i = (a[i + 61 >> 0] | 0) == 5 & 1; return i | 0 } case 6: { e = i + 156 | 0; i = c[e >> 2] | 0; c[e >> 2] = g; return i | 0 } case 8: { e = i + 160 | 0; i = c[e >> 2] | 0; c[e >> 2] = g; return i | 0 } case 7: { e = i + 164 | 0; i = c[e >> 2] | 0; c[e >> 2] = g; return i | 0 } case 9: { i = d[i + 63 >> 0] | 0; return i | 0 } case 10: { re(e, 2); i = 0; return i | 0 } case 11: { re(e, 0); i = 0; return i | 0 } default: { i = -1; return i | 0 } } while (0); return 0 } function yc(a) { a = a | 0; Fd(a); return 0 } function zc(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); f = a + 8 | 0; a = Pf(a, c[b >> 2] | 0, (c[f >> 2] | 0) + -16 | 0) | 0; e = c[f >> 2] | 0; c[f >> 2] = (a | 0) == 0 ? e + -16 | 0 : e + 16 | 0; return a | 0 } function Ac(a, b) { a = a | 0; b = b | 0; var e = 0; if ((b | 0) > 1) { if ((c[(c[a + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); og(a, b); return } else { if (b | 0) return; b = a + 8 | 0; e = c[b >> 2] | 0; a = Mf(a, 15616, 0) | 0; c[e >> 2] = a; c[e + 8 >> 2] = d[a + 4 >> 0] | 0 | 64; c[b >> 2] = (c[b >> 2] | 0) + 16; return } } function Bc(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0; f = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - b | 0; b = c[f >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (e | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (e + -1 << 4) | 0 } } else { b = (c[f >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); f = a + 8 | 0; pg(a, c[f >> 2] | 0, b); c[f >> 2] = (c[f >> 2] | 0) + 16; return } function Cc(a, b) { a = a | 0; b = b | 0; a = a + 12 | 0; if (b | 0) c[b >> 2] = c[(c[a >> 2] | 0) + 4 >> 2]; return c[c[a >> 2] >> 2] | 0 } function Dc(a, b, d) { a = a | 0; b = b | 0; d = d | 0; a = c[a + 12 >> 2] | 0; c[a + 4 >> 2] = d; c[a >> 2] = b; return } function Ec(a, b) { a = a | 0; b = b | 0; var d = 0; if ((c[(c[a + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(a); b = Of(a, b, 0) | 0; a = a + 8 | 0; d = c[a >> 2] | 0; c[d >> 2] = b; c[d + 8 >> 2] = 71; c[a >> 2] = (c[a >> 2] | 0) + 16; return b + 24 | 0 } function Fc(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; g = c[a + 16 >> 2] | 0; do if ((b | 0) <= 0) { if ((b | 0) >= -1000999) { b = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { b = (c[a + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - b | 0; b = c[g >> 2] | 0; if ((c[b + 8 >> 2] | 0) == 22) b = 12936; else { b = c[b >> 2] | 0; b = (f | 0) > (d[b + 6 >> 0] | 0 | 0) ? 12936 : b + 16 + (f + -1 << 4) | 0 } } else { b = (c[g >> 2] | 0) + (b << 4) | 0; b = b >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? b : 12936 } while (0); a: do switch (c[b + 8 >> 2] & 63) { case 38: { b = c[b >> 2] | 0; if ((e | 0) <= 0) { a = 0; return a | 0 } if ((d[b + 6 >> 0] | 0 | 0) < (e | 0)) { a = 0; return a | 0 } else { f = 15616; b = b + 16 + (e + -1 << 4) | 0; break a } } case 6: { b = c[b >> 2] | 0; f = c[b + 12 >> 2] | 0; if ((e | 0) <= 0) { a = 0; return a | 0 } if ((c[f + 40 >> 2] | 0) < (e | 0)) { a = 0; return a | 0 } e = e + -1 | 0; b = c[(c[b + 16 + (e << 2) >> 2] | 0) + 8 >> 2] | 0; f = c[(c[f + 28 >> 2] | 0) + (e << 3) >> 2] | 0; if (!f) f = 15616; else f = f + 16 | 0; break } default: { a = 0; return a | 0 } } while (0); a = a + 8 | 0; e = c[a >> 2] | 0; i = b; h = c[i + 4 >> 2] | 0; g = e; c[g >> 2] = c[i >> 2]; c[g + 4 >> 2] = h; c[e + 8 >> 2] = c[b + 8 >> 2]; c[a >> 2] = (c[a >> 2] | 0) + 16; a = f; return a | 0 } function Gc(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0; h = c[b + 16 >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { e = (c[b + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { e = (c[b + 12 >> 2] | 0) + 40 | 0; break } g = -1001e3 - e | 0; e = c[h >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) e = 12936; else { e = c[e >> 2] | 0; e = (g | 0) > (d[e + 6 >> 0] | 0 | 0) ? 12936 : e + 16 + (g + -1 << 4) | 0 } } else { e = (c[h >> 2] | 0) + (e << 4) | 0; e = e >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); a: do switch (c[e + 8 >> 2] & 63) { case 38: { e = c[e >> 2] | 0; if ((f | 0) <= 0) { b = 0; return b | 0 } if ((d[e + 6 >> 0] | 0 | 0) < (f | 0)) { b = 0; return b | 0 } else { i = 15616; h = e; e = e + 16 + (f + -1 << 4) | 0; break a } } case 6: { e = c[e >> 2] | 0; g = c[e + 12 >> 2] | 0; if ((f | 0) <= 0) { b = 0; return b | 0 } if ((c[g + 40 >> 2] | 0) < (f | 0)) { b = 0; return b | 0 } f = f + -1 | 0; h = c[e + 16 + (f << 2) >> 2] | 0; e = c[h + 8 >> 2] | 0; g = c[(c[g + 28 >> 2] | 0) + (f << 3) >> 2] | 0; if (!g) i = 15616; else i = g + 16 | 0; break } default: { b = 0; return b | 0 } } while (0); f = b + 8 | 0; g = c[f >> 2] | 0; l = g + -16 | 0; c[f >> 2] = l; k = c[l + 4 >> 2] | 0; j = e; c[j >> 2] = c[l >> 2]; c[j + 4 >> 2] = k; c[e + 8 >> 2] = c[g + -8 >> 2]; e = c[f >> 2] | 0; if (!(c[e + 8 >> 2] & 64)) { l = i; return l | 0 } g = c[e >> 2] | 0; if (!(a[g + 5 >> 0] & 3)) { l = i; return l | 0 } e = h; if (!(a[e + 5 >> 0] & 4)) { l = i; return l | 0 } je(b, e, g); l = i; return l | 0 } function Hc(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; i = c[a + 16 >> 2] | 0; h = (b | 0) > 0; do if (!h) { if ((b | 0) >= -1000999) { f = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { f = (c[a + 12 >> 2] | 0) + 40 | 0; break } f = -1001e3 - b | 0; g = c[i >> 2] | 0; if ((c[g + 8 >> 2] | 0) == 22) f = 12936; else { g = c[g >> 2] | 0; f = (f | 0) > (d[g + 6 >> 0] | 0 | 0) ? 12936 : g + 16 + (f + -1 << 4) | 0 } } else { f = (c[i >> 2] | 0) + (b << 4) | 0; f = f >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? f : 12936 } while (0); switch (c[f + 8 >> 2] & 63) { case 6: { do if (!h) { if ((b | 0) >= -1000999) { f = (c[a + 8 >> 2] | 0) + (b << 4) | 0; break } if ((b | 0) == -1001e3) { f = (c[a + 12 >> 2] | 0) + 40 | 0; break } g = -1001e3 - b | 0; f = c[i >> 2] | 0; if ((c[f + 8 >> 2] | 0) == 22) f = 12936; else { f = c[f >> 2] | 0; f = (g | 0) > (d[f + 6 >> 0] | 0 | 0) ? 12936 : f + 16 + (g + -1 << 4) | 0 } } else { f = (c[i >> 2] | 0) + (b << 4) | 0; f = f >>> 0 < (c[a + 8 >> 2] | 0) >>> 0 ? f : 12936 } while (0); e = c[(c[f >> 2] | 0) + 16 + (e + -1 << 2) >> 2] | 0; return e | 0 } case 38: { e = (c[f >> 2] | 0) + 16 + (e + -1 << 4) | 0; return e | 0 } default: { e = 0; return e | 0 } }return 0 } function Ic(b, e, f, g, h) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; h = h | 0; var i = 0, j = 0, k = 0; k = c[b + 16 >> 2] | 0; do if ((e | 0) <= 0) { if ((e | 0) >= -1000999) { e = (c[b + 8 >> 2] | 0) + (e << 4) | 0; break } if ((e | 0) == -1001e3) { e = (c[b + 12 >> 2] | 0) + 40 | 0; break } e = -1001e3 - e | 0; i = c[k >> 2] | 0; if ((c[i + 8 >> 2] | 0) == 22) e = 12936; else { j = c[i >> 2] | 0; e = (e | 0) > (d[j + 6 >> 0] | 0 | 0) ? 12936 : j + 16 + (e + -1 << 4) | 0 } } else { e = (c[k >> 2] | 0) + (e << 4) | 0; e = e >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); j = c[e >> 2] | 0; f = j + 16 + (f + -1 << 2) | 0; do if ((g | 0) <= 0) { if ((g | 0) >= -1000999) { e = (c[b + 8 >> 2] | 0) + (g << 4) | 0; break } if ((g | 0) == -1001e3) { e = (c[b + 12 >> 2] | 0) + 40 | 0; break } i = -1001e3 - g | 0; e = c[k >> 2] | 0; if ((c[e + 8 >> 2] | 0) == 22) e = 12936; else { e = c[e >> 2] | 0; e = (i | 0) > (d[e + 6 >> 0] | 0 | 0) ? 12936 : e + 16 + (i + -1 << 4) | 0 } } else { e = (c[k >> 2] | 0) + (g << 4) | 0; e = e >>> 0 < (c[b + 8 >> 2] | 0) >>> 0 ? e : 12936 } while (0); e = (c[e >> 2] | 0) + 16 + (h + -1 << 2) | 0; c[f >> 2] = c[e >> 2]; e = c[e >> 2] | 0; if (!(a[e + 5 >> 0] & 3)) return; if (!(a[j + 5 >> 0] & 4)) return; je(b, j, e); return } function Jc(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0; i = d + b | 0; j = i + 511 | 0; e = c[a + 20 >> 2] | 0; do if ((e | 0) > (c[a + 24 >> 2] | 0) ? (g = (c[(c[a >> 2] | 0) + 12 >> 2] | 0) + (e + -1 << 2) | 0, h = c[g >> 2] | 0, (h & 63 | 0) == 4) : 0) { e = h >>> 6 & 255; f = e + (h >>> 23) | 0; if ((e | 0) > (b | 0) | (f + 1 | 0) < (b | 0) ? (e | 0) < (b | 0) | (e | 0) > (i | 0) : 0) break; d = (e | 0) < (b | 0) ? e : b; c[g >> 2] = ((f | 0) < (i | 0) ? j : f) - d << 23 | d << 6 & 16320 | h & 8372287; return } while (0); Kc(a, b << 6 | (d << 23) + -8388608 | 4) | 0; return } function Kc(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0; q = c[b >> 2] | 0; o = b + 28 | 0; e = c[o >> 2] | 0; r = b + 20 | 0; n = c[r >> 2] | 0; do if ((e | 0) != -1) { k = c[q + 12 >> 2] | 0; while (1) { j = k + (e << 2) | 0; i = c[j >> 2] | 0; h = (i >>> 14) + -131071 | 0; g = e; e = (h | 0) == -1 ? -1 : e + 1 + h | 0; if ((g | 0) > 0 ? (l = j + -4 | 0, m = c[l >> 2] | 0, (a[4156 + (m & 63) >> 0] | 0) < 0) : 0) { f = l; h = m } else { f = j; h = i } if ((h & 63 | 0) == 28) { c[f >> 2] = h & 8372224 | h >>> 23 << 6 | 27; f = n + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) { e = 8; break } f = c[j >> 2] & 16383 | (f << 14) + 2147467264 } else { f = n + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) { e = 11; break } f = (f << 14) + 2147467264 | i & 16383 } c[j >> 2] = f; if ((e | 0) == -1) { e = 14; break } } if ((e | 0) == 8) He(c[b + 12 >> 2] | 0, 2480); else if ((e | 0) == 11) He(c[b + 12 >> 2] | 0, 2480); else if ((e | 0) == 14) { p = c[r >> 2] | 0; break } } else p = n; while (0); c[o >> 2] = -1; e = q + 48 | 0; if ((p | 0) < (c[e >> 2] | 0)) { f = c[q + 12 >> 2] | 0; e = p } else { p = q + 12 | 0; f = Se(c[(c[b + 12 >> 2] | 0) + 52 >> 2] | 0, c[p >> 2] | 0, e, 4, 2147483645, 2507) | 0; c[p >> 2] = f; e = c[r >> 2] | 0 } c[f + (e << 2) >> 2] = d; f = c[r >> 2] | 0; g = q + 52 | 0; e = b + 12 | 0; if ((f | 0) < (c[g >> 2] | 0)) { d = q + 20 | 0; q = f; b = c[e >> 2] | 0; b = b + 8 | 0; b = c[b >> 2] | 0; d = c[d >> 2] | 0; q = d + (q << 2) | 0; c[q >> 2] = b; q = c[r >> 2] | 0; b = q + 1 | 0; c[r >> 2] = b; return q | 0 } else { d = q + 20 | 0; c[d >> 2] = Se(c[(c[e >> 2] | 0) + 52 >> 2] | 0, c[d >> 2] | 0, g, 4, 2147483645, 2507) | 0; q = c[r >> 2] | 0; b = c[e >> 2] | 0; b = b + 8 | 0; b = c[b >> 2] | 0; d = c[d >> 2] | 0; q = d + (q << 2) | 0; c[q >> 2] = b; q = c[r >> 2] | 0; b = q + 1 | 0; c[r >> 2] = b; return q | 0 } return 0 } function Lc(a, b, c, d, e) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; e = e | 0; return Kc(a, c << 6 | b | d << 23 | e << 14) | 0 } function Mc(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0; g = a + 28 | 0; f = c[g >> 2] | 0; c[g >> 2] = -1; g = Kc(a, 2147450903) | 0; if ((f | 0) == -1) { i = g; return i | 0 } if ((g | 0) == -1) { i = f; return i | 0 } e = c[(c[a >> 2] | 0) + 12 >> 2] | 0; b = g; while (1) { h = e + (b << 2) | 0; i = c[h >> 2] | 0; d = (i >>> 14) + -131071 | 0; d = (d | 0) == -1 ? -1 : b + 1 + d | 0; if ((d | 0) == -1) break; else b = d } b = f + ~b | 0; if ((((b | 0) > -1 ? b : 0 - b | 0) | 0) > 131071) He(c[a + 12 >> 2] | 0, 2480); c[h >> 2] = (b << 14) + 2147467264 | i & 16383; i = g; return i | 0 } function Nc(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return Kc(a, c << 6 | b | d << 14) | 0 } function Oc(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0; if ((d | 0) == -1) return; e = c[b >> 2] | 0; if ((e | 0) == -1) { c[b >> 2] = d; return } f = c[(c[a >> 2] | 0) + 12 >> 2] | 0; while (1) { g = f + (e << 2) | 0; h = c[g >> 2] | 0; b = (h >>> 14) + -131071 | 0; b = (b | 0) == -1 ? -1 : e + 1 + b | 0; if ((b | 0) == -1) break; else e = b } b = ~e + d | 0; if ((((b | 0) > -1 ? b : 0 - b | 0) | 0) > 131071) He(c[a + 12 >> 2] | 0, 2480); c[g >> 2] = h & 16383 | (b << 14) + 2147467264; return } function Pc(a, b, c) { a = a | 0; b = b | 0; c = c | 0; Kc(a, b << 6 | (c << 23) + 8388608 | 31) | 0; return } function Qc(a) { a = a | 0; var b = 0; b = c[a + 20 >> 2] | 0; c[a + 24 >> 2] = b; return b | 0 } function Rc(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0; if ((c[b + 20 >> 2] | 0) == (e | 0)) { c[b + 24 >> 2] = e; f = b + 28 | 0; if ((d | 0) == -1) return; g = c[f >> 2] | 0; if ((g | 0) == -1) { c[f >> 2] = d; return } h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { i = h + (g << 2) | 0; j = c[i >> 2] | 0; f = (j >>> 14) + -131071 | 0; f = (f | 0) == -1 ? -1 : g + 1 + f | 0; if ((f | 0) == -1) break; else g = f } f = ~g + d | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); c[i >> 2] = (f << 14) + 2147467264 | j & 16383; return } if ((d | 0) == -1) return; k = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { j = k + (d << 2) | 0; i = c[j >> 2] | 0; h = (i >>> 14) + -131071 | 0; g = d; d = (h | 0) == -1 ? -1 : d + 1 + h | 0; if ((g | 0) > 0 ? (l = j + -4 | 0, m = c[l >> 2] | 0, (a[4156 + (m & 63) >> 0] | 0) < 0) : 0) { f = l; h = m } else { f = j; h = i } if ((h & 63 | 0) == 28) { c[f >> 2] = h & 8372224 | h >>> 23 << 6 | 27; f = ~g + e | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) { f = 17; break } f = c[j >> 2] & 16383 | (f << 14) + 2147467264 } else { f = ~g + e | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) { f = 20; break } f = i & 16383 | (f << 14) + 2147467264 } c[j >> 2] = f; if ((d | 0) == -1) { f = 23; break } } if ((f | 0) == 17) He(c[b + 12 >> 2] | 0, 2480); else if ((f | 0) == 20) He(c[b + 12 >> 2] | 0, 2480); else if ((f | 0) == 23) return } function Sc(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0; c[a + 24 >> 2] = c[a + 20 >> 2]; d = a + 28 | 0; if ((b | 0) == -1) return; e = c[d >> 2] | 0; if ((e | 0) == -1) { c[d >> 2] = b; return } f = c[(c[a >> 2] | 0) + 12 >> 2] | 0; while (1) { h = f + (e << 2) | 0; g = c[h >> 2] | 0; d = (g >>> 14) + -131071 | 0; d = (d | 0) == -1 ? -1 : e + 1 + d | 0; if ((d | 0) == -1) break; else e = d } d = ~e + b | 0; if ((((d | 0) > -1 ? d : 0 - d | 0) | 0) > 131071) He(c[a + 12 >> 2] | 0, 2480); c[h >> 2] = (d << 14) + 2147467264 | g & 16383; return } function Tc(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; if ((b | 0) == -1) return; e = c[(c[a >> 2] | 0) + 12 >> 2] | 0; a = (d << 6) + 64 & 16320; do { f = e + (b << 2) | 0; g = c[f >> 2] | 0; d = (g >>> 14) + -131071 | 0; c[f >> 2] = g & -16321 | a; b = (d | 0) == -1 ? -1 : b + 1 + d | 0 } while ((b | 0) != -1); return } function Uc(a, b, c) { a = a | 0; b = b | 0; c = c | 0; b = b << 6; if ((c | 0) < 262144) { c = Kc(a, b | c << 14 | 1) | 0; return c | 0 } else { b = Kc(a, b | 2) | 0; Kc(a, c << 6 | 39) | 0; c = b; return c | 0 } return 0 } function Vc(b, e) { b = b | 0; e = e | 0; var f = 0; e = (d[b + 48 >> 0] | 0) + e | 0; f = (c[b >> 2] | 0) + 78 | 0; if ((e | 0) <= (d[f >> 0] | 0 | 0)) return; if ((e | 0) > 249) He(c[b + 12 >> 2] | 0, 2515); a[f >> 0] = e; return } function Wc(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0; g = b + 48 | 0; e = (d[g >> 0] | 0) + e | 0; f = (c[b >> 2] | 0) + 78 | 0; if ((e | 0) <= (d[f >> 0] | 0 | 0)) { b = e & 255; a[g >> 0] = b; return } if ((e | 0) > 249) He(c[b + 12 >> 2] | 0, 2515); b = e & 255; a[f >> 0] = b; a[g >> 0] = b; return } function Xc(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0; e = i; i = i + 16 | 0; f = e; c[f >> 2] = b; c[f + 8 >> 2] = d[b + 4 >> 0] | 0 | 64; b = Yc(a, f, f) | 0; i = e; return b | 0 } function Yc(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; o = i; i = i + 16 | 0; f = o; n = c[(c[b + 12 >> 2] | 0) + 52 >> 2] | 0; l = Vf(n, c[b + 4 >> 2] | 0, d) | 0; m = c[b >> 2] | 0; k = l + 8 | 0; if (((c[k >> 2] | 0) == 3 ? (h[f >> 3] = +h[l >> 3] + 6755399441055744.0, g = c[f >> 2] | 0, j = c[m + 8 >> 2] | 0, (c[j + (g << 4) + 8 >> 2] | 0) == (c[e + 8 >> 2] | 0)) : 0) ? ng(0, j + (g << 4) | 0, e) | 0 : 0) { n = g; i = o; return n | 0 } f = m + 44 | 0; d = c[f >> 2] | 0; j = b + 32 | 0; b = c[j >> 2] | 0; h[l >> 3] = +(b | 0); c[k >> 2] = 3; if ((b | 0) < (d | 0)) f = d; else { l = m + 8 | 0; c[l >> 2] = Se(n, c[l >> 2] | 0, f, 16, 67108863, 2550) | 0; f = c[f >> 2] | 0 } g = c[m + 8 >> 2] | 0; if ((d | 0) < (f | 0)) do { c[g + (d << 4) + 8 >> 2] = 0; d = d + 1 | 0 } while ((d | 0) < (f | 0)); f = e; k = c[f + 4 >> 2] | 0; l = g + (b << 4) | 0; c[l >> 2] = c[f >> 2]; c[l + 4 >> 2] = k; l = e + 8 | 0; c[g + (b << 4) + 8 >> 2] = c[l >> 2]; c[j >> 2] = (c[j >> 2] | 0) + 1; if (!(c[l >> 2] & 64)) { n = b; i = o; return n | 0 } d = c[e >> 2] | 0; if (!(a[d + 5 >> 0] & 3)) { n = b; i = o; return n | 0 } if (!(a[m + 5 >> 0] & 4)) { n = b; i = o; return n | 0 } je(n, m, d); n = b; i = o; return n | 0 } function Zc(a, b) { a = a | 0; b = +b; var e = 0, f = 0, g = 0, j = 0, k = 0, l = 0; j = i; i = i + 32 | 0; e = j; f = j + 8 | 0; h[e >> 3] = b; g = c[(c[a + 12 >> 2] | 0) + 52 >> 2] | 0; h[f >> 3] = b; c[f + 8 >> 2] = 3; if (b != b | 0.0 != 0.0 | b == 0.0) { k = g + 8 | 0; l = c[k >> 2] | 0; c[k >> 2] = l + 16; g = Mf(g, e, 8) | 0; c[l >> 2] = g; c[l + 8 >> 2] = d[g + 4 >> 0] | 0 | 64; g = Yc(a, (c[k >> 2] | 0) + -16 | 0, f) | 0; c[k >> 2] = (c[k >> 2] | 0) + -16; i = j; return g | 0 } else { l = Yc(a, f, f) | 0; i = j; return l | 0 } return 0 } function _c(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0; switch (c[e >> 2] | 0) { case 12: { b = (c[(c[b >> 2] | 0) + 12 >> 2] | 0) + (c[e + 8 >> 2] << 2) | 0; c[b >> 2] = c[b >> 2] & -8372225 | (f << 14) + 16384 & 8372224; return } case 13: { i = e + 8 | 0; g = c[b >> 2] | 0; e = c[g + 12 >> 2] | 0; j = e + (c[i >> 2] << 2) | 0; c[j >> 2] = c[j >> 2] & 8388607 | (f << 23) + 8388608; i = e + (c[i >> 2] << 2) | 0; e = b + 48 | 0; f = d[e >> 0] | 0; c[i >> 2] = f << 6 | c[i >> 2] & -16321; f = f + 1 | 0; g = g + 78 | 0; do if (f >>> 0 > (d[g >> 0] | 0) >>> 0) if (f >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); else { h = f & 255; a[g >> 0] = h; break } else h = f & 255; while (0); a[e >> 0] = h; return } default: return } } function $c(a, b) { a = a | 0; b = b | 0; switch (c[b >> 2] | 0) { case 12: { c[b >> 2] = 6; b = b + 8 | 0; c[b >> 2] = (c[(c[(c[a >> 2] | 0) + 12 >> 2] | 0) + (c[b >> 2] << 2) >> 2] | 0) >>> 6 & 255; return } case 13: { a = (c[(c[a >> 2] | 0) + 12 >> 2] | 0) + (c[b + 8 >> 2] << 2) | 0; c[a >> 2] = c[a >> 2] & 8388607 | 16777216; c[b >> 2] = 11; return } default: return } } function ad(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0; switch (c[e >> 2] | 0) { case 7: { c[e >> 2] = 6; return } case 8: { j = e + 8 | 0; c[j >> 2] = Kc(b, c[j >> 2] << 23 | 5) | 0; c[e >> 2] = 11; return } case 9: { i = e + 8 | 0; g = c[i >> 2] | 0; j = g << 16; k = j >> 16; h = g >>> 16; f = h & 255; if ((k & 256 | 0) == 0 ? (d[b + 46 >> 0] | 0 | 0) <= (k | 0) : 0) { k = b + 48 | 0; a[k >> 0] = (a[k >> 0] | 0) + -1 << 24 >> 24 } if ((g & -16777216 | 0) == 117440512) if ((d[b + 46 >> 0] | 0) > (f & 255)) f = 7; else { f = b + 48 | 0; a[f >> 0] = (a[f >> 0] | 0) + -1 << 24 >> 24; f = 7 } else f = 6; c[i >> 2] = Kc(b, h << 23 & 2139095040 | f | j >> 2) | 0; c[e >> 2] = 11; return } case 12: { c[e >> 2] = 6; k = e + 8 | 0; c[k >> 2] = (c[(c[(c[b >> 2] | 0) + 12 >> 2] | 0) + (c[k >> 2] << 2) >> 2] | 0) >>> 6 & 255; return } case 13: { k = (c[(c[b >> 2] | 0) + 12 >> 2] | 0) + (c[e + 8 >> 2] << 2) | 0; c[k >> 2] = c[k >> 2] & 8388607 | 16777216; c[e >> 2] = 11; return } default: return } } function bd(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0; ad(b, e); if (((c[e >> 2] | 0) == 6 ? (f = c[e + 8 >> 2] | 0, (f & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (f | 0) : 0) { h = b + 48 | 0; a[h >> 0] = (a[h >> 0] | 0) + -1 << 24 >> 24 } f = b + 48 | 0; g = (d[f >> 0] | 0) + 1 | 0; h = (c[b >> 2] | 0) + 78 | 0; if (g >>> 0 <= (d[h >> 0] | 0) >>> 0) { h = g & 255; a[f >> 0] = h; h = h & 255; h = h + -1 | 0; cd(b, e, h); return } if (g >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); g = g & 255; a[h >> 0] = g; h = g; a[f >> 0] = h; h = h & 255; h = h + -1 | 0; cd(b, e, h); return } function cd(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0; dd(b, d, e); n = (c[d >> 2] | 0) == 10; C = d + 16 | 0; do if (n ? (k = c[d + 8 >> 2] | 0, (k | 0) != -1) : 0) { f = c[C >> 2] | 0; if ((f | 0) == -1) { c[C >> 2] = k; break } h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { i = h + (f << 2) | 0; j = c[i >> 2] | 0; g = (j >>> 14) + -131071 | 0; g = (g | 0) == -1 ? -1 : f + 1 + g | 0; if ((g | 0) == -1) break; else f = g } f = k + ~f | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[i >> 2] = (f << 14) + 2147467264 | j & 16383; break } } while (0); f = c[C >> 2] | 0; x = d + 20 | 0; j = c[x >> 2] | 0; if ((f | 0) == (j | 0)) { c[C >> 2] = -1; c[x >> 2] = -1; C = d + 8 | 0; c[C >> 2] = e; c[d >> 2] = 6; return } a: do if ((f | 0) == -1) k = 18; else { i = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { g = i + (f << 2) | 0; if ((f | 0) > 0 ? (l = c[g + -4 >> 2] | 0, (a[4156 + (l & 63) >> 0] | 0) < 0) : 0) h = l; else h = c[g >> 2] | 0; if ((h & 63 | 0) != 28) { k = 25; break a } k = ((c[g >> 2] | 0) >>> 14) + -131071 | 0; f = (k | 0) == -1 ? -1 : f + 1 + k | 0; if ((f | 0) == -1) { k = 18; break } } } while (0); b: do if ((k | 0) == 18) if ((j | 0) == -1) { r = -1; z = -1 } else { i = c[(c[b >> 2] | 0) + 12 >> 2] | 0; f = j; while (1) { g = i + (f << 2) | 0; if ((f | 0) > 0 ? (m = c[g + -4 >> 2] | 0, (a[4156 + (m & 63) >> 0] | 0) < 0) : 0) h = m; else h = c[g >> 2] | 0; if ((h & 63 | 0) != 28) { k = 25; break b } l = ((c[g >> 2] | 0) >>> 14) + -131071 | 0; f = (l | 0) == -1 ? -1 : f + 1 + l | 0; if ((f | 0) == -1) { r = -1; z = -1; break } } } while (0); do if ((k | 0) == 25) { m = b + 28 | 0; do if (!n) { i = c[m >> 2] | 0; c[m >> 2] = -1; j = Kc(b, 2147450903) | 0; if ((i | 0) != -1) if ((j | 0) != -1) { h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; g = j; while (1) { k = h + (g << 2) | 0; l = c[k >> 2] | 0; f = (l >>> 14) + -131071 | 0; f = (f | 0) == -1 ? -1 : g + 1 + f | 0; if ((f | 0) == -1) break; else g = f } f = i + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[k >> 2] = (f << 14) + 2147467264 | l & 16383; o = j; break } } else o = i; else o = j } else o = -1; while (0); j = b + 20 | 0; n = b + 24 | 0; c[n >> 2] = c[j >> 2]; l = e << 6; k = Kc(b, l | 16387) | 0; c[n >> 2] = c[j >> 2]; l = Kc(b, l | 8388611) | 0; c[n >> 2] = c[j >> 2]; if ((o | 0) != -1) { f = c[m >> 2] | 0; if ((f | 0) == -1) { c[m >> 2] = o; r = k; z = l; break } h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { i = h + (f << 2) | 0; j = c[i >> 2] | 0; g = (j >>> 14) + -131071 | 0; g = (g | 0) == -1 ? -1 : f + 1 + g | 0; if ((g | 0) == -1) break; else f = g } f = o + ~f | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[i >> 2] = (f << 14) + 2147467264 | j & 16383; r = k; z = l; break } } else { r = k; z = l } } while (0); o = c[b + 20 >> 2] | 0; c[b + 24 >> 2] = o; f = c[x >> 2] | 0; c: do if ((f | 0) != -1) { m = e << 6; n = m & 16320; l = c[(c[b >> 2] | 0) + 12 >> 2] | 0; if ((e | 0) == 255) { while (1) { k = l + (f << 2) | 0; j = c[k >> 2] | 0; i = (j >>> 14) + -131071 | 0; h = f; f = (i | 0) == -1 ? -1 : f + 1 + i | 0; if ((h | 0) > 0 ? (p = k + -4 | 0, q = c[p >> 2] | 0, (a[4156 + (q & 63) >> 0] | 0) < 0) : 0) { g = p; i = q } else { g = k; i = j } if ((i & 63 | 0) == 28) { c[g >> 2] = i & 8372224 | i >>> 23 << 6 | 27; g = o + ~h | 0; if ((((g | 0) > -1 ? g : 0 - g | 0) | 0) > 131071) { k = 60; break } g = c[k >> 2] & 16383 | (g << 14) + 2147467264 } else { g = r + ~h | 0; if ((((g | 0) > -1 ? g : 0 - g | 0) | 0) > 131071) { k = 63; break } g = j & 16383 | (g << 14) + 2147467264 } c[k >> 2] = g; if ((f | 0) == -1) break c } if ((k | 0) == 60) { q = b + 12 | 0; q = c[q >> 2] | 0; He(q, 2480) } else if ((k | 0) == 63) { q = b + 12 | 0; q = c[q >> 2] | 0; He(q, 2480) } } else s = f; while (1) { j = l + (s << 2) | 0; i = c[j >> 2] | 0; q = (i >>> 14) + -131071 | 0; h = s; s = (q | 0) == -1 ? -1 : s + 1 + q | 0; if ((h | 0) > 0 ? (t = j + -4 | 0, u = c[t >> 2] | 0, (a[4156 + (u & 63) >> 0] | 0) < 0) : 0) { g = t; f = u } else { g = j; f = i } if ((f & 63 | 0) == 28) { if ((f >>> 23 | 0) == (e | 0)) f = f & 8372224 | m | 27; else f = f & -16321 | n; c[g >> 2] = f; f = o + ~h | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) { k = 60; break } f = c[j >> 2] & 16383 | (f << 14) + 2147467264 } else { f = r + ~h | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) { k = 63; break } f = i & 16383 | (f << 14) + 2147467264 } c[j >> 2] = f; if ((s | 0) == -1) break c } if ((k | 0) == 60) { u = b + 12 | 0; u = c[u >> 2] | 0; He(u, 2480) } else if ((k | 0) == 63) { u = b + 12 | 0; u = c[u >> 2] | 0; He(u, 2480) } } while (0); f = c[C >> 2] | 0; if ((f | 0) == -1) { c[C >> 2] = -1; c[x >> 2] = -1; C = d + 8 | 0; c[C >> 2] = e; c[d >> 2] = 6; return } m = e << 6; n = m & 16320; l = c[(c[b >> 2] | 0) + 12 >> 2] | 0; if ((e | 0) == 255) { while (1) { k = l + (f << 2) | 0; j = c[k >> 2] | 0; u = (j >>> 14) + -131071 | 0; h = f; f = (u | 0) == -1 ? -1 : f + 1 + u | 0; if ((h | 0) > 0 ? (v = k + -4 | 0, w = c[v >> 2] | 0, (a[4156 + (w & 63) >> 0] | 0) < 0) : 0) { g = v; i = w } else { g = k; i = j } if ((i & 63 | 0) == 28) { c[g >> 2] = i & 8372224 | i >>> 23 << 6 | 27; g = o + ~h | 0; if ((((g | 0) > -1 ? g : 0 - g | 0) | 0) > 131071) { k = 85; break } g = c[k >> 2] & 16383 | (g << 14) + 2147467264 } else { g = z + ~h | 0; if ((((g | 0) > -1 ? g : 0 - g | 0) | 0) > 131071) { k = 88; break } g = j & 16383 | (g << 14) + 2147467264 } c[k >> 2] = g; if ((f | 0) == -1) { k = 91; break } } if ((k | 0) == 85) { w = b + 12 | 0; w = c[w >> 2] | 0; He(w, 2480) } else if ((k | 0) == 88) { w = b + 12 | 0; w = c[w >> 2] | 0; He(w, 2480) } else if ((k | 0) == 91) { c[C >> 2] = -1; c[x >> 2] = -1; C = d + 8 | 0; c[C >> 2] = e; c[d >> 2] = 6; return } } else y = f; while (1) { j = l + (y << 2) | 0; i = c[j >> 2] | 0; w = (i >>> 14) + -131071 | 0; h = y; y = (w | 0) == -1 ? -1 : y + 1 + w | 0; if ((h | 0) > 0 ? (A = j + -4 | 0, B = c[A >> 2] | 0, (a[4156 + (B & 63) >> 0] | 0) < 0) : 0) { g = A; f = B } else { g = j; f = i } if ((f & 63 | 0) == 28) { if ((f >>> 23 | 0) == (e | 0)) f = f & 8372224 | m | 27; else f = f & -16321 | n; c[g >> 2] = f; f = o + ~h | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) { k = 85; break } f = c[j >> 2] & 16383 | (f << 14) + 2147467264 } else { f = z + ~h | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) { k = 88; break } f = i & 16383 | (f << 14) + 2147467264 } c[j >> 2] = f; if ((y | 0) == -1) { k = 91; break } } if ((k | 0) == 85) { C = b + 12 | 0; C = c[C >> 2] | 0; He(C, 2480) } else if ((k | 0) == 88) { C = b + 12 | 0; C = c[C >> 2] | 0; He(C, 2480) } else if ((k | 0) == 91) { c[C >> 2] = -1; c[x >> 2] = -1; C = d + 8 | 0; c[C >> 2] = e; c[d >> 2] = 6; return } } function dd(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0.0; m = i; i = i + 32 | 0; g = m + 16 | 0; j = m; ad(a, b); f = c[b >> 2] | 0; a: do switch (f | 0) { case 1: { j = e + 1 | 0; f = c[a + 20 >> 2] | 0; do if ((f | 0) > (c[a + 24 >> 2] | 0) ? (k = (c[(c[a >> 2] | 0) + 12 >> 2] | 0) + (f + -1 << 2) | 0, l = c[k >> 2] | 0, (l & 63 | 0) == 4) : 0) { f = l >>> 6 & 255; g = f + (l >>> 23) | 0; if ((f | 0) > (e | 0) | (g + 1 | 0) < (e | 0) ? (f | 0) < (e | 0) | (f | 0) > (j | 0) : 0) break; a = (f | 0) < (e | 0) ? f : e; c[k >> 2] = a << 6 & 16320 | l & 8372287 | ((g | 0) <= (e | 0) ? e : g) - a << 23; break a } while (0); Kc(a, e << 6 | 4) | 0; break } case 2: case 3: { Kc(a, e << 6 | ((f | 0) == 2 & 1) << 23 | 3) | 0; break } case 4: { f = c[b + 8 >> 2] | 0; g = e << 6; if ((f | 0) < 262144) { Kc(a, g | f << 14 | 1) | 0; break a } else { Kc(a, g | 2) | 0; Kc(a, f << 6 | 39) | 0; break a } } case 5: { n = +h[b + 8 >> 3]; h[g >> 3] = n; f = c[(c[a + 12 >> 2] | 0) + 52 >> 2] | 0; h[j >> 3] = n; c[j + 8 >> 2] = 3; if (n != n | 0.0 != 0.0 | n == 0.0) { l = f + 8 | 0; k = c[l >> 2] | 0; c[l >> 2] = k + 16; f = Mf(f, g, 8) | 0; c[k >> 2] = f; c[k + 8 >> 2] = d[f + 4 >> 0] | 0 | 64; f = Yc(a, (c[l >> 2] | 0) + -16 | 0, j) | 0; c[l >> 2] = (c[l >> 2] | 0) + -16 } else f = Yc(a, j, j) | 0; g = e << 6; if ((f | 0) < 262144) { Kc(a, g | f << 14 | 1) | 0; break a } else { Kc(a, g | 2) | 0; Kc(a, f << 6 | 39) | 0; break a } } case 11: { a = (c[(c[a >> 2] | 0) + 12 >> 2] | 0) + (c[b + 8 >> 2] << 2) | 0; c[a >> 2] = c[a >> 2] & -16321 | e << 6 & 16320; break } case 6: { f = c[b + 8 >> 2] | 0; if ((f | 0) != (e | 0)) Kc(a, f << 23 | e << 6) | 0; break } default: { i = m; return } } while (0); c[b + 8 >> 2] = e; c[b >> 2] = 6; i = m; return } function ed(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; ad(b, e); if ((c[e >> 2] | 0) == 6) { h = e + 8 | 0; f = c[h >> 2] | 0; if ((c[e + 16 >> 2] | 0) == (c[e + 20 >> 2] | 0)) { e = f; return e | 0 } if ((f | 0) >= (d[b + 46 >> 0] | 0 | 0)) { cd(b, e, f); e = c[h >> 2] | 0; return e | 0 } } ad(b, e); if (((c[e >> 2] | 0) == 6 ? (g = c[e + 8 >> 2] | 0, (g & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (g | 0) : 0) { h = b + 48 | 0; a[h >> 0] = (a[h >> 0] | 0) + -1 << 24 >> 24 } f = b + 48 | 0; g = (d[f >> 0] | 0) + 1 | 0; h = (c[b >> 2] | 0) + 78 | 0; do if (g >>> 0 > (d[h >> 0] | 0) >>> 0) if (g >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); else { i = g & 255; a[h >> 0] = i; break } else i = g & 255; while (0); a[f >> 0] = i; cd(b, e, (i & 255) + -1 | 0); e = c[e + 8 >> 2] | 0; return e | 0 } function fd(a, b) { a = a | 0; b = b | 0; if ((c[b >> 2] | 0) == 8 ? (c[b + 16 >> 2] | 0) == (c[b + 20 >> 2] | 0) : 0) return; ed(a, b) | 0; return } function gd(a, b) { a = a | 0; b = b | 0; if ((c[b + 16 >> 2] | 0) == (c[b + 20 >> 2] | 0)) { ad(a, b); return } else { ed(a, b) | 0; return } } function hd(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, j = 0, k = 0, l = 0, m = 0.0, n = 0; l = i; i = i + 32 | 0; j = l + 16 | 0; k = l; if ((c[b + 16 >> 2] | 0) == (c[b + 20 >> 2] | 0)) ad(a, b); else ed(a, b) | 0; f = c[b >> 2] | 0; switch (f | 0) { case 1: case 3: case 2: { if ((c[a + 32 >> 2] | 0) < 256) { if ((f | 0) == 1) { c[k + 8 >> 2] = 0; c[j >> 2] = c[a + 4 >> 2]; c[j + 8 >> 2] = 69; e = Yc(a, j, k) | 0 } else { c[j >> 2] = (f | 0) == 2 & 1; c[j + 8 >> 2] = 1; e = Yc(a, j, j) | 0 } c[b + 8 >> 2] = e; c[b >> 2] = 4; b = e | 256; i = l; return b | 0 } break } case 5: { f = b + 8 | 0; m = +h[f >> 3]; h[j >> 3] = m; e = c[(c[a + 12 >> 2] | 0) + 52 >> 2] | 0; h[k >> 3] = m; c[k + 8 >> 2] = 3; if (m != m | 0.0 != 0.0 | m == 0.0) { g = e + 8 | 0; n = c[g >> 2] | 0; c[g >> 2] = n + 16; e = Mf(e, j, 8) | 0; c[n >> 2] = e; c[n + 8 >> 2] = d[e + 4 >> 0] | 0 | 64; e = Yc(a, (c[g >> 2] | 0) + -16 | 0, k) | 0; c[g >> 2] = (c[g >> 2] | 0) + -16 } else e = Yc(a, k, k) | 0; c[f >> 2] = e; c[b >> 2] = 4; g = 15; break } case 4: { e = c[b + 8 >> 2] | 0; g = 15; break } default: { } }if ((g | 0) == 15 ? (e | 0) < 256 : 0) { n = e | 256; i = l; return n | 0 } n = ed(a, b) | 0; i = l; return n | 0 } function id(b, f, g) { b = b | 0; f = f | 0; g = g | 0; var h = 0; switch (c[f >> 2] | 0) { case 7: { if (((c[g >> 2] | 0) == 6 ? (h = c[g + 8 >> 2] | 0, (h & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0) <= (h | 0) : 0) { h = b + 48 | 0; a[h >> 0] = (a[h >> 0] | 0) + -1 << 24 >> 24 } cd(b, g, c[f + 8 >> 2] | 0); return } case 8: { Kc(b, (ed(b, g) | 0) << 6 | c[f + 8 >> 2] << 23 | 9) | 0; break } case 9: { h = f + 8 | 0; f = (a[h + 3 >> 0] | 0) == 7 ? 10 : 8; Kc(b, (hd(b, g) | 0) << 14 | f | d[h + 2 >> 0] << 6 | e[h >> 1] << 23) | 0; break } default: { } }if ((c[g >> 2] | 0) != 6) return; f = c[g + 8 >> 2] | 0; if (f & 256 | 0) return; if ((d[b + 46 >> 0] | 0) > (f | 0)) return; b = b + 48 | 0; a[b >> 0] = (a[b >> 0] | 0) + -1 << 24 >> 24; return } function jd(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0; ed(b, e) | 0; g = e + 8 | 0; j = c[g >> 2] | 0; if ((c[e >> 2] | 0) == 6 & (j & 256 | 0) == 0 ? (d[b + 46 >> 0] | 0 | 0) <= (j | 0) : 0) { k = b + 48 | 0; a[k >> 0] = (a[k >> 0] | 0) + -1 << 24 >> 24 } k = b + 48 | 0; i = d[k >> 0] | 0; c[g >> 2] = i; c[e >> 2] = 6; e = i + 2 | 0; g = (c[b >> 2] | 0) + 78 | 0; do if (e >>> 0 > (d[g >> 0] | 0) >>> 0) if (e >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); else { h = e & 255; a[g >> 0] = h; break } else h = e & 255; while (0); a[k >> 0] = h; Kc(b, j << 23 | i << 6 | (hd(b, f) | 0) << 14 | 12) | 0; if ((c[f >> 2] | 0) != 6) return; e = c[f + 8 >> 2] | 0; if (e & 256 | 0) return; if ((d[b + 46 >> 0] | 0 | 0) > (e | 0)) return; a[k >> 0] = (a[k >> 0] | 0) + -1 << 24 >> 24; return } function kd(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; ad(b, e); h = c[e >> 2] | 0; a: do switch (h | 0) { case 10: { i = e + 8 | 0; o = c[i >> 2] | 0; h = (c[(c[b >> 2] | 0) + 12 >> 2] | 0) + (o << 2) | 0; if (!((o | 0) > 0 ? (g = h + -4 | 0, f = c[g >> 2] | 0, (a[4156 + (f & 63) >> 0] | 0) < 0) : 0)) { g = h; f = c[h >> 2] | 0 } c[g >> 2] = ((f & 16320 | 0) == 0 & 1) << 6 | f & -16321; k = c[i >> 2] | 0; o = 32; break } case 2: case 5: case 4: break; default: { i = e + 8 | 0; switch (h | 0) { case 11: { f = c[(c[(c[b >> 2] | 0) + 12 >> 2] | 0) + (c[i >> 2] << 2) >> 2] | 0; if ((f & 63 | 0) == 20) { j = b + 20 | 0; c[j >> 2] = (c[j >> 2] | 0) + -1; Kc(b, f >>> 23 << 6 | 16411) | 0; j = b + 28 | 0; i = c[j >> 2] | 0; c[j >> 2] = -1; j = Kc(b, 2147450903) | 0; if ((i | 0) == -1) { k = j; o = 32; break a } if ((j | 0) == -1) { k = i; o = 33; break a } h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; g = j; while (1) { l = h + (g << 2) | 0; m = c[l >> 2] | 0; f = (m >>> 14) + -131071 | 0; f = (f | 0) == -1 ? -1 : g + 1 + f | 0; if ((f | 0) == -1) break; else g = f } f = i + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[l >> 2] = (f << 14) + 2147467264 | m & 16383; k = j; o = 32; break a } } else o = 15; break } case 6: { o = 22; break } default: o = 15 }if ((o | 0) == 15) { f = b + 48 | 0; g = (d[f >> 0] | 0) + 1 | 0; h = (c[b >> 2] | 0) + 78 | 0; do if (g >>> 0 > (d[h >> 0] | 0) >>> 0) if (g >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); else { j = g & 255; a[h >> 0] = j; break } else j = g & 255; while (0); a[f >> 0] = j; dd(b, e, (j & 255) + -1 | 0); if ((c[e >> 2] | 0) == 6) o = 22; else n = c[i >> 2] | 0 } if ((o | 0) == 22) { f = c[i >> 2] | 0; if ((f & 256 | 0) == 0 ? (d[b + 46 >> 0] | 0) <= (f | 0) : 0) { n = b + 48 | 0; a[n >> 0] = (a[n >> 0] | 0) + -1 << 24 >> 24; n = f } else n = f } Kc(b, n << 23 | 16348) | 0; j = b + 28 | 0; i = c[j >> 2] | 0; c[j >> 2] = -1; j = Kc(b, 2147450903) | 0; if ((i | 0) != -1) if ((j | 0) != -1) { h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; g = j; while (1) { l = h + (g << 2) | 0; m = c[l >> 2] | 0; f = (m >>> 14) + -131071 | 0; f = (f | 0) == -1 ? -1 : g + 1 + f | 0; if ((f | 0) == -1) break; else g = f } f = i + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[l >> 2] = (f << 14) + 2147467264 | m & 16383; k = j; o = 32; break a } } else { k = i; o = 33 } else { k = j; o = 32 } } } while (0); if ((o | 0) == 32 ? (k | 0) != -1 : 0) o = 33; do if ((o | 0) == 33) { f = e + 20 | 0; g = c[f >> 2] | 0; if ((g | 0) == -1) { c[f >> 2] = k; break } h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { i = h + (g << 2) | 0; j = c[i >> 2] | 0; f = (j >>> 14) + -131071 | 0; f = (f | 0) == -1 ? -1 : g + 1 + f | 0; if ((f | 0) == -1) break; else g = f } f = k + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[i >> 2] = (f << 14) + 2147467264 | j & 16383; break } } while (0); l = e + 16 | 0; k = c[l >> 2] | 0; c[b + 24 >> 2] = c[b + 20 >> 2]; f = b + 28 | 0; if ((k | 0) == -1) { c[l >> 2] = -1; return } g = c[f >> 2] | 0; if ((g | 0) == -1) { c[f >> 2] = k; c[l >> 2] = -1; return } h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { i = h + (g << 2) | 0; j = c[i >> 2] | 0; f = (j >>> 14) + -131071 | 0; f = (f | 0) == -1 ? -1 : g + 1 + f | 0; if ((f | 0) == -1) break; else g = f } f = k + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); c[i >> 2] = (f << 14) + 2147467264 | j & 16383; c[l >> 2] = -1; return } function ld(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; ad(b, e); g = c[e >> 2] | 0; a: do switch (g | 0) { case 10: { k = c[e + 8 >> 2] | 0; o = 29; break } case 3: case 1: break; default: { j = e + 8 | 0; switch (g | 0) { case 11: { g = c[(c[(c[b >> 2] | 0) + 12 >> 2] | 0) + (c[j >> 2] << 2) >> 2] | 0; if ((g & 63 | 0) == 20) { l = b + 20 | 0; c[l >> 2] = (c[l >> 2] | 0) + -1; Kc(b, g >>> 23 << 6 | 27) | 0; l = b + 28 | 0; j = c[l >> 2] | 0; c[l >> 2] = -1; l = Kc(b, 2147450903) | 0; if ((j | 0) == -1) { k = l; o = 29; break a } if ((l | 0) == -1) { k = j; o = 30; break a } i = c[(c[b >> 2] | 0) + 12 >> 2] | 0; h = l; while (1) { m = i + (h << 2) | 0; n = c[m >> 2] | 0; g = (n >>> 14) + -131071 | 0; g = (g | 0) == -1 ? -1 : h + 1 + g | 0; if ((g | 0) == -1) break; else h = g } g = j + ~h | 0; if ((((g | 0) > -1 ? g : 0 - g | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[m >> 2] = (g << 14) + 2147467264 | n & 16383; k = l; o = 29; break a } } else o = 12; break } case 6: { o = 19; break } default: o = 12 }if ((o | 0) == 12) { f = b + 48 | 0; g = (d[f >> 0] | 0) + 1 | 0; h = (c[b >> 2] | 0) + 78 | 0; do if (g >>> 0 > (d[h >> 0] | 0) >>> 0) if (g >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); else { i = g & 255; a[h >> 0] = i; break } else i = g & 255; while (0); a[f >> 0] = i; dd(b, e, (i & 255) + -1 | 0); if ((c[e >> 2] | 0) == 6) o = 19; else f = c[j >> 2] | 0 } if ((o | 0) == 19) { f = c[j >> 2] | 0; if ((f & 256 | 0) == 0 ? (d[b + 46 >> 0] | 0 | 0) <= (f | 0) : 0) { n = b + 48 | 0; a[n >> 0] = (a[n >> 0] | 0) + -1 << 24 >> 24 } } Kc(b, f << 23 | 32732) | 0; j = b + 28 | 0; i = c[j >> 2] | 0; c[j >> 2] = -1; j = Kc(b, 2147450903) | 0; if ((i | 0) != -1) if ((j | 0) != -1) { h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; f = j; while (1) { l = h + (f << 2) | 0; m = c[l >> 2] | 0; g = (m >>> 14) + -131071 | 0; g = (g | 0) == -1 ? -1 : f + 1 + g | 0; if ((g | 0) == -1) break; else f = g } f = i + ~f | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[l >> 2] = (f << 14) + 2147467264 | m & 16383; k = j; o = 29; break a } } else { k = i; o = 30 } else { k = j; o = 29 } } } while (0); if ((o | 0) == 29 ? (k | 0) != -1 : 0) o = 30; do if ((o | 0) == 30) { f = e + 16 | 0; g = c[f >> 2] | 0; if ((g | 0) == -1) { c[f >> 2] = k; break } h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { i = h + (g << 2) | 0; j = c[i >> 2] | 0; f = (j >>> 14) + -131071 | 0; f = (f | 0) == -1 ? -1 : g + 1 + f | 0; if ((f | 0) == -1) break; else g = f } f = k + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[i >> 2] = (f << 14) + 2147467264 | j & 16383; break } } while (0); l = e + 20 | 0; k = c[l >> 2] | 0; c[b + 24 >> 2] = c[b + 20 >> 2]; f = b + 28 | 0; if ((k | 0) == -1) { c[l >> 2] = -1; return } g = c[f >> 2] | 0; if ((g | 0) == -1) { c[f >> 2] = k; c[l >> 2] = -1; return } h = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { i = h + (g << 2) | 0; j = c[i >> 2] | 0; f = (j >>> 14) + -131071 | 0; f = (f | 0) == -1 ? -1 : g + 1 + f | 0; if ((f | 0) == -1) break; else g = f } f = k + ~g | 0; if ((((f | 0) > -1 ? f : 0 - f | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); c[i >> 2] = (f << 14) + 2147467264 | j & 16383; c[l >> 2] = -1; return } function md(d, e, f) { d = d | 0; e = e | 0; f = f | 0; var g = 0; g = e + 8 | 0; a[g + 2 >> 0] = c[g >> 2]; b[g >> 1] = hd(d, f) | 0; a[g + 3 >> 0] = (c[e >> 2] | 0) == 8 ? 8 : 7; c[e >> 2] = 9; return } function nd(b, e, f, g) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0; s = i; i = i + 32 | 0; l = s; c[l + 20 >> 2] = -1; c[l + 16 >> 2] = -1; c[l >> 2] = 5; h[l + 8 >> 3] = 0.0; switch (e | 0) { case 0: { if (((c[f >> 2] | 0) == 5 ? (c[f + 16 >> 2] | 0) == -1 : 0) ? (c[f + 20 >> 2] | 0) == -1 : 0) { r = f + 8 | 0; h[r >> 3] = -+h[r >> 3]; i = s; return } ed(b, f) | 0; od(b, 19, f, l, g); i = s; return } case 1: { ad(b, f); switch (c[f >> 2] | 0) { case 3: case 1: { c[f >> 2] = 2; break } case 2: case 5: case 4: { c[f >> 2] = 3; break } case 10: { m = c[f + 8 >> 2] | 0; e = (c[(c[b >> 2] | 0) + 12 >> 2] | 0) + (m << 2) | 0; if (!((m | 0) > 0 ? (k = e + -4 | 0, j = c[k >> 2] | 0, (a[4156 + (j & 63) >> 0] | 0) < 0) : 0)) { k = e; j = c[e >> 2] | 0 } c[k >> 2] = ((j & 16320 | 0) == 0 & 1) << 6 | j & -16321; break } case 6: { n = 21; break } case 11: { j = b + 48 | 0; k = (d[j >> 0] | 0) + 1 | 0; e = (c[b >> 2] | 0) + 78 | 0; do if (k >>> 0 > (d[e >> 0] | 0) >>> 0) if (k >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); else { m = k & 255; a[e >> 0] = m; break } else m = k & 255; while (0); a[j >> 0] = m; dd(b, f, (m & 255) + -1 | 0); if ((c[f >> 2] | 0) == 6) n = 21; else { k = f + 8 | 0; j = k; k = c[k >> 2] | 0; n = 24 } break } default: { } }if ((n | 0) == 21) { j = f + 8 | 0; k = c[j >> 2] | 0; if ((k & 256 | 0) == 0 ? (d[b + 46 >> 0] | 0) <= (k | 0) : 0) { n = b + 48 | 0; a[n >> 0] = (a[n >> 0] | 0) + -1 << 24 >> 24; n = 24 } else n = 24 } if ((n | 0) == 24) { c[j >> 2] = Kc(b, k << 23 | 20) | 0; c[f >> 2] = 11 } n = f + 20 | 0; j = c[n >> 2] | 0; m = f + 16 | 0; k = c[m >> 2] | 0; c[n >> 2] = k; c[m >> 2] = j; if ((k | 0) != -1) { l = c[(c[b >> 2] | 0) + 12 >> 2] | 0; do { e = l + (k << 2) | 0; if ((k | 0) > 0 ? (o = e + -4 | 0, p = c[o >> 2] | 0, (a[4156 + (p & 63) >> 0] | 0) < 0) : 0) { j = o; g = p } else { j = e; g = c[e >> 2] | 0 } if ((g & 63 | 0) == 28) c[j >> 2] = g & 8372224 | g >>> 23 << 6 | 27; f = ((c[e >> 2] | 0) >>> 14) + -131071 | 0; k = (f | 0) == -1 ? -1 : k + 1 + f | 0 } while ((k | 0) != -1); j = c[m >> 2] | 0 } if ((j | 0) == -1) { i = s; return } l = c[(c[b >> 2] | 0) + 12 >> 2] | 0; do { g = l + (j << 2) | 0; if ((j | 0) > 0 ? (r = g + -4 | 0, q = c[r >> 2] | 0, (a[4156 + (q & 63) >> 0] | 0) < 0) : 0) { k = r; e = q } else { k = g; e = c[g >> 2] | 0 } if ((e & 63 | 0) == 28) c[k >> 2] = e & 8372224 | e >>> 23 << 6 | 27; b = ((c[g >> 2] | 0) >>> 14) + -131071 | 0; j = (b | 0) == -1 ? -1 : j + 1 + b | 0 } while ((j | 0) != -1); i = s; return } case 2: { ed(b, f) | 0; od(b, 21, f, l, g); i = s; return } default: { i = s; return } } } function od(b, e, f, g, i) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; i = i | 0; var j = 0.0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; if (((((((c[f >> 2] | 0) == 5 ? (c[f + 16 >> 2] | 0) == -1 : 0) ? (c[f + 20 >> 2] | 0) == -1 : 0) ? (c[g >> 2] | 0) == 5 : 0) ? (c[g + 16 >> 2] | 0) == -1 : 0) ? (c[g + 20 >> 2] | 0) == -1 : 0) ? (j = +h[g + 8 >> 3], k = f + 8 | 0, !((e | 1 | 0) == 17 & j == 0.0)) : 0) { h[k >> 3] = +Ye(e + -13 | 0, +h[k >> 3], j); return } switch (e | 0) { case 19: case 21: { l = 0; break } default: l = hd(b, g) | 0 }k = hd(b, f) | 0; if ((k | 0) > (l | 0)) { if (((c[f >> 2] | 0) == 6 ? (m = c[f + 8 >> 2] | 0, (m & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (m | 0) : 0) { p = b + 48 | 0; a[p >> 0] = (a[p >> 0] | 0) + -1 << 24 >> 24 } if (((c[g >> 2] | 0) == 6 ? (n = c[g + 8 >> 2] | 0, (n & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (n | 0) : 0) { p = b + 48 | 0; a[p >> 0] = (a[p >> 0] | 0) + -1 << 24 >> 24 } } else { if (((c[g >> 2] | 0) == 6 ? (o = c[g + 8 >> 2] | 0, (o & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (o | 0) : 0) { o = b + 48 | 0; a[o >> 0] = (a[o >> 0] | 0) + -1 << 24 >> 24 } if (((c[f >> 2] | 0) == 6 ? (p = c[f + 8 >> 2] | 0, (p & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (p | 0) : 0) { p = b + 48 | 0; a[p >> 0] = (a[p >> 0] | 0) + -1 << 24 >> 24 } } c[f + 8 >> 2] = Kc(b, l << 14 | e | k << 23) | 0; c[f >> 2] = 11; c[(c[(c[b >> 2] | 0) + 20 >> 2] | 0) + ((c[b + 20 >> 2] | 0) + -1 << 2) >> 2] = i; return } function pd(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0; switch (e | 0) { case 13: { kd(b, f); return } case 14: { ld(b, f); return } case 6: { ad(b, f); if (((c[f >> 2] | 0) == 6 ? (g = c[f + 8 >> 2] | 0, (g & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (g | 0) : 0) { h = b + 48 | 0; a[h >> 0] = (a[h >> 0] | 0) + -1 << 24 >> 24 } e = b + 48 | 0; g = (d[e >> 0] | 0) + 1 | 0; h = (c[b >> 2] | 0) + 78 | 0; do if (g >>> 0 > (d[h >> 0] | 0) >>> 0) if (g >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); else { i = g & 255; a[h >> 0] = i; break } else i = g & 255; while (0); a[e >> 0] = i; cd(b, f, (i & 255) + -1 | 0); return } case 5: case 4: case 3: case 2: case 1: case 0: { if (((c[f >> 2] | 0) == 5 ? (c[f + 16 >> 2] | 0) == -1 : 0) ? (c[f + 20 >> 2] | 0) == -1 : 0) return; hd(b, f) | 0; return } default: { hd(b, f) | 0; return } } } function qd(b, e, f, g, h) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; h = h | 0; var i = 0, j = 0, k = 0, l = 0, m = 0; switch (e | 0) { case 13: { ad(b, g); e = g + 20 | 0; m = c[f + 20 >> 2] | 0; do if ((m | 0) != -1) { i = c[e >> 2] | 0; if ((i | 0) == -1) { c[e >> 2] = m; break } j = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { k = j + (i << 2) | 0; l = c[k >> 2] | 0; e = (l >>> 14) + -131071 | 0; e = (e | 0) == -1 ? -1 : i + 1 + e | 0; if ((e | 0) == -1) break; else i = e } e = m + ~i | 0; if ((((e | 0) > -1 ? e : 0 - e | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[k >> 2] = (e << 14) + 2147467264 | l & 16383; break } } while (0); c[f >> 2] = c[g >> 2]; c[f + 4 >> 2] = c[g + 4 >> 2]; c[f + 8 >> 2] = c[g + 8 >> 2]; c[f + 12 >> 2] = c[g + 12 >> 2]; c[f + 16 >> 2] = c[g + 16 >> 2]; c[f + 20 >> 2] = c[g + 20 >> 2]; return } case 14: { ad(b, g); e = g + 16 | 0; m = c[f + 16 >> 2] | 0; do if ((m | 0) != -1) { i = c[e >> 2] | 0; if ((i | 0) == -1) { c[e >> 2] = m; break } j = c[(c[b >> 2] | 0) + 12 >> 2] | 0; while (1) { k = j + (i << 2) | 0; l = c[k >> 2] | 0; e = (l >>> 14) + -131071 | 0; e = (e | 0) == -1 ? -1 : i + 1 + e | 0; if ((e | 0) == -1) break; else i = e } e = m + ~i | 0; if ((((e | 0) > -1 ? e : 0 - e | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); else { c[k >> 2] = (e << 14) + 2147467264 | l & 16383; break } } while (0); c[f >> 2] = c[g >> 2]; c[f + 4 >> 2] = c[g + 4 >> 2]; c[f + 8 >> 2] = c[g + 8 >> 2]; c[f + 12 >> 2] = c[g + 12 >> 2]; c[f + 16 >> 2] = c[g + 16 >> 2]; c[f + 20 >> 2] = c[g + 20 >> 2]; return } case 6: { if ((c[g + 16 >> 2] | 0) == (c[g + 20 >> 2] | 0)) ad(b, g); else ed(b, g) | 0; if ((c[g >> 2] | 0) == 11 ? (j = g + 8 | 0, k = (c[(c[b >> 2] | 0) + 12 >> 2] | 0) + (c[j >> 2] << 2) | 0, l = c[k >> 2] | 0, (l & 63 | 0) == 22) : 0) { e = f + 8 | 0; i = c[e >> 2] | 0; if ((c[f >> 2] | 0) == 6 & (i & 256 | 0) == 0 ? (d[b + 46 >> 0] | 0 | 0) <= (i | 0) : 0) { b = b + 48 | 0; a[b >> 0] = (a[b >> 0] | 0) + -1 << 24 >> 24 } c[k >> 2] = i << 23 | l & 8388607; c[f >> 2] = 11; c[e >> 2] = c[j >> 2]; return } ad(b, g); if (((c[g >> 2] | 0) == 6 ? (i = c[g + 8 >> 2] | 0, (i & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (i | 0) : 0) { l = b + 48 | 0; a[l >> 0] = (a[l >> 0] | 0) + -1 << 24 >> 24 } j = b + 48 | 0; e = (d[j >> 0] | 0) + 1 | 0; i = (c[b >> 2] | 0) + 78 | 0; do if (e >>> 0 > (d[i >> 0] | 0) >>> 0) if (e >>> 0 > 249) He(c[b + 12 >> 2] | 0, 2515); else { m = e & 255; a[i >> 0] = m; break } else m = e & 255; while (0); a[j >> 0] = m; cd(b, g, (m & 255) + -1 | 0); od(b, 22, f, g, h); return } case 5: case 4: case 3: case 2: case 1: case 0: { od(b, e + 13 | 0, f, g, h); return } case 9: case 8: case 7: { rd(b, e + 17 | 0, 1, f, g); return } case 12: case 11: case 10: { rd(b, e + 14 | 0, 0, f, g); return } default: return } } function rd(b, e, f, g, h) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; h = h | 0; var i = 0, j = 0, k = 0, l = 0; k = hd(b, g) | 0; l = hd(b, h) | 0; if (((c[h >> 2] | 0) == 6 ? (i = c[h + 8 >> 2] | 0, (i & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (i | 0) : 0) { h = b + 48 | 0; a[h >> 0] = (a[h >> 0] | 0) + -1 << 24 >> 24 } if (((c[g >> 2] | 0) == 6 ? (j = c[g + 8 >> 2] | 0, (j & 256 | 0) == 0) : 0) ? (d[b + 46 >> 0] | 0 | 0) <= (j | 0) : 0) { h = b + 48 | 0; a[h >> 0] = (a[h >> 0] | 0) + -1 << 24 >> 24 } h = (e | 0) != 24 & (f | 0) == 0; Kc(b, (h ? 64 : f << 6) | e | (h ? l : k) << 23 | (h ? k : l) << 14) | 0; h = b + 28 | 0; j = c[h >> 2] | 0; c[h >> 2] = -1; h = Kc(b, 2147450903) | 0; if ((j | 0) == -1) { l = h; b = g + 8 | 0; c[b >> 2] = l; c[g >> 2] = 10; return } if ((h | 0) == -1) { l = j; b = g + 8 | 0; c[b >> 2] = l; c[g >> 2] = 10; return } f = c[(c[b >> 2] | 0) + 12 >> 2] | 0; e = h; while (1) { k = f + (e << 2) | 0; l = c[k >> 2] | 0; i = (l >>> 14) + -131071 | 0; i = (i | 0) == -1 ? -1 : e + 1 + i | 0; if ((i | 0) == -1) break; else e = i } e = j + ~e | 0; if ((((e | 0) > -1 ? e : 0 - e | 0) | 0) > 131071) He(c[b + 12 >> 2] | 0, 2480); c[k >> 2] = (e << 14) + 2147467264 | l & 16383; l = h; b = g + 8 | 0; c[b >> 2] = l; c[g >> 2] = 10; return } function sd(a, b) { a = a | 0; b = b | 0; c[(c[(c[a >> 2] | 0) + 20 >> 2] | 0) + ((c[a + 20 >> 2] | 0) + -1 << 2) >> 2] = b; return } function td(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0; g = ((e + -1 | 0) / 50 | 0) + 1 | 0; e = (f | 0) == -1 ? 0 : f; if ((g | 0) < 512) { Kc(b, d << 6 | e << 23 | g << 14 | 36) | 0; g = d + 1 | 0; g = g & 255; d = b + 48 | 0; a[d >> 0] = g; return } if ((g | 0) >= 67108864) He(c[b + 12 >> 2] | 0, 2560); Kc(b, d << 6 | e << 23 | 36) | 0; Kc(b, g << 6 | 39) | 0; g = d + 1 | 0; g = g & 255; d = b + 48 | 0; a[d >> 0] = g; return } function ud(a) { a = a | 0; return c[a + 52 >> 2] | 0 } function vd(a) { a = a | 0; return c[a + 44 >> 2] | 0 } function wd(a) { a = a | 0; return d[a + 40 >> 0] | 0 | 0 } function xd(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0; O = i; i = i + 16 | 0; N = O; M = b + 6 | 0; if ((a[M >> 0] | 0) == 1) { G = c[b + 16 >> 2] | 0; H = c[G >> 2] | 0; J = c[b + 28 >> 2] | 0; K = G + 20 | 0; c[G >> 2] = J + (c[K >> 2] | 0); c[K >> 2] = H - J } if ((a[e >> 0] | 0) == 62) { o = b + 8 | 0; H = (c[o >> 2] | 0) + -16 | 0; c[o >> 2] = H; e = e + 1 | 0; o = 0 } else { H = c[f + 96 >> 2] | 0; o = H; H = c[H >> 2] | 0 } J = H + 8 | 0; if ((c[J >> 2] & 31 | 0) == 6) K = c[H >> 2] | 0; else K = 0; g = a[e >> 0] | 0; a: do if (!(g << 24 >> 24)) j = 1; else { p = (K | 0) == 0; q = f + 16 | 0; r = f + 24 | 0; s = f + 28 | 0; t = f + 12 | 0; u = f + 36 | 0; v = K + 4 | 0; w = K + 12 | 0; x = (o | 0) == 0; y = f + 20 | 0; z = o + 18 | 0; A = o + 28 | 0; B = f + 32 | 0; C = f + 34 | 0; D = f + 33 | 0; E = K + 6 | 0; F = f + 35 | 0; G = f + 8 | 0; l = f + 4 | 0; m = o + 8 | 0; n = b + 12 | 0; k = e; j = 1; while (1) { b: do switch (g << 24 >> 24 | 0) { case 83: { if (!p ? (a[v >> 0] | 0) != 38 : 0) { h = c[w >> 2] | 0; f = c[h + 36 >> 2] | 0; f = (f | 0) == 0 ? 2866 : f + 16 | 0; c[q >> 2] = f; g = c[h + 64 >> 2] | 0; c[r >> 2] = g; c[s >> 2] = c[h + 68 >> 2]; g = (g | 0) == 0 ? 2869 : 2874 } else { c[q >> 2] = 2861; c[r >> 2] = -1; c[s >> 2] = -1; f = 2861; g = 2878 } c[t >> 2] = g; bf(u, f, 60); break } case 108: { if (!x ? (a[z >> 0] & 1) != 0 : 0) { f = c[(c[c[o >> 2] >> 2] | 0) + 12 >> 2] | 0; g = c[f + 20 >> 2] | 0; if (!g) f = 0; else f = c[g + (((c[A >> 2] | 0) - (c[f + 12 >> 2] | 0) >> 2) + -1 << 2) >> 2] | 0 } else f = -1; c[y >> 2] = f; break } case 117: { if (!p) { a[B >> 0] = a[E >> 0] | 0; if ((a[v >> 0] | 0) != 38) { h = c[w >> 2] | 0; a[C >> 0] = a[h + 77 >> 0] | 0; a[D >> 0] = a[h + 76 >> 0] | 0; break b } } else a[B >> 0] = 0; a[C >> 0] = 1; a[D >> 0] = 0; break } case 116: { if (x) f = 0; else f = d[z >> 0] & 64; a[F >> 0] = f; break } case 110: { c: do if ((!x ? (a[z >> 0] & 64) == 0 : 0) ? (I = c[m >> 2] | 0, (a[I + 18 >> 0] & 1) != 0) : 0) { f = c[(c[c[I >> 2] >> 2] | 0) + 12 >> 2] | 0; h = c[f + 12 >> 2] | 0; g = ((c[I + 28 >> 2] | 0) - h >> 2) + -1 | 0; h = c[h + (g << 2) >> 2] | 0; do switch (h & 63) { case 30: case 29: { h = Cd(f, g, h >>> 6 & 255, l) | 0; c[G >> 2] = h; if (!h) break c; else break b } case 34: { c[l >> 2] = 2880; f = 2880; break } case 7: case 6: case 12: { f = 0; L = 47; break } case 10: case 8: { f = 1; L = 47; break } case 24: { f = 5; L = 47; break } case 13: { f = 6; L = 47; break } case 14: { f = 7; L = 47; break } case 15: { f = 8; L = 47; break } case 16: { f = 9; L = 47; break } case 17: { f = 10; L = 47; break } case 18: { f = 11; L = 47; break } case 19: { f = 12; L = 47; break } case 21: { f = 4; L = 47; break } case 25: { f = 13; L = 47; break } case 26: { f = 14; L = 47; break } case 22: { f = 15; L = 47; break } default: { L = 48; break c } } while (0); if ((L | 0) == 47) { L = 0; c[l >> 2] = (c[(c[n >> 2] | 0) + 184 + (f << 2) >> 2] | 0) + 16; f = 2893 } c[G >> 2] = f; break b } else L = 48; while (0); if ((L | 0) == 48) { L = 0; c[G >> 2] = 0 } c[G >> 2] = 15616; c[l >> 2] = 0; break } case 102: case 76: break; default: j = 0 } while (0); k = k + 1 | 0; g = a[k >> 0] | 0; if (!(g << 24 >> 24)) break a } } while (0); if (pm(e, 102) | 0) { L = b + 8 | 0; I = c[L >> 2] | 0; F = H; G = c[F + 4 >> 2] | 0; H = I; c[H >> 2] = c[F >> 2]; c[H + 4 >> 2] = G; c[I + 8 >> 2] = c[J >> 2]; c[L >> 2] = (c[L >> 2] | 0) + 16 } if ((a[M >> 0] | 0) == 1) { I = c[b + 16 >> 2] | 0; J = c[I >> 2] | 0; L = c[b + 28 >> 2] | 0; M = I + 20 | 0; c[I >> 2] = L + (c[M >> 2] | 0); c[M >> 2] = J - L } if (!(pm(e, 76) | 0)) { i = O; return j | 0 } if (K | 0 ? (a[K + 4 >> 0] | 0) != 38 : 0) { f = K + 12 | 0; g = c[(c[f >> 2] | 0) + 20 >> 2] | 0; h = Xf(b) | 0; M = b + 8 | 0; L = c[M >> 2] | 0; c[L >> 2] = h; c[L + 8 >> 2] = 69; c[M >> 2] = (c[M >> 2] | 0) + 16; c[N >> 2] = 1; c[N + 8 >> 2] = 1; if ((c[(c[f >> 2] | 0) + 52 >> 2] | 0) > 0) { e = 0; do { Uf(b, h, c[g + (e << 2) >> 2] | 0, N); e = e + 1 | 0 } while ((e | 0) < (c[(c[f >> 2] | 0) + 52 >> 2] | 0)) } i = O; return j | 0 } N = b + 8 | 0; b = c[N >> 2] | 0; c[b + 8 >> 2] = 0; c[N >> 2] = b + 16; i = O; return j | 0 } function yd(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0; j = b + 6 | 0; if ((a[j >> 0] | 0) == 1) { l = c[b + 16 >> 2] | 0; k = c[l >> 2] | 0; g = c[b + 28 >> 2] | 0; h = l + 20 | 0; c[l >> 2] = g + (c[h >> 2] | 0); c[h >> 2] = k - g } a: do if (!e) { e = c[b + 8 >> 2] | 0; if ((c[e + -8 >> 2] | 0) == 70) e = ie(c[(c[e + -16 >> 2] | 0) + 12 >> 2] | 0, f, 0) | 0; else e = 0 } else { h = c[e + 96 >> 2] | 0; do if (a[h + 18 >> 0] & 1) if ((f | 0) < 0) { g = 0 - f | 0; e = c[h >> 2] | 0; f = d[(c[(c[e >> 2] | 0) + 12 >> 2] | 0) + 76 >> 0] | 0; if ((((c[h + 24 >> 2] | 0) - e >> 4) - f | 0) > (g | 0)) { g = e + (f << 4) + (g << 4) | 0; e = 2851; break } else { e = 0; break a } } else { g = c[h + 24 >> 2] | 0; e = c[(c[c[h >> 2] >> 2] | 0) + 12 >> 2] | 0; e = ie(e, f, ((c[h + 28 >> 2] | 0) - (c[e + 12 >> 2] | 0) >> 2) + -1 | 0) | 0; if (!e) { i = 11; break } else { i = 15; break } } else { g = (c[h >> 2] | 0) + 16 | 0; i = 11 } while (0); if ((i | 0) == 11) { if ((c[b + 16 >> 2] | 0) == (h | 0)) e = b + 8 | 0; else e = c[h + 12 >> 2] | 0; if ((f | 0) > 0 ? ((c[e >> 2] | 0) - g >> 4 | 0) >= (f | 0) : 0) { e = 2838; i = 15 } else { e = 0; break } } if ((i | 0) == 15) g = g + (f + -1 << 4) | 0; l = b + 8 | 0; k = c[l >> 2] | 0; f = g; h = c[f + 4 >> 2] | 0; i = k; c[i >> 2] = c[f >> 2]; c[i + 4 >> 2] = h; c[k + 8 >> 2] = c[g + 8 >> 2]; c[l >> 2] = (c[l >> 2] | 0) + 16 } while (0); if ((a[j >> 0] | 0) != 1) return e | 0; i = c[b + 16 >> 2] | 0; j = c[i >> 2] | 0; k = c[b + 28 >> 2] | 0; l = i + 20 | 0; c[i >> 2] = k + (c[l >> 2] | 0); c[l >> 2] = j - k; return e | 0 } function zd(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; if ((b | 0) < 0) { d = 0; return d | 0 } e = c[a + 16 >> 2] | 0; f = a + 72 | 0; if ((b | 0) != 0 & (e | 0) != (f | 0)) { a = e; while (1) { e = b + -1 | 0; a = c[a + 8 >> 2] | 0; if ((b | 0) > 1 & (a | 0) != (f | 0)) b = e; else { b = e; break } } } else a = e; if ((b | 0) != 0 | (a | 0) == (f | 0)) { d = 0; return d | 0 } c[d + 96 >> 2] = a; d = 1; return d | 0 } function Ad(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0; h = (d | 0) == 0 | (e | 0) == 0; g = c[b + 16 >> 2] | 0; if (a[g + 18 >> 0] & 1) c[b + 20 >> 2] = c[g + 28 >> 2]; c[b + 52 >> 2] = h ? 0 : d; c[b + 44 >> 2] = f; c[b + 48 >> 2] = f; a[b + 40 >> 0] = h ? 0 : e & 255; return 1 } function Bd(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0; j = b + 6 | 0; if ((a[j >> 0] | 0) == 1) { l = c[b + 16 >> 2] | 0; k = c[l >> 2] | 0; g = c[b + 28 >> 2] | 0; h = l + 20 | 0; c[l >> 2] = g + (c[h >> 2] | 0); c[h >> 2] = k - g } h = c[e + 96 >> 2] | 0; do if (a[h + 18 >> 0] & 1) if ((f | 0) < 0) { g = 0 - f | 0; e = c[h >> 2] | 0; f = d[(c[(c[e >> 2] | 0) + 12 >> 2] | 0) + 76 >> 0] | 0; if ((((c[h + 24 >> 2] | 0) - e >> 4) - f | 0) > (g | 0)) { g = e + (f << 4) + (g << 4) | 0; e = 2851; i = 13; break } else { e = 0; break } } else { g = c[h + 24 >> 2] | 0; e = c[(c[c[h >> 2] >> 2] | 0) + 12 >> 2] | 0; e = ie(e, f, ((c[h + 28 >> 2] | 0) - (c[e + 12 >> 2] | 0) >> 2) + -1 | 0) | 0; if (!e) { i = 8; break } else { i = 12; break } } else { g = (c[h >> 2] | 0) + 16 | 0; i = 8 } while (0); if ((i | 0) == 8) { if ((c[b + 16 >> 2] | 0) == (h | 0)) e = b + 8 | 0; else e = c[h + 12 >> 2] | 0; if ((f | 0) > 0 ? ((c[e >> 2] | 0) - g >> 4 | 0) >= (f | 0) : 0) { e = 2838; i = 12 } else e = 0 } if ((i | 0) == 12) { g = g + (f + -1 << 4) | 0; i = 13 } if ((i | 0) == 13) { l = c[b + 8 >> 2] | 0; h = l + -16 | 0; i = c[h + 4 >> 2] | 0; k = g; c[k >> 2] = c[h >> 2]; c[k + 4 >> 2] = i; c[g + 8 >> 2] = c[l + -8 >> 2] } l = b + 8 | 0; c[l >> 2] = (c[l >> 2] | 0) + -16; if ((a[j >> 0] | 0) != 1) return e | 0; i = c[b + 16 >> 2] | 0; j = c[i >> 2] | 0; k = c[b + 28 >> 2] | 0; l = i + 20 | 0; c[i >> 2] = k + (c[l >> 2] | 0); c[l >> 2] = j - k; return e | 0 } function Cd(b, d, e, f) { b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0; m = b + 12 | 0; a: while (1) { l = ie(b, e + 1 | 0, d) | 0; c[f >> 2] = l; if (l | 0) { d = 3383; h = 45; break } if ((d | 0) <= 0) { d = 0; h = 45; break } l = c[m >> 2] | 0; j = -1; g = 0; k = 0; do { h = c[l + (k << 2) >> 2] | 0; i = h >>> 6 & 255; switch (h & 63) { case 4: { if ((i | 0) <= (e | 0) ? (i + (h >>> 23) | 0) >= (e | 0) : 0) j = (k | 0) < (g | 0) ? -1 : k; break } case 34: { if ((i + 2 | 0) <= (e | 0)) j = (k | 0) < (g | 0) ? -1 : k; break } case 30: case 29: { if ((i | 0) <= (e | 0)) j = (k | 0) < (g | 0) ? -1 : k; break } case 23: { i = k + -131070 + (h >>> 14) | 0; g = (i | 0) > (g | 0) & ((i | 0) <= (d | 0) & (k | 0) < (i | 0)) ? i : g; break } case 27: { if ((i | 0) == (e | 0)) j = (k | 0) < (g | 0) ? -1 : k; break } default: if ((i | 0) == (e | 0) ? (a[4156 + (h & 63) >> 0] & 64) != 0 : 0) j = (k | 0) < (g | 0) ? -1 : k }k = k + 1 | 0 } while ((k | 0) != (d | 0)); if ((j | 0) == -1) { d = 0; h = 45; break } g = c[l + (j << 2) >> 2] | 0; switch (g & 63) { case 7: case 6: { h = 22; break a } case 5: { h = 33; break a } case 2: case 1: { h = 34; break a } case 12: { h = 39; break a } case 0: break; default: { d = 0; h = 45; break a } }e = g >>> 23; if (e >>> 0 >= (g >>> 6 & 255) >>> 0) { d = 0; h = 45; break } else d = j } if ((h | 0) == 22) { e = g >>> 14; d = g >>> 23; if ((g & 63 | 0) == 7) g = ie(b, d + 1 | 0, j) | 0; else { g = c[(c[b + 28 >> 2] | 0) + (d << 3) >> 2] | 0; g = (g | 0) == 0 ? 10032 : g + 16 | 0 } if (!(e & 256)) { b = Cd(b, j, e & 511, f) | 0; if (!((b | 0) != 0 ? (a[b >> 0] | 0) == 99 : 0)) h = 30 } else { e = e & 255; d = c[b + 8 >> 2] | 0; if ((c[d + (e << 4) + 8 >> 2] & 15 | 0) == 4) c[f >> 2] = (c[d + (e << 4) >> 2] | 0) + 16; else h = 30 } if ((h | 0) == 30) c[f >> 2] = 10032; if (!g) { f = 2911; return f | 0 } f = (Tl(g, 3534) | 0) == 0; f = f ? 2904 : 2911; return f | 0 } else if ((h | 0) == 33) { b = c[(c[b + 28 >> 2] | 0) + (g >>> 23 << 3) >> 2] | 0; c[f >> 2] = (b | 0) == 0 ? 10032 : b + 16 | 0; f = 2926; return f | 0 } else if ((h | 0) == 34) { if ((g & 63 | 0) == 1) e = g >>> 14; else e = (c[l + (j + 1 << 2) >> 2] | 0) >>> 6; d = c[b + 8 >> 2] | 0; if ((c[d + (e << 4) + 8 >> 2] & 15 | 0) != 4) { f = 0; return f | 0 } c[f >> 2] = (c[d + (e << 4) >> 2] | 0) + 16; f = 2917; return f | 0 } else if ((h | 0) == 39) { d = g >>> 14; if (!(d & 256)) { b = Cd(b, j, d & 511, f) | 0; if (b | 0 ? (a[b >> 0] | 0) == 99 : 0) { f = 5899; return f | 0 } } else { e = d & 255; d = c[b + 8 >> 2] | 0; if ((c[d + (e << 4) + 8 >> 2] & 15 | 0) == 4) { c[f >> 2] = (c[d + (e << 4) >> 2] | 0) + 16; f = 5899; return f | 0 } } c[f >> 2] = 10032; f = 5899; return f | 0 } else if ((h | 0) == 45) return d | 0; return 0 } function Dd(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; m = i; i = i + 32 | 0; o = m + 16 | 0; n = m; m = m + 24 | 0; k = c[b + 16 >> 2] | 0; c[m >> 2] = 0; l = c[148 + ((c[d + 8 >> 2] & 15) + 1 << 2) >> 2] | 0; a: do if (a[k + 18 >> 0] & 1) { j = c[c[k >> 2] >> 2] | 0; f = a[j + 6 >> 0] | 0; b: do if (f << 24 >> 24) { g = f & 255; f = 0; while (1) { if ((c[(c[j + 16 + (f << 2) >> 2] | 0) + 8 >> 2] | 0) == (d | 0)) break; f = f + 1 | 0; if ((f | 0) >= (g | 0)) break b } g = c[(c[(c[j + 12 >> 2] | 0) + 28 >> 2] | 0) + (f << 3) >> 2] | 0; g = (g | 0) == 0 ? 10032 : g + 16 | 0; c[m >> 2] = g; f = 2926; c[n >> 2] = e; h = n + 4 | 0; c[h >> 2] = f; h = n + 8 | 0; c[h >> 2] = g; h = n + 12 | 0; c[h >> 2] = l; Ed(b, 2934, n) } while (0); f = c[k + 24 >> 2] | 0; g = c[k + 4 >> 2] | 0; h = f; if (f >>> 0 < g >>> 0) { while (1) { if ((f | 0) == (d | 0)) break; f = f + 16 | 0; if (f >>> 0 >= g >>> 0) break a } f = c[j + 12 >> 2] | 0; f = Cd(f, ((c[k + 28 >> 2] | 0) - (c[f + 12 >> 2] | 0) >> 2) + -1 | 0, d - h >> 4, m) | 0; if (f | 0) { j = f; k = c[m >> 2] | 0; c[n >> 2] = e; m = n + 4 | 0; c[m >> 2] = j; m = n + 8 | 0; c[m >> 2] = k; m = n + 12 | 0; c[m >> 2] = l; Ed(b, 2934, n) } } } while (0); c[o >> 2] = e; c[o + 4 >> 2] = l; Ed(b, 2969, o) } function Ed(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0; g = i; i = i + 96 | 0; j = g; h = g + 32 | 0; g = g + 16 | 0; c[g >> 2] = e; g = $e(b, d, g) | 0; e = c[b + 16 >> 2] | 0; if (!(a[e + 18 >> 0] & 1)) Fd(b); f = c[(c[c[e >> 2] >> 2] | 0) + 12 >> 2] | 0; d = c[f + 20 >> 2] | 0; if (!d) e = 0; else e = c[d + (((c[e + 28 >> 2] | 0) - (c[f + 12 >> 2] | 0) >> 2) + -1 << 2) >> 2] | 0; d = c[f + 36 >> 2] | 0; if (!d) { a[h >> 0] = 63; a[h + 1 >> 0] = 0 } else bf(h, d + 16 | 0, 60); c[j >> 2] = h; c[j + 4 >> 2] = e; c[j + 8 >> 2] = g; af(b, 3488, j) | 0; Fd(b) } function Fd(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0; b = c[a + 68 >> 2] | 0; if (!b) Ld(a, 2); b = (c[a + 28 >> 2] | 0) + b | 0; d = b + 8 | 0; if ((c[d >> 2] & 15 | 0) != 6) Ld(a, 6); e = a + 8 | 0; f = c[e >> 2] | 0; i = f + -16 | 0; g = c[i + 4 >> 2] | 0; h = f; c[h >> 2] = c[i >> 2]; c[h + 4 >> 2] = g; c[f + 8 >> 2] = c[f + -8 >> 2]; f = c[e >> 2] | 0; h = b; g = c[h + 4 >> 2] | 0; b = f + -16 | 0; c[b >> 2] = c[h >> 2]; c[b + 4 >> 2] = g; c[f + -8 >> 2] = c[d >> 2]; d = c[e >> 2] | 0; c[e >> 2] = d + 16; Wd(a, d + -16 | 0, 1, 0); Ld(a, 2) } function Gd(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0; e = c[b + 8 >> 2] | 0; Dd(a, (e | 0) == 3 | (e & 15 | 0) == 4 ? d : b, 2994) } function Hd(a, b, c) { a = a | 0; b = b | 0; c = c | 0; var d = 0; d = i; i = i + 16 | 0; d = (hg(b, d) | 0) == 0; Dd(a, d ? b : c, 3006) } function Id(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0; f = i; i = i + 16 | 0; g = f + 8 | 0; e = c[148 + ((c[b + 8 >> 2] & 15) + 1 << 2) >> 2] | 0; b = c[148 + ((c[d + 8 >> 2] & 15) + 1 << 2) >> 2] | 0; if ((e | 0) == (b | 0)) { c[f >> 2] = e; Ed(a, 3028, f) } else { c[g >> 2] = e; c[g + 4 >> 2] = b; Ed(a, 3061, g) } } function Jd(f, g, h) { f = f | 0; g = g | 0; h = h | 0; var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0; u = f + 36 | 0; v = b[u >> 1] | 0; if (!g) g = 1; else g = (e[g + 38 >> 1] | 0) + 1 & 65535; s = f + 38 | 0; b[s >> 1] = g; b[u >> 1] = 0; r = f + 8 | 0; g = Nd(f, 20, (c[r >> 2] | 0) + (0 - h << 4) | 0) | 0; if ((g | 0) == -1) { t = 2; b[u >> 1] = v; v = b[s >> 1] | 0; v = v + -1 << 16 >> 16; b[s >> 1] = v; return t | 0 } if (g >>> 0 <= 1) { t = g; b[u >> 1] = v; v = b[s >> 1] | 0; v = v + -1 << 16 >> 16; b[s >> 1] = v; return t | 0 } p = f + 16 | 0; l = f + 28 | 0; m = f + 41 | 0; n = f + 68 | 0; o = f + 32 | 0; q = f + 12 | 0; a: while (1) { h = c[p >> 2] | 0; if (!h) break; while (1) { k = h + 18 | 0; if (a[k >> 0] & 16) break; h = c[h + 8 >> 2] | 0; if (!h) break a } i = (c[l >> 2] | 0) + (c[h + 20 >> 2] | 0) | 0; fe(f, i); switch (g | 0) { case 4: { j = c[(c[q >> 2] | 0) + 180 >> 2] | 0; c[i >> 2] = j; c[i + 8 >> 2] = d[j + 4 >> 0] | 0 | 64; break } case 6: { j = Mf(f, 3175, 23) | 0; c[i >> 2] = j; c[i + 8 >> 2] = d[j + 4 >> 0] | 0 | 64; break } default: { j = c[r >> 2] | 0; y = j + -16 | 0; x = c[y + 4 >> 2] | 0; w = i; c[w >> 2] = c[y >> 2]; c[w + 4 >> 2] = x; c[i + 8 >> 2] = c[j + -8 >> 2] } }j = i + 16 | 0; c[r >> 2] = j; c[p >> 2] = h; a[m >> 0] = a[h + 36 >> 0] | 0; b[u >> 1] = 0; i = h; do { y = c[i + 4 >> 2] | 0; j = j >>> 0 < y >>> 0 ? y : j; i = c[i + 8 >> 2] | 0 } while ((i | 0) != 0); y = j - (c[l >> 2] | 0) | 0; i = y >> 4; i = i + 11 + ((i + 1 | 0) / 8 | 0) | 0; i = (i | 0) > 1e6 ? 1e6 : i; if ((y | 0) <= 15999984 ? (i | 0) < (c[o >> 2] | 0) : 0) Od(f, i); c[n >> 2] = c[h + 32 >> 2]; a[k >> 0] = d[k >> 0] | 0 | 32; a[h + 37 >> 0] = g; g = Nd(f, 21, 0) | 0; if (g >>> 0 <= 1) { t = 24; break } } if ((t | 0) == 24) { b[u >> 1] = v; y = b[s >> 1] | 0; y = y + -1 << 16 >> 16; b[s >> 1] = y; return g | 0 } a[f + 6 >> 0] = g; h = c[r >> 2] | 0; switch (g | 0) { case 4: { y = c[(c[q >> 2] | 0) + 180 >> 2] | 0; c[h >> 2] = y; c[h + 8 >> 2] = d[y + 4 >> 0] | 0 | 64; break } case 6: { y = Mf(f, 3175, 23) | 0; c[h >> 2] = y; c[h + 8 >> 2] = d[y + 4 >> 0] | 0 | 64; break } default: { w = h + -16 | 0; x = c[w + 4 >> 2] | 0; y = h; c[y >> 2] = c[w >> 2]; c[y + 4 >> 2] = x; c[h + 8 >> 2] = c[h + -8 >> 2] } }y = h + 16 | 0; c[r >> 2] = y; c[(c[p >> 2] | 0) + 4 >> 2] = y; y = g; b[u >> 1] = v; x = b[s >> 1] | 0; x = x + -1 << 16 >> 16; b[s >> 1] = x; return y | 0 } function Kd(d, e, f, g) { d = d | 0; e = e | 0; f = f | 0; g = g | 0; var h = 0, j = 0, k = 0, l = 0; l = i; i = i + 16 | 0; k = l + 8 | 0; j = l; h = c[d + 16 >> 2] | 0; if (b[d + 36 >> 1] | 0) if ((c[(c[d + 12 >> 2] | 0) + 172 >> 2] | 0) == (d | 0)) Ed(d, 3133, k); else Ed(d, 3091, j); a[d + 6 >> 0] = 1; c[h + 20 >> 2] = (c[h >> 2] | 0) - (c[d + 28 >> 2] | 0); if (a[h + 18 >> 0] & 1) { i = l; return 0 } c[h + 28 >> 2] = g; if (!g) { k = d + 8 | 0; k = c[k >> 2] | 0; l = 0 - e | 0; l = k + (l << 4) | 0; l = l + -16 | 0; c[h >> 2] = l; Ld(d, 1) } c[h + 24 >> 2] = f; k = d + 8 | 0; k = c[k >> 2] | 0; l = 0 - e | 0; l = k + (l << 4) | 0; l = l + -16 | 0; c[h >> 2] = l; Ld(d, 1); return 0 } function Ld(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0; e = c[b + 64 >> 2] | 0; if (e | 0) { c[e + 160 >> 2] = d; sa(e + 4 | 0, 1) } a[b + 6 >> 0] = d; g = b + 12 | 0; e = c[g >> 2] | 0; f = c[e + 172 >> 2] | 0; if (c[f + 64 >> 2] | 0) { h = c[b + 8 >> 2] | 0; k = f + 8 | 0; f = c[k >> 2] | 0; c[k >> 2] = f + 16; k = h + -16 | 0; j = c[k + 4 >> 2] | 0; i = f; c[i >> 2] = c[k >> 2]; c[i + 4 >> 2] = j; c[f + 8 >> 2] = c[h + -8 >> 2]; Ld(c[(c[g >> 2] | 0) + 172 >> 2] | 0, d) } e = c[e + 168 >> 2] | 0; if (!e) ma(); $a[e & 255](b) | 0; ma() } function Md(f, g) { f = f | 0; g = g | 0; var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0; m = f + 16 | 0; k = c[m >> 2] | 0; if ((e[f + 38 >> 1] | 0) > 199) Rd(f, 3199, g); h = f + 6 | 0; switch (a[h >> 0] | 0) { case 0: { if ((k | 0) != (f + 72 | 0)) Rd(f, 3216, g); if (Sd(f, g + -16 | 0, -1) | 0) return; sg(f); return } case 1: { a[h >> 0] = 0; l = f + 28 | 0; c[k >> 2] = (c[l >> 2] | 0) + (c[k + 20 >> 2] | 0); h = k + 18 | 0; i = a[h >> 0] | 0; if (!(i & 1)) { j = c[k + 28 >> 2] | 0; if (!j) j = k; else { a[k + 37 >> 0] = 1; a[h >> 0] = i & 255 | 8; g = $a[j & 255](f) | 0; g = (c[f + 8 >> 2] | 0) + (0 - g << 4) | 0; j = c[m >> 2] | 0 } h = d[f + 40 >> 0] | 0; if (!(h & 6)) { i = g; h = c[j + 8 >> 2] | 0 } else { if (h & 2) { g = g - (c[l >> 2] | 0) | 0; Qd(f, 1, -1); g = (c[l >> 2] | 0) + g | 0 } h = c[j + 8 >> 2] | 0; c[f + 20 >> 2] = c[h + 28 >> 2]; i = g } g = c[j >> 2] | 0; j = b[j + 16 >> 1] | 0; c[m >> 2] = h; k = f + 8 | 0; a: do if (j << 16 >> 16) { h = j << 16 >> 16; while (1) { if (i >>> 0 >= (c[k >> 2] | 0) >>> 0) break; j = g + 16 | 0; n = i; l = c[n + 4 >> 2] | 0; m = g; c[m >> 2] = c[n >> 2]; c[m + 4 >> 2] = l; c[g + 8 >> 2] = c[i + 8 >> 2]; h = h + -1 | 0; if (!h) { g = j; break a } else { g = j; i = i + 16 | 0 } } if ((h | 0) > 0) while (1) { i = g + 16 | 0; c[g + 8 >> 2] = 0; if ((h | 0) > 1) { g = i; h = h + -1 | 0 } else { g = i; break } } } while (0); c[k >> 2] = g } else sg(f); Pd(f, 0); return } default: Rd(f, 6743, g) } } function Nd(a, d, e) { a = a | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, p = 0, q = 0, r = 0, s = 0; s = i; i = i + 176 | 0; p = 4; q = $m(40) | 0; c[q >> 2] = 0; h = s; j = a + 38 | 0; k = b[j >> 1] | 0; l = h + 160 | 0; c[l >> 2] = 0; m = a + 64 | 0; c[h >> 2] = c[m >> 2]; c[m >> 2] = h; p = kn(h + 4 | 0, 1, q | 0, p | 0) | 0; q = C; n = 0; f = n; n = 0; if ((f | 0) != 0 & (o | 0) != 0) { g = mn(c[f >> 2] | 0, p | 0, q | 0) | 0; if (!g) sa(f | 0, o | 0); C = o } else g = -1; if ((g | 0) == 1) f = C; else f = 0; while (1) { if (f | 0) { r = 6; break } n = 0; $(d | 0, a | 0, e | 0); f = n; n = 0; if ((f | 0) != 0 & (o | 0) != 0) { g = mn(c[f >> 2] | 0, p | 0, q | 0) | 0; if (!g) sa(f | 0, o | 0); C = o } else g = -1; if ((g | 0) == 1) f = C; else break } if ((r | 0) == 6) { r = c[h >> 2] | 0; c[m >> 2] = r; b[j >> 1] = k; r = c[l >> 2] | 0; an(p | 0); i = s; return r | 0 } r = c[h >> 2] | 0; c[m >> 2] = r; b[j >> 1] = k; r = c[l >> 2] | 0; an(p | 0); i = s; return r | 0 } function Od(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, i = 0; g = b + 28 | 0; f = c[g >> 2] | 0; h = b + 32 | 0; e = c[h >> 2] | 0; if ((d + 1 | 0) >>> 0 > 268435455) Te(b); i = Ue(b, f, e << 4, d << 4) | 0; c[g >> 2] = i; if ((e | 0) < (d | 0)) do { c[i + (e << 4) + 8 >> 2] = 0; e = e + 1 | 0 } while ((e | 0) != (d | 0)); c[h >> 2] = d; c[b + 24 >> 2] = i + (d << 4) + -80; e = b + 8 | 0; c[e >> 2] = i + ((c[e >> 2] | 0) - f >> 4 << 4); e = c[b + 56 >> 2] | 0; if (e | 0) do { h = e + 8 | 0; c[h >> 2] = i + ((c[h >> 2] | 0) - f >> 4 << 4); e = c[e >> 2] | 0 } while ((e | 0) != 0); e = c[b + 16 >> 2] | 0; if (!e) return; do { b = e + 4 | 0; c[b >> 2] = i + ((c[b >> 2] | 0) - f >> 4 << 4); c[e >> 2] = i + ((c[e >> 2] | 0) - f >> 4 << 4); if (a[e + 18 >> 0] & 1) { b = e + 24 | 0; c[b >> 2] = i + ((c[b >> 2] | 0) - f >> 4 << 4) } e = c[e + 8 >> 2] | 0 } while ((e | 0) != 0); return } function Pd(e, f) { e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0; l = e + 16 | 0; f = c[l >> 2] | 0; m = e + 72 | 0; if ((f | 0) == (m | 0)) return; n = e + 8 | 0; o = e + 40 | 0; p = e + 20 | 0; q = e + 28 | 0; k = e + 68 | 0; do { h = f + 18 | 0; g = a[h >> 0] | 0; if (!(g & 1)) { g = g & 255; if (g & 16 | 0) { a[h >> 0] = g & 239; c[k >> 2] = c[f + 32 >> 2] } j = c[f + 16 >> 2] | 0; g = j >>> 16; if ((j & 65535) << 16 >> 16 == -1 ? (r = f + 4 | 0, s = c[n >> 2] | 0, (c[r >> 2] | 0) >>> 0 < s >>> 0) : 0) c[r >> 2] = s; if (!(g & 32)) a[f + 37 >> 0] = 1; a[h >> 0] = g & 199 | 8; f = $a[c[f + 28 >> 2] & 255](e) | 0; f = (c[n >> 2] | 0) + (0 - f << 4) | 0; j = c[l >> 2] | 0; g = d[o >> 0] | 0; if (!(g & 6)) { h = f; i = c[j + 8 >> 2] | 0 } else { if (g & 2) { f = f - (c[q >> 2] | 0) | 0; Qd(e, 1, -1); f = (c[q >> 2] | 0) + f | 0 } i = c[j + 8 >> 2] | 0; c[p >> 2] = c[i + 28 >> 2]; h = f } f = c[j >> 2] | 0; g = b[j + 16 >> 1] | 0; c[l >> 2] = i; a: do if (g << 16 >> 16) { g = g << 16 >> 16; while (1) { if (h >>> 0 >= (c[n >> 2] | 0) >>> 0) break; i = f + 16 | 0; u = h; t = c[u + 4 >> 2] | 0; j = f; c[j >> 2] = c[u >> 2]; c[j + 4 >> 2] = t; c[f + 8 >> 2] = c[h + 8 >> 2]; g = g + -1 | 0; if (!g) { f = i; break a } else { f = i; h = h + 16 | 0 } } if ((g | 0) > 0) while (1) { h = f + 16 | 0; c[f + 8 >> 2] = 0; if ((g | 0) > 1) { f = h; g = g + -1 | 0 } else { f = h; break } } } while (0); c[n >> 2] = f } else { rg(e); sg(e) } f = c[l >> 2] | 0 } while ((f | 0) != (m | 0)); return } function Qd(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0; s = i; i = i + 112 | 0; r = s; n = s + 4 | 0; p = c[b + 52 >> 2] | 0; if (!p) { i = s; return } q = b + 41 | 0; if (!(a[q >> 0] | 0)) { i = s; return } g = c[b + 16 >> 2] | 0; h = b + 8 | 0; t = c[h >> 2] | 0; j = b + 28 | 0; m = c[j >> 2] | 0; k = t - m | 0; l = g + 4 | 0; m = (c[l >> 2] | 0) - m | 0; c[n >> 2] = e; c[n + 20 >> 2] = f; c[n + 96 >> 2] = g; e = t; do if (((c[b + 24 >> 2] | 0) - t | 0) < 336) { e = c[b + 32 >> 2] | 0; if ((e | 0) > 1e6) Ld(b, 6); t = (k >> 4) + 25 | 0; e = e << 1; e = (e | 0) > 1e6 ? 1e6 : e; e = (e | 0) < (t | 0) ? t : e; if ((e | 0) > 1e6) { Od(b, 1000200); Ed(b, 7041, r) } else { Od(b, e); o = c[h >> 2] | 0; break } } else o = e; while (0); c[l >> 2] = o + 320; a[q >> 0] = 0; t = g + 18 | 0; a[t >> 0] = d[t >> 0] | 2; _a[p & 31](b, n); a[q >> 0] = 1; r = c[j >> 2] | 0; c[l >> 2] = r + m; c[h >> 2] = r + k; a[t >> 0] = d[t >> 0] & 253; i = s; return } function Rd(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0; f = a + 8 | 0; c[f >> 2] = e; b = Nf(a, b) | 0; c[e >> 2] = b; c[e + 8 >> 2] = d[b + 4 >> 0] | 0 | 64; c[f >> 2] = (c[f >> 2] | 0) + 16; Ld(a, -1) } function Sd(e, f, g) { e = e | 0; f = f | 0; g = g | 0; var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0; A = i; i = i + 32 | 0; n = A + 24 | 0; v = A + 16 | 0; r = A + 8 | 0; q = A; y = e + 28 | 0; z = e + 8 | 0; w = e + 24 | 0; x = e + 32 | 0; a: while (1) { s = c[y >> 2] | 0; p = f; switch (c[f + 8 >> 2] & 63) { case 22: { h = 3; break a } case 38: { h = 4; break a } case 6: { h = 29; break a } default: { } }j = cg(e, f, 16) | 0; k = p - (c[y >> 2] | 0) | 0; m = j + 8 | 0; if ((c[m >> 2] & 15 | 0) != 6) { h = 61; break } h = c[z >> 2] | 0; if (h >>> 0 > f >>> 0) { do { u = h; h = h + -16 | 0; C = h; B = c[C + 4 >> 2] | 0; t = u; c[t >> 2] = c[C >> 2]; c[t + 4 >> 2] = B; c[u + 8 >> 2] = c[u + -8 >> 2] } while (h >>> 0 > f >>> 0); f = c[z >> 2] | 0 } else f = h; f = f + 16 | 0; c[z >> 2] = f; if (((c[w >> 2] | 0) - f | 0) < 16) { h = c[x >> 2] | 0; if ((h | 0) > 1e6) { h = 67; break } C = (f - (c[y >> 2] | 0) >> 4) + 5 | 0; f = h << 1; f = (f | 0) > 1e6 ? 1e6 : f; f = (f | 0) < (C | 0) ? C : f; if ((f | 0) > 1e6) { h = 69; break } Od(e, f) } f = (c[y >> 2] | 0) + k | 0; u = j; B = c[u + 4 >> 2] | 0; C = f; c[C >> 2] = c[u >> 2]; c[C + 4 >> 2] = B; c[f + 8 >> 2] = c[m >> 2] } if ((h | 0) == 3) o = f; else if ((h | 0) == 4) o = (c[f >> 2] | 0) + 12 | 0; else if ((h | 0) == 29) { q = p - s | 0; u = c[(c[f >> 2] | 0) + 12 >> 2] | 0; j = c[z >> 2] | 0; n = j - p >> 4; k = n + -1 | 0; t = u + 78 | 0; f = d[t >> 0] | 0; do if (((c[w >> 2] | 0) - j >> 4 | 0) <= (f | 0)) { h = c[x >> 2] | 0; if ((h | 0) > 1e6) Ld(e, 6); C = (j - s >> 4) + 5 + f | 0; f = h << 1; f = (f | 0) > 1e6 ? 1e6 : f; f = (f | 0) < (C | 0) ? C : f; if ((f | 0) > 1e6) { Od(e, 1000200); Ed(e, 7041, r) } else { Od(e, f); break } } while (0); j = c[u + 76 >> 2] | 0; o = j & 255; p = j & 255; m = j >>> 16; if ((n | 0) <= (p | 0)) { f = k; h = c[z >> 2] | 0; do { C = h; h = h + 16 | 0; c[C + 8 >> 2] = 0; f = f + 1 | 0 } while ((f | 0) < (p | 0)); c[z >> 2] = h; k = f } if (!(j & 65280)) { h = (c[y >> 2] | 0) + q | 0; l = h + 16 | 0 } else { j = c[z >> 2] | 0; h = m & 255; do if (((c[w >> 2] | 0) - j >> 4 | 0) <= (h | 0)) { f = c[x >> 2] | 0; if ((f | 0) > 1e6) Ld(e, 6); C = h + 5 + (j - (c[y >> 2] | 0) >> 4) | 0; f = f << 1; f = (f | 0) > 1e6 ? 1e6 : f; f = (f | 0) < (C | 0) ? C : f; if ((f | 0) > 1e6) { Od(e, 1000200); Ed(e, 7041, v) } else { Od(e, f); l = c[z >> 2] | 0; break } } else l = j; while (0); f = 0 - k | 0; h = l + (f << 4) | 0; if (o << 24 >> 24 ? (c[z >> 2] = l + 16, x = h, B = c[x + 4 >> 2] | 0, C = l, c[C >> 2] = c[x >> 2], c[C + 4 >> 2] = B, C = l + (f << 4) + 8 | 0, c[l + 8 >> 2] = c[C >> 2], c[C >> 2] = 0, o << 24 >> 24 != 1) : 0) { f = 1; do { B = c[z >> 2] | 0; C = h + (f << 4) | 0; c[z >> 2] = B + 16; v = C; w = c[v + 4 >> 2] | 0; x = B; c[x >> 2] = c[v >> 2]; c[x + 4 >> 2] = w; C = C + 8 | 0; c[B + 8 >> 2] = c[C >> 2]; c[C >> 2] = 0; f = f + 1 | 0 } while ((f | 0) != (p | 0)) } h = (c[y >> 2] | 0) + q | 0 } j = e + 16 | 0; f = c[(c[j >> 2] | 0) + 12 >> 2] | 0; if (!f) k = Ff(e) | 0; else k = f; c[j >> 2] = k; b[k + 16 >> 1] = g; c[k >> 2] = h; c[k + 24 >> 2] = l; C = l + ((d[t >> 0] | 0) << 4) | 0; c[k + 4 >> 2] = C; h = k + 28 | 0; c[h >> 2] = c[u + 12 >> 2]; f = k + 18 | 0; a[f >> 0] = 1; c[z >> 2] = C; if ((c[(c[e + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(e); if (!(a[e + 40 >> 0] & 1)) { C = 0; i = A; return C | 0 } c[h >> 2] = (c[h >> 2] | 0) + 4; C = c[k + 8 >> 2] | 0; if ((a[C + 18 >> 0] & 1) != 0 ? (c[(c[C + 28 >> 2] | 0) + -4 >> 2] & 63 | 0) == 30 : 0) { a[f >> 0] = d[f >> 0] | 0 | 64; f = 4 } else f = 0; Qd(e, f, -1); c[h >> 2] = (c[h >> 2] | 0) + -4; C = 0; i = A; return C | 0 } else if ((h | 0) == 61) Dd(e, f, 7071); else if ((h | 0) == 67) Ld(e, 6); else if ((h | 0) == 69) { Od(e, 1000200); Ed(e, 7041, n) } k = p - s | 0; j = c[o >> 2] | 0; h = c[z >> 2] | 0; do if (((c[w >> 2] | 0) - h | 0) < 336) { f = c[x >> 2] | 0; if ((f | 0) > 1e6) Ld(e, 6); C = (h - s >> 4) + 25 | 0; f = f << 1; f = (f | 0) > 1e6 ? 1e6 : f; f = (f | 0) < (C | 0) ? C : f; if ((f | 0) > 1e6) { Od(e, 1000200); Ed(e, 7041, q) } else { Od(e, f); break } } while (0); m = e + 16 | 0; f = c[(c[m >> 2] | 0) + 12 >> 2] | 0; if (!f) f = Ff(e) | 0; c[m >> 2] = f; b[f + 16 >> 1] = g; c[f >> 2] = (c[y >> 2] | 0) + k; c[f + 4 >> 2] = (c[z >> 2] | 0) + 320; a[f + 18 >> 0] = 0; if ((c[(c[e + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(e); h = e + 40 | 0; if (a[h >> 0] & 1) Qd(e, 0, -1); f = $a[j & 255](e) | 0; f = (c[z >> 2] | 0) + (0 - f << 4) | 0; l = c[m >> 2] | 0; h = d[h >> 0] | 0; if (!(h & 6)) { j = f; k = c[l + 8 >> 2] | 0 } else { if (h & 2) { f = f - (c[y >> 2] | 0) | 0; Qd(e, 1, -1); f = (c[y >> 2] | 0) + f | 0 } k = c[l + 8 >> 2] | 0; c[e + 20 >> 2] = c[k + 28 >> 2]; j = f } f = c[l >> 2] | 0; h = b[l + 16 >> 1] | 0; c[m >> 2] = k; b: do if (h << 16 >> 16) { h = h << 16 >> 16; while (1) { if (j >>> 0 >= (c[z >> 2] | 0) >>> 0) break; k = f + 16 | 0; e = j; B = c[e + 4 >> 2] | 0; C = f; c[C >> 2] = c[e >> 2]; c[C + 4 >> 2] = B; c[f + 8 >> 2] = c[j + 8 >> 2]; h = h + -1 | 0; if (!h) { f = k; break b } else { f = k; j = j + 16 | 0 } } if ((h | 0) > 0) while (1) { j = f + 16 | 0; c[f + 8 >> 2] = 0; if ((h | 0) > 1) { f = j; h = h + -1 | 0 } else { f = j; break } } } while (0); c[z >> 2] = f; C = 1; i = A; return C | 0 } function Td(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0; e = i; i = i + 16 | 0; d = c[a + 32 >> 2] | 0; if ((d | 0) > 1e6) Ld(a, 6); f = b + 5 + ((c[a + 8 >> 2] | 0) - (c[a + 28 >> 2] | 0) >> 4) | 0; b = d << 1; b = (b | 0) > 1e6 ? 1e6 : b; b = (b | 0) < (f | 0) ? f : b; if ((b | 0) > 1e6) { Od(a, 1000200); Ed(a, 7041, e) } else { Od(a, b); i = e; return } } function Ud(a) { a = a | 0; var b = 0, d = 0, e = 0; b = c[a + 8 >> 2] | 0; d = c[a + 16 >> 2] | 0; if (d) do { e = c[d + 4 >> 2] | 0; b = b >>> 0 < e >>> 0 ? e : b; d = c[d + 8 >> 2] | 0 } while ((d | 0) != 0); e = b - (c[a + 28 >> 2] | 0) | 0; b = e >> 4; b = b + 11 + ((b + 1 | 0) / 8 | 0) | 0; b = (b | 0) > 1e6 ? 1e6 : b; if ((e | 0) > 15999984) return; if ((b | 0) >= (c[a + 32 >> 2] | 0)) return; Od(a, b); return } function Vd(a, e) { a = a | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0; i = a + 16 | 0; h = c[i >> 2] | 0; f = d[a + 40 >> 0] | 0; if (!(f & 6)) f = c[h + 8 >> 2] | 0; else { if (f & 2) { j = a + 28 | 0; e = e - (c[j >> 2] | 0) | 0; Qd(a, 1, -1); e = (c[j >> 2] | 0) + e | 0 } f = c[h + 8 >> 2] | 0; c[a + 20 >> 2] = c[f + 28 >> 2] } g = c[h >> 2] | 0; h = b[h + 16 >> 1] | 0; j = h << 16 >> 16; c[i >> 2] = f; a = a + 8 | 0; if (!(h << 16 >> 16)) { k = g; c[a >> 2] = k; k = j + 1 | 0; return k | 0 } else { f = j; h = e } while (1) { if (h >>> 0 >= (c[a >> 2] | 0) >>> 0) break; e = g + 16 | 0; m = h; l = c[m + 4 >> 2] | 0; i = g; c[i >> 2] = c[m >> 2]; c[i + 4 >> 2] = l; c[g + 8 >> 2] = c[h + 8 >> 2]; f = f + -1 | 0; if (!f) { k = 11; break } else { g = e; h = h + 16 | 0 } } if ((k | 0) == 11) { c[a >> 2] = e; m = j + 1 | 0; return m | 0 } if ((f | 0) <= 0) { m = g; c[a >> 2] = m; m = j + 1 | 0; return m | 0 } while (1) { e = g + 16 | 0; c[g + 8 >> 2] = 0; if ((f | 0) > 1) { g = e; f = f + -1 | 0 } else break } c[a >> 2] = e; m = j + 1 | 0; return m | 0 } function Wd(a, d, e, f) { a = a | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0; k = i; i = i + 16 | 0; h = k; j = a + 38 | 0; g = (b[j >> 1] | 0) + 1 << 16 >> 16; b[j >> 1] = g; if ((g & 65535) > 199) { if (g << 16 >> 16 == 200) Ed(a, 3199, h); if ((g & 65535) > 224) Ld(a, 6) } f = (f | 0) != 0; if (!f) { h = a + 36 | 0; b[h >> 1] = (b[h >> 1] | 0) + 1 << 16 >> 16 } if (!(Sd(a, d, e) | 0)) sg(a); if (f) { e = b[j >> 1] | 0; e = e + -1 << 16 >> 16; b[j >> 1] = e; i = k; return } else { d = a + 36 | 0; e = c[d >> 2] | 0; b[d >> 1] = (e & 65535) + -1 << 16 >> 16; e = e >>> 16 & 65535; e = e + -1 << 16 >> 16; b[j >> 1] = e; i = k; return } } function Xd(e, f, g, h, i) { e = e | 0; f = f | 0; g = g | 0; h = h | 0; i = i | 0; var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0; l = e + 16 | 0; j = c[l >> 2] | 0; m = e + 41 | 0; n = a[m >> 0] | 0; o = e + 36 | 0; k = b[o >> 1] | 0; p = e + 68 | 0; q = c[p >> 2] | 0; c[p >> 2] = i; i = Nd(e, f, g) | 0; if (!i) { c[p >> 2] = q; return i | 0 } g = e + 28 | 0; f = (c[g >> 2] | 0) + h | 0; fe(e, f); switch (i | 0) { case 4: { h = c[(c[e + 12 >> 2] | 0) + 180 >> 2] | 0; c[f >> 2] = h; c[f + 8 >> 2] = d[h + 4 >> 0] | 0 | 64; break } case 6: { h = Mf(e, 3175, 23) | 0; c[f >> 2] = h; c[f + 8 >> 2] = d[h + 4 >> 0] | 0 | 64; break } default: { h = c[e + 8 >> 2] | 0; t = h + -16 | 0; s = c[t + 4 >> 2] | 0; r = f; c[r >> 2] = c[t >> 2]; c[r + 4 >> 2] = s; c[f + 8 >> 2] = c[h + -8 >> 2] } }f = f + 16 | 0; c[e + 8 >> 2] = f; c[l >> 2] = j; a[m >> 0] = n; b[o >> 1] = k; if (j) do { t = c[j + 4 >> 2] | 0; f = f >>> 0 < t >>> 0 ? t : f; j = c[j + 8 >> 2] | 0 } while ((j | 0) != 0); t = f - (c[g >> 2] | 0) | 0; f = t >> 4; f = f + 11 + ((f + 1 | 0) / 8 | 0) | 0; f = (f | 0) > 1e6 ? 1e6 : f; if ((t | 0) > 15999984) { c[p >> 2] = q; return i | 0 } if ((f | 0) >= (c[e + 32 >> 2] | 0)) { c[p >> 2] = q; return i | 0 } Od(e, f); c[p >> 2] = q; return i | 0 } function Yd(a, d, e, f) { a = a | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; g = i; i = i + 64 | 0; p = g; h = a + 36 | 0; b[h >> 1] = (b[h >> 1] | 0) + 1 << 16 >> 16; c[p >> 2] = d; c[p + 56 >> 2] = e; c[p + 52 >> 2] = f; m = p + 16 | 0; c[m >> 2] = 0; l = p + 24 | 0; c[l >> 2] = 0; k = p + 28 | 0; c[k >> 2] = 0; j = p + 36 | 0; c[j >> 2] = 0; d = p + 40 | 0; c[d >> 2] = 0; e = p + 48 | 0; c[e >> 2] = 0; o = p + 4 | 0; c[o >> 2] = 0; n = p + 12 | 0; c[n >> 2] = 0; f = Xd(a, 22, p, (c[a + 8 >> 2] | 0) - (c[a + 28 >> 2] | 0) | 0, c[a + 68 >> 2] | 0) | 0; c[o >> 2] = Ue(a, c[o >> 2] | 0, c[n >> 2] | 0, 0) | 0; c[n >> 2] = 0; Ue(a, c[m >> 2] | 0, c[l >> 2] << 1, 0) | 0; Ue(a, c[k >> 2] | 0, c[j >> 2] << 4, 0) | 0; Ue(a, c[d >> 2] | 0, c[e >> 2] << 4, 0) | 0; b[h >> 1] = (b[h >> 1] | 0) + -1 << 16 >> 16; i = g; return f | 0 } function Zd(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0; l = i; i = i + 16 | 0; k = l + 8 | 0; j = l; f = c[e >> 2] | 0; h = c[f >> 2] | 0; c[f >> 2] = h + -1; if (!h) f = tg(f) | 0; else { h = f + 4 | 0; f = c[h >> 2] | 0; c[h >> 2] = f + 1; f = d[f >> 0] | 0 } g = c[e + 52 >> 2] | 0; h = (g | 0) == 0; if ((f | 0) == 27) { if (!h ? (pm(g, 98) | 0) == 0 : 0) { c[j >> 2] = 3296; c[j + 4 >> 2] = g; af(b, 3254, j) | 0; Ld(b, 3) } f = dg(b, c[e >> 2] | 0, e + 4 | 0, c[e + 56 >> 2] | 0) | 0 } else { if (!h ? (pm(g, 116) | 0) == 0 : 0) { c[k >> 2] = 3303; c[k + 4 >> 2] = g; af(b, 3254, k) | 0; Ld(b, 3) } f = cf(b, c[e >> 2] | 0, e + 4 | 0, e + 16 | 0, c[e + 56 >> 2] | 0, f) | 0 } h = f + 6 | 0; if (!(a[h >> 0] | 0)) { i = l; return } e = f + 16 | 0; j = f + 5 | 0; g = 0; do { k = ce(b) | 0; c[e + (g << 2) >> 2] = k; if (a[k + 5 >> 0] & 3 ? a[j >> 0] & 4 : 0) je(b, f, k); g = g + 1 | 0 } while ((g | 0) < (d[h >> 0] | 0)); i = l; return } function _d(a, b, d, e, f) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, j = 0; g = i; i = i + 48 | 0; j = g + 20 | 0; h = g; c[h >> 2] = a; c[h + 4 >> 2] = d; c[h + 8 >> 2] = e; c[h + 12 >> 2] = f; f = h + 16 | 0; gg(j); c[f >> 2] = ab[d & 31](a, j, 18, e) | 0; $d(b, h); i = g; return c[f >> 2] | 0 } function $d(d, e) { d = d | 0; e = e | 0; var f = 0, g = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0; t = i; i = i + 16 | 0; r = t; c[r >> 2] = c[d + 64 >> 2]; s = e + 16 | 0; f = c[s >> 2] | 0; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 4, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } c[r >> 2] = c[d + 68 >> 2]; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 4, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } g = b[d + 76 >> 1] | 0; a[r >> 0] = g; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 1, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f; a[r >> 0] = a[d + 77 >> 0] | 0; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 1, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } } else a[r >> 0] = (g & 65535) >>> 8; a[r >> 0] = a[d + 78 >> 0] | 0; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 1, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } k = c[d + 12 >> 2] | 0; l = c[d + 48 >> 2] | 0; c[r >> 2] = l; if (!f) { g = e + 4 | 0; j = e + 8 | 0; f = ab[c[g >> 2] & 31](c[e >> 2] | 0, r, 4, c[j >> 2] | 0) | 0; c[s >> 2] = f; if (!f) { f = ab[c[g >> 2] & 31](c[e >> 2] | 0, k, l << 2, c[j >> 2] | 0) | 0; c[s >> 2] = f; g = c[d + 44 >> 2] | 0; c[r >> 2] = g; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 4, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } } else m = 14 } else m = 14; if ((m | 0) == 14) { g = c[d + 44 >> 2] | 0; c[r >> 2] = g } a: do if ((g | 0) > 0) { n = d + 8 | 0; o = e + 4 | 0; p = e + 8 | 0; m = 0; while (1) { k = c[n >> 2] | 0; l = k + (m << 4) | 0; k = k + (m << 4) + 8 | 0; j = c[k >> 2] | 0; a[r >> 0] = j & 15; if (!f) { f = ab[c[o >> 2] & 31](c[e >> 2] | 0, r, 1, c[p >> 2] | 0) | 0; c[s >> 2] = f; j = c[k >> 2] | 0 } b: do switch (j & 15) { case 4: { j = c[l >> 2] | 0; if (!j) { c[r >> 2] = 0; if (!f) { f = ab[c[o >> 2] & 31](c[e >> 2] | 0, r, 4, c[p >> 2] | 0) | 0; c[s >> 2] = f } break b } c[r >> 2] = (c[j + 12 >> 2] | 0) + 1; if (!f) { f = ab[c[o >> 2] & 31](c[e >> 2] | 0, r, 4, c[p >> 2] | 0) | 0; c[s >> 2] = f; if (!f) { f = ab[c[o >> 2] & 31](c[e >> 2] | 0, j + 16 | 0, c[r >> 2] | 0, c[p >> 2] | 0) | 0; c[s >> 2] = f } } break } case 1: { a[r >> 0] = c[l >> 2]; if (!f) { f = ab[c[o >> 2] & 31](c[e >> 2] | 0, r, 1, c[p >> 2] | 0) | 0; c[s >> 2] = f } break } case 3: { h[r >> 3] = +h[l >> 3]; if (!f) { f = ab[c[o >> 2] & 31](c[e >> 2] | 0, r, 8, c[p >> 2] | 0) | 0; c[s >> 2] = f } break } default: { } } while (0); m = m + 1 | 0; if ((m | 0) == (g | 0)) break a } } while (0); j = c[d + 56 >> 2] | 0; c[r >> 2] = j; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 4, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } if ((j | 0) > 0) { g = d + 16 | 0; f = 0; do { $d(c[(c[g >> 2] | 0) + (f << 2) >> 2] | 0, e); f = f + 1 | 0 } while ((f | 0) != (j | 0)); f = c[s >> 2] | 0 } p = d + 40 | 0; n = c[p >> 2] | 0; c[r >> 2] = n; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 4, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } if ((n | 0) > 0) { k = d + 28 | 0; l = e + 4 | 0; m = e + 8 | 0; j = 0; do { g = c[k >> 2] | 0; a[r >> 0] = a[g + (j << 3) + 4 >> 0] | 0; if (!f) { f = ab[c[l >> 2] & 31](c[e >> 2] | 0, r, 1, c[m >> 2] | 0) | 0; c[s >> 2] = f; g = c[k >> 2] | 0 } a[r >> 0] = a[g + (j << 3) + 5 >> 0] | 0; if (!f) { f = ab[c[l >> 2] & 31](c[e >> 2] | 0, r, 1, c[m >> 2] | 0) | 0; c[s >> 2] = f } j = j + 1 | 0 } while ((j | 0) != (n | 0)) } o = e + 12 | 0; if ((c[o >> 2] | 0) == 0 ? (q = c[d + 36 >> 2] | 0, (q | 0) != 0) : 0) { c[r >> 2] = (c[q + 12 >> 2] | 0) + 1; if (!f) { g = e + 4 | 0; j = e + 8 | 0; f = ab[c[g >> 2] & 31](c[e >> 2] | 0, r, 4, c[j >> 2] | 0) | 0; c[s >> 2] = f; if (!f) { f = ab[c[g >> 2] & 31](c[e >> 2] | 0, q + 16 | 0, c[r >> 2] | 0, c[j >> 2] | 0) | 0; c[s >> 2] = f } } } else { c[r >> 2] = 0; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 4, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } } if (!(c[o >> 2] | 0)) l = c[d + 52 >> 2] | 0; else l = 0; k = c[d + 20 >> 2] | 0; c[r >> 2] = l; if (!f) { g = e + 4 | 0; j = e + 8 | 0; f = ab[c[g >> 2] & 31](c[e >> 2] | 0, r, 4, c[j >> 2] | 0) | 0; c[s >> 2] = f; if (!f) { f = ab[c[g >> 2] & 31](c[e >> 2] | 0, k, l << 2, c[j >> 2] | 0) | 0; c[s >> 2] = f } } if (!(c[o >> 2] | 0)) n = c[d + 60 >> 2] | 0; else n = 0; c[r >> 2] = n; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 4, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } if ((n | 0) > 0) { k = d + 24 | 0; l = e + 4 | 0; m = e + 8 | 0; j = 0; do { g = c[(c[k >> 2] | 0) + (j * 12 | 0) >> 2] | 0; if (!g) { c[r >> 2] = 0; if (!f) { f = ab[c[l >> 2] & 31](c[e >> 2] | 0, r, 4, c[m >> 2] | 0) | 0; c[s >> 2] = f } } else { c[r >> 2] = (c[g + 12 >> 2] | 0) + 1; do if (!f) { f = ab[c[l >> 2] & 31](c[e >> 2] | 0, r, 4, c[m >> 2] | 0) | 0; c[s >> 2] = f; if (f | 0) break; f = ab[c[l >> 2] & 31](c[e >> 2] | 0, g + 16 | 0, c[r >> 2] | 0, c[m >> 2] | 0) | 0; c[s >> 2] = f } while (0) } g = c[k >> 2] | 0; c[r >> 2] = c[g + (j * 12 | 0) + 4 >> 2]; if (!f) { f = ab[c[l >> 2] & 31](c[e >> 2] | 0, r, 4, c[m >> 2] | 0) | 0; c[s >> 2] = f; g = c[k >> 2] | 0 } c[r >> 2] = c[g + (j * 12 | 0) + 8 >> 2]; if (!f) { f = ab[c[l >> 2] & 31](c[e >> 2] | 0, r, 4, c[m >> 2] | 0) | 0; c[s >> 2] = f } j = j + 1 | 0 } while ((j | 0) != (n | 0)) } if (!(c[o >> 2] | 0)) n = c[p >> 2] | 0; else n = 0; c[r >> 2] = n; if (!f) { f = ab[c[e + 4 >> 2] & 31](c[e >> 2] | 0, r, 4, c[e + 8 >> 2] | 0) | 0; c[s >> 2] = f } if ((n | 0) <= 0) { i = t; return } k = d + 28 | 0; l = e + 4 | 0; m = e + 8 | 0; j = 0; do { g = c[(c[k >> 2] | 0) + (j << 3) >> 2] | 0; if (!g) { c[r >> 2] = 0; if (!f) { f = ab[c[l >> 2] & 31](c[e >> 2] | 0, r, 4, c[m >> 2] | 0) | 0; c[s >> 2] = f } } else { c[r >> 2] = (c[g + 12 >> 2] | 0) + 1; do if (!f) { f = ab[c[l >> 2] & 31](c[e >> 2] | 0, r, 4, c[m >> 2] | 0) | 0; c[s >> 2] = f; if (f | 0) break; f = ab[c[l >> 2] & 31](c[e >> 2] | 0, g + 16 | 0, c[r >> 2] | 0, c[m >> 2] | 0) | 0; c[s >> 2] = f } while (0) } j = j + 1 | 0 } while ((j | 0) != (n | 0)); i = t; return } function ae(b, c) { b = b | 0; c = c | 0; b = oe(b, 38, (c << 4) + 16 | 0, 0, 0) | 0; a[b + 6 >> 0] = c; return b | 0 } function be(b, d) { b = b | 0; d = d | 0; var e = 0; e = d << 2; b = oe(b, 6, e + 16 | 0, 0, 0) | 0; c[b + 12 >> 2] = 0; a[b + 6 >> 0] = d; if (!d) return b | 0; hn(b + 16 | 0, 0, e | 0) | 0; return b | 0 } function ce(a) { a = a | 0; a = oe(a, 10, 32, 0, 0) | 0; c[a + 8 >> 2] = a + 16; c[a + 24 >> 2] = 0; return a | 0 } function de(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; i = c[b + 12 >> 2] | 0; f = b + 56 | 0; g = c[f >> 2] | 0; a: do if (g) { h = g; while (1) { g = c[h + 8 >> 2] | 0; if (g >>> 0 < e >>> 0) break a; if ((g | 0) == (e | 0)) break; f = c[h >> 2] | 0; if (!f) { f = h; break a } else { g = h; h = f; f = g } } f = h + 5 | 0; g = (d[f >> 0] | 0) ^ 3; if (((d[i + 60 >> 0] | 0) ^ 3) & g | 0) { i = h; return i | 0 } a[f >> 0] = g; i = h; return i | 0 } while (0); b = oe(b, 10, 32, f, 0) | 0; c[b + 8 >> 2] = e; h = b + 16 | 0; c[h >> 2] = i + 112; i = i + 128 + 4 | 0; e = c[i >> 2] | 0; c[h + 4 >> 2] = e; c[e + 16 >> 2] = b; c[i >> 2] = b; i = b; return i | 0 } function ee(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0; if ((c[b + 8 >> 2] | 0) == (b + 16 | 0)) { Ue(a, b, 32, 0) | 0; return } d = b + 16 | 0; e = c[d + 4 >> 2] | 0; c[e + 16 >> 2] = c[d >> 2]; c[(c[d >> 2] | 0) + 16 + 4 >> 2] = e; Ue(a, b, 32, 0) | 0; return } function fe(a, b) { a = a | 0; b = b | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; h = c[a + 12 >> 2] | 0; i = a + 56 | 0; e = c[i >> 2] | 0; if (!e) return; j = h + 60 | 0; k = h + 68 | 0; while (1) { g = e + 8 | 0; f = c[g >> 2] | 0; if (f >>> 0 < b >>> 0) { e = 10; break } c[i >> 2] = c[e >> 2]; if (!(((d[j >> 0] | 0) ^ 3) & ((d[e + 5 >> 0] | 0) ^ 3))) { if ((f | 0) != (e + 16 | 0)) { g = e + 16 | 0; f = c[g + 4 >> 2] | 0; c[f + 16 >> 2] = c[g >> 2]; c[(c[g >> 2] | 0) + 16 + 4 >> 2] = f } Ue(a, e, 32, 0) | 0 } else { l = e + 16 | 0; o = c[l + 4 >> 2] | 0; c[o + 16 >> 2] = c[l >> 2]; c[(c[l >> 2] | 0) + 16 + 4 >> 2] = o; l = e + 16 | 0; o = f; n = c[o + 4 >> 2] | 0; m = l; c[m >> 2] = c[o >> 2]; c[m + 4 >> 2] = n; c[e + 24 >> 2] = c[f + 8 >> 2]; c[g >> 2] = l; c[e >> 2] = c[k >> 2]; c[k >> 2] = e; ne(h, e) } e = c[i >> 2] | 0; if (!e) { e = 10; break } } if ((e | 0) == 10) return } function ge(b) { b = b | 0; b = oe(b, 9, 80, 0, 0) | 0; c[b + 8 >> 2] = 0; c[b + 44 >> 2] = 0; c[b + 16 >> 2] = 0; c[b + 56 >> 2] = 0; c[b + 12 >> 2] = 0; c[b + 32 >> 2] = 0; c[b + 48 >> 2] = 0; c[b + 20 >> 2] = 0; c[b + 52 >> 2] = 0; c[b + 28 >> 2] = 0; c[b + 40 >> 2] = 0; a[b + 76 >> 0] = 0; a[b + 77 >> 0] = 0; a[b + 78 >> 0] = 0; c[b + 24 >> 2] = 0; c[b + 60 >> 2] = 0; c[b + 64 >> 2] = 0; c[b + 68 >> 2] = 0; c[b + 36 >> 2] = 0; return b | 0 } function he(a, b) { a = a | 0; b = b | 0; Ue(a, c[b + 12 >> 2] | 0, c[b + 48 >> 2] << 2, 0) | 0; Ue(a, c[b + 16 >> 2] | 0, c[b + 56 >> 2] << 2, 0) | 0; Ue(a, c[b + 8 >> 2] | 0, c[b + 44 >> 2] << 4, 0) | 0; Ue(a, c[b + 20 >> 2] | 0, c[b + 52 >> 2] << 2, 0) | 0; Ue(a, c[b + 24 >> 2] | 0, (c[b + 60 >> 2] | 0) * 12 | 0, 0) | 0; Ue(a, c[b + 28 >> 2] | 0, c[b + 40 >> 2] << 3, 0) | 0; Ue(a, b, 80, 0) | 0; return } function ie(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; e = c[a + 60 >> 2] | 0; if ((e | 0) <= 0) { f = 0; return f | 0 } f = c[a + 24 >> 2] | 0; a = 0; while (1) { if ((c[f + (a * 12 | 0) + 4 >> 2] | 0) > (d | 0)) { a = 0; b = 8; break } if ((c[f + (a * 12 | 0) + 8 >> 2] | 0) > (d | 0)) { b = b + -1 | 0; if (!b) { b = 6; break } } a = a + 1 | 0; if ((a | 0) >= (e | 0)) { a = 0; b = 8; break } } if ((b | 0) == 6) { f = (c[f + (a * 12 | 0) >> 2] | 0) + 16 | 0; return f | 0 } else if ((b | 0) == 8) return a | 0; return 0 } function je(b, e, f) { b = b | 0; e = e | 0; f = f | 0; b = c[b + 12 >> 2] | 0; if ((d[b + 61 >> 0] | 0) < 2) { ke(b, f); return } else { f = e + 5 | 0; a[f >> 0] = (d[b + 60 >> 0] | 0) & 3 | (d[f >> 0] | 0) & 184; return } } function ke(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; i = e + 5 | 0; a[i >> 0] = d[i >> 0] & 252; switch (a[e + 4 >> 0] | 0) { case 20: case 4: { f = (c[e + 12 >> 2] | 0) + 17 | 0; break } case 7: { f = c[e + 8 >> 2] | 0; if (f | 0 ? a[f + 5 >> 0] & 3 : 0) ke(b, f); f = c[e + 12 >> 2] | 0; if (f | 0 ? a[f + 5 >> 0] & 3 : 0) ke(b, f); f = (c[e + 16 >> 2] | 0) + 24 | 0; break } case 10: { g = e + 8 | 0; f = c[g >> 2] | 0; if ((c[f + 8 >> 2] & 64 | 0) != 0 ? (h = c[f >> 2] | 0, (a[h + 5 >> 0] & 3) != 0) : 0) { ke(b, h); f = c[g >> 2] | 0 } if ((f | 0) == (e + 16 | 0)) f = 32; else return; break } case 6: { i = b + 84 | 0; c[e + 8 >> 2] = c[i >> 2]; c[i >> 2] = e; return } case 38: { i = b + 84 | 0; c[e + 8 >> 2] = c[i >> 2]; c[i >> 2] = e; return } case 5: { i = b + 84 | 0; c[e + 28 >> 2] = c[i >> 2]; c[i >> 2] = e; return } case 8: { i = b + 84 | 0; c[e + 60 >> 2] = c[i >> 2]; c[i >> 2] = e; return } case 9: { i = b + 84 | 0; c[e + 72 >> 2] = c[i >> 2]; c[i >> 2] = e; return } default: return }a[i >> 0] = d[i >> 0] | 4; i = b + 16 | 0; c[i >> 2] = (c[i >> 2] | 0) + f; return } function le(b, e) { b = b | 0; e = e | 0; var f = 0; b = c[b + 12 >> 2] | 0; f = e + 5 | 0; a[f >> 0] = (d[f >> 0] | 0) & 251; b = b + 88 | 0; c[e + 28 >> 2] = c[b >> 2]; c[b >> 2] = e; return } function me(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0; if (c[e + 32 >> 2] | 0) { f = c[b + 12 >> 2] | 0; h = e + 5 | 0; a[h >> 0] = (d[h >> 0] | 0) & 251; f = f + 88 | 0; c[e + 72 >> 2] = c[f >> 2]; c[f >> 2] = e; return } if (!(a[f + 5 >> 0] & 3)) return; g = e + 5 | 0; h = a[g >> 0] | 0; if (!(h & 4)) return; e = c[b + 12 >> 2] | 0; if ((d[e + 61 >> 0] | 0) < 2) { ke(e, f); return } else { a[g >> 0] = (d[e + 60 >> 0] | 0) & 3 | h & 184; return } } function ne(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0; f = e + 5 | 0; g = d[f >> 0] | 0; if (g & 7 | 0) return; if ((a[b + 62 >> 0] | 0) != 2 ? (d[b + 61 >> 0] | 0) >= 2 : 0) { a[f >> 0] = d[b + 60 >> 0] & 3 | g & 184; return } a[f >> 0] = g & 187 | 4; e = c[e + 8 >> 2] | 0; if (!(c[e + 8 >> 2] & 64)) return; e = c[e >> 2] | 0; if (!(a[e + 5 >> 0] & 3)) return; ke(b, e); return } function oe(b, e, f, g, h) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; h = h | 0; var i = 0; i = c[b + 12 >> 2] | 0; h = (Ue(b, 0, e & 15, f) | 0) + h | 0; g = (g | 0) == 0 ? i + 68 | 0 : g; a[h + 5 >> 0] = (d[i + 60 >> 0] | 0) & 3; a[h + 4 >> 0] = e; c[h >> 2] = c[g >> 2]; c[g >> 2] = h; return h | 0 } function pe(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0; i = c[b + 12 >> 2] | 0; j = e + 5 | 0; if ((f | 0) == 0 | (a[j >> 0] & 24) != 0) return; if (a[f + 6 >> 0] & 4) return; if (!(bg(f, 2, c[i + 192 >> 2] | 0) | 0)) return; f = i + 76 | 0; g = c[f >> 2] | 0; if ((g | 0) == (e | 0)) { do h = qe(b, g, 1) | 0; while ((h | 0) == (g | 0)); c[f >> 2] = h } f = i + 68 | 0; while (1) { g = c[f >> 2] | 0; if ((g | 0) == (e | 0)) break; else f = g } c[f >> 2] = c[e >> 2]; f = i + 72 | 0; c[e >> 2] = c[f >> 2]; c[f >> 2] = e; f = d[j >> 0] | 0 | 16; a[j >> 0] = f; if ((d[i + 61 >> 0] | 0) < 2) f = f & 191; else f = (d[i + 60 >> 0] | 0) & 3 | f & 184; a[j >> 0] = f; return } function qe(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0; m = b + 12 | 0; k = c[(c[m >> 2] | 0) + 60 >> 2] | 0; n = k & 255 ^ 3; l = (k & 16711680 | 0) == 131072; j = l ? 255 : 184; k = l ? 64 : k & 3; l = l ? 64 : 0; g = c[e >> 2] | 0; a: do if (!g) g = 0; else { b: while (1) { if (!f) break a; f = f + -1 | 0; h = g + 5 | 0; i = d[h >> 0] | 0; c: do if (!((i ^ 3) & n)) { c[e >> 2] = c[g >> 2]; i = c[g + 4 >> 2] | 0; h = i >>> 16; switch ((i & 255) << 24 >> 24) { case 9: { he(b, g); break c } case 6: { Ue(b, g, (h << 2 & 1020) + 16 | 0, 0) | 0; break c } case 38: { Ue(b, g, (h << 4 & 4080) + 16 | 0, 0) | 0; break c } case 10: { ee(b, g); break c } case 5: { Yf(b, g); break c } case 8: { Hf(b, g); break c } case 7: { Ue(b, g, (c[g + 16 >> 2] | 0) + 24 | 0, 0) | 0; break c } case 4: { i = (c[m >> 2] | 0) + 28 | 0; c[i >> 2] = (c[i >> 2] | 0) + -1; break } case 20: break; default: break c }Ue(b, g, (c[g + 12 >> 2] | 0) + 17 | 0, 0) | 0 } else { if (i & l | 0) { g = 0; break b } if (((a[g + 4 >> 0] | 0) == 8 ? c[g + 28 >> 2] | 0 : 0) ? (qe(b, g + 56 | 0, -3) | 0, Gf(g), (a[(c[m >> 2] | 0) + 62 >> 0] | 0) != 1) : 0) Ud(g); a[h >> 0] = i & j | k; e = g } while (0); g = c[e >> 2] | 0; if (!g) { g = 0; break a } } return g | 0 } while (0); n = (g | 0) == 0 ? 0 : e; return n | 0 } function re(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0; g = b + 12 | 0; h = c[g >> 2] | 0; f = h + 62 | 0; if ((d[f >> 0] | 0) == (e | 0)) return; if ((e | 0) == 2) { e = h + 61 | 0; if (a[e >> 0] | 0) do se(b) | 0; while ((a[e >> 0] | 0) != 0); c[h + 20 >> 2] = (c[h + 12 >> 2] | 0) + (c[h + 8 >> 2] | 0); a[f >> 0] = 2; return } a[f >> 0] = 0; a[h + 61 >> 0] = 2; c[h + 64 >> 2] = 0; e = h + 72 | 0; do f = qe(b, e, 1) | 0; while ((f | 0) == (e | 0)); c[h + 80 >> 2] = f; e = h + 68 | 0; do f = qe(b, e, 1) | 0; while ((f | 0) == (e | 0)); c[h + 76 >> 2] = f; e = (c[g >> 2] | 0) + 61 | 0; if (1 << d[e >> 0] & -29 | 0) return; do se(b) | 0; while (!(1 << d[e >> 0] & -29 | 0)); return } function se(b) { b = b | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0; v = i; i = i + 16 | 0; g = v; t = b + 12 | 0; u = c[t >> 2] | 0; n = u + 61 | 0; switch (a[n >> 0] | 0) { case 5: { g = u + 16 | 0; c[g >> 2] = c[u + 32 >> 2] << 2; e = u + 84 | 0; c[e >> 2] = 0; c[e + 4 >> 2] = 0; c[e + 8 >> 2] = 0; c[e + 12 >> 2] = 0; c[e + 16 >> 2] = 0; e = c[u + 172 >> 2] | 0; if (e | 0 ? a[e + 5 >> 0] & 3 : 0) ke(u, e); if (c[u + 48 >> 2] & 64 | 0 ? (f = c[u + 40 >> 2] | 0, a[f + 5 >> 0] & 3) : 0) ke(u, f); te(u); e = c[u + 104 >> 2] | 0; if (e | 0) { f = u + 60 | 0; do { b = e + 5 | 0; a[b >> 0] = d[f >> 0] & 3 | d[b >> 0] & 184; ke(u, e); e = c[e >> 2] | 0 } while ((e | 0) != 0) } a[n >> 0] = 0; b = c[g >> 2] | 0; i = v; return b | 0 } case 0: { m = u + 84 | 0; if (c[m >> 2] | 0) { t = u + 16 | 0; b = c[t >> 2] | 0; ue(u); b = (c[t >> 2] | 0) - b | 0; i = v; return b | 0 } a[n >> 0] = 1; r = u + 16 | 0; g = c[r >> 2] | 0; s = u + 20 | 0; c[s >> 2] = g; if (a[b + 5 >> 0] & 3) ke(u, b); if (c[u + 48 >> 2] & 64 | 0 ? (e = c[u + 40 >> 2] | 0, a[e + 5 >> 0] & 3) : 0) ke(u, e); te(u); f = u + 112 | 0; e = c[u + 128 + 4 >> 2] | 0; if ((e | 0) != (f | 0)) do { if (((a[e + 5 >> 0] & 7) == 0 ? (h = c[e + 8 >> 2] | 0, c[h + 8 >> 2] & 64 | 0) : 0) ? (j = c[h >> 2] | 0, a[j + 5 >> 0] & 3) : 0) ke(u, j); e = c[e + 16 + 4 >> 2] | 0 } while ((e | 0) != (f | 0)); if (c[m >> 2] | 0) do ue(u); while ((c[m >> 2] | 0) != 0); k = (c[r >> 2] | 0) - g | 0; q = u + 92 | 0; f = c[q >> 2] | 0; o = u + 88 | 0; p = c[o >> 2] | 0; l = u + 96 | 0; e = c[l >> 2] | 0; c[l >> 2] = 0; c[o >> 2] = 0; c[q >> 2] = 0; c[m >> 2] = p; if (p | 0) do ue(u); while ((c[m >> 2] | 0) != 0); c[m >> 2] = f; if (f | 0) do ue(u); while ((c[m >> 2] | 0) != 0); c[m >> 2] = e; if (e | 0) do ue(u); while ((c[m >> 2] | 0) != 0); j = c[r >> 2] | 0; while (1) { e = c[l >> 2] | 0; c[l >> 2] = 0; f = 0; a: while (1) { do { if (!e) break a; p = e; e = c[e + 28 >> 2] | 0 } while (!(ve(u, p) | 0)); if (!(c[m >> 2] | 0)) { f = 1; continue } while (1) { ue(u); if (!(c[m >> 2] | 0)) { f = 1; continue a } } } if (!f) break } we(u, c[q >> 2] | 0, 0); n = u + 100 | 0; we(u, c[n >> 2] | 0, 0); o = c[q >> 2] | 0; p = c[n >> 2] | 0; e = c[r >> 2] | 0; h = c[t >> 2] | 0; f = h + 104 | 0; while (1) { g = c[f >> 2] | 0; if (!g) break; else f = g } k = k - j + e | 0; e = h + 72 | 0; g = c[e >> 2] | 0; b: do if (g | 0) while (1) { j = g; while (1) { g = j + 5 | 0; h = d[g >> 0] | 0; if (!(h & 3)) break; a[g >> 0] = h | 8; c[e >> 2] = c[j >> 2]; c[j >> 2] = c[f >> 2]; c[f >> 2] = j; f = c[e >> 2] | 0; if (!f) break b; else { h = j; j = f; f = h } } g = c[j >> 2] | 0; if (!g) break; else e = j } while (0); e = c[u + 104 >> 2] | 0; if (e | 0) { f = u + 60 | 0; do { j = e + 5 | 0; a[j >> 0] = d[f >> 0] & 3 | d[j >> 0] & 184; ke(u, e); e = c[e >> 2] | 0 } while ((e | 0) != 0) } if (c[m >> 2] | 0) do ue(u); while ((c[m >> 2] | 0) != 0); g = c[r >> 2] | 0; while (1) { e = c[l >> 2] | 0; c[l >> 2] = 0; f = 0; c: while (1) { do { if (!e) break c; j = e; e = c[e + 28 >> 2] | 0 } while (!(ve(u, j) | 0)); if (!(c[m >> 2] | 0)) { f = 1; continue } while (1) { ue(u); if (!(c[m >> 2] | 0)) { f = 1; continue c } } } if (!f) break } m = k - g | 0; e = c[l >> 2] | 0; if (e | 0) do { k = a[e + 7 >> 0] | 0; f = c[e + 16 >> 2] | 0; l = f + (1 << (k & 255) << 5) | 0; if (k << 24 >> 24 != 31) do { g = f + 8 | 0; do if (c[g >> 2] | 0) { h = f + 24 | 0; j = c[h >> 2] | 0; if (!(j & 64)) break; k = c[f + 16 >> 2] | 0; if ((j & 15 | 0) != 4) { if (!(a[k + 5 >> 0] & 3)) break; c[g >> 2] = 0; c[h >> 2] = 11; break } if (!k) break; if (!(a[k + 5 >> 0] & 3)) break; ke(u, k) } while (0); f = f + 32 | 0 } while (f >>> 0 < l >>> 0); e = c[e + 28 >> 2] | 0 } while ((e | 0) != 0); e = c[n >> 2] | 0; if (e | 0) do { k = a[e + 7 >> 0] | 0; f = c[e + 16 >> 2] | 0; l = f + (1 << (k & 255) << 5) | 0; if (k << 24 >> 24 != 31) do { g = f + 8 | 0; do if (c[g >> 2] | 0) { h = f + 24 | 0; j = c[h >> 2] | 0; if (!(j & 64)) break; k = c[f + 16 >> 2] | 0; if ((j & 15 | 0) != 4) { if (!(a[k + 5 >> 0] & 3)) break; c[g >> 2] = 0; c[h >> 2] = 11; break } if (!k) break; if (!(a[k + 5 >> 0] & 3)) break; ke(u, k) } while (0); f = f + 32 | 0 } while (f >>> 0 < l >>> 0); e = c[e + 28 >> 2] | 0 } while ((e | 0) != 0); we(u, c[q >> 2] | 0, o); we(u, c[n >> 2] | 0, p); k = u + 60 | 0; a[k >> 0] = d[k >> 0] ^ 3; k = m + (c[r >> 2] | 0) | 0; c[s >> 2] = (c[s >> 2] | 0) + k; j = c[t >> 2] | 0; a[j + 61 >> 0] = 2; c[j + 64 >> 2] = 0; e = j + 72 | 0; h = 0; do { h = h + 1 | 0; f = qe(b, e, 1) | 0 } while ((f | 0) == (e | 0)); c[j + 80 >> 2] = f; f = j + 68 | 0; e = 0; do { e = e + 1 | 0; g = qe(b, f, 1) | 0 } while ((g | 0) == (f | 0)); c[j + 76 >> 2] = g; b = ((e + h | 0) * 5 | 0) + k | 0; i = v; return b | 0 } case 2: { l = u + 64 | 0; k = u + 32 | 0; j = u + 24 | 0; g = 0; while (1) { f = c[l >> 2] | 0; h = f + g | 0; e = c[k >> 2] | 0; if ((h | 0) >= (e | 0)) break; qe(b, (c[j >> 2] | 0) + (h << 2) | 0, -3) | 0; g = g + 1 | 0; if ((g | 0) >= 80) { m = 93; break } } if ((m | 0) == 93) { f = c[l >> 2] | 0; e = c[k >> 2] | 0 } b = f + g | 0; c[l >> 2] = b; if ((b | 0) >= (e | 0)) a[n >> 0] = 3; b = g * 5 | 0; i = v; return b | 0 } case 3: { e = u + 80 | 0; f = c[e >> 2] | 0; if (!f) { a[n >> 0] = 4; b = 0; i = v; return b | 0 } else { c[e >> 2] = qe(b, f, 80) | 0; b = 400; i = v; return b | 0 } } case 4: { e = u + 76 | 0; f = c[e >> 2] | 0; if (f | 0) { c[e >> 2] = qe(b, f, 80) | 0; b = 400; i = v; return b | 0 } c[g >> 2] = c[u + 172 >> 2]; qe(b, g, 1) | 0; e = c[t >> 2] | 0; if ((a[e + 62 >> 0] | 0) != 1) { f = (c[e + 32 >> 2] | 0) / 2 | 0; if ((c[e + 28 >> 2] | 0) >>> 0 < f >>> 0) Lf(b, f); t = e + 144 | 0; u = e + 152 | 0; c[t >> 2] = Ue(b, c[t >> 2] | 0, c[u >> 2] | 0, 0) | 0; c[u >> 2] = 0 } a[n >> 0] = 5; b = 5; i = v; return b | 0 } default: { b = 0; i = v; return b | 0 } }return 0 } function te(b) { b = b | 0; var d = 0; d = c[b + 252 >> 2] | 0; if (d | 0 ? a[d + 5 >> 0] & 3 : 0) ke(b, d); d = c[b + 256 >> 2] | 0; if (d | 0 ? a[d + 5 >> 0] & 3 : 0) ke(b, d); d = c[b + 260 >> 2] | 0; if (d | 0 ? a[d + 5 >> 0] & 3 : 0) ke(b, d); d = c[b + 264 >> 2] | 0; if (d | 0 ? a[d + 5 >> 0] & 3 : 0) ke(b, d); d = c[b + 268 >> 2] | 0; if (d | 0 ? a[d + 5 >> 0] & 3 : 0) ke(b, d); d = c[b + 272 >> 2] | 0; if (d | 0 ? a[d + 5 >> 0] & 3 : 0) ke(b, d); d = c[b + 276 >> 2] | 0; if (d | 0 ? a[d + 5 >> 0] & 3 : 0) ke(b, d); d = c[b + 280 >> 2] | 0; if (d | 0 ? a[d + 5 >> 0] & 3 : 0) ke(b, d); d = c[b + 284 >> 2] | 0; if (!d) return; if (!(a[d + 5 >> 0] & 3)) return; ke(b, d); return } function ue(b) { b = b | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0; f = b + 84 | 0; t = c[f >> 2] | 0; h = t + 5 | 0; a[h >> 0] = d[h >> 0] | 4; e = c[t + 4 >> 2] | 0; g = e >>> 16; i = g & 255; switch ((e & 255) << 24 >> 24) { case 5: { k = t + 28 | 0; c[f >> 2] = c[k >> 2]; g = t + 24 | 0; f = c[g >> 2] | 0; do if (f) { if (!(a[f + 6 >> 0] & 8)) { e = bg(f, 3, c[b + 196 >> 2] | 0) | 0; f = c[g >> 2] | 0; if (f) q = 5 } else { e = 0; q = 5 } if ((q | 0) == 5) if (a[f + 5 >> 0] & 3) ke(b, f); if (((e | 0) != 0 ? (c[e + 8 >> 2] & 15 | 0) == 4 : 0) ? (m = (c[e >> 2] | 0) + 16 | 0, l = pm(m, 107) | 0, l = (l | 0) != 0, m = (pm(m, 118) | 0) != 0, l | m) : 0) { a[h >> 0] = d[h >> 0] & 251; if (l) if (m) { s = b + 100 | 0; c[k >> 2] = c[s >> 2]; c[s >> 2] = t; break } else { ve(b, t) | 0; break } s = a[t + 7 >> 0] | 0; f = c[t + 16 >> 2] | 0; j = f + (1 << (s & 255) << 5) | 0; e = (c[t + 8 >> 2] | 0) > 0 & 1; if (s << 24 >> 24 != 31) do { g = f + 8 | 0; h = f + 24 | 0; i = (c[h >> 2] & 64 | 0) == 0; if (!(c[g >> 2] | 0)) { if (!i ? (a[(c[f + 16 >> 2] | 0) + 5 >> 0] & 3) != 0 : 0) c[h >> 2] = 11 } else { if (!i ? (p = c[f + 16 >> 2] | 0, a[p + 5 >> 0] & 3) : 0) ke(b, p); if (!e) { e = c[g >> 2] | 0; do if (e & 64) { g = c[f >> 2] | 0; if ((e & 15 | 0) != 4) { e = d[g + 5 >> 0] & 3; break } if ((g | 0) != 0 ? (a[g + 5 >> 0] & 3) != 0 : 0) { ke(b, g); e = 0 } else e = 0 } else e = 0; while (0); e = (e | 0) != 0 & 1 } } f = f + 32 | 0 } while (f >>> 0 < j >>> 0); if (!e) { s = b + 88 | 0; c[k >> 2] = c[s >> 2]; c[s >> 2] = t; break } else { s = b + 92 | 0; c[k >> 2] = c[s >> 2]; c[s >> 2] = t; break } } else q = 34 } else q = 34; while (0); if ((q | 0) == 34) { i = t + 16 | 0; e = c[i >> 2] | 0; k = e + (1 << d[t + 7 >> 0] << 5) | 0; j = t + 8 | 0; f = c[j >> 2] | 0; if ((f | 0) > 0) { h = t + 12 | 0; g = 0; e = f; do { f = c[h >> 2] | 0; if ((c[f + (g << 4) + 8 >> 2] & 64 | 0) != 0 ? (o = c[f + (g << 4) >> 2] | 0, (a[o + 5 >> 0] & 3) != 0) : 0) { ke(b, o); e = c[j >> 2] | 0 } g = g + 1 | 0 } while ((g | 0) < (e | 0)); e = c[i >> 2] | 0 } if (e >>> 0 < k >>> 0) do { g = e + 8 | 0; f = c[g >> 2] | 0; h = e + 24 | 0; i = (c[h >> 2] & 64 | 0) == 0; if (!f) { if (!i ? a[(c[e + 16 >> 2] | 0) + 5 >> 0] & 3 : 0) c[h >> 2] = 11 } else { if (!i ? (r = c[e + 16 >> 2] | 0, (a[r + 5 >> 0] & 3) != 0) : 0) { ke(b, r); f = c[g >> 2] | 0 } if (f & 64 | 0 ? (s = c[e >> 2] | 0, a[s + 5 >> 0] & 3) : 0) ke(b, s) } e = e + 32 | 0 } while (e >>> 0 < k >>> 0) } e = (c[t + 8 >> 2] << 4) + 32 + (32 << d[t + 7 >> 0]) | 0; break } case 6: { c[f >> 2] = c[t + 8 >> 2]; e = c[t + 12 >> 2] | 0; if ((e | 0) != 0 ? (a[e + 5 >> 0] & 3) != 0 : 0) { ke(b, e); e = a[t + 6 >> 0] | 0 } else e = i; h = t + 6 | 0; if (!(e << 24 >> 24)) e = e & 255; else { g = 0; while (1) { f = c[t + 16 + (g << 2) >> 2] | 0; if ((f | 0) != 0 ? (a[f + 5 >> 0] & 3) != 0 : 0) { ke(b, f); f = a[h >> 0] | 0 } else f = e; g = g + 1 | 0; e = f & 255; if ((g | 0) >= (e | 0)) break; else e = f } } e = (e << 2) + 16 | 0; break } case 38: { c[f >> 2] = c[t + 8 >> 2]; h = t + 6 | 0; if (!(i << 24 >> 24)) e = g & 255; else { g = 0; e = i; while (1) { if ((c[t + 16 + (g << 4) + 8 >> 2] & 64 | 0) != 0 ? (j = c[t + 16 + (g << 4) >> 2] | 0, (a[j + 5 >> 0] & 3) != 0) : 0) { ke(b, j); f = a[h >> 0] | 0 } else f = e; g = g + 1 | 0; e = f & 255; if ((g | 0) >= (e | 0)) break; else e = f } } e = (e << 4) + 16 | 0; break } case 8: { r = t + 60 | 0; c[f >> 2] = c[r >> 2]; s = b + 88 | 0; c[r >> 2] = c[s >> 2]; c[s >> 2] = t; a[h >> 0] = e >>> 8 & 251; h = t + 28 | 0; e = c[h >> 2] | 0; if (!e) e = 1; else { g = t + 8 | 0; f = c[g >> 2] | 0; if (e >>> 0 < f >>> 0) do { if ((c[e + 8 >> 2] & 64 | 0) != 0 ? (k = c[e >> 2] | 0, (a[k + 5 >> 0] & 3) != 0) : 0) { ke(b, k); f = c[g >> 2] | 0 } e = e + 16 | 0 } while (e >>> 0 < f >>> 0); if ((a[b + 61 >> 0] | 0) == 1) { f = (c[h >> 2] | 0) + (c[t + 32 >> 2] << 4) | 0; if (e >>> 0 < f >>> 0) { do { c[e + 8 >> 2] = 0; e = e + 16 | 0 } while (e >>> 0 < f >>> 0); e = 112 } else e = 112 } else { e = t + 72 | 0; g = c[t + 16 >> 2] | 0; if ((e | 0) == (g | 0)) e = 112; else { f = 0; do { f = f + 1 | 0; e = c[e + 12 >> 2] | 0 } while ((e | 0) != (g | 0)); e = (f * 40 | 0) + 112 | 0 } } e = (c[t + 32 >> 2] << 4) + e | 0 } break } case 9: { c[f >> 2] = c[t + 72 >> 2]; e = t + 32 | 0; s = c[e >> 2] | 0; if (s | 0 ? a[s + 5 >> 0] & 3 : 0) c[e >> 2] = 0; e = c[t + 36 >> 2] | 0; if (e | 0 ? a[e + 5 >> 0] & 3 : 0) ke(b, e); l = t + 44 | 0; e = c[l >> 2] | 0; if ((e | 0) > 0) { h = t + 8 | 0; g = 0; do { f = c[h >> 2] | 0; if ((c[f + (g << 4) + 8 >> 2] & 64 | 0) != 0 ? (n = c[f + (g << 4) >> 2] | 0, (a[n + 5 >> 0] & 3) != 0) : 0) { ke(b, n); e = c[l >> 2] | 0 } g = g + 1 | 0 } while ((g | 0) < (e | 0)) } k = t + 40 | 0; e = c[k >> 2] | 0; if ((e | 0) > 0) { h = t + 28 | 0; g = 0; do { f = c[(c[h >> 2] | 0) + (g << 3) >> 2] | 0; if ((f | 0) != 0 ? (a[f + 5 >> 0] & 3) != 0 : 0) { ke(b, f); e = c[k >> 2] | 0 } g = g + 1 | 0 } while ((g | 0) < (e | 0)) } j = t + 56 | 0; e = c[j >> 2] | 0; if ((e | 0) > 0) { h = t + 16 | 0; g = 0; do { f = c[(c[h >> 2] | 0) + (g << 2) >> 2] | 0; if ((f | 0) != 0 ? (a[f + 5 >> 0] & 3) != 0 : 0) { ke(b, f); e = c[j >> 2] | 0 } g = g + 1 | 0 } while ((g | 0) < (e | 0)) } i = t + 60 | 0; f = c[i >> 2] | 0; if ((f | 0) > 0) { h = t + 24 | 0; g = 0; do { e = c[(c[h >> 2] | 0) + (g * 12 | 0) >> 2] | 0; if ((e | 0) != 0 ? (a[e + 5 >> 0] & 3) != 0 : 0) { ke(b, e); f = c[i >> 2] | 0 } g = g + 1 | 0 } while ((g | 0) < (f | 0)); e = c[j >> 2] | 0 } e = (f * 12 | 0) + 80 + (c[l >> 2] << 4) + (c[k >> 2] << 3) + ((c[t + 48 >> 2] | 0) + e + (c[t + 52 >> 2] | 0) << 2) | 0; break } default: return }b = b + 16 | 0; c[b >> 2] = (c[b >> 2] | 0) + e; return } function ve(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; m = e + 16 | 0; g = c[m >> 2] | 0; p = g + (1 << d[e + 7 >> 0] << 5) | 0; l = e + 8 | 0; h = c[l >> 2] | 0; if ((h | 0) > 0) { j = e + 12 | 0; f = 0; i = 0; do { g = c[j >> 2] | 0; if ((c[g + (i << 4) + 8 >> 2] & 64 | 0) != 0 ? (k = c[g + (i << 4) >> 2] | 0, (a[k + 5 >> 0] & 3) != 0) : 0) { ke(b, k); f = 1; h = c[l >> 2] | 0 } i = i + 1 | 0 } while ((i | 0) < (h | 0)); g = c[m >> 2] | 0 } else f = 0; if (g >>> 0 < p >>> 0) { n = g; h = 0; g = 0; do { k = n + 8 | 0; l = c[k >> 2] | 0; i = n + 24 | 0; m = c[i >> 2] | 0; j = (m & 64 | 0) == 0; a: do if (!l) { if (!j ? (a[(c[n + 16 >> 2] | 0) + 5 >> 0] & 3) != 0 : 0) c[i >> 2] = 11 } else { do if (j) { o = l; q = 18 } else { j = c[n + 16 >> 2] | 0; if ((m & 15 | 0) == 4) { if (!j) { o = l; q = 18; break } if (!(a[j + 5 >> 0] & 3)) { o = l; q = 18; break } ke(b, j); o = c[k >> 2] | 0; q = 18; break } i = (l & 64 | 0) == 0; if (!(a[j + 5 >> 0] & 3)) if (i) break a; else break; if (i) { g = 1; break a } h = (a[(c[n >> 2] | 0) + 5 >> 0] & 3) == 0 ? h : 1; g = 1; break a } while (0); if ((q | 0) == 18 ? (q = 0, (o & 64 | 0) == 0) : 0) break; i = c[n >> 2] | 0; if (a[i + 5 >> 0] & 3) { ke(b, i); f = 1 } } while (0); n = n + 32 | 0 } while (n >>> 0 < p >>> 0) } else { h = 0; g = 0 } if ((h | 0) != 0 | (a[b + 61 >> 0] | 0) != 1) { b = b + 96 | 0; c[e + 28 >> 2] = c[b >> 2]; c[b >> 2] = e; return f | 0 } if (!g) { b = b + 88 | 0; c[e + 28 >> 2] = c[b >> 2]; c[b >> 2] = e; return f | 0 } else { b = b + 100 | 0; c[e + 28 >> 2] = c[b >> 2]; c[b >> 2] = e; return f | 0 } return 0 } function we(b, e, f) { b = b | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0; if ((e | 0) == (f | 0)) return; do { k = e + 16 | 0; g = c[k >> 2] | 0; l = g + (1 << (d[e + 7 >> 0] | 0) << 5) | 0; j = e + 8 | 0; if ((c[j >> 2] | 0) > 0) { h = e + 12 | 0; g = 0; do { i = c[h >> 2] | 0; if (xe(b, i + (g << 4) | 0) | 0) c[i + (g << 4) + 8 >> 2] = 0; g = g + 1 | 0 } while ((g | 0) < (c[j >> 2] | 0)); g = c[k >> 2] | 0 } if (g >>> 0 < l >>> 0) do { h = g + 8 | 0; if (((c[h >> 2] | 0 ? xe(b, g) | 0 : 0) ? (c[h >> 2] = 0, m = g + 24 | 0, c[m >> 2] & 64 | 0) : 0) ? a[(c[g + 16 >> 2] | 0) + 5 >> 0] & 3 : 0) c[m >> 2] = 11; g = g + 32 | 0 } while (g >>> 0 < l >>> 0); e = c[e + 28 >> 2] | 0 } while ((e | 0) != (f | 0)); return } function xe(b, e) { b = b | 0; e = e | 0; var f = 0; f = c[e + 8 >> 2] | 0; if (!(f & 64)) { f = 0; return f | 0 } e = c[e >> 2] | 0; if ((f & 15 | 0) != 4) { f = (d[e + 5 >> 0] | 0) & 3; return f | 0 } if (!e) { f = 0; return f | 0 } if (!(a[e + 5 >> 0] & 3)) { f = 0; return f | 0 } ke(b, e); f = 0; return f | 0 } function ye(a, b) { a = a | 0; b = b | 0; var e = 0; e = (c[a + 12 >> 2] | 0) + 61 | 0; if (1 << (d[e >> 0] | 0) & b | 0) return; do se(a) | 0; while (!(1 << (d[e >> 0] | 0) & b | 0)); return } function ze(b) { b = b | 0; var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0; h = b + 12 | 0; j = c[h >> 2] | 0; f = j + 104 | 0; while (1) { e = c[f >> 2] | 0; if (!e) break; else f = e } i = j + 72 | 0; g = c[i >> 2] | 0; if (!g) e = j; else { while (1) { e = g + 5 | 0; a[e >> 0] = d[e >> 0] | 0 | 8; c[i >> 2] = c[g >> 2]; c[g >> 2] = c[f >> 2]; c[f >> 2] = g; e = c[i >> 2] | 0; if (!e) break; else { f = g; g = e } } e = c[h >> 2] | 0 } f = e + 104 | 0; e = c[f >> 2] | 0; if (e | 0) do { h = e + 5 | 0; a[h >> 0] = (d[h >> 0] | 0) & 191; Ae(b, 0); e = c[f >> 2] | 0 } while ((e | 0) != 0); a[j + 60 >> 0] = 3; a[j + 62 >> 0] = 0; qe(b, i, -3) | 0; qe(b, j + 68 | 0, -3) | 0; g = j + 32 | 0; if ((c[g >> 2] | 0) <= 0) return; f = j + 24 | 0; e = 0; do { qe(b, (c[f >> 2] | 0) + (e << 2) | 0, -3) | 0; e = e + 1 | 0 } while ((e | 0) < (c[g >> 2] | 0)); return } function Ae(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0; m = i; i = i + 32 | 0; n = m + 16 | 0; l = m; k = c[b + 12 >> 2] | 0; f = k + 104 | 0; h = c[f >> 2] | 0; c[f >> 2] = c[h >> 2]; f = k + 68 | 0; c[h >> 2] = c[f >> 2]; c[f >> 2] = h; f = h + 5 | 0; g = d[f >> 0] | 0; a[f >> 0] = g & 239; if ((d[k + 61 >> 0] | 0) >= 2) a[f >> 0] = (d[k + 60 >> 0] | 0) & 3 | g & 168; c[l >> 2] = h; j = l + 8 | 0; c[j >> 2] = d[h + 4 >> 0] | 0 | 64; f = cg(b, l, 2) | 0; if (!f) { i = m; return } g = f + 8 | 0; if ((c[g >> 2] & 15 | 0) != 6) { i = m; return } p = b + 41 | 0; q = a[p >> 0] | 0; k = k + 63 | 0; o = a[k >> 0] | 0; a[p >> 0] = 0; a[k >> 0] = 0; h = b + 8 | 0; r = c[h >> 2] | 0; t = f; s = c[t + 4 >> 2] | 0; f = r; c[f >> 2] = c[t >> 2]; c[f + 4 >> 2] = s; c[r + 8 >> 2] = c[g >> 2]; f = c[h >> 2] | 0; r = l; g = c[r + 4 >> 2] | 0; l = f + 16 | 0; c[l >> 2] = c[r >> 2]; c[l + 4 >> 2] = g; c[f + 24 >> 2] = c[j >> 2]; f = c[h >> 2] | 0; c[h >> 2] = f + 32; f = Xd(b, 23, 0, f - (c[b + 28 >> 2] | 0) | 0, 0) | 0; a[p >> 0] = q; a[k >> 0] = o; if (!((e | 0) != 0 & (f | 0) != 0)) { i = m; return } if ((f | 0) != 2) { t = f; Ld(b, t) } f = c[h >> 2] | 0; if ((c[f + -8 >> 2] & 15 | 0) == 4) f = (c[f + -16 >> 2] | 0) + 16 | 0; else f = 3308; c[n >> 2] = f; af(b, 3319, n) | 0; t = 5; Ld(b, t) } function Be(a, b) { a = a | 0; b = b | 0; Wd(a, (c[a + 8 >> 2] | 0) + -32 | 0, 0, 0); return } function Ce(b) { b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0; j = c[b + 12 >> 2] | 0; do if ((a[j + 62 >> 0] | 0) == 2) { h = j + 20 | 0; d = c[h >> 2] | 0; if (!d) { De(b, 0); d = c[j + 8 >> 2] | 0; i = c[j + 12 >> 2] | 0; f = j + 61 | 0; e = i; g = d; d = i + d | 0 } else { f = j + 61 | 0; if ((a[f >> 0] | 0) != 5) do se(b) | 0; while ((a[f >> 0] | 0) != 5); a[f >> 0] = 0; g = c[j + 8 >> 2] | 0; e = c[j + 12 >> 2] | 0; i = (e + g | 0) >>> 0 > (R(c[j + 160 >> 2] | 0, (d >>> 0) / 100 | 0) | 0) >>> 0; d = i ? 0 : d } c[h >> 2] = d; i = g + e | 0; g = (i | 0) / 100 | 0; e = c[j + 156 >> 2] | 0; h = R(e, 0 - g | 0) | 0; Ef(j, ((e | 0) < (2147483644 / (g | 0) | 0 | 0) ? h : -2147483644) + i | 0) } else { g = j + 12 | 0; d = c[j + 164 >> 2] | 0; d = (d | 0) < 40 ? 40 : d; h = ((c[g >> 2] | 0) / 200 | 0) + 1 | 0; e = R(d, h) | 0; f = j + 61 | 0; e = (h | 0) < (2147483644 / (d | 0) | 0 | 0) ? e : 2147483644; do { e = e - (se(b) | 0) | 0; h = (a[f >> 0] | 0) == 5; if ((e | 0) <= -1600) { i = 11; break } } while (!h); if ((i | 0) == 11 ? !h : 0) { Ef(j, ((e | 0) / (d | 0) | 0) * 200 | 0); break } h = (c[j + 20 >> 2] | 0) / 100 | 0; e = c[j + 156 >> 2] | 0; i = R(e, 0 - h | 0) | 0; Ef(j, (c[g >> 2] | 0) + (c[j + 8 >> 2] | 0) + ((e | 0) < (2147483644 / (h | 0) | 0 | 0) ? i : -2147483644) | 0) } while (0); e = j + 104 | 0; if (!(c[e >> 2] | 0)) return; else d = 0; while (1) { if ((d | 0) >= 4 ? (a[f >> 0] | 0) != 5 : 0) { i = 18; break } Ae(b, 1); if (!(c[e >> 2] | 0)) { i = 18; break } else d = d + 1 | 0 } if ((i | 0) == 18) return } function De(b, e) { b = b | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0; i = b + 12 | 0; j = c[i >> 2] | 0; k = j + 62 | 0; l = a[k >> 0] | 0; h = (e | 0) != 0; if (!h) { a[k >> 0] = 0; f = j + 104 | 0; e = c[f >> 2] | 0; if (e) { do { g = e + 5 | 0; a[g >> 0] = d[g >> 0] & 191; Ae(b, 1); e = c[f >> 2] | 0 } while ((e | 0) != 0); if ((a[k >> 0] | 0) == 2) e = 7; else e = 6 } else e = 6 } else { a[k >> 0] = 1; e = 6 } if ((e | 0) == 6 ? (d[j + 61 >> 0] | 0) < 2 : 0) e = 7; if ((e | 0) == 7) { g = c[i >> 2] | 0; a[g + 61 >> 0] = 2; c[g + 64 >> 2] = 0; e = g + 72 | 0; do f = qe(b, e, 1) | 0; while ((f | 0) == (e | 0)); c[g + 80 >> 2] = f; e = g + 68 | 0; do f = qe(b, e, 1) | 0; while ((f | 0) == (e | 0)); c[g + 76 >> 2] = f } e = c[i >> 2] | 0; f = e + 61 | 0; if ((a[f >> 0] | 0) == 5) g = 5; else { do se(b) | 0; while ((a[f >> 0] | 0) != 5); g = c[i >> 2] | 0; e = g; g = a[g + 61 >> 0] | 0 } f = e + 61 | 0; if (!(1 << (g & 255) & -33)) { do se(b) | 0; while (!(1 << d[f >> 0] & -33 | 0)); f = c[i >> 2] | 0; e = f; f = a[f + 61 >> 0] | 0 } else f = g; e = e + 61 | 0; if (f << 24 >> 24 != 5) do se(b) | 0; while ((a[e >> 0] | 0) != 5); if (l << 24 >> 24 == 2 ? (m = (c[i >> 2] | 0) + 61 | 0, a[m >> 0] | 0) : 0) do se(b) | 0; while ((a[m >> 0] | 0) != 0); a[k >> 0] = l; m = (c[j + 12 >> 2] | 0) + (c[j + 8 >> 2] | 0) | 0; k = (m | 0) / 100 | 0; g = c[j + 156 >> 2] | 0; l = R(k, 0 - g | 0) | 0; Ef(j, ((g | 0) < (2147483644 / (k | 0) | 0 | 0) ? l : -2147483644) + m | 0); if (h) return; f = (c[i >> 2] | 0) + 104 | 0; e = c[f >> 2] | 0; if (!e) return; do { m = e + 5 | 0; a[m >> 0] = d[m >> 0] & 191; Ae(b, 1); e = c[f >> 2] | 0 } while ((e | 0) != 0); return } function Ee(b) { b = b | 0; var d = 0; d = c[b + 12 >> 2] | 0; if (!(a[d + 63 >> 0] | 0)) { Ef(d, -1600); return } else { Ce(b); return } } function Fe(b) { b = b | 0; var e = 0, f = 0, g = 0; e = 0; do { f = Nf(b, c[16 + (e << 2) >> 2] | 0) | 0; g = f + 5 | 0; a[g >> 0] = d[g >> 0] | 0 | 32; e = e + 1 | 0; a[f + 6 >> 0] = e } while ((e | 0) != 22); return } function Ge(b, d) { b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 32 | 0; h = j + 16 | 0; g = j + 8 | 0; f = j; if ((d | 0) >= 257) { e = c[16 + (d + -257 << 2) >> 2] | 0; if ((d | 0) >= 286) { d = e; i = j; return d | 0 } d = c[b + 52 >> 2] | 0; c[h >> 2] = e; d = af(d, 3483, h) | 0; i = j; return d | 0 } e = c[b + 52 >> 2] | 0; if (!(a[2581 + (d + 1) >> 0] & 4)) { c[g >> 2] = d; d = af(e, 3474, g) | 0; i = j; return d | 0 } else { c[f >> 2] = d; d = af(e, 3469, f) | 0; i = j; return d | 0 } return 0 } function He(a, b) { a = a | 0; b = b | 0; Ie(a, b, c[a + 16 >> 2] | 0) } function Ie(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0; r = i; i = i + 128 | 0; q = r + 48 | 0; h = r + 40 | 0; g = r + 32 | 0; f = r + 24 | 0; m = r + 16 | 0; n = r; r = r + 56 | 0; bf(r, (c[b + 68 >> 2] | 0) + 16 | 0, 60); p = b + 52 | 0; o = c[p >> 2] | 0; j = c[b + 4 >> 2] | 0; c[n >> 2] = r; c[n + 4 >> 2] = j; c[n + 8 >> 2] = d; n = af(o, 3488, n) | 0; if (!e) { r = c[p >> 2] | 0; Ld(r, 3) } o = c[p >> 2] | 0; do if ((e + -287 | 0) >>> 0 >= 3) { if ((e | 0) >= 257) { d = c[16 + (e + -257 << 2) >> 2] | 0; if ((e | 0) >= 286) break; c[h >> 2] = d; d = af(o, 3483, h) | 0; break } if (!(a[2581 + (e + 1) >> 0] & 4)) { c[g >> 2] = e; d = af(o, 3474, g) | 0; break } else { c[f >> 2] = e; d = af(o, 3469, f) | 0; break } } else { f = b + 60 | 0; g = c[f >> 2] | 0; e = g + 4 | 0; d = c[e >> 2] | 0; h = g + 8 | 0; j = c[h >> 2] | 0; do if ((d + 1 | 0) >>> 0 > j >>> 0) { if (j >>> 0 > 2147483645) Ie(b, 3498, 0); d = j << 1; if ((d | 0) == -2) Te(o); else { l = Ue(o, c[g >> 2] | 0, j, d) | 0; c[g >> 2] = l; c[h >> 2] = d; k = c[e >> 2] | 0; break } } else { k = d; l = c[g >> 2] | 0 } while (0); c[e >> 2] = k + 1; a[l + k >> 0] = 0; d = c[p >> 2] | 0; c[m >> 2] = c[c[f >> 2] >> 2]; d = af(d, 3483, m) | 0 } while (0); c[q >> 2] = n; c[q + 4 >> 2] = d; af(o, 3523, q) | 0; r = c[p >> 2] | 0; Ld(r, 3) } function Je(a, b, e) { a = a | 0; b = b | 0; e = e | 0; var f = 0, g = 0; g = c[a + 52 >> 2] | 0; b = Mf(g, b, e) | 0; f = g + 8 | 0; e = c[f >> 2] | 0; c[f >> 2] = e + 16; c[e >> 2] = b; c[e + 8 >> 2] = d[b + 4 >> 0] | 0 | 64; e = Vf(g, c[(c[a + 48 >> 2] | 0) + 4 >> 2] | 0, (c[f >> 2] | 0) + -16 | 0) | 0; a = e + 8 | 0; if (!(c[a >> 2] | 0)) { c[e >> 2] = 1; c[a >> 2] = 1; if ((c[(c[g + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) Ee(g) } else b = c[e + 16 >> 2] | 0; c[f >> 2] = (c[f >> 2] | 0) + -16; return b | 0 } function Ke(b, e, f, g, h) { b = b | 0; e = e | 0; f = f | 0; g = g | 0; h = h | 0; var i = 0; a[e + 76 >> 0] = 46; i = e + 52 | 0; c[i >> 2] = b; c[e >> 2] = h; c[e + 32 >> 2] = 286; c[e + 56 >> 2] = f; c[e + 48 >> 2] = 0; c[e + 4 >> 2] = 1; c[e + 8 >> 2] = 1; c[e + 68 >> 2] = g; h = Nf(b, 3534) | 0; c[e + 72 >> 2] = h; h = h + 5 | 0; a[h >> 0] = d[h >> 0] | 0 | 32; h = e + 60 | 0; g = c[h >> 2] | 0; g = Ue(c[i >> 2] | 0, c[g >> 2] | 0, c[g + 8 >> 2] | 0, 32) | 0; h = c[h >> 2] | 0; c[h >> 2] = g; c[h + 8 >> 2] = 32; return } function Le(a) { a = a | 0; var b = 0; c[a + 8 >> 2] = c[a + 4 >> 2]; b = a + 32 | 0; if ((c[b >> 2] | 0) == 286) { c[a + 16 >> 2] = Me(a, a + 24 | 0) | 0; return } else { a = a + 16 | 0; c[a >> 2] = c[b >> 2]; c[a + 4 >> 2] = c[b + 4 >> 2]; c[a + 8 >> 2] = c[b + 8 >> 2]; c[a + 12 >> 2] = c[b + 12 >> 2]; c[b >> 2] = 286; return } } + function Xm(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0; l = i; i = i + 64 | 0; g = l + 32 | 0; j = l + 24 | 0; h = l + 8 | 0; b = l; k = l + 40 | 0; f = l + 48 | 0; c[k >> 2] = a; if (!a) c[k >> 2] = 15617; c[b >> 2] = 12909; c[b + 4 >> 2] = 7; if (!(Ha(33, b | 0) | 0)) { d = f + 4 | 0; e = k; a = 0; while (1) { c[h >> 2] = 0; c[h + 4 >> 2] = f; c[h + 8 >> 2] = 0; ka(265, h | 0) | 0; b = c[k >> 2] | 0; m = c[d >> 2] ^ e ^ b; n = c[3261] | 0; c[3261] = n + 1; c[j >> 2] = n; c[j + 4 >> 2] = m; Bl(b, 20, 12914, j) | 0; c[g >> 2] = c[k >> 2]; c[g + 4 >> 2] = 0; if (Ha(33, g | 0) | 0) break; b = a + 1 | 0; if ((a | 0) < 100) a = b; else { a = b; break } } a = (a | 0) > 99 ? 0 : c[k >> 2] | 0 } else a = 0; i = l; return a | 0 } function Ym(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 32 | 0; f = j + 16 | 0; e = j; g = rm(b) | 0; if ((c[d + 76 >> 2] | 0) > -1) h = Fl(d) | 0; else h = 0; um(d) | 0; do if (!a) { a = d + 60 | 0; if (g & 524288 | 0) { c[e >> 2] = c[a >> 2]; c[e + 4 >> 2] = 2; c[e + 8 >> 2] = 1; ia(221, e | 0) | 0 } c[f >> 2] = c[a >> 2]; c[f + 4 >> 2] = 4; c[f + 8 >> 2] = g & -524481; if ((Zk(ia(221, f | 0) | 0) | 0) < 0) a = 15; else a = 12 } else { a = qm(a, b) | 0; if (!a) a = 15; else { b = a + 60 | 0; e = c[b >> 2] | 0; f = c[d + 60 >> 2] | 0; if ((e | 0) != (f | 0)) { if ((Zm(e, f, g & 524288) | 0) < 0) { tm(a) | 0; a = 15; break } } else c[b >> 2] = -1; c[d >> 2] = c[d >> 2] & 1 | c[a >> 2]; c[d + 32 >> 2] = c[a + 32 >> 2]; c[d + 36 >> 2] = c[a + 36 >> 2]; c[d + 40 >> 2] = c[a + 40 >> 2]; c[d + 12 >> 2] = c[a + 12 >> 2]; tm(a) | 0; a = 12 } } while (0); if ((a | 0) == 12) { if (h) al(d) } else if ((a | 0) == 15) { tm(d) | 0; d = 0 } i = j; return d | 0 } function Zm(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0, g = 0, h = 0, j = 0, k = 0; k = i; i = i + 48 | 0; j = k + 24 | 0; h = k + 16 | 0; f = k; a: do if ((a | 0) == (b | 0)) d = Zk(-22) | 0; else { g = (d & 524288 | 0) != 0; b: do if (g) { c: while (1) { c[f >> 2] = a; c[f + 4 >> 2] = b; c[f + 8 >> 2] = d; e = ya(330, f | 0) | 0; switch (e | 0) { case -38: break b; case -16: break; default: break c } } d = Zk(e) | 0; break a } while (0); do { c[h >> 2] = a; c[h + 4 >> 2] = b; d = la(63, h | 0) | 0 } while ((d | 0) == -16); if (g) { c[j >> 2] = b; c[j + 4 >> 2] = 2; c[j + 8 >> 2] = 1; ia(221, j | 0) | 0 } d = Zk(d) | 0 } while (0); i = k; return d | 0 } function _m() { var a = 0, b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0; j = i; i = i + 48 | 0; g = j + 16 | 0; f = j; b = j + 20 | 0; a = 0; while (1) { d = Xm(b) | 0; if (!d) { a = 0; break } c[f >> 2] = d; c[f + 4 >> 2] = 32962; c[f + 8 >> 2] = 384; e = Zk(Qa(5, f | 0) | 0) | 0; a = a + 1 | 0; if ((e | 0) > -1) { h = 5; break } if ((a | 0) >= 100) { a = 0; break } } if ((h | 0) == 5) { a = sm(e, 12926) | 0; c[g >> 2] = d; Ma(10, g | 0) | 0 } i = j; return a | 0 } function $m(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0; L = i; i = i + 16 | 0; p = L; do if (a >>> 0 < 245) { o = a >>> 0 < 11 ? 16 : a + 11 & -8; a = o >>> 3; t = c[3262] | 0; d = t >>> a; if (d & 3 | 0) { a = (d & 1 ^ 1) + a | 0; d = 13088 + (a << 1 << 2) | 0; e = d + 8 | 0; f = c[e >> 2] | 0; g = f + 8 | 0; h = c[g >> 2] | 0; do if ((d | 0) != (h | 0)) { if (h >>> 0 < (c[3266] | 0) >>> 0) ma(); b = h + 12 | 0; if ((c[b >> 2] | 0) == (f | 0)) { c[b >> 2] = d; c[e >> 2] = h; break } else ma() } else c[3262] = t & ~(1 << a); while (0); K = a << 3; c[f + 4 >> 2] = K | 3; K = f + K + 4 | 0; c[K >> 2] = c[K >> 2] | 1; K = g; i = L; return K | 0 } s = c[3264] | 0; if (o >>> 0 > s >>> 0) { if (d | 0) { j = 2 << a; a = d << a & (j | 0 - j); a = (a & 0 - a) + -1 | 0; j = a >>> 12 & 16; a = a >>> j; e = a >>> 5 & 8; a = a >>> e; g = a >>> 2 & 4; a = a >>> g; d = a >>> 1 & 2; a = a >>> d; b = a >>> 1 & 1; b = (e | j | g | d | b) + (a >>> b) | 0; a = 13088 + (b << 1 << 2) | 0; d = a + 8 | 0; g = c[d >> 2] | 0; j = g + 8 | 0; e = c[j >> 2] | 0; do if ((a | 0) != (e | 0)) { if (e >>> 0 < (c[3266] | 0) >>> 0) ma(); f = e + 12 | 0; if ((c[f >> 2] | 0) == (g | 0)) { c[f >> 2] = a; c[d >> 2] = e; k = t; break } else ma() } else { k = t & ~(1 << b); c[3262] = k } while (0); h = (b << 3) - o | 0; c[g + 4 >> 2] = o | 3; e = g + o | 0; c[e + 4 >> 2] = h | 1; c[e + h >> 2] = h; if (s | 0) { f = c[3267] | 0; b = s >>> 3; d = 13088 + (b << 1 << 2) | 0; b = 1 << b; if (k & b) { b = d + 8 | 0; a = c[b >> 2] | 0; if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { l = a; m = b } } else { c[3262] = k | b; l = d; m = d + 8 | 0 } c[m >> 2] = f; c[l + 12 >> 2] = f; c[f + 8 >> 2] = l; c[f + 12 >> 2] = d } c[3264] = h; c[3267] = e; K = j; i = L; return K | 0 } l = c[3263] | 0; if (l) { a = (l & 0 - l) + -1 | 0; J = a >>> 12 & 16; a = a >>> J; I = a >>> 5 & 8; a = a >>> I; K = a >>> 2 & 4; a = a >>> K; j = a >>> 1 & 2; a = a >>> j; k = a >>> 1 & 1; k = c[13352 + ((I | J | K | j | k) + (a >>> k) << 2) >> 2] | 0; a = k; j = k; k = (c[k + 4 >> 2] & -8) - o | 0; while (1) { b = c[a + 16 >> 2] | 0; if (!b) { b = c[a + 20 >> 2] | 0; if (!b) break } K = (c[b + 4 >> 2] & -8) - o | 0; J = K >>> 0 < k >>> 0; a = b; j = J ? b : j; k = J ? K : k } f = c[3266] | 0; if (j >>> 0 < f >>> 0) ma(); h = j + o | 0; if (j >>> 0 >= h >>> 0) ma(); g = c[j + 24 >> 2] | 0; d = c[j + 12 >> 2] | 0; do if ((d | 0) == (j | 0)) { a = j + 20 | 0; b = c[a >> 2] | 0; if (!b) { a = j + 16 | 0; b = c[a >> 2] | 0; if (!b) { n = 0; break } } while (1) { d = b + 20 | 0; e = c[d >> 2] | 0; if (e | 0) { b = e; a = d; continue } d = b + 16 | 0; e = c[d >> 2] | 0; if (!e) break; else { b = e; a = d } } if (a >>> 0 < f >>> 0) ma(); else { c[a >> 2] = 0; n = b; break } } else { e = c[j + 8 >> 2] | 0; if (e >>> 0 < f >>> 0) ma(); b = e + 12 | 0; if ((c[b >> 2] | 0) != (j | 0)) ma(); a = d + 8 | 0; if ((c[a >> 2] | 0) == (j | 0)) { c[b >> 2] = d; c[a >> 2] = e; n = d; break } else ma() } while (0); do if (g | 0) { b = c[j + 28 >> 2] | 0; a = 13352 + (b << 2) | 0; if ((j | 0) == (c[a >> 2] | 0)) { c[a >> 2] = n; if (!n) { c[3263] = l & ~(1 << b); break } } else { if (g >>> 0 < (c[3266] | 0) >>> 0) ma(); b = g + 16 | 0; if ((c[b >> 2] | 0) == (j | 0)) c[b >> 2] = n; else c[g + 20 >> 2] = n; if (!n) break } a = c[3266] | 0; if (n >>> 0 < a >>> 0) ma(); c[n + 24 >> 2] = g; b = c[j + 16 >> 2] | 0; do if (b | 0) if (b >>> 0 < a >>> 0) ma(); else { c[n + 16 >> 2] = b; c[b + 24 >> 2] = n; break } while (0); b = c[j + 20 >> 2] | 0; if (b | 0) if (b >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[n + 20 >> 2] = b; c[b + 24 >> 2] = n; break } } while (0); if (k >>> 0 < 16) { K = k + o | 0; c[j + 4 >> 2] = K | 3; K = j + K + 4 | 0; c[K >> 2] = c[K >> 2] | 1 } else { c[j + 4 >> 2] = o | 3; c[h + 4 >> 2] = k | 1; c[h + k >> 2] = k; if (s | 0) { e = c[3267] | 0; b = s >>> 3; d = 13088 + (b << 1 << 2) | 0; b = 1 << b; if (t & b) { b = d + 8 | 0; a = c[b >> 2] | 0; if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { q = a; r = b } } else { c[3262] = t | b; q = d; r = d + 8 | 0 } c[r >> 2] = e; c[q + 12 >> 2] = e; c[e + 8 >> 2] = q; c[e + 12 >> 2] = d } c[3264] = k; c[3267] = h } K = j + 8 | 0; i = L; return K | 0 } } } else if (a >>> 0 <= 4294967231) { a = a + 11 | 0; o = a & -8; l = c[3263] | 0; if (l) { e = 0 - o | 0; a = a >>> 8; if (a) if (o >>> 0 > 16777215) k = 31; else { r = (a + 1048320 | 0) >>> 16 & 8; D = a << r; q = (D + 520192 | 0) >>> 16 & 4; D = D << q; k = (D + 245760 | 0) >>> 16 & 2; k = 14 - (q | r | k) + (D << k >>> 15) | 0; k = o >>> (k + 7 | 0) & 1 | k << 1 } else k = 0; a = c[13352 + (k << 2) >> 2] | 0; a: do if (!a) { d = 0; f = 0; D = 86 } else { f = 0; j = a; h = o << ((k | 0) == 31 ? 0 : 25 - (k >>> 1) | 0); d = 0; while (1) { a = (c[j + 4 >> 2] & -8) - o | 0; if (a >>> 0 < e >>> 0) if (!a) { a = j; e = 0; d = j; D = 90; break a } else { f = j; e = a } a = c[j + 20 >> 2] | 0; j = c[j + 16 + (h >>> 31 << 2) >> 2] | 0; d = (a | 0) == 0 | (a | 0) == (j | 0) ? d : a; a = (j | 0) == 0; if (a) { D = 86; break } else h = h << (a & 1 ^ 1) } } while (0); if ((D | 0) == 86) { if ((d | 0) == 0 & (f | 0) == 0) { a = 2 << k; a = l & (a | 0 - a); if (!a) break; r = (a & 0 - a) + -1 | 0; m = r >>> 12 & 16; r = r >>> m; k = r >>> 5 & 8; r = r >>> k; n = r >>> 2 & 4; r = r >>> n; q = r >>> 1 & 2; r = r >>> q; d = r >>> 1 & 1; d = c[13352 + ((k | m | n | q | d) + (r >>> d) << 2) >> 2] | 0 } if (!d) { k = f; j = e } else { a = f; D = 90 } } if ((D | 0) == 90) while (1) { D = 0; r = (c[d + 4 >> 2] & -8) - o | 0; f = r >>> 0 < e >>> 0; e = f ? r : e; a = f ? d : a; f = c[d + 16 >> 2] | 0; if (f | 0) { d = f; D = 90; continue } d = c[d + 20 >> 2] | 0; if (!d) { k = a; j = e; break } else D = 90 } if ((k | 0) != 0 ? j >>> 0 < ((c[3264] | 0) - o | 0) >>> 0 : 0) { f = c[3266] | 0; if (k >>> 0 < f >>> 0) ma(); h = k + o | 0; if (k >>> 0 >= h >>> 0) ma(); g = c[k + 24 >> 2] | 0; d = c[k + 12 >> 2] | 0; do if ((d | 0) == (k | 0)) { a = k + 20 | 0; b = c[a >> 2] | 0; if (!b) { a = k + 16 | 0; b = c[a >> 2] | 0; if (!b) { s = 0; break } } while (1) { d = b + 20 | 0; e = c[d >> 2] | 0; if (e | 0) { b = e; a = d; continue } d = b + 16 | 0; e = c[d >> 2] | 0; if (!e) break; else { b = e; a = d } } if (a >>> 0 < f >>> 0) ma(); else { c[a >> 2] = 0; s = b; break } } else { e = c[k + 8 >> 2] | 0; if (e >>> 0 < f >>> 0) ma(); b = e + 12 | 0; if ((c[b >> 2] | 0) != (k | 0)) ma(); a = d + 8 | 0; if ((c[a >> 2] | 0) == (k | 0)) { c[b >> 2] = d; c[a >> 2] = e; s = d; break } else ma() } while (0); do if (g) { b = c[k + 28 >> 2] | 0; a = 13352 + (b << 2) | 0; if ((k | 0) == (c[a >> 2] | 0)) { c[a >> 2] = s; if (!s) { t = l & ~(1 << b); c[3263] = t; break } } else { if (g >>> 0 < (c[3266] | 0) >>> 0) ma(); b = g + 16 | 0; if ((c[b >> 2] | 0) == (k | 0)) c[b >> 2] = s; else c[g + 20 >> 2] = s; if (!s) { t = l; break } } a = c[3266] | 0; if (s >>> 0 < a >>> 0) ma(); c[s + 24 >> 2] = g; b = c[k + 16 >> 2] | 0; do if (b | 0) if (b >>> 0 < a >>> 0) ma(); else { c[s + 16 >> 2] = b; c[b + 24 >> 2] = s; break } while (0); b = c[k + 20 >> 2] | 0; if (b) if (b >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[s + 20 >> 2] = b; c[b + 24 >> 2] = s; t = l; break } else t = l } else t = l; while (0); do if (j >>> 0 >= 16) { c[k + 4 >> 2] = o | 3; c[h + 4 >> 2] = j | 1; c[h + j >> 2] = j; b = j >>> 3; if (j >>> 0 < 256) { d = 13088 + (b << 1 << 2) | 0; a = c[3262] | 0; b = 1 << b; if (a & b) { b = d + 8 | 0; a = c[b >> 2] | 0; if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { B = a; C = b } } else { c[3262] = a | b; B = d; C = d + 8 | 0 } c[C >> 2] = h; c[B + 12 >> 2] = h; c[h + 8 >> 2] = B; c[h + 12 >> 2] = d; break } b = j >>> 8; if (b) if (j >>> 0 > 16777215) b = 31; else { J = (b + 1048320 | 0) >>> 16 & 8; K = b << J; I = (K + 520192 | 0) >>> 16 & 4; K = K << I; b = (K + 245760 | 0) >>> 16 & 2; b = 14 - (I | J | b) + (K << b >>> 15) | 0; b = j >>> (b + 7 | 0) & 1 | b << 1 } else b = 0; d = 13352 + (b << 2) | 0; c[h + 28 >> 2] = b; a = h + 16 | 0; c[a + 4 >> 2] = 0; c[a >> 2] = 0; a = 1 << b; if (!(t & a)) { c[3263] = t | a; c[d >> 2] = h; c[h + 24 >> 2] = d; c[h + 12 >> 2] = h; c[h + 8 >> 2] = h; break } a = j << ((b | 0) == 31 ? 0 : 25 - (b >>> 1) | 0); e = c[d >> 2] | 0; while (1) { if ((c[e + 4 >> 2] & -8 | 0) == (j | 0)) { D = 148; break } d = e + 16 + (a >>> 31 << 2) | 0; b = c[d >> 2] | 0; if (!b) { D = 145; break } else { a = a << 1; e = b } } if ((D | 0) == 145) if (d >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[d >> 2] = h; c[h + 24 >> 2] = e; c[h + 12 >> 2] = h; c[h + 8 >> 2] = h; break } else if ((D | 0) == 148) { b = e + 8 | 0; a = c[b >> 2] | 0; K = c[3266] | 0; if (a >>> 0 >= K >>> 0 & e >>> 0 >= K >>> 0) { c[a + 12 >> 2] = h; c[b >> 2] = h; c[h + 8 >> 2] = a; c[h + 12 >> 2] = e; c[h + 24 >> 2] = 0; break } else ma() } } else { K = j + o | 0; c[k + 4 >> 2] = K | 3; K = k + K + 4 | 0; c[K >> 2] = c[K >> 2] | 1 } while (0); K = k + 8 | 0; i = L; return K | 0 } } } else o = -1; while (0); d = c[3264] | 0; if (d >>> 0 >= o >>> 0) { b = d - o | 0; a = c[3267] | 0; if (b >>> 0 > 15) { K = a + o | 0; c[3267] = K; c[3264] = b; c[K + 4 >> 2] = b | 1; c[K + b >> 2] = b; c[a + 4 >> 2] = o | 3 } else { c[3264] = 0; c[3267] = 0; c[a + 4 >> 2] = d | 3; K = a + d + 4 | 0; c[K >> 2] = c[K >> 2] | 1 } K = a + 8 | 0; i = L; return K | 0 } j = c[3265] | 0; if (j >>> 0 > o >>> 0) { I = j - o | 0; c[3265] = I; K = c[3268] | 0; J = K + o | 0; c[3268] = J; c[J + 4 >> 2] = I | 1; c[K + 4 >> 2] = o | 3; K = K + 8 | 0; i = L; return K | 0 } if (!(c[3380] | 0)) { c[3382] = 4096; c[3381] = 4096; c[3383] = -1; c[3384] = -1; c[3385] = 0; c[3373] = 0; a = p & -16 ^ 1431655768; c[p >> 2] = a; c[3380] = a; a = 4096 } else a = c[3382] | 0; k = o + 48 | 0; l = o + 47 | 0; h = a + l | 0; f = 0 - a | 0; m = h & f; if (m >>> 0 <= o >>> 0) { K = 0; i = L; return K | 0 } a = c[3372] | 0; if (a | 0 ? (B = c[3370] | 0, C = B + m | 0, C >>> 0 <= B >>> 0 | C >>> 0 > a >>> 0) : 0) { K = 0; i = L; return K | 0 } b: do if (!(c[3373] & 4)) { d = c[3268] | 0; c: do if (d) { e = 13496; while (1) { a = c[e >> 2] | 0; if (a >>> 0 <= d >>> 0 ? (u = e + 4 | 0, (a + (c[u >> 2] | 0) | 0) >>> 0 > d >>> 0) : 0) break; a = c[e + 8 >> 2] | 0; if (!a) { D = 172; break c } else e = a } d = h - j & f; if (d >>> 0 < 2147483647) { a = xa(d | 0) | 0; if ((a | 0) == ((c[e >> 2] | 0) + (c[u >> 2] | 0) | 0)) { if ((a | 0) != (-1 | 0)) { h = d; g = a; D = 190; break b } } else { b = d; D = 180 } } } else D = 172; while (0); do if (((D | 0) == 172 ? (g = xa(0) | 0, (g | 0) != (-1 | 0)) : 0) ? (b = g, v = c[3381] | 0, w = v + -1 | 0, b = ((w & b | 0) == 0 ? 0 : (w + b & 0 - v) - b | 0) + m | 0, v = c[3370] | 0, w = b + v | 0, b >>> 0 > o >>> 0 & b >>> 0 < 2147483647) : 0) { C = c[3372] | 0; if (C | 0 ? w >>> 0 <= v >>> 0 | w >>> 0 > C >>> 0 : 0) break; a = xa(b | 0) | 0; if ((a | 0) == (g | 0)) { h = b; D = 190; break b } else D = 180 } while (0); d: do if ((D | 0) == 180) { d = 0 - b | 0; do if (k >>> 0 > b >>> 0 & (b >>> 0 < 2147483647 & (a | 0) != (-1 | 0)) ? (x = c[3382] | 0, x = l - b + x & 0 - x, x >>> 0 < 2147483647) : 0) if ((xa(x | 0) | 0) == (-1 | 0)) { xa(d | 0) | 0; break d } else { b = x + b | 0; break } while (0); if ((a | 0) != (-1 | 0)) { h = b; g = a; D = 190; break b } } while (0); c[3373] = c[3373] | 4; D = 187 } else D = 187; while (0); if ((((D | 0) == 187 ? m >>> 0 < 2147483647 : 0) ? (A = xa(m | 0) | 0, y = xa(0) | 0, A >>> 0 < y >>> 0 & ((A | 0) != (-1 | 0) & (y | 0) != (-1 | 0))) : 0) ? (z = y - A | 0, z >>> 0 > (o + 40 | 0) >>> 0) : 0) { h = z; g = A; D = 190 } if ((D | 0) == 190) { b = (c[3370] | 0) + h | 0; c[3370] = b; if (b >>> 0 > (c[3371] | 0) >>> 0) c[3371] = b; l = c[3268] | 0; do if (l) { b = 13496; while (1) { a = c[b >> 2] | 0; d = b + 4 | 0; e = c[d >> 2] | 0; if ((g | 0) == (a + e | 0)) { D = 200; break } f = c[b + 8 >> 2] | 0; if (!f) break; else b = f } if (((D | 0) == 200 ? (c[b + 12 >> 2] & 8 | 0) == 0 : 0) ? l >>> 0 < g >>> 0 & l >>> 0 >= a >>> 0 : 0) { c[d >> 2] = e + h; K = l + 8 | 0; K = (K & 7 | 0) == 0 ? 0 : 0 - K & 7; J = l + K | 0; K = h - K + (c[3265] | 0) | 0; c[3268] = J; c[3265] = K; c[J + 4 >> 2] = K | 1; c[J + K + 4 >> 2] = 40; c[3269] = c[3384]; break } b = c[3266] | 0; if (g >>> 0 < b >>> 0) { c[3266] = g; j = g } else j = b; a = g + h | 0; b = 13496; while (1) { if ((c[b >> 2] | 0) == (a | 0)) { D = 208; break } b = c[b + 8 >> 2] | 0; if (!b) { a = 13496; break } } if ((D | 0) == 208) if (!(c[b + 12 >> 2] & 8)) { c[b >> 2] = g; n = b + 4 | 0; c[n >> 2] = (c[n >> 2] | 0) + h; n = g + 8 | 0; n = g + ((n & 7 | 0) == 0 ? 0 : 0 - n & 7) | 0; b = a + 8 | 0; b = a + ((b & 7 | 0) == 0 ? 0 : 0 - b & 7) | 0; m = n + o | 0; k = b - n - o | 0; c[n + 4 >> 2] = o | 3; do if ((b | 0) != (l | 0)) { if ((b | 0) == (c[3267] | 0)) { K = (c[3264] | 0) + k | 0; c[3264] = K; c[3267] = m; c[m + 4 >> 2] = K | 1; c[m + K >> 2] = K; break } a = c[b + 4 >> 2] | 0; if ((a & 3 | 0) == 1) { h = a & -8; f = a >>> 3; e: do if (a >>> 0 >= 256) { g = c[b + 24 >> 2] | 0; e = c[b + 12 >> 2] | 0; do if ((e | 0) == (b | 0)) { e = b + 16 | 0; d = e + 4 | 0; a = c[d >> 2] | 0; if (!a) { a = c[e >> 2] | 0; if (!a) { I = 0; break } else d = e } while (1) { e = a + 20 | 0; f = c[e >> 2] | 0; if (f | 0) { a = f; d = e; continue } e = a + 16 | 0; f = c[e >> 2] | 0; if (!f) break; else { a = f; d = e } } if (d >>> 0 < j >>> 0) ma(); else { c[d >> 2] = 0; I = a; break } } else { f = c[b + 8 >> 2] | 0; if (f >>> 0 < j >>> 0) ma(); a = f + 12 | 0; if ((c[a >> 2] | 0) != (b | 0)) ma(); d = e + 8 | 0; if ((c[d >> 2] | 0) == (b | 0)) { c[a >> 2] = e; c[d >> 2] = f; I = e; break } else ma() } while (0); if (!g) break; a = c[b + 28 >> 2] | 0; d = 13352 + (a << 2) | 0; do if ((b | 0) != (c[d >> 2] | 0)) { if (g >>> 0 < (c[3266] | 0) >>> 0) ma(); a = g + 16 | 0; if ((c[a >> 2] | 0) == (b | 0)) c[a >> 2] = I; else c[g + 20 >> 2] = I; if (!I) break e } else { c[d >> 2] = I; if (I | 0) break; c[3263] = c[3263] & ~(1 << a); break e } while (0); e = c[3266] | 0; if (I >>> 0 < e >>> 0) ma(); c[I + 24 >> 2] = g; a = b + 16 | 0; d = c[a >> 2] | 0; do if (d | 0) if (d >>> 0 < e >>> 0) ma(); else { c[I + 16 >> 2] = d; c[d + 24 >> 2] = I; break } while (0); a = c[a + 4 >> 2] | 0; if (!a) break; if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[I + 20 >> 2] = a; c[a + 24 >> 2] = I; break } } else { d = c[b + 8 >> 2] | 0; e = c[b + 12 >> 2] | 0; a = 13088 + (f << 1 << 2) | 0; do if ((d | 0) != (a | 0)) { if (d >>> 0 < j >>> 0) ma(); if ((c[d + 12 >> 2] | 0) == (b | 0)) break; ma() } while (0); if ((e | 0) == (d | 0)) { c[3262] = c[3262] & ~(1 << f); break } do if ((e | 0) == (a | 0)) F = e + 8 | 0; else { if (e >>> 0 < j >>> 0) ma(); a = e + 8 | 0; if ((c[a >> 2] | 0) == (b | 0)) { F = a; break } ma() } while (0); c[d + 12 >> 2] = e; c[F >> 2] = d } while (0); b = b + h | 0; f = h + k | 0 } else f = k; b = b + 4 | 0; c[b >> 2] = c[b >> 2] & -2; c[m + 4 >> 2] = f | 1; c[m + f >> 2] = f; b = f >>> 3; if (f >>> 0 < 256) { d = 13088 + (b << 1 << 2) | 0; a = c[3262] | 0; b = 1 << b; do if (!(a & b)) { c[3262] = a | b; J = d; K = d + 8 | 0 } else { b = d + 8 | 0; a = c[b >> 2] | 0; if (a >>> 0 >= (c[3266] | 0) >>> 0) { J = a; K = b; break } ma() } while (0); c[K >> 2] = m; c[J + 12 >> 2] = m; c[m + 8 >> 2] = J; c[m + 12 >> 2] = d; break } b = f >>> 8; do if (!b) b = 0; else { if (f >>> 0 > 16777215) { b = 31; break } J = (b + 1048320 | 0) >>> 16 & 8; K = b << J; I = (K + 520192 | 0) >>> 16 & 4; K = K << I; b = (K + 245760 | 0) >>> 16 & 2; b = 14 - (I | J | b) + (K << b >>> 15) | 0; b = f >>> (b + 7 | 0) & 1 | b << 1 } while (0); e = 13352 + (b << 2) | 0; c[m + 28 >> 2] = b; a = m + 16 | 0; c[a + 4 >> 2] = 0; c[a >> 2] = 0; a = c[3263] | 0; d = 1 << b; if (!(a & d)) { c[3263] = a | d; c[e >> 2] = m; c[m + 24 >> 2] = e; c[m + 12 >> 2] = m; c[m + 8 >> 2] = m; break } a = f << ((b | 0) == 31 ? 0 : 25 - (b >>> 1) | 0); e = c[e >> 2] | 0; while (1) { if ((c[e + 4 >> 2] & -8 | 0) == (f | 0)) { D = 278; break } d = e + 16 + (a >>> 31 << 2) | 0; b = c[d >> 2] | 0; if (!b) { D = 275; break } else { a = a << 1; e = b } } if ((D | 0) == 275) if (d >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[d >> 2] = m; c[m + 24 >> 2] = e; c[m + 12 >> 2] = m; c[m + 8 >> 2] = m; break } else if ((D | 0) == 278) { b = e + 8 | 0; a = c[b >> 2] | 0; K = c[3266] | 0; if (a >>> 0 >= K >>> 0 & e >>> 0 >= K >>> 0) { c[a + 12 >> 2] = m; c[b >> 2] = m; c[m + 8 >> 2] = a; c[m + 12 >> 2] = e; c[m + 24 >> 2] = 0; break } else ma() } } else { K = (c[3265] | 0) + k | 0; c[3265] = K; c[3268] = m; c[m + 4 >> 2] = K | 1 } while (0); K = n + 8 | 0; i = L; return K | 0 } else a = 13496; while (1) { b = c[a >> 2] | 0; if (b >>> 0 <= l >>> 0 ? (E = b + (c[a + 4 >> 2] | 0) | 0, E >>> 0 > l >>> 0) : 0) break; a = c[a + 8 >> 2] | 0 } f = E + -47 | 0; a = f + 8 | 0; a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0; f = l + 16 | 0; a = a >>> 0 < f >>> 0 ? l : a; b = a + 8 | 0; d = g + 8 | 0; d = (d & 7 | 0) == 0 ? 0 : 0 - d & 7; K = g + d | 0; d = h + -40 - d | 0; c[3268] = K; c[3265] = d; c[K + 4 >> 2] = d | 1; c[K + d + 4 >> 2] = 40; c[3269] = c[3384]; d = a + 4 | 0; c[d >> 2] = 27; c[b >> 2] = c[3374]; c[b + 4 >> 2] = c[3375]; c[b + 8 >> 2] = c[3376]; c[b + 12 >> 2] = c[3377]; c[3374] = g; c[3375] = h; c[3377] = 0; c[3376] = b; b = a + 24 | 0; do { b = b + 4 | 0; c[b >> 2] = 7 } while ((b + 4 | 0) >>> 0 < E >>> 0); if ((a | 0) != (l | 0)) { g = a - l | 0; c[d >> 2] = c[d >> 2] & -2; c[l + 4 >> 2] = g | 1; c[a >> 2] = g; b = g >>> 3; if (g >>> 0 < 256) { d = 13088 + (b << 1 << 2) | 0; a = c[3262] | 0; b = 1 << b; if (a & b) { b = d + 8 | 0; a = c[b >> 2] | 0; if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { G = a; H = b } } else { c[3262] = a | b; G = d; H = d + 8 | 0 } c[H >> 2] = l; c[G + 12 >> 2] = l; c[l + 8 >> 2] = G; c[l + 12 >> 2] = d; break } b = g >>> 8; if (b) if (g >>> 0 > 16777215) d = 31; else { J = (b + 1048320 | 0) >>> 16 & 8; K = b << J; I = (K + 520192 | 0) >>> 16 & 4; K = K << I; d = (K + 245760 | 0) >>> 16 & 2; d = 14 - (I | J | d) + (K << d >>> 15) | 0; d = g >>> (d + 7 | 0) & 1 | d << 1 } else d = 0; e = 13352 + (d << 2) | 0; c[l + 28 >> 2] = d; c[l + 20 >> 2] = 0; c[f >> 2] = 0; b = c[3263] | 0; a = 1 << d; if (!(b & a)) { c[3263] = b | a; c[e >> 2] = l; c[l + 24 >> 2] = e; c[l + 12 >> 2] = l; c[l + 8 >> 2] = l; break } a = g << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0); e = c[e >> 2] | 0; while (1) { if ((c[e + 4 >> 2] & -8 | 0) == (g | 0)) { D = 304; break } d = e + 16 + (a >>> 31 << 2) | 0; b = c[d >> 2] | 0; if (!b) { D = 301; break } else { a = a << 1; e = b } } if ((D | 0) == 301) if (d >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[d >> 2] = l; c[l + 24 >> 2] = e; c[l + 12 >> 2] = l; c[l + 8 >> 2] = l; break } else if ((D | 0) == 304) { b = e + 8 | 0; a = c[b >> 2] | 0; K = c[3266] | 0; if (a >>> 0 >= K >>> 0 & e >>> 0 >= K >>> 0) { c[a + 12 >> 2] = l; c[b >> 2] = l; c[l + 8 >> 2] = a; c[l + 12 >> 2] = e; c[l + 24 >> 2] = 0; break } else ma() } } } else { K = c[3266] | 0; if ((K | 0) == 0 | g >>> 0 < K >>> 0) c[3266] = g; c[3374] = g; c[3375] = h; c[3377] = 0; c[3271] = c[3380]; c[3270] = -1; b = 0; do { K = 13088 + (b << 1 << 2) | 0; c[K + 12 >> 2] = K; c[K + 8 >> 2] = K; b = b + 1 | 0 } while ((b | 0) != 32); K = g + 8 | 0; K = (K & 7 | 0) == 0 ? 0 : 0 - K & 7; J = g + K | 0; K = h + -40 - K | 0; c[3268] = J; c[3265] = K; c[J + 4 >> 2] = K | 1; c[J + K + 4 >> 2] = 40; c[3269] = c[3384] } while (0); b = c[3265] | 0; if (b >>> 0 > o >>> 0) { I = b - o | 0; c[3265] = I; K = c[3268] | 0; J = K + o | 0; c[3268] = J; c[J + 4 >> 2] = I | 1; c[K + 4 >> 2] = o | 3; K = K + 8 | 0; i = L; return K | 0 } } c[(_k() | 0) >> 2] = 12; K = 0; i = L; return K | 0 } function an(a) { a = a | 0; var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; if (!a) return; d = a + -8 | 0; h = c[3266] | 0; if (d >>> 0 < h >>> 0) ma(); a = c[a + -4 >> 2] | 0; b = a & 3; if ((b | 0) == 1) ma(); e = a & -8; n = d + e | 0; do if (!(a & 1)) { a = c[d >> 2] | 0; if (!b) return; k = d + (0 - a) | 0; j = a + e | 0; if (k >>> 0 < h >>> 0) ma(); if ((k | 0) == (c[3267] | 0)) { a = n + 4 | 0; b = c[a >> 2] | 0; if ((b & 3 | 0) != 3) { q = k; f = j; break } c[3264] = j; c[a >> 2] = b & -2; c[k + 4 >> 2] = j | 1; c[k + j >> 2] = j; return } e = a >>> 3; if (a >>> 0 < 256) { b = c[k + 8 >> 2] | 0; d = c[k + 12 >> 2] | 0; a = 13088 + (e << 1 << 2) | 0; if ((b | 0) != (a | 0)) { if (b >>> 0 < h >>> 0) ma(); if ((c[b + 12 >> 2] | 0) != (k | 0)) ma() } if ((d | 0) == (b | 0)) { c[3262] = c[3262] & ~(1 << e); q = k; f = j; break } if ((d | 0) != (a | 0)) { if (d >>> 0 < h >>> 0) ma(); a = d + 8 | 0; if ((c[a >> 2] | 0) == (k | 0)) g = a; else ma() } else g = d + 8 | 0; c[b + 12 >> 2] = d; c[g >> 2] = b; q = k; f = j; break } g = c[k + 24 >> 2] | 0; d = c[k + 12 >> 2] | 0; do if ((d | 0) == (k | 0)) { d = k + 16 | 0; b = d + 4 | 0; a = c[b >> 2] | 0; if (!a) { a = c[d >> 2] | 0; if (!a) { i = 0; break } else b = d } while (1) { d = a + 20 | 0; e = c[d >> 2] | 0; if (e | 0) { a = e; b = d; continue } d = a + 16 | 0; e = c[d >> 2] | 0; if (!e) break; else { a = e; b = d } } if (b >>> 0 < h >>> 0) ma(); else { c[b >> 2] = 0; i = a; break } } else { e = c[k + 8 >> 2] | 0; if (e >>> 0 < h >>> 0) ma(); a = e + 12 | 0; if ((c[a >> 2] | 0) != (k | 0)) ma(); b = d + 8 | 0; if ((c[b >> 2] | 0) == (k | 0)) { c[a >> 2] = d; c[b >> 2] = e; i = d; break } else ma() } while (0); if (g) { a = c[k + 28 >> 2] | 0; b = 13352 + (a << 2) | 0; if ((k | 0) == (c[b >> 2] | 0)) { c[b >> 2] = i; if (!i) { c[3263] = c[3263] & ~(1 << a); q = k; f = j; break } } else { if (g >>> 0 < (c[3266] | 0) >>> 0) ma(); a = g + 16 | 0; if ((c[a >> 2] | 0) == (k | 0)) c[a >> 2] = i; else c[g + 20 >> 2] = i; if (!i) { q = k; f = j; break } } d = c[3266] | 0; if (i >>> 0 < d >>> 0) ma(); c[i + 24 >> 2] = g; a = k + 16 | 0; b = c[a >> 2] | 0; do if (b | 0) if (b >>> 0 < d >>> 0) ma(); else { c[i + 16 >> 2] = b; c[b + 24 >> 2] = i; break } while (0); a = c[a + 4 >> 2] | 0; if (a) if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[i + 20 >> 2] = a; c[a + 24 >> 2] = i; q = k; f = j; break } else { q = k; f = j } } else { q = k; f = j } } else { q = d; f = e } while (0); if (q >>> 0 >= n >>> 0) ma(); a = n + 4 | 0; b = c[a >> 2] | 0; if (!(b & 1)) ma(); if (!(b & 2)) { if ((n | 0) == (c[3268] | 0)) { p = (c[3265] | 0) + f | 0; c[3265] = p; c[3268] = q; c[q + 4 >> 2] = p | 1; if ((q | 0) != (c[3267] | 0)) return; c[3267] = 0; c[3264] = 0; return } if ((n | 0) == (c[3267] | 0)) { p = (c[3264] | 0) + f | 0; c[3264] = p; c[3267] = q; c[q + 4 >> 2] = p | 1; c[q + p >> 2] = p; return } f = (b & -8) + f | 0; e = b >>> 3; do if (b >>> 0 >= 256) { g = c[n + 24 >> 2] | 0; a = c[n + 12 >> 2] | 0; do if ((a | 0) == (n | 0)) { d = n + 16 | 0; b = d + 4 | 0; a = c[b >> 2] | 0; if (!a) { a = c[d >> 2] | 0; if (!a) { m = 0; break } else b = d } while (1) { d = a + 20 | 0; e = c[d >> 2] | 0; if (e | 0) { a = e; b = d; continue } d = a + 16 | 0; e = c[d >> 2] | 0; if (!e) break; else { a = e; b = d } } if (b >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[b >> 2] = 0; m = a; break } } else { b = c[n + 8 >> 2] | 0; if (b >>> 0 < (c[3266] | 0) >>> 0) ma(); d = b + 12 | 0; if ((c[d >> 2] | 0) != (n | 0)) ma(); e = a + 8 | 0; if ((c[e >> 2] | 0) == (n | 0)) { c[d >> 2] = a; c[e >> 2] = b; m = a; break } else ma() } while (0); if (g | 0) { a = c[n + 28 >> 2] | 0; b = 13352 + (a << 2) | 0; if ((n | 0) == (c[b >> 2] | 0)) { c[b >> 2] = m; if (!m) { c[3263] = c[3263] & ~(1 << a); break } } else { if (g >>> 0 < (c[3266] | 0) >>> 0) ma(); a = g + 16 | 0; if ((c[a >> 2] | 0) == (n | 0)) c[a >> 2] = m; else c[g + 20 >> 2] = m; if (!m) break } d = c[3266] | 0; if (m >>> 0 < d >>> 0) ma(); c[m + 24 >> 2] = g; a = n + 16 | 0; b = c[a >> 2] | 0; do if (b | 0) if (b >>> 0 < d >>> 0) ma(); else { c[m + 16 >> 2] = b; c[b + 24 >> 2] = m; break } while (0); a = c[a + 4 >> 2] | 0; if (a | 0) if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[m + 20 >> 2] = a; c[a + 24 >> 2] = m; break } } } else { b = c[n + 8 >> 2] | 0; d = c[n + 12 >> 2] | 0; a = 13088 + (e << 1 << 2) | 0; if ((b | 0) != (a | 0)) { if (b >>> 0 < (c[3266] | 0) >>> 0) ma(); if ((c[b + 12 >> 2] | 0) != (n | 0)) ma() } if ((d | 0) == (b | 0)) { c[3262] = c[3262] & ~(1 << e); break } if ((d | 0) != (a | 0)) { if (d >>> 0 < (c[3266] | 0) >>> 0) ma(); a = d + 8 | 0; if ((c[a >> 2] | 0) == (n | 0)) l = a; else ma() } else l = d + 8 | 0; c[b + 12 >> 2] = d; c[l >> 2] = b } while (0); c[q + 4 >> 2] = f | 1; c[q + f >> 2] = f; if ((q | 0) == (c[3267] | 0)) { c[3264] = f; return } } else { c[a >> 2] = b & -2; c[q + 4 >> 2] = f | 1; c[q + f >> 2] = f } a = f >>> 3; if (f >>> 0 < 256) { d = 13088 + (a << 1 << 2) | 0; b = c[3262] | 0; a = 1 << a; if (b & a) { a = d + 8 | 0; b = c[a >> 2] | 0; if (b >>> 0 < (c[3266] | 0) >>> 0) ma(); else { o = b; p = a } } else { c[3262] = b | a; o = d; p = d + 8 | 0 } c[p >> 2] = q; c[o + 12 >> 2] = q; c[q + 8 >> 2] = o; c[q + 12 >> 2] = d; return } a = f >>> 8; if (a) if (f >>> 0 > 16777215) a = 31; else { o = (a + 1048320 | 0) >>> 16 & 8; p = a << o; n = (p + 520192 | 0) >>> 16 & 4; p = p << n; a = (p + 245760 | 0) >>> 16 & 2; a = 14 - (n | o | a) + (p << a >>> 15) | 0; a = f >>> (a + 7 | 0) & 1 | a << 1 } else a = 0; e = 13352 + (a << 2) | 0; c[q + 28 >> 2] = a; c[q + 20 >> 2] = 0; c[q + 16 >> 2] = 0; b = c[3263] | 0; d = 1 << a; do if (b & d) { b = f << ((a | 0) == 31 ? 0 : 25 - (a >>> 1) | 0); e = c[e >> 2] | 0; while (1) { if ((c[e + 4 >> 2] & -8 | 0) == (f | 0)) { a = 130; break } d = e + 16 + (b >>> 31 << 2) | 0; a = c[d >> 2] | 0; if (!a) { a = 127; break } else { b = b << 1; e = a } } if ((a | 0) == 127) if (d >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[d >> 2] = q; c[q + 24 >> 2] = e; c[q + 12 >> 2] = q; c[q + 8 >> 2] = q; break } else if ((a | 0) == 130) { a = e + 8 | 0; b = c[a >> 2] | 0; p = c[3266] | 0; if (b >>> 0 >= p >>> 0 & e >>> 0 >= p >>> 0) { c[b + 12 >> 2] = q; c[a >> 2] = q; c[q + 8 >> 2] = b; c[q + 12 >> 2] = e; c[q + 24 >> 2] = 0; break } else ma() } } else { c[3263] = b | d; c[e >> 2] = q; c[q + 24 >> 2] = e; c[q + 12 >> 2] = q; c[q + 8 >> 2] = q } while (0); q = (c[3270] | 0) + -1 | 0; c[3270] = q; if (!q) a = 13504; else return; while (1) { a = c[a >> 2] | 0; if (!a) break; else a = a + 8 | 0 } c[3270] = -1; return } function bn(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0; if (!a) { b = $m(b) | 0; return b | 0 } if (b >>> 0 > 4294967231) { c[(_k() | 0) >> 2] = 12; b = 0; return b | 0 } d = cn(a + -8 | 0, b >>> 0 < 11 ? 16 : b + 11 & -8) | 0; if (d | 0) { b = d + 8 | 0; return b | 0 } d = $m(b) | 0; if (!d) { b = 0; return b | 0 } e = c[a + -4 >> 2] | 0; e = (e & -8) - ((e & 3 | 0) == 0 ? 8 : 4) | 0; nn(d | 0, a | 0, (e >>> 0 < b >>> 0 ? e : b) | 0) | 0; an(a); b = d; return b | 0 } function cn(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0; n = a + 4 | 0; o = c[n >> 2] | 0; d = o & -8; k = a + d | 0; i = c[3266] | 0; e = o & 3; if (!((e | 0) != 1 & a >>> 0 >= i >>> 0 & a >>> 0 < k >>> 0)) ma(); f = c[k + 4 >> 2] | 0; if (!(f & 1)) ma(); if (!e) { if (b >>> 0 < 256) { a = 0; return a | 0 } if (d >>> 0 >= (b + 4 | 0) >>> 0 ? (d - b | 0) >>> 0 <= c[3382] << 1 >>> 0 : 0) return a | 0; a = 0; return a | 0 } if (d >>> 0 >= b >>> 0) { d = d - b | 0; if (d >>> 0 <= 15) return a | 0; m = a + b | 0; c[n >> 2] = o & 1 | b | 2; c[m + 4 >> 2] = d | 3; o = m + d + 4 | 0; c[o >> 2] = c[o >> 2] | 1; dn(m, d); return a | 0 } if ((k | 0) == (c[3268] | 0)) { d = (c[3265] | 0) + d | 0; if (d >>> 0 <= b >>> 0) { a = 0; return a | 0 } m = d - b | 0; l = a + b | 0; c[n >> 2] = o & 1 | b | 2; c[l + 4 >> 2] = m | 1; c[3268] = l; c[3265] = m; return a | 0 } if ((k | 0) == (c[3267] | 0)) { e = (c[3264] | 0) + d | 0; if (e >>> 0 < b >>> 0) { a = 0; return a | 0 } d = e - b | 0; if (d >>> 0 > 15) { e = a + b | 0; m = e + d | 0; c[n >> 2] = o & 1 | b | 2; c[e + 4 >> 2] = d | 1; c[m >> 2] = d; o = m + 4 | 0; c[o >> 2] = c[o >> 2] & -2 } else { c[n >> 2] = o & 1 | e | 2; e = a + e + 4 | 0; c[e >> 2] = c[e >> 2] | 1; e = 0; d = 0 } c[3264] = d; c[3267] = e; return a | 0 } if (f & 2 | 0) { a = 0; return a | 0 } l = (f & -8) + d | 0; if (l >>> 0 < b >>> 0) { a = 0; return a | 0 } m = l - b | 0; g = f >>> 3; do if (f >>> 0 >= 256) { h = c[k + 24 >> 2] | 0; f = c[k + 12 >> 2] | 0; do if ((f | 0) == (k | 0)) { f = k + 16 | 0; e = f + 4 | 0; d = c[e >> 2] | 0; if (!d) { d = c[f >> 2] | 0; if (!d) { j = 0; break } else e = f } while (1) { f = d + 20 | 0; g = c[f >> 2] | 0; if (g | 0) { d = g; e = f; continue } f = d + 16 | 0; g = c[f >> 2] | 0; if (!g) break; else { d = g; e = f } } if (e >>> 0 < i >>> 0) ma(); else { c[e >> 2] = 0; j = d; break } } else { g = c[k + 8 >> 2] | 0; if (g >>> 0 < i >>> 0) ma(); d = g + 12 | 0; if ((c[d >> 2] | 0) != (k | 0)) ma(); e = f + 8 | 0; if ((c[e >> 2] | 0) == (k | 0)) { c[d >> 2] = f; c[e >> 2] = g; j = f; break } else ma() } while (0); if (h | 0) { d = c[k + 28 >> 2] | 0; e = 13352 + (d << 2) | 0; if ((k | 0) == (c[e >> 2] | 0)) { c[e >> 2] = j; if (!j) { c[3263] = c[3263] & ~(1 << d); break } } else { if (h >>> 0 < (c[3266] | 0) >>> 0) ma(); d = h + 16 | 0; if ((c[d >> 2] | 0) == (k | 0)) c[d >> 2] = j; else c[h + 20 >> 2] = j; if (!j) break } f = c[3266] | 0; if (j >>> 0 < f >>> 0) ma(); c[j + 24 >> 2] = h; d = k + 16 | 0; e = c[d >> 2] | 0; do if (e | 0) if (e >>> 0 < f >>> 0) ma(); else { c[j + 16 >> 2] = e; c[e + 24 >> 2] = j; break } while (0); d = c[d + 4 >> 2] | 0; if (d | 0) if (d >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[j + 20 >> 2] = d; c[d + 24 >> 2] = j; break } } } else { e = c[k + 8 >> 2] | 0; f = c[k + 12 >> 2] | 0; d = 13088 + (g << 1 << 2) | 0; if ((e | 0) != (d | 0)) { if (e >>> 0 < i >>> 0) ma(); if ((c[e + 12 >> 2] | 0) != (k | 0)) ma() } if ((f | 0) == (e | 0)) { c[3262] = c[3262] & ~(1 << g); break } if ((f | 0) != (d | 0)) { if (f >>> 0 < i >>> 0) ma(); d = f + 8 | 0; if ((c[d >> 2] | 0) == (k | 0)) h = d; else ma() } else h = f + 8 | 0; c[e + 12 >> 2] = f; c[h >> 2] = e } while (0); if (m >>> 0 < 16) { c[n >> 2] = l | o & 1 | 2; o = a + l + 4 | 0; c[o >> 2] = c[o >> 2] | 1; return a | 0 } else { l = a + b | 0; c[n >> 2] = o & 1 | b | 2; c[l + 4 >> 2] = m | 3; o = l + m + 4 | 0; c[o >> 2] = c[o >> 2] | 1; dn(l, m); return a | 0 } return 0 } function dn(a, b) { a = a | 0; b = b | 0; var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0; o = a + b | 0; d = c[a + 4 >> 2] | 0; do if (!(d & 1)) { g = c[a >> 2] | 0; if (!(d & 3)) return; l = a + (0 - g) | 0; k = g + b | 0; i = c[3266] | 0; if (l >>> 0 < i >>> 0) ma(); if ((l | 0) == (c[3267] | 0)) { a = o + 4 | 0; d = c[a >> 2] | 0; if ((d & 3 | 0) != 3) { r = l; f = k; break } c[3264] = k; c[a >> 2] = d & -2; c[l + 4 >> 2] = k | 1; c[l + k >> 2] = k; return } e = g >>> 3; if (g >>> 0 < 256) { d = c[l + 8 >> 2] | 0; b = c[l + 12 >> 2] | 0; a = 13088 + (e << 1 << 2) | 0; if ((d | 0) != (a | 0)) { if (d >>> 0 < i >>> 0) ma(); if ((c[d + 12 >> 2] | 0) != (l | 0)) ma() } if ((b | 0) == (d | 0)) { c[3262] = c[3262] & ~(1 << e); r = l; f = k; break } if ((b | 0) != (a | 0)) { if (b >>> 0 < i >>> 0) ma(); a = b + 8 | 0; if ((c[a >> 2] | 0) == (l | 0)) h = a; else ma() } else h = b + 8 | 0; c[d + 12 >> 2] = b; c[h >> 2] = d; r = l; f = k; break } g = c[l + 24 >> 2] | 0; b = c[l + 12 >> 2] | 0; do if ((b | 0) == (l | 0)) { b = l + 16 | 0; d = b + 4 | 0; a = c[d >> 2] | 0; if (!a) { a = c[b >> 2] | 0; if (!a) { j = 0; break } else d = b } while (1) { b = a + 20 | 0; e = c[b >> 2] | 0; if (e | 0) { a = e; d = b; continue } b = a + 16 | 0; e = c[b >> 2] | 0; if (!e) break; else { a = e; d = b } } if (d >>> 0 < i >>> 0) ma(); else { c[d >> 2] = 0; j = a; break } } else { e = c[l + 8 >> 2] | 0; if (e >>> 0 < i >>> 0) ma(); a = e + 12 | 0; if ((c[a >> 2] | 0) != (l | 0)) ma(); d = b + 8 | 0; if ((c[d >> 2] | 0) == (l | 0)) { c[a >> 2] = b; c[d >> 2] = e; j = b; break } else ma() } while (0); if (g) { a = c[l + 28 >> 2] | 0; d = 13352 + (a << 2) | 0; if ((l | 0) == (c[d >> 2] | 0)) { c[d >> 2] = j; if (!j) { c[3263] = c[3263] & ~(1 << a); r = l; f = k; break } } else { if (g >>> 0 < (c[3266] | 0) >>> 0) ma(); a = g + 16 | 0; if ((c[a >> 2] | 0) == (l | 0)) c[a >> 2] = j; else c[g + 20 >> 2] = j; if (!j) { r = l; f = k; break } } b = c[3266] | 0; if (j >>> 0 < b >>> 0) ma(); c[j + 24 >> 2] = g; a = l + 16 | 0; d = c[a >> 2] | 0; do if (d | 0) if (d >>> 0 < b >>> 0) ma(); else { c[j + 16 >> 2] = d; c[d + 24 >> 2] = j; break } while (0); a = c[a + 4 >> 2] | 0; if (a) if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[j + 20 >> 2] = a; c[a + 24 >> 2] = j; r = l; f = k; break } else { r = l; f = k } } else { r = l; f = k } } else { r = a; f = b } while (0); h = c[3266] | 0; if (o >>> 0 < h >>> 0) ma(); a = o + 4 | 0; d = c[a >> 2] | 0; if (!(d & 2)) { if ((o | 0) == (c[3268] | 0)) { q = (c[3265] | 0) + f | 0; c[3265] = q; c[3268] = r; c[r + 4 >> 2] = q | 1; if ((r | 0) != (c[3267] | 0)) return; c[3267] = 0; c[3264] = 0; return } if ((o | 0) == (c[3267] | 0)) { q = (c[3264] | 0) + f | 0; c[3264] = q; c[3267] = r; c[r + 4 >> 2] = q | 1; c[r + q >> 2] = q; return } f = (d & -8) + f | 0; e = d >>> 3; do if (d >>> 0 >= 256) { g = c[o + 24 >> 2] | 0; b = c[o + 12 >> 2] | 0; do if ((b | 0) == (o | 0)) { b = o + 16 | 0; d = b + 4 | 0; a = c[d >> 2] | 0; if (!a) { a = c[b >> 2] | 0; if (!a) { n = 0; break } else d = b } while (1) { b = a + 20 | 0; e = c[b >> 2] | 0; if (e | 0) { a = e; d = b; continue } b = a + 16 | 0; e = c[b >> 2] | 0; if (!e) break; else { a = e; d = b } } if (d >>> 0 < h >>> 0) ma(); else { c[d >> 2] = 0; n = a; break } } else { e = c[o + 8 >> 2] | 0; if (e >>> 0 < h >>> 0) ma(); a = e + 12 | 0; if ((c[a >> 2] | 0) != (o | 0)) ma(); d = b + 8 | 0; if ((c[d >> 2] | 0) == (o | 0)) { c[a >> 2] = b; c[d >> 2] = e; n = b; break } else ma() } while (0); if (g | 0) { a = c[o + 28 >> 2] | 0; d = 13352 + (a << 2) | 0; if ((o | 0) == (c[d >> 2] | 0)) { c[d >> 2] = n; if (!n) { c[3263] = c[3263] & ~(1 << a); break } } else { if (g >>> 0 < (c[3266] | 0) >>> 0) ma(); a = g + 16 | 0; if ((c[a >> 2] | 0) == (o | 0)) c[a >> 2] = n; else c[g + 20 >> 2] = n; if (!n) break } b = c[3266] | 0; if (n >>> 0 < b >>> 0) ma(); c[n + 24 >> 2] = g; a = o + 16 | 0; d = c[a >> 2] | 0; do if (d | 0) if (d >>> 0 < b >>> 0) ma(); else { c[n + 16 >> 2] = d; c[d + 24 >> 2] = n; break } while (0); a = c[a + 4 >> 2] | 0; if (a | 0) if (a >>> 0 < (c[3266] | 0) >>> 0) ma(); else { c[n + 20 >> 2] = a; c[a + 24 >> 2] = n; break } } } else { d = c[o + 8 >> 2] | 0; b = c[o + 12 >> 2] | 0; a = 13088 + (e << 1 << 2) | 0; if ((d | 0) != (a | 0)) { if (d >>> 0 < h >>> 0) ma(); if ((c[d + 12 >> 2] | 0) != (o | 0)) ma() } if ((b | 0) == (d | 0)) { c[3262] = c[3262] & ~(1 << e); break } if ((b | 0) != (a | 0)) { if (b >>> 0 < h >>> 0) ma(); a = b + 8 | 0; if ((c[a >> 2] | 0) == (o | 0)) m = a; else ma() } else m = b + 8 | 0; c[d + 12 >> 2] = b; c[m >> 2] = d } while (0); c[r + 4 >> 2] = f | 1; c[r + f >> 2] = f; if ((r | 0) == (c[3267] | 0)) { c[3264] = f; return } } else { c[a >> 2] = d & -2; c[r + 4 >> 2] = f | 1; c[r + f >> 2] = f } a = f >>> 3; if (f >>> 0 < 256) { b = 13088 + (a << 1 << 2) | 0; d = c[3262] | 0; a = 1 << a; if (d & a) { a = b + 8 | 0; d = c[a >> 2] | 0; if (d >>> 0 < (c[3266] | 0) >>> 0) ma(); else { p = d; q = a } } else { c[3262] = d | a; p = b; q = b + 8 | 0 } c[q >> 2] = r; c[p + 12 >> 2] = r; c[r + 8 >> 2] = p; c[r + 12 >> 2] = b; return } a = f >>> 8; if (a) if (f >>> 0 > 16777215) a = 31; else { p = (a + 1048320 | 0) >>> 16 & 8; q = a << p; o = (q + 520192 | 0) >>> 16 & 4; q = q << o; a = (q + 245760 | 0) >>> 16 & 2; a = 14 - (o | p | a) + (q << a >>> 15) | 0; a = f >>> (a + 7 | 0) & 1 | a << 1 } else a = 0; e = 13352 + (a << 2) | 0; c[r + 28 >> 2] = a; c[r + 20 >> 2] = 0; c[r + 16 >> 2] = 0; d = c[3263] | 0; b = 1 << a; if (!(d & b)) { c[3263] = d | b; c[e >> 2] = r; c[r + 24 >> 2] = e; c[r + 12 >> 2] = r; c[r + 8 >> 2] = r; return } d = f << ((a | 0) == 31 ? 0 : 25 - (a >>> 1) | 0); e = c[e >> 2] | 0; while (1) { if ((c[e + 4 >> 2] & -8 | 0) == (f | 0)) { a = 127; break } b = e + 16 + (d >>> 31 << 2) | 0; a = c[b >> 2] | 0; if (!a) { a = 124; break } else { d = d << 1; e = a } } if ((a | 0) == 124) { if (b >>> 0 < (c[3266] | 0) >>> 0) ma(); c[b >> 2] = r; c[r + 24 >> 2] = e; c[r + 12 >> 2] = r; c[r + 8 >> 2] = r; return } else if ((a | 0) == 127) { a = e + 8 | 0; d = c[a >> 2] | 0; q = c[3266] | 0; if (!(d >>> 0 >= q >>> 0 & e >>> 0 >= q >>> 0)) ma(); c[d + 12 >> 2] = r; c[a >> 2] = r; c[r + 8 >> 2] = d; c[r + 12 >> 2] = e; c[r + 24 >> 2] = 0; return } } function en() { } function fn(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0; return (C = d, a - c >>> 0 | 0) | 0 } function gn(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; c = a + c >>> 0; return (C = b + d + (c >>> 0 < a >>> 0 | 0) >>> 0, c | 0) | 0 } function hn(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0, h = 0, i = 0; f = b + e | 0; if ((e | 0) >= 20) { d = d & 255; h = b & 3; i = d | d << 8 | d << 16 | d << 24; g = f & ~3; if (h) { h = b + 4 - h | 0; while ((b | 0) < (h | 0)) { a[b >> 0] = d; b = b + 1 | 0 } } while ((b | 0) < (g | 0)) { c[b >> 2] = i; b = b + 4 | 0 } } while ((b | 0) < (f | 0)) { a[b >> 0] = d; b = b + 1 | 0 } return b - e | 0 } function jn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; if ((c | 0) < 32) { C = b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c; return a << c } C = a << c - 32; return 0 } function kn(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0; p = p + 1 | 0; c[a >> 2] = p; while ((f | 0) < (e | 0)) { if (!(c[d + (f << 3) >> 2] | 0)) { c[d + (f << 3) >> 2] = p; c[d + ((f << 3) + 4) >> 2] = b; c[d + ((f << 3) + 8) >> 2] = 0; C = e; return d | 0 } f = f + 1 | 0 } e = e * 2 | 0; d = bn(d | 0, 8 * (e + 1 | 0) | 0) | 0; d = kn(a | 0, b | 0, d | 0, e | 0) | 0; C = e; return d | 0 } function ln(a, b, c) { a = a | 0; b = b | 0; c = c | 0; if ((c | 0) < 32) { C = b >>> c; return a >>> c | (b & (1 << c) - 1) << 32 - c } C = 0; return b >>> c - 32 | 0 } function mn(a, b, d) { a = a | 0; b = b | 0; d = d | 0; var e = 0, f = 0; while ((f | 0) < (d | 0)) { e = c[b + (f << 3) >> 2] | 0; if (!e) break; if ((e | 0) == (a | 0)) return c[b + ((f << 3) + 4) >> 2] | 0; f = f + 1 | 0 } return 0 } function nn(b, d, e) { b = b | 0; d = d | 0; e = e | 0; var f = 0; if ((e | 0) >= 4096) return za(b | 0, d | 0, e | 0) | 0; f = b | 0; if ((b & 3) == (d & 3)) { while (b & 3) { if (!e) return f | 0; a[b >> 0] = a[d >> 0] | 0; b = b + 1 | 0; d = d + 1 | 0; e = e - 1 | 0 } while ((e | 0) >= 4) { c[b >> 2] = c[d >> 2]; b = b + 4 | 0; d = d + 4 | 0; e = e - 4 | 0 } } while ((e | 0) > 0) { a[b >> 0] = a[d >> 0] | 0; b = b + 1 | 0; d = d + 1 | 0; e = e - 1 | 0 } return f | 0 } function on(b) { b = b | 0; var c = 0; c = a[m + (b & 255) >> 0] | 0; if ((c | 0) < 8) return c | 0; c = a[m + (b >> 8 & 255) >> 0] | 0; if ((c | 0) < 8) return c + 8 | 0; c = a[m + (b >> 16 & 255) >> 0] | 0; if ((c | 0) < 8) return c + 16 | 0; return (a[m + (b >>> 24) >> 0] | 0) + 24 | 0 } function pn(a, b, d, e, f) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; f = f | 0; var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; l = a; j = b; k = j; h = d; n = e; i = n; if (!k) { g = (f | 0) != 0; if (!i) { if (g) { c[f >> 2] = (l >>> 0) % (h >>> 0); c[f + 4 >> 2] = 0 } n = 0; f = (l >>> 0) / (h >>> 0) >>> 0; return (C = n, f) | 0 } else { if (!g) { n = 0; f = 0; return (C = n, f) | 0 } c[f >> 2] = a | 0; c[f + 4 >> 2] = b & 0; n = 0; f = 0; return (C = n, f) | 0 } } g = (i | 0) == 0; do if (h) { if (!g) { g = (U(i | 0) | 0) - (U(k | 0) | 0) | 0; if (g >>> 0 <= 31) { m = g + 1 | 0; i = 31 - g | 0; b = g - 31 >> 31; h = m; a = l >>> (m >>> 0) & b | k << i; b = k >>> (m >>> 0) & b; g = 0; i = l << i; break } if (!f) { n = 0; f = 0; return (C = n, f) | 0 } c[f >> 2] = a | 0; c[f + 4 >> 2] = j | b & 0; n = 0; f = 0; return (C = n, f) | 0 } g = h - 1 | 0; if (g & h | 0) { i = (U(h | 0) | 0) + 33 - (U(k | 0) | 0) | 0; p = 64 - i | 0; m = 32 - i | 0; j = m >> 31; o = i - 32 | 0; b = o >> 31; h = i; a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & b; b = b & k >>> (i >>> 0); g = l << p & j; i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31; break } if (f | 0) { c[f >> 2] = g & l; c[f + 4 >> 2] = 0 } if ((h | 0) == 1) { o = j | b & 0; p = a | 0 | 0; return (C = o, p) | 0 } else { p = on(h | 0) | 0; o = k >>> (p >>> 0) | 0; p = k << 32 - p | l >>> (p >>> 0) | 0; return (C = o, p) | 0 } } else { if (g) { if (f | 0) { c[f >> 2] = (k >>> 0) % (h >>> 0); c[f + 4 >> 2] = 0 } o = 0; p = (k >>> 0) / (h >>> 0) >>> 0; return (C = o, p) | 0 } if (!l) { if (f | 0) { c[f >> 2] = 0; c[f + 4 >> 2] = (k >>> 0) % (i >>> 0) } o = 0; p = (k >>> 0) / (i >>> 0) >>> 0; return (C = o, p) | 0 } g = i - 1 | 0; if (!(g & i)) { if (f | 0) { c[f >> 2] = a | 0; c[f + 4 >> 2] = g & k | b & 0 } o = 0; p = k >>> ((on(i | 0) | 0) >>> 0); return (C = o, p) | 0 } g = (U(i | 0) | 0) - (U(k | 0) | 0) | 0; if (g >>> 0 <= 30) { b = g + 1 | 0; i = 31 - g | 0; h = b; a = k << i | l >>> (b >>> 0); b = k >>> (b >>> 0); g = 0; i = l << i; break } if (!f) { o = 0; p = 0; return (C = o, p) | 0 } c[f >> 2] = a | 0; c[f + 4 >> 2] = j | b & 0; o = 0; p = 0; return (C = o, p) | 0 } while (0); if (!h) { k = i; j = 0; i = 0 } else { m = d | 0 | 0; l = n | e & 0; k = gn(m | 0, l | 0, -1, -1) | 0; d = C; j = i; i = 0; do { e = j; j = g >>> 31 | j << 1; g = i | g << 1; e = a << 1 | e >>> 31 | 0; n = a >>> 31 | b << 1 | 0; fn(k | 0, d | 0, e | 0, n | 0) | 0; p = C; o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1; i = o & 1; a = fn(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0; b = C; h = h - 1 | 0 } while ((h | 0) != 0); k = j; j = 0 } h = 0; if (f | 0) { c[f >> 2] = a; c[f + 4 >> 2] = b } o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j; p = (g << 1 | 0 >>> 31) & -2 | i; return (C = o, p) | 0 } function qn(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return pn(a, b, c, d, 0) | 0 } function rn(a, b) { a = a | 0; b = b | 0; var c = 0, d = 0, e = 0, f = 0; f = a & 65535; e = b & 65535; c = R(e, f) | 0; d = a >>> 16; a = (c >>> 16) + (R(e, d) | 0) | 0; e = b >>> 16; b = R(e, f) | 0; return (C = (a >>> 16) + (R(e, d) | 0) + (((a & 65535) + b | 0) >>> 16) | 0, a + b << 16 | c & 65535 | 0) | 0 } function sn(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; var e = 0, f = 0; e = a; f = c; c = rn(e, f) | 0; a = C; return (C = (R(b, f) | 0) + (R(d, e) | 0) + a | a & 0, c | 0 | 0) | 0 } function tn(a, b, d, e) { a = a | 0; b = b | 0; d = d | 0; e = e | 0; var f = 0, g = 0; g = i; i = i + 16 | 0; f = g | 0; pn(a, b, d, e, f) | 0; i = g; return (C = c[f + 4 >> 2] | 0, c[f >> 2] | 0) | 0 } function un() { return 0 } function vn(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return Ya[a & 31](b | 0, c | 0, d | 0) | 0 } function wn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Y(0, a | 0, b | 0, c | 0) | 0 } function xn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Y(1, a | 0, b | 0, c | 0) | 0 } function yn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Y(2, a | 0, b | 0, c | 0) | 0 } function zn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Y(3, a | 0, b | 0, c | 0) | 0 } function An(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Y(4, a | 0, b | 0, c | 0) | 0 } function Bn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Y(5, a | 0, b | 0, c | 0) | 0 } function Cn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Y(6, a | 0, b | 0, c | 0) | 0 } function Dn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return Y(7, a | 0, b | 0, c | 0) | 0 } function En(a, b) { a = a | 0; b = b | 0; Za[a & 31](b | 0) } function Fn(a) { a = a | 0; _(0, a | 0) } function Gn(a) { a = a | 0; _(1, a | 0) } function Hn(a) { a = a | 0; _(2, a | 0) } function In(a) { a = a | 0; _(3, a | 0) } function Jn(a) { a = a | 0; _(4, a | 0) } function Kn(a) { a = a | 0; _(5, a | 0) } function Ln(a) { a = a | 0; _(6, a | 0) } function Mn(a) { a = a | 0; _(7, a | 0) } function Nn(a, b, c) { a = a | 0; b = b | 0; c = c | 0; _a[a & 31](b | 0, c | 0) } function On(a, b) { a = a | 0; b = b | 0; aa(0, a | 0, b | 0) } function Pn(a, b) { a = a | 0; b = b | 0; aa(1, a | 0, b | 0) } function Qn(a, b) { a = a | 0; b = b | 0; aa(2, a | 0, b | 0) } function Rn(a, b) { a = a | 0; b = b | 0; aa(3, a | 0, b | 0) } function Sn(a, b) { a = a | 0; b = b | 0; aa(4, a | 0, b | 0) } function Tn(a, b) { a = a | 0; b = b | 0; aa(5, a | 0, b | 0) } function Un(a, b) { a = a | 0; b = b | 0; aa(6, a | 0, b | 0) } function Vn(a, b) { a = a | 0; b = b | 0; aa(7, a | 0, b | 0) } function Wn(a, b) { a = a | 0; b = b | 0; return $a[a & 255](b | 0) | 0 } function Xn(a) { a = a | 0; return ca(0, a | 0) | 0 } function Yn(a) { a = a | 0; return ca(1, a | 0) | 0 } function Zn(a) { a = a | 0; return ca(2, a | 0) | 0 } function _n(a) { a = a | 0; return ca(3, a | 0) | 0 } function $n(a) { a = a | 0; return ca(4, a | 0) | 0 } function ao(a) { a = a | 0; return ca(5, a | 0) | 0 } function bo(a) { a = a | 0; return ca(6, a | 0) | 0 } function co(a) { a = a | 0; return ca(7, a | 0) | 0 } function eo(a, b, c, d, e) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; e = e | 0; return ab[a & 31](b | 0, c | 0, d | 0, e | 0) | 0 } function fo(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return ea(0, a | 0, b | 0, c | 0, d | 0) | 0 } function go(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return ea(1, a | 0, b | 0, c | 0, d | 0) | 0 } function ho(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return ea(2, a | 0, b | 0, c | 0, d | 0) | 0 } function io(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return ea(3, a | 0, b | 0, c | 0, d | 0) | 0 } function jo(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return ea(4, a | 0, b | 0, c | 0, d | 0) | 0 } function ko(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return ea(5, a | 0, b | 0, c | 0, d | 0) | 0 } function lo(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return ea(6, a | 0, b | 0, c | 0, d | 0) | 0 } function mo(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; return ea(7, a | 0, b | 0, c | 0, d | 0) | 0 } function no(a, b, c) { a = a | 0; b = b | 0; c = c | 0; return bb[a & 31](b | 0, c | 0) | 0 } function oo(a, b) { a = a | 0; b = b | 0; return ga(0, a | 0, b | 0) | 0 } function po(a, b) { a = a | 0; b = b | 0; return ga(1, a | 0, b | 0) | 0 } function qo(a, b) { a = a | 0; b = b | 0; return ga(2, a | 0, b | 0) | 0 } function ro(a, b) { a = a | 0; b = b | 0; return ga(3, a | 0, b | 0) | 0 } function so(a, b) { a = a | 0; b = b | 0; return ga(4, a | 0, b | 0) | 0 } function to(a, b) { a = a | 0; b = b | 0; return ga(5, a | 0, b | 0) | 0 } function uo(a, b) { a = a | 0; b = b | 0; return ga(6, a | 0, b | 0) | 0 } function vo(a, b) { a = a | 0; b = b | 0; return ga(7, a | 0, b | 0) | 0 } function wo(a, b, c) { a = a | 0; b = b | 0; c = c | 0; V(0); return 0 } function xo(a) { a = a | 0; V(1) } function yo(a, b) { a = a | 0; b = b | 0; V(2) } function zo(a) { a = a | 0; V(3); return 0 } function Ao(a, b, c, d) { a = a | 0; b = b | 0; c = c | 0; d = d | 0; V(4); return 0 } function Bo(a, b) { a = a | 0; b = b | 0; V(5); return 0 } + + // EMSCRIPTEN_END_FUNCS + var Ya = [wo, wo, wn, wo, xn, wo, yn, wo, zn, wo, An, wo, Bn, wo, Cn, wo, Dn, wo, Xk, Yk, bl, cl, Pl, vh, xh, Yh, wo, wo, wo, wo, wo, wo]; var Za = [xo, xo, Fn, xo, Gn, xo, Hn, xo, In, xo, Jn, xo, Kn, xo, Ln, xo, Mn, xo, $k, dl, xo, xo, xo, xo, xo, xo, xo, xo, xo, xo, xo, xo]; var _a = [yo, yo, On, yo, Pn, yo, Qn, yo, Rn, yo, Sn, yo, Tn, yo, Un, yo, Vn, yo, kb, tc, Md, Pd, Zd, Be, Cf, Mi, yo, yo, yo, yo, yo, yo]; var $a = [zo, zo, Xn, zo, Yn, zo, Zn, zo, _n, zo, $n, zo, ao, zo, bo, zo, co, zo, zh, Ah, Bh, Ch, Dh, Eh, Fh, Gh, Hh, Ih, Jh, Kh, Lh, Mh, Nh, Oh, Ph, Qh, Rh, Sh, Th, Uh, ai, bi, ci, di, ei, fi, gi, hi, ii, ji, ki, li, ni, oi, pi, qi, ri, si, wi, xi, yi, zi, Ai, Bi, Ci, Di, Ei, Fi, Gi, Hi, Ii, Ji, Ki, Li, Pi, bj, cj, dj, ej, fj, gj, hj, ij, jj, kj, Qi, Ri, Si, Ti, Ui, Vi, Wi, Xi, pj, qj, rj, sj, tj, uj, vj, wj, xj, yj, zj, Aj, Bj, Cj, Dj, Ej, Fj, Gj, Hj, Ij, Jj, Kj, Lj, Mj, Nj, Oj, Pj, Qj, Sj, Tj, Uj, Vj, Wj, Xj, Yj, Zj, _j, $j, ak, ck, dk, ek, fk, gk, hk, ik, jk, kk, lk, mk, nk, ok, pk, xk, yk, zk, Ak, Bk, Ck, Dk, Sk, Tk, Uk, Nk, Ok, Wk, uh, _h, Zh, Vh, ti, Oi, aj, lj, mj, uk, Hk, Ik, Jk, Kk, Lk, yh, Gk, mi, wk, Ni, Rj, bk, $h, oj, vi, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo, zo]; var ab = [Ao, Ao, fo, Ao, go, Ao, ho, Ao, io, Ao, jo, Ao, ko, Ao, lo, Ao, mo, Ao, th, vk, Ao, Ao, Ao, Ao, Ao, Ao, Ao, Ao, Ao, Ao, Ao, Ao]; var bb = [Bo, Bo, oo, Bo, po, Bo, qo, Bo, ro, Bo, so, Bo, to, Bo, uo, Bo, vo, Bo, Af, Bo, Bo, Bo, Bo, Bo, Bo, Bo, Bo, Bo, Bo, Bo, Bo, Bo]; return { _luaL_checkstack: Jg, _lua_setglobal: ic, _lua_pushlightuserdata: Zb, _bitshift64Lshr: ln, _lua_copy: ub, _lua_createtable: fc, _luaL_optinteger: $g, _lua_arith: Db, _lua_pushnil: Pb, _lua_setmetatable: oc, _lua_concat: Ac, _luaL_optlstring: ah, _luaopen_io: Ni, _memcpy: nn, _luaL_pushmodule: eh, _luaL_pushresultsize: gh, _lua_pushthread: _b, _lua_close: zf, _luaopen_math: oj, _lua_gettable: ac, _lua_replace: tb, _lua_xmove: lb, _lua_load: uc, _lua_pcallk: sc, _lua_touserdata: Mb, _lua_getglobal: $b, _luaL_prepbuffsize: dh, _lua_rawget: cc, _free: an, _lua_pushcclosure: Xb, _lua_pushstring: Ub, ___uremdi3: tn, _lua_upvaluejoin: Ic, _luaopen_string: bk, _lua_isuserdata: Bb, _luaL_loadbufferx: Vg, _luaL_buffinit: Bg, _lua_resume: Jd, _lua_iscfunction: yb, _luaL_execresult: Pg, _lua_remove: rb, _luaL_checkoption: Ig, _lua_rawlen: Kb, _lua_len: Bc, _luaL_openlib: _g, _lua_pushvfstring: Vb, _lua_isnumber: zb, _llvm_cttz_i32: on, _lua_newuserdata: Ec, _lua_isstring: Ab, _lua_pushlstring: Tb, _lua_status: wc, _lua_setuservalue: pc, _luaL_len: Ug, _lua_callk: rc, _luaL_checkany: Eg, _luaL_addstring: yg, _lua_pushfstring: Wb, _lua_newthread: Bf, _i64Add: gn, _lua_tolstring: Jb, _lua_rawset: lc, _luaL_traceback: nh, _luaL_requiref: ih, _lua_checkstack: jb, _lua_pushnumber: Qb, _luaL_pushresult: fh, _lua_topointer: Ob, _lua_error: yc, _luaL_setfuncs: jh, _luaopen_debug: vi, _lua_compare: Eb, _luaL_checkinteger: Fg, _lua_getstack: zd, _lua_gettop: pb, _lua_getlocal: yd, _lua_gc: xc, _luaL_checklstring: Gg, _luaL_checkunsigned: Mg, _lua_settable: jc, _luaL_addlstring: xg, _luaL_fileresult: Qg, _lua_toboolean: Ib, _lua_setallocf: Dc, _memset: hn, _lua_gethook: ud, _lua_tointegerx: Gb, _lua_gethookcount: vd, _luaL_testudata: lh, _lua_tounsignedx: Hb, _luaL_openlibs: Vk, _lua_setlocal: Bd, _luaL_optunsigned: ch, _lua_tothread: Nb, _i64Subtract: fn, _lua_rawseti: mc, _lua_rawgetp: ec, _lua_version: nb, _lua_newstate: Af, _lua_pushvalue: vb, _lua_getctx: qc, _lua_tocfunction: Lb, _lua_insert: sb, _lua_typename: xb, _luaL_argerror: Ag, _lua_absindex: ob, _lua_upvalueid: Hc, _lua_rawgeti: dc, ___muldsi3: rn, _testSetjmp: mn, _lua_sethook: Ad, _luaL_callmeta: Dg, _lua_getallocf: Cc, _luaL_loadfilex: Wg, _malloc: $m, _lua_rawequal: Cb, _lua_yieldk: Kd, _lua_type: wb, _lua_getfield: bc, _luaopen_os: Rj, _luaL_checkversion_: Ng, ___udivdi3: qn, _luaL_buffinitsize: Cg, _luaL_checknumber: Hg, _lua_setupvalue: Gc, _luaL_newmetatable: Yg, _lua_getmetatable: gc, _lua_pushunsigned: Sb, _lua_getupvalue: Fc, _luaopen_base: yh, _luaL_gsub: Tg, _luaL_addvalue: zg, ___udivmoddi4: pn, _luaL_tolstring: mh, _lua_atpanic: mb, _luaL_getmetafield: Rg, _lua_getinfo: xd, _luaL_setmetatable: kh, _lua_settop: qb, _lua_pushboolean: Yb, _lua_setfield: kc, _luaL_checktype: Kg, _luaL_ref: hh, _bitshift64Shl: jn, _lua_next: zc, _luaL_checkudata: Lg, _realloc: bn, _luaopen_table: wk, _luaopen_coroutine: mi, _pthread_self: un, _luaopen_bit32: $h, _luaL_getsubtable: Sg, _lua_getuservalue: hc, _luaopen_package: Gk, ___errno_location: _k, _lua_dump: vc, _saveSetjmp: kn, _luaL_optnumber: bh, _lua_pushinteger: Rb, _lua_gethookmask: wd, _luaL_newstate: Zg, _lua_tonumberx: Fb, _luaL_where: ph, ___muldi3: sn, _lua_rawsetp: nc, _luaL_error: Og, _luaL_loadstring: Xg, _luaL_unref: oh, runPostSets: en, stackAlloc: cb, stackSave: db, stackRestore: eb, establishStackSpace: fb, setThrew: gb, setTempRet0: hb, getTempRet0: ib, dynCall_iiii: vn, dynCall_vi: En, dynCall_vii: Nn, dynCall_ii: Wn, dynCall_iiiii: eo, dynCall_iii: no } + }) + + + // EMSCRIPTEN_END_ASM + (Module.asmGlobalArg, Module.asmLibraryArg, buffer); var _luaL_checkstack = Module["_luaL_checkstack"] = asm["_luaL_checkstack"]; var _lua_setglobal = Module["_lua_setglobal"] = asm["_lua_setglobal"]; var _lua_pushlightuserdata = Module["_lua_pushlightuserdata"] = asm["_lua_pushlightuserdata"]; var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"]; var _lua_copy = Module["_lua_copy"] = asm["_lua_copy"]; var _lua_createtable = Module["_lua_createtable"] = asm["_lua_createtable"]; var _luaL_optinteger = Module["_luaL_optinteger"] = asm["_luaL_optinteger"]; var _lua_arith = Module["_lua_arith"] = asm["_lua_arith"]; var _lua_pushnil = Module["_lua_pushnil"] = asm["_lua_pushnil"]; var _lua_setmetatable = Module["_lua_setmetatable"] = asm["_lua_setmetatable"]; var _lua_pushthread = Module["_lua_pushthread"] = asm["_lua_pushthread"]; var _luaL_optlstring = Module["_luaL_optlstring"] = asm["_luaL_optlstring"]; var _luaopen_io = Module["_luaopen_io"] = asm["_luaopen_io"]; var _memcpy = Module["_memcpy"] = asm["_memcpy"]; var _luaL_pushmodule = Module["_luaL_pushmodule"] = asm["_luaL_pushmodule"]; var _luaL_pushresultsize = Module["_luaL_pushresultsize"] = asm["_luaL_pushresultsize"]; var _lua_upvalueid = Module["_lua_upvalueid"] = asm["_lua_upvalueid"]; var _lua_close = Module["_lua_close"] = asm["_lua_close"]; var _luaopen_math = Module["_luaopen_math"] = asm["_luaopen_math"]; var _luaL_setfuncs = Module["_luaL_setfuncs"] = asm["_luaL_setfuncs"]; var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"]; var _lua_gethookmask = Module["_lua_gethookmask"] = asm["_lua_gethookmask"]; var runPostSets = Module["runPostSets"] = asm["runPostSets"]; var _lua_xmove = Module["_lua_xmove"] = asm["_lua_xmove"]; var _lua_load = Module["_lua_load"] = asm["_lua_load"]; var _lua_pcallk = Module["_lua_pcallk"] = asm["_lua_pcallk"]; var _lua_touserdata = Module["_lua_touserdata"] = asm["_lua_touserdata"]; var _lua_getglobal = Module["_lua_getglobal"] = asm["_lua_getglobal"]; var _luaL_prepbuffsize = Module["_luaL_prepbuffsize"] = asm["_luaL_prepbuffsize"]; var _lua_rawget = Module["_lua_rawget"] = asm["_lua_rawget"]; var _free = Module["_free"] = asm["_free"]; var _lua_pushcclosure = Module["_lua_pushcclosure"] = asm["_lua_pushcclosure"]; var _lua_pushstring = Module["_lua_pushstring"] = asm["_lua_pushstring"]; var _lua_next = Module["_lua_next"] = asm["_lua_next"]; var _lua_upvaluejoin = Module["_lua_upvaluejoin"] = asm["_lua_upvaluejoin"]; var _luaopen_string = Module["_luaopen_string"] = asm["_luaopen_string"]; var _lua_isuserdata = Module["_lua_isuserdata"] = asm["_lua_isuserdata"]; var _luaL_loadbufferx = Module["_luaL_loadbufferx"] = asm["_luaL_loadbufferx"]; var _lua_resume = Module["_lua_resume"] = asm["_lua_resume"]; var _lua_iscfunction = Module["_lua_iscfunction"] = asm["_lua_iscfunction"]; var _luaL_newstate = Module["_luaL_newstate"] = asm["_luaL_newstate"]; var _luaL_execresult = Module["_luaL_execresult"] = asm["_luaL_execresult"]; var _lua_remove = Module["_lua_remove"] = asm["_lua_remove"]; var _luaL_checkoption = Module["_luaL_checkoption"] = asm["_luaL_checkoption"]; var _lua_rawlen = Module["_lua_rawlen"] = asm["_lua_rawlen"]; var _lua_len = Module["_lua_len"] = asm["_lua_len"]; var _luaL_openlib = Module["_luaL_openlib"] = asm["_luaL_openlib"]; var _lua_pushvfstring = Module["_lua_pushvfstring"] = asm["_lua_pushvfstring"]; var _realloc = Module["_realloc"] = asm["_realloc"]; var _lua_isnumber = Module["_lua_isnumber"] = asm["_lua_isnumber"]; var _llvm_cttz_i32 = Module["_llvm_cttz_i32"] = asm["_llvm_cttz_i32"]; var _luaL_checklstring = Module["_luaL_checklstring"] = asm["_luaL_checklstring"]; var _lua_isstring = Module["_lua_isstring"] = asm["_lua_isstring"]; var _lua_pushlstring = Module["_lua_pushlstring"] = asm["_lua_pushlstring"]; var _lua_settable = Module["_lua_settable"] = asm["_lua_settable"]; var _luaL_len = Module["_luaL_len"] = asm["_luaL_len"]; var _lua_callk = Module["_lua_callk"] = asm["_lua_callk"]; var _luaL_checkany = Module["_luaL_checkany"] = asm["_luaL_checkany"]; var _luaL_addstring = Module["_luaL_addstring"] = asm["_luaL_addstring"]; var _lua_pushfstring = Module["_lua_pushfstring"] = asm["_lua_pushfstring"]; var _lua_newthread = Module["_lua_newthread"] = asm["_lua_newthread"]; var _lua_tolstring = Module["_lua_tolstring"] = asm["_lua_tolstring"]; var _lua_rawset = Module["_lua_rawset"] = asm["_lua_rawset"]; var _luaL_traceback = Module["_luaL_traceback"] = asm["_luaL_traceback"]; var _luaL_requiref = Module["_luaL_requiref"] = asm["_luaL_requiref"]; var _lua_checkstack = Module["_lua_checkstack"] = asm["_lua_checkstack"]; var _lua_pushnumber = Module["_lua_pushnumber"] = asm["_lua_pushnumber"]; var _luaL_pushresult = Module["_luaL_pushresult"] = asm["_luaL_pushresult"]; var _lua_topointer = Module["_lua_topointer"] = asm["_lua_topointer"]; var _lua_error = Module["_lua_error"] = asm["_lua_error"]; var _lua_gettable = Module["_lua_gettable"] = asm["_lua_gettable"]; var _luaopen_debug = Module["_luaopen_debug"] = asm["_luaopen_debug"]; var _lua_concat = Module["_lua_concat"] = asm["_lua_concat"]; var _luaL_checkinteger = Module["_luaL_checkinteger"] = asm["_luaL_checkinteger"]; var _lua_getstack = Module["_lua_getstack"] = asm["_lua_getstack"]; var _lua_gettop = Module["_lua_gettop"] = asm["_lua_gettop"]; var _lua_getlocal = Module["_lua_getlocal"] = asm["_lua_getlocal"]; var _lua_gc = Module["_lua_gc"] = asm["_lua_gc"]; var _lua_newuserdata = Module["_lua_newuserdata"] = asm["_lua_newuserdata"]; var _luaL_checkunsigned = Module["_luaL_checkunsigned"] = asm["_luaL_checkunsigned"]; var _lua_setuservalue = Module["_lua_setuservalue"] = asm["_lua_setuservalue"]; var _luaL_addlstring = Module["_luaL_addlstring"] = asm["_luaL_addlstring"]; var _luaL_fileresult = Module["_luaL_fileresult"] = asm["_luaL_fileresult"]; var _lua_toboolean = Module["_lua_toboolean"] = asm["_lua_toboolean"]; var _lua_setallocf = Module["_lua_setallocf"] = asm["_lua_setallocf"]; var _memset = Module["_memset"] = asm["_memset"]; var _lua_gethook = Module["_lua_gethook"] = asm["_lua_gethook"]; var _lua_tointegerx = Module["_lua_tointegerx"] = asm["_lua_tointegerx"]; var _lua_gethookcount = Module["_lua_gethookcount"] = asm["_lua_gethookcount"]; var _luaL_testudata = Module["_luaL_testudata"] = asm["_luaL_testudata"]; var _lua_tounsignedx = Module["_lua_tounsignedx"] = asm["_lua_tounsignedx"]; var _luaL_openlibs = Module["_luaL_openlibs"] = asm["_luaL_openlibs"]; var _lua_setlocal = Module["_lua_setlocal"] = asm["_lua_setlocal"]; var _luaL_optunsigned = Module["_luaL_optunsigned"] = asm["_luaL_optunsigned"]; var _lua_tothread = Module["_lua_tothread"] = asm["_lua_tothread"]; var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"]; var _lua_rawgetp = Module["_lua_rawgetp"] = asm["_lua_rawgetp"]; var _lua_version = Module["_lua_version"] = asm["_lua_version"]; var _lua_newstate = Module["_lua_newstate"] = asm["_lua_newstate"]; var _lua_pushvalue = Module["_lua_pushvalue"] = asm["_lua_pushvalue"]; var _lua_getctx = Module["_lua_getctx"] = asm["_lua_getctx"]; var _lua_tocfunction = Module["_lua_tocfunction"] = asm["_lua_tocfunction"]; var _lua_insert = Module["_lua_insert"] = asm["_lua_insert"]; var _lua_typename = Module["_lua_typename"] = asm["_lua_typename"]; var _luaL_argerror = Module["_luaL_argerror"] = asm["_luaL_argerror"]; var _lua_absindex = Module["_lua_absindex"] = asm["_lua_absindex"]; var _lua_rawgeti = Module["_lua_rawgeti"] = asm["_lua_rawgeti"]; var ___muldsi3 = Module["___muldsi3"] = asm["___muldsi3"]; var _testSetjmp = Module["_testSetjmp"] = asm["_testSetjmp"]; var _lua_sethook = Module["_lua_sethook"] = asm["_lua_sethook"]; var _luaL_callmeta = Module["_luaL_callmeta"] = asm["_luaL_callmeta"]; var _luaL_buffinit = Module["_luaL_buffinit"] = asm["_luaL_buffinit"]; var _luaL_loadfilex = Module["_luaL_loadfilex"] = asm["_luaL_loadfilex"]; var _malloc = Module["_malloc"] = asm["_malloc"]; var _lua_rawequal = Module["_lua_rawequal"] = asm["_lua_rawequal"]; var _lua_yieldk = Module["_lua_yieldk"] = asm["_lua_yieldk"]; var _lua_type = Module["_lua_type"] = asm["_lua_type"]; var _lua_compare = Module["_lua_compare"] = asm["_lua_compare"]; var _lua_getfield = Module["_lua_getfield"] = asm["_lua_getfield"]; var _luaopen_os = Module["_luaopen_os"] = asm["_luaopen_os"]; var _luaL_checkversion_ = Module["_luaL_checkversion_"] = asm["_luaL_checkversion_"]; var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"]; var _luaL_buffinitsize = Module["_luaL_buffinitsize"] = asm["_luaL_buffinitsize"]; var _luaL_checknumber = Module["_luaL_checknumber"] = asm["_luaL_checknumber"]; var _lua_setupvalue = Module["_lua_setupvalue"] = asm["_lua_setupvalue"]; var _luaL_newmetatable = Module["_luaL_newmetatable"] = asm["_luaL_newmetatable"]; var _lua_getmetatable = Module["_lua_getmetatable"] = asm["_lua_getmetatable"]; var _lua_pushunsigned = Module["_lua_pushunsigned"] = asm["_lua_pushunsigned"]; var _lua_getupvalue = Module["_lua_getupvalue"] = asm["_lua_getupvalue"]; var _luaopen_base = Module["_luaopen_base"] = asm["_luaopen_base"]; var _luaL_gsub = Module["_luaL_gsub"] = asm["_luaL_gsub"]; var _luaL_addvalue = Module["_luaL_addvalue"] = asm["_luaL_addvalue"]; var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"]; var _luaL_tolstring = Module["_luaL_tolstring"] = asm["_luaL_tolstring"]; var _lua_atpanic = Module["_lua_atpanic"] = asm["_lua_atpanic"]; var _luaL_getmetafield = Module["_luaL_getmetafield"] = asm["_luaL_getmetafield"]; var _lua_getinfo = Module["_lua_getinfo"] = asm["_lua_getinfo"]; var _luaL_setmetatable = Module["_luaL_setmetatable"] = asm["_luaL_setmetatable"]; var _lua_settop = Module["_lua_settop"] = asm["_lua_settop"]; var _lua_pushboolean = Module["_lua_pushboolean"] = asm["_lua_pushboolean"]; var _lua_setfield = Module["_lua_setfield"] = asm["_lua_setfield"]; var _luaL_checktype = Module["_luaL_checktype"] = asm["_luaL_checktype"]; var _lua_replace = Module["_lua_replace"] = asm["_lua_replace"]; var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"]; var _luaL_checkudata = Module["_luaL_checkudata"] = asm["_luaL_checkudata"]; var _luaL_ref = Module["_luaL_ref"] = asm["_luaL_ref"]; var _i64Add = Module["_i64Add"] = asm["_i64Add"]; var _luaopen_coroutine = Module["_luaopen_coroutine"] = asm["_luaopen_coroutine"]; var _pthread_self = Module["_pthread_self"] = asm["_pthread_self"]; var _luaopen_bit32 = Module["_luaopen_bit32"] = asm["_luaopen_bit32"]; var _luaopen_table = Module["_luaopen_table"] = asm["_luaopen_table"]; var _luaL_getsubtable = Module["_luaL_getsubtable"] = asm["_luaL_getsubtable"]; var _lua_getuservalue = Module["_lua_getuservalue"] = asm["_lua_getuservalue"]; var _luaopen_package = Module["_luaopen_package"] = asm["_luaopen_package"]; var ___errno_location = Module["___errno_location"] = asm["___errno_location"]; var _lua_rawseti = Module["_lua_rawseti"] = asm["_lua_rawseti"]; var _saveSetjmp = Module["_saveSetjmp"] = asm["_saveSetjmp"]; var _luaL_optnumber = Module["_luaL_optnumber"] = asm["_luaL_optnumber"]; var _lua_pushinteger = Module["_lua_pushinteger"] = asm["_lua_pushinteger"]; var _lua_getallocf = Module["_lua_getallocf"] = asm["_lua_getallocf"]; var _lua_dump = Module["_lua_dump"] = asm["_lua_dump"]; var _lua_status = Module["_lua_status"] = asm["_lua_status"]; var _lua_tonumberx = Module["_lua_tonumberx"] = asm["_lua_tonumberx"]; var _luaL_where = Module["_luaL_where"] = asm["_luaL_where"]; var ___muldi3 = Module["___muldi3"] = asm["___muldi3"]; var _lua_rawsetp = Module["_lua_rawsetp"] = asm["_lua_rawsetp"]; var _luaL_error = Module["_luaL_error"] = asm["_luaL_error"]; var _luaL_unref = Module["_luaL_unref"] = asm["_luaL_unref"]; var _luaL_loadstring = Module["_luaL_loadstring"] = asm["_luaL_loadstring"]; var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"]; var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"]; var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"]; var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"]; var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"]; var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; Runtime.stackAlloc = asm["stackAlloc"]; Runtime.stackSave = asm["stackSave"]; Runtime.stackRestore = asm["stackRestore"]; Runtime.establishStackSpace = asm["establishStackSpace"]; Runtime.setTempRet0 = asm["setTempRet0"]; Runtime.getTempRet0 = asm["getTempRet0"]; function ExitStatus(status) { this.name = "ExitStatus"; this.message = "Program terminated with exit(" + status + ")"; this.status = status } ExitStatus.prototype = new Error; ExitStatus.prototype.constructor = ExitStatus; var initialStackTop; var preloadStartTime = null; var calledMain = false; dependenciesFulfilled = function runCaller() { if (!Module["calledRun"]) run(); if (!Module["calledRun"]) dependenciesFulfilled = runCaller }; Module["callMain"] = Module.callMain = function callMain(args) { args = args || []; ensureInitRuntime(); var argc = args.length + 1; function pad() { for (var i = 0; i < 4 - 1; i++) { argv.push(0) } } var argv = [allocate(intArrayFromString(Module["thisProgram"]), "i8", ALLOC_NORMAL)]; pad(); for (var i = 0; i < argc - 1; i = i + 1) { argv.push(allocate(intArrayFromString(args[i]), "i8", ALLOC_NORMAL)); pad() } argv.push(0); argv = allocate(argv, "i32", ALLOC_NORMAL); try { var ret = Module["_main"](argc, argv, 0); exit(ret, true) } catch (e) { if (e instanceof ExitStatus) { return } else if (e == "SimulateInfiniteLoop") { Module["noExitRuntime"] = true; return } else { if (e && typeof e === "object" && e.stack) Module.printErr("exception thrown: " + [e, e.stack]); throw e } } finally { calledMain = true } }; function run(args) { args = args || Module["arguments"]; if (preloadStartTime === null) preloadStartTime = Date.now(); if (runDependencies > 0) { return } preRun(); if (runDependencies > 0) return; if (Module["calledRun"]) return; function doRun() { if (Module["calledRun"]) return; Module["calledRun"] = true; if (ABORT) return; ensureInitRuntime(); preMain(); if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); if (Module["_main"] && shouldRunNow) Module["callMain"](args); postRun() } if (Module["setStatus"]) { Module["setStatus"]("Running..."); setTimeout((function () { setTimeout((function () { Module["setStatus"]("") }), 1); doRun() }), 1) } else { doRun() } } Module["run"] = Module.run = run; function exit(status, implicit) { if (implicit && Module["noExitRuntime"]) { return } if (Module["noExitRuntime"]) { } else { ABORT = true; EXITSTATUS = status; STACKTOP = initialStackTop; exitRuntime(); if (Module["onExit"]) Module["onExit"](status) } if (ENVIRONMENT_IS_NODE) { process["exit"](status) } else if (ENVIRONMENT_IS_SHELL && typeof quit === "function") { quit(status) } throw new ExitStatus(status) } Module["exit"] = Module.exit = exit; var abortDecorators = []; function abort(what) { if (what !== undefined) { Module.print(what); Module.printErr(what); what = JSON.stringify(what) } else { what = "" } ABORT = true; EXITSTATUS = 1; var extra = "\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information."; var output = "abort(" + what + ") at " + stackTrace() + extra; if (abortDecorators) { abortDecorators.forEach((function (decorator) { output = decorator(output, what) })) } throw output } Module["abort"] = Module.abort = abort; if (Module["preInit"]) { if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]]; while (Module["preInit"].length > 0) { Module["preInit"].pop()() } } var shouldRunNow = false; if (Module["noInitialRun"]) { shouldRunNow = false } Module["noExitRuntime"] = true; run(); !(function (exports, global, emscripten) { var slice = [].slice; var apply = (function () { }).apply; function new_(a, b, c, d, e, f, g, h, i) { switch (arguments.length) { case 0: return new this; case 1: return new this(a); case 2: return new this(a, b); case 3: return new this(a, b, c); case 4: return new this(a, b, c, d); case 5: return new this(a, b, c, d, e); case 6: return new this(a, b, c, d, e, f); case 7: return new this(a, b, c, d, e, f, g); case 8: return new this(a, b, c, d, e, f, g, h); case 9: return new this(a, b, c, d, e, f, g, h, i); default: var obj = Object.create(this.prototype); var ret = apply.call(this, obj, arguments); return typeof ret === "object" && ret !== null || typeof ret === "function" ? ret : obj } } var Lua = exports.Lua = { "defines": { "REGISTRYINDEX": -1e6 - 1e3, "RIDX_GLOBALS": 2, "RIDX_MAINTHREAD": 1, "MULTRET": -1, "NOREF": -2, "GC": { "STOP": 0, "RESTART": 1, "COLLECT": 2, "COUNT": 3, "COUNTB": 4, "STEP": 5, "SETPAUSE": 6, "SETSTEPMUL": 7, "SETMAJORINC": 8, "ISRUNNING": 9, "GEN": 10, "INC": 11 }, "T": { "NONE": -1, "NIL": 0, "BOOLEAN": 1, "LIGHTUSERDATA": 2, "NUMBER": 3, "STRING": 4, "TABLE": 5, "FUNCTION": 6, "USERDATA": 7, "THREAD": 8 } }, "lib": { "checkstack": emscripten.cwrap("lua_checkstack", null, ["number", "number"]), "createtable": emscripten.cwrap("lua_createtable", null, ["number", "number", "number"]), "error": emscripten.cwrap("lua_error", "number", ["number"]), "gc": emscripten.cwrap("lua_gc", "number", ["number", "number", "number"]), "getfield": emscripten.cwrap("lua_getfield", null, ["number", "number", "string"]), "getglobal": emscripten.cwrap("lua_getglobal", null, ["number", "string"]), "gettable": emscripten.cwrap("lua_gettable", null, ["number", "number"]), "gettop": emscripten.cwrap("lua_gettop", "number", ["number"]), "newuserdata": emscripten.cwrap("lua_newuserdata", "number", ["number", "number"]), "pcallk": emscripten.cwrap("lua_pcallk", "number", ["number", "number", "number", "number", "number", "number"]), "pushboolean": emscripten.cwrap("lua_pushboolean", null, ["number", "number"]), "pushcclosure": emscripten.cwrap("lua_pushcclosure", null, ["number", "number", "number"]), "pushlightuserdata": emscripten.cwrap("lua_pushlightuserdata", null, ["number", "number"]), "pushlstring": emscripten.cwrap("lua_pushlstring", null, ["number", "array", "number"]), "pushnil": emscripten.cwrap("lua_pushnil", null, ["number"]), "pushnumber": emscripten.cwrap("lua_pushnumber", null, ["number", "number"]), "pushvalue": emscripten.cwrap("lua_pushvalue", null, ["number", "number"]), "rawgeti": emscripten.cwrap("lua_rawgeti", null, ["number", "number", "number"]), "remove": emscripten.cwrap("lua_remove", null, ["number", "number"]), "setfield": emscripten.cwrap("lua_setfield", null, ["number", "number", "string"]), "setglobal": emscripten.cwrap("lua_setglobal", null, ["number", "string"]), "setmetatable": emscripten.cwrap("lua_setmetatable", null, ["number", "number"]), "settable": emscripten.cwrap("lua_settable", null, ["number", "number"]), "settop": emscripten.cwrap("lua_settop", null, ["number", "number"]), "toboolean": emscripten.cwrap("lua_toboolean", "number", ["number", "number"]), "tolstring": emscripten.cwrap("lua_tolstring", "number", ["number", "number", "number"]), "tonumberx": emscripten.cwrap("lua_tonumberx", "number", ["number", "number", "number"]), "tothread": emscripten.cwrap("lua_tothread", "number", ["number", "number"]), "touserdata": emscripten.cwrap("lua_touserdata", "number", ["number", "number"]), "type": emscripten.cwrap("lua_type", "number", ["number", "number"]), "typename": emscripten.cwrap("lua_typename", "string", ["number", "number"]) }, "auxlib": { "checkudata": emscripten.cwrap("luaL_checkudata", "number", ["number", "number", "string"]), "loadbufferx": emscripten.cwrap("luaL_loadbufferx", "number", ["number", "array", "number", "string", "string"]), "newmetatable": emscripten.cwrap("luaL_newmetatable", "number", ["number", "string"]), "newstate": emscripten.cwrap("luaL_newstate", "number", []), "openlibs": emscripten.cwrap("luaL_openlibs", null, ["number"]), "ref": emscripten.cwrap("luaL_ref", "number", ["number", "number"]), "setmetatable": emscripten.cwrap("luaL_setmetatable", null, ["number", "string"]), "testudata": emscripten.cwrap("luaL_testudata", "number", ["number", "number", "string"]), "tolstring": emscripten.cwrap("luaL_tolstring", "number", ["number", "number", "number"]), "traceback": emscripten.cwrap("luaL_traceback", null, ["number", "number", "string", "number"]), "unref": emscripten.cwrap("luaL_unref", "number", ["number", "number", "number"]) }, "refs": {} }; Lua.Error = (function (L, error_index) { this.message = L.tostring(error_index); L.traceback(L._L, this.message, 1); this.lua_stack = L.raw_tostring(-1); L.pop(1) }); Lua.Error.prototype = new Error; Lua.Error.prototype.name = "Lua.Error"; Lua.cfuncs = { "__gc": emscripten.Runtime.addFunction((function (L) { L = new Lua.State(L); var box = L.checkudata(1, "_PROXY_MT"); var id = emscripten.getValue(box, "double"); delete Lua.refs[getmain(L)][id]; return 0 })), "__index": emscripten.Runtime.addFunction((function (L) { L = new Lua.State(L); var box = L.checkudata(1, "_PROXY_MT"); var id = emscripten.getValue(box, "double"); var ob = Lua.refs[getmain(L)][id]; var k = L.lua_to_js(2); try { var res = ob[k] } catch (e) { L.push(e); L.error(); throw "Unreachable" } L.push(res); return 1 })), "__newindex": emscripten.Runtime.addFunction((function (L) { L = new Lua.State(L); var box = L.checkudata(1, "_PROXY_MT"); var id = emscripten.getValue(box, "double"); var ob = Lua.refs[getmain(L)][id]; var k = L.lua_to_js(2); if (L.isnil(3)) { try { delete ob[k] } catch (e) { L.push(e); L.error(); throw "Unreachable" } } else { var v = L.lua_to_js(3); try { ob[k] = v } catch (e) { L.push(e); L.error(); throw "Unreachable" } } return 0 })), "__call": emscripten.Runtime.addFunction((function (L) { L = new Lua.State(L); var box = L.checkudata(1, "_PROXY_MT"); var id = emscripten.getValue(box, "double"); var ob = Lua.refs[getmain(L)][id]; var top = L.gettop(); var thisarg = top >= 2 ? L.lua_to_js(2) : null; var args = []; for (var i = 3; i <= top; i++) { args.push(L.lua_to_js(i)) } try { var res = apply.call(ob, thisarg, args) } catch (e) { L.push(e); L.error(); throw "Unreachable" } L.push(res); return 1 })), "__len": emscripten.Runtime.addFunction((function (L) { L = new Lua.State(L); var box = L.checkudata(1, "_PROXY_MT"); var id = emscripten.getValue(box, "double"); var ob = Lua.refs[getmain(L)][id]; L.push(ob.length); return 1 })), "__tostring": emscripten.Runtime.addFunction((function (L) { L = new Lua.State(L); var box = L.checkudata(1, "_PROXY_MT"); var id = emscripten.getValue(box, "double"); var ob = Lua.refs[getmain(L)][id]; L.pushstring(ob !== null && ob.toString ? ob.toString() : typeof ob); return 1 })), "new": emscripten.Runtime.addFunction((function (L) { L = new Lua.State(L); var box = L.checkudata(1, "_PROXY_MT"); var id = emscripten.getValue(box, "double"); var ob = Lua.refs[getmain(L)][id]; var top = L.gettop(); var args = []; for (var i = 2; i <= top; i++) { args.push(L.lua_to_js(i)) } try { var res = new_.apply(ob, args) } catch (e) { L.push(e); L.error(); throw "Unreachable" } L.push(res); return 1 })), "traceback": emscripten.Runtime.addFunction((function (L) { L = new Lua.State(L); L.pushjs(new Lua.Error(L, 1)); return 1 })) }; Lua.State = (function (_L) { if (_L) { this._L = _L } else { this._L = Lua.auxlib.newstate(); var refs = []; refs.i = 0; Lua.refs[this._L] = refs; this.gc(Lua.defines.GC.STOP, 0); this.openlibs(); this.newmetatable("_PROXY_MT"); this.pushcclosure(Lua.cfuncs.__gc, 0); this.setfield(-2, "__gc"); this.pushcclosure(Lua.cfuncs.__index, 0); this.setfield(-2, "__index"); this.pushcclosure(Lua.cfuncs.__newindex, 0); this.setfield(-2, "__newindex"); this.pushcclosure(Lua.cfuncs.__call, 0); this.setfield(-2, "__call"); this.pushcclosure(Lua.cfuncs.__len, 0); this.setfield(-2, "__len"); this.pushcclosure(Lua.cfuncs.__tostring, 0); this.setfield(-2, "__tostring"); this.pop(1); this.createtable(0, 0); this.createtable(0, 1); this.pushstring("kv"); this.setfield(-2, "__mode"); Lua.lib.setmetatable(this._L, -2); this.setfield(Lua.defines.REGISTRYINDEX, "wrapped"); this.createtable(0, 3); this.pushcclosure(Lua.cfuncs["new"], 0); this.setfield(-2, "new"); this.push(null); this.setfield(-2, "null"); this.push(global); this.setfield(-2, "global"); this.setglobal("js"); this.gc(Lua.defines.GC.RESTART, 0) } this._G = Lua.Proxy.create(this, Lua.defines.RIDX_GLOBALS) }); ((function () { function wrap(func) { return (function () { var args = slice.call(arguments, 0); args.splice(0, 0, this._L); return func.apply(null, args) }) } for (var i in Lua.lib) { Lua.State.prototype[i] = wrap(Lua.lib[i]) } for (var j in Lua.auxlib) { Lua.State.prototype[j] = wrap(Lua.auxlib[j]) } }))(); Lua.State.prototype.pop = (function (n) { this.settop(-n - 1) }); Lua.State.prototype.isnil = (function (n) { return this.type(n) === 0 }); Lua.State.prototype.isnoneornil = (function (n) { return this.type(n) <= 0 }); Lua.State.prototype.getmetatable = (function (n) { this.getfield(Lua.defines.REGISTRYINDEX, n) }); Lua.State.prototype.pcall = (function (n, r, f) { return this.pcallk(n, r, f, 0, null) }); Lua.State.prototype.tonumber = (function (n) { return this.tonumberx(n, null) }); Lua.State.prototype.printStack = (function () { for (var j = 1; j <= this.gettop(); j++) { var t = this.type(j); console.log(j, this.typename(t), (function (t) { switch (t) { case Lua.defines.T.NUMBER: return this.tonumber(j); case Lua.defines.T.STRING: return this.raw_tostring(j); case Lua.defines.T.USERDATA: return this.touserdata(j); default: return } }).call(this, t)) } }); Lua.State.prototype.pushstring = (function (str) { var chars = emscripten.intArrayFromString(str, true); this.pushlstring(chars, chars.length) }); Lua.State.prototype.raw_tostring = (function (i) { var l = emscripten.allocate(4, "i32", emscripten.ALLOC_STACK); var p = Lua.lib.tolstring(this._L, i || -1, l); if (p === 0) return null; return emscripten.Pointer_stringify(p, emscripten.getValue(l, "i32")) }); Lua.State.prototype.tostring = (function (i) { var l = emscripten.allocate(4, "i32", emscripten.ALLOC_STACK); var p = this.tolstring(i || -1, l); return emscripten.Pointer_stringify(p, emscripten.getValue(l, "i32")) }); Lua.State.prototype.lua_to_js = (function (i) { switch (this.type(i)) { case -1: case 0: return void 0; case 1: return this.toboolean(i) !== 0; case 2: return this.touserdata(i); case 3: return this.tonumberx(i); case 4: return this.raw_tostring(i); case 7: var box = this.testudata(i, "_PROXY_MT"); if (box !== 0) { var id = emscripten.getValue(box, "double"); return Lua.refs[getmain(this)][id] }; default: return new Lua.Proxy(this, i) } }); Lua.State.prototype.pushjs = (function (ob) { var refs = Lua.refs[getmain(this)]; var i = refs.indexOf(ob); if (i !== -1) { this.getfield(Lua.defines.REGISTRYINDEX, "wrapped"); this.pushnumber(i); this.gettable(-2); if (!this.isnil(-1)) { this.remove(this.gettop() - 2 + 1); return } else { this.pop(2) } } i = refs.i++; refs[i] = ob; var box = this.newuserdata(8); emscripten.setValue(box, i, "double"); this.setmetatable("_PROXY_MT"); this.getfield(Lua.defines.REGISTRYINDEX, "wrapped"); this.pushnumber(i); this.pushvalue(-3); this.settable(-3); this.pop(1) }); function getmain(L) { L.rawgeti(Lua.defines.REGISTRYINDEX, Lua.defines.RIDX_MAINTHREAD); var _L = L.tothread(-1); L.pop(1); return _L } Lua.State.prototype.push = (function (ob) { switch (typeof ob) { case "boolean": return this.pushboolean(ob ? 1 : 0); case "number": return this.pushnumber(ob); case "string": return this.pushstring(ob); case "undefined": return this.pushnil(); default: if (typeof ob === "function" && ob.L instanceof Lua.State && ob.L._L === getmain(this)) { return ob.push() } if (typeof ob === "object" && (ob instanceof Boolean || ob instanceof Number || ob instanceof String)) { return this.push(ob.valueOf()) } return this.pushjs(ob) } }); Lua.State.prototype.load = (function (code, name, mode) { var chars = emscripten.intArrayFromString(code, true); if (this.loadbufferx(chars, chars.length, name, mode) !== 0) { throw new Lua.Error(this, -1) } var r = new Lua.Proxy(this, -1); this.pop(1); return r }); Lua.State.prototype.execute = (function (code) { var proxy = this.load(code); var args = slice.call(arguments, 1); try { return proxy.invoke(args) } finally { proxy.free() } }); Lua.Proxy = (function (L, i) { L.pushvalue(i); var ref = L.ref(Lua.defines.REGISTRYINDEX); var _L = getmain(L); if (L._L != _L) { L = new Lua.State(_L) } return Lua.Proxy.create(L, ref) }); Lua.Proxy.create = (function (L, ref) { function self() { "use strict"; var args = slice.call(arguments, 0); args.splice(0, 0, this); return self.invoke(args, 1)[0] } self.L = L; self.ref = ref; self.invoke = Lua.Proxy.invoke; self.push = Lua.Proxy.push; self.free = Lua.Proxy.free; self.toString = Lua.Proxy.toString; self.get = Lua.Proxy.get; self.set = Lua.Proxy.set; return self }); Lua.Proxy.push = (function () { this.L.rawgeti(Lua.defines.REGISTRYINDEX, this.ref) }); Lua.Proxy.free = (function () { this.L.unref(Lua.defines.REGISTRYINDEX, this.ref); this.ref = Lua.defines.NOREF }); Lua.Proxy.invoke = (function (args, n_results) { if (this.L.checkstack(1 + 1 + args.length) === 0) throw "Out of stack space"; if (n_results === void 0 || n_results === null) { n_results = Lua.defines.MULTRET } var pre = this.L.gettop(); this.L.pushcclosure(Lua.cfuncs.traceback, 0); this.push(); for (var i = 0; i < args.length; i++) { this.L.push(args[i]) } if (this.L.pcall(args.length, n_results, pre + 1) !== 0) { var err = this.L.lua_to_js(-1); this.L.settop(pre); throw err } var top = this.L.gettop(); var results = []; for (var j = pre + 2; j <= top; j++) { results.push(this.L.lua_to_js(j)) } this.L.settop(pre); return results }); Lua.Proxy.toString = (function () { this.push(); var s = this.L.tostring(-1); this.L.pop(2); return s }); Lua.Proxy.get = (function (key) { this.push(); this.L.push(key); this.L.gettable(-2); var res = this.L.lua_to_js(-1); this.L.pop(2); return res }); Lua.Proxy.set = (function (key, value) { this.push(); this.L.push(key); this.L.push(value); this.L.settable(-3); this.L.pop(1); return }); Lua.init = (function () { var L = exports.L = new Lua.State; L.execute("dofile'js.lua'"); if (ENVIRONMENT_IS_WEB) { var onload = window.onload; window.onload = (function () { if (onload) onload(); Lua.executeScripts(L) }) } }); Lua.executeScripts = (function (L) { Array.prototype.forEach.call(document.querySelectorAll('script[type="text/lua"]'), (function (tag) { L.execute(tag.innerHTML) })) }); if (!emscripten.noInitialRun) Lua.init(); return Lua })(exports, ENVIRONMENT_IS_NODE ? global : this, Module) + + + + + ; exports['emscripten'] = Module; +})(typeof module !== 'undefined' ? module.exports : this); diff --git a/public/lua/mdRead.lua b/public/lua/mdRead.lua new file mode 100644 index 0000000..70d3894 --- /dev/null +++ b/public/lua/mdRead.lua @@ -0,0 +1,485 @@ +-- local cjson = require("cjson") +function parseRecord(t) + local result = {} + local start = 1 + local type = hex_to_bytes(t, start, 1) + --print("type:", type) + start = start + 2 + local version = hex_to_bytes(t, start, 1) + --print("version:", version) + start = start + 2 + local time = hex_to_bytes(t, start, 8) + --print("time:", time) + start = start + 16 + local pair = hex_to_bytes(t, start, 1) + --print("pair:", pair) + start = start + 2 + local values = {} + for i = 1, tonumber(pair, 16) do + local address = hex_to_bytes(t, start, 2) + + + -- print("startAdd:", address) + start = start + 4 + local size = hex_to_bytes(t, start, 2) + --print("size:", size) + start = start + 4 + if tonumber(size, 16) / 2 == 0 + then + values[address] = "" + end + for j = 1, tonumber(size, 16) / 2 do + --print(address, hex_to_bytes(t, start, 2)) + values[address] = hex_to_bytes(t, start, 2) + address = string.gsub(string.format("%#x", tonumber(address, 16) + 1), "0x", "") + if string.len(address) < 4 + then + address = string.rep("0", 4 - string.len(address)) .. address + end + start = start + 4 + end + end + result["type"] = type + result["version"] = version + result["time"] = tonumber(time, 16) + result["pair"] = pair + result["values"] = values + -- print(result["type"], result["version"], result["time"], result["pair"]) + for k,v in pairsByKeys(result["values"]) do + -- print(k,v) + end + -- print(table2string(result)) + return table2string(result) +end + +function table2string(tablevalue) + local stringtable = serialize(tablevalue) + -- print(stringtable) + return stringtable +end + +function serialize(obj) + local lua = "" + local t = type(obj) + if t == "number" then + lua = lua .. obj + elseif t == "boolean" then + lua = lua .. tostring(obj) + elseif t == "string" then + lua = lua .. string.format("%q", obj) + elseif t == "table" then + lua = lua .. "{" + for k, v in pairs(obj) do + lua = lua .. serialize(k) .. ":" .. serialize(v) .. "," + end + local metatable = getmetatable(obj) + if metatable ~= nil and type(metatable.__index) == "table" then + for k, v in pairs(metatable.__index) do + lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. "," + end + end + lua = string.sub(lua, 1, -2) + lua = lua .. "}" + elseif t == "nil" then + return nil + else + error("can not serialize a " .. t .. " type.") + end + return lua +end + + +function pairsByKeys(t) + local a = {} + for n in pairs(t) do + a[#a + 1] = n + end + table.sort(a) + local i = 0 + local iter = function() + i = i + 1 + if a[i] == nil + then + return nil + else + return a[i], t[a[i]] + end + end + return iter +end + +function length(t) + local res=0 + for k,v in pairs(t) do + res=res+1 + end + return res +end + +function hex_to_bytes(hex, start, len) + -- print(hex) + local value = hex:sub(start, start + len * 2 - 1) + if len > 1 + then + value = toBigEndian(value) + end + return value +end + +function toBigEndian(value) + --print(string.len(value)) + local hexResult = "" + for i = string.len(value), 1, -2 do + local hex = value:sub(i - 1, i) + hexResult = hexResult .. hex + end + + return hexResult + +end + +-- 将16进制字符串转换为小端格式 +local function hexToLittleEndian(hexString) + local littleEndian = "" + for i = #hexString, 1, -2 do + local byte = hexString:sub(i - 1, i) + littleEndian = littleEndian .. byte + end + return littleEndian +end + +-- 判断字符串是否表示一个负数 +function isNegative(str) + -- 将字符串转换为数字 + local num = tonumber(str) + -- 如果转换成功,并且数字小于0,则返回true;否则返回false + return num and num < 0 +end + +function negativeToHex(n) + -- 将负数转换为其补码形式 + local complement = 0xFFFFFFFF + n + 1 + -- 使用string.format将补码形式转换为十六进制字符串 + local hexStr = string.format("%X", complement) + hexStr = hexToLittleEndian(hexStr) + -- 如果字符串长度大于4,则截取头4位(即高4位) + if #hexStr > 4 then + return string.sub(hexStr, 1, 4) + else + return hexStr + end +end + +function issueOrder(luaTable) + -- print("start") + -- print("luaTable",luaTable) + local result = "" + local timestamp = os.time() + -- print("timestamp",timestamp) + -- print("time",hexToLittleEndian(string.format("%016X",timestamp))) + -- print("version",luaTable["version"]) + -- print("type",luaTable["type"]) + + result = result .. luaTable["type"] .. luaTable["version"] .. hexToLittleEndian(string.format("%016X",timestamp)) + -- print(type(luaTable["values"])) + local values = luaTable["values"] + -- print("values",values) + + local keys = {} + -- print("keys",keys) + for key in pairs(values) do + -- print("key",key) + table.insert(keys, key) + end + table.sort(keys) + local lastDecimalism = -2 + local totalPairs = 0 + -- 打印排序后的键值对 + + local valueResult = {} + local valueSize = {} + local startPoint = -2 + for _, key in ipairs(keys) do + -- print(key, values[key]) + -- print(key) + local decimalism = key + -- print(tonumber(decimalism) ~= lastDecimalism + 1) + if tonumber(decimalism) ~= lastDecimalism + 1 then + -- print("last + 1",lastDecimalism + 1) + -- print("current",decimalism) + -- print(decimalism) + startPoint = decimalism + totalPairs = totalPairs + 1 + -- print(hexToLittleEndian(string.format("%04X",values[key]))) + -- print("value",values[key]) + if isEmptyString(values[key]) then + valueResult[startPoint] = values[key] + valueSize[startPoint] = 2 + else + valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) + valueSize[startPoint] = 2 + -- print(valueSize[startPoint]) + end + else + -- print(decimalism) + -- print(valueResult[startPoint]) + if isEmptyString(values[key]) then + -- print("result",valueResult[startPoint]) + valueResult[startPoint] = valueResult[startPoint] + -- valueResult[startPoint] = valueResult[startPoint] .. values[key] + valueSize[startPoint] = valueSize[startPoint] + 2 + else + valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) + -- print(valueSize[startPoint]) + valueSize[startPoint] = valueSize[startPoint] + 2 + end + end + lastDecimalism = decimalism + end + -- print(valueSize) + result = result .. string.format("%02X",totalPairs) + + for ke,_ in pairsByKeys(valueSize) do + -- print("jade") + -- print(ke,vl) + result = result .. hexToLittleEndian(string.format("%04X",ke)) .. hexToLittleEndian(string.format("%04X",valueSize[ke])) .. valueResult[ke] + end + local byteArray = {} + for i = 1, #result, 2 do + local hexByte = string.sub(result, i, i + 1) + local decimalValue = tonumber(hexByte, 16) + table.insert(byteArray, decimalValue) + end + + for _, byte in ipairs(byteArray) do + -- print(byte) + end + + -- print("result",byteArray) + return byteArray +end + +function issueReadOrder(luaTable) + -- print("start") + -- print("luaTable",luaTable) + local result = "" + local timestamp = os.time() + -- print("timestamp",timestamp) + -- print("time",hexToLittleEndian(string.format("%016X",timestamp))) + -- print("version",luaTable["version"]) + -- print("type",luaTable["type"]) + + result = result .. luaTable["type"] .. luaTable["version"] .. hexToLittleEndian(string.format("%016X",timestamp)) + -- print(type(luaTable["values"])) + + result = result .. string.format("%02X",luaTable["totalPairs"]) + local values = luaTable["values"] + -- print("values",values) + + local keys = {} + -- print("keys",keys) + for key in pairs(values) do + result = result .. hexToLittleEndian(string.format("%04X",key)) .. hexToLittleEndian(string.format("%04X",values[key])) + -- print("key",key) + -- table.insert(keys, key) + end + -- table.sort(keys) + -- local lastDecimalism = -2 + -- local totalPairs = 0 + -- -- 打印排序后的键值对 + + -- local valueResult = {} + -- local valueSize = {} + -- local startPoint = -2 + -- for _, key in ipairs(keys) do + -- -- print(key, values[key]) + -- -- print(key) + -- local decimalism = key + -- -- print(tonumber(decimalism) ~= lastDecimalism + 1) + -- if tonumber(decimalism) ~= lastDecimalism + 1 then + -- -- print("last + 1",lastDecimalism + 1) + -- -- print("current",decimalism) + -- -- print(decimalism) + -- startPoint = decimalism + -- totalPairs = totalPairs + 1 + -- -- print(hexToLittleEndian(string.format("%04X",values[key]))) + -- print("value",values[key]) + -- if isEmptyString(values[key]) then + -- valueResult[startPoint] = values[key] + -- valueSize[startPoint] = 2 + -- else + -- valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) + -- valueSize[startPoint] = 2 + -- -- print(valueSize[startPoint]) + -- end + -- else + -- -- print(decimalism) + -- -- print(valueResult[startPoint]) + -- if isEmptyString(values[key]) then + -- print("result",valueResult[startPoint]) + -- valueResult[startPoint] = valueResult[startPoint] + -- -- valueResult[startPoint] = valueResult[startPoint] .. values[key] + -- valueSize[startPoint] = valueSize[startPoint] + 2 + -- else + -- valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) + -- -- print(valueSize[startPoint]) + -- valueSize[startPoint] = valueSize[startPoint] + 2 + -- end + -- end + -- lastDecimalism = decimalism + -- end + -- -- print(valueSize) + -- result = result .. string.format("%02X",totalPairs) + + -- for ke,_ in pairsByKeys(valueSize) do + -- -- print("jade") + -- -- print(ke,vl) + -- result = result .. hexToLittleEndian(string.format("%04X",ke)) .. hexToLittleEndian(string.format("%04X",valueSize[ke])) .. valueResult[ke] + -- end + local byteArray = {} + for i = 1, #result, 2 do + local hexByte = string.sub(result, i, i + 1) + local decimalValue = tonumber(hexByte, 16) + table.insert(byteArray, decimalValue) + end + + for _, byte in ipairs(byteArray) do + -- print(byte) + end + + -- print("result",byteArray) + return byteArray +end + +-- function issueOrder(luaTable) +-- -- print("start") +-- print("luaTable",luaTable) +-- local result = "" +-- local timestamp = os.time() +-- print("timestamp",timestamp) +-- print("time",hexToLittleEndian(string.format("%016X",timestamp))) +-- -- print("version",luaTable["version"]) +-- -- print("type",luaTable["type"]) + +-- result = result .. luaTable["type"] .. luaTable["version"] .. hexToLittleEndian(string.format("%016X",timestamp)) +-- -- print(type(luaTable["values"])) +-- local values = luaTable["values"] + +-- local keys = {} +-- for key in pairs(values) do +-- table.insert(keys, key) +-- end +-- table.sort(keys) +-- local lastDecimalism = -2 +-- local totalPairs = 0 +-- -- 打印排序后的键值对 + +-- local valueResult = {} +-- local valueSize = {} +-- local startPoint = -2 +-- for _, key in ipairs(keys) do +-- -- print(key, values[key]) +-- -- print(key) +-- local decimalism = key +-- -- print(tonumber(decimalism) ~= lastDecimalism + 1) +-- if tonumber(decimalism) ~= lastDecimalism + 1 then +-- -- print("last + 1",lastDecimalism + 1) +-- -- print("current",decimalism) +-- -- print(decimalism) +-- startPoint = decimalism +-- totalPairs = totalPairs + 1 +-- print(values[key]) +-- if isNegative(values[key]) then +-- -- print("jade") +-- -- print(string.format("%04X",values[key])) +-- -- print(negativeToHex(values[key])) +-- -- print(string.len((string.format("%04X",values[key])))) +-- -- print(valueResult[startPoint]) +-- -- string.sub(hexToLittleEndian(string.format("%04X",values[key])),1,4) +-- valueResult[startPoint] = negativeToHex(values[key]) +-- valueSize[startPoint]=2 +-- else +-- -- string.format("%04X",values[key]) +-- valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) +-- valueSize[startPoint]=2 +-- end +-- -- valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) +-- -- valueSize[startPoint] = 2 +-- -- print(valueSize[startPoint]) +-- else +-- -- print(decimalism) +-- -- print(valueResult[startPoint]) +-- if isNegative(values[key]) then +-- -- print("jade") +-- -- print(negativeToHex(values[key])) +-- valueResult[startPoint] = valueResult[startPoint] .. negativeToHex(values[key]) +-- valueSize[startPoint] = valueSize[startPoint] + 2 +-- else +-- -- string.format("%04X",values[key]) +-- valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) +-- valueSize[startPoint] = valueSize[startPoint] + 2 +-- end +-- -- valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) +-- -- print(valueSize[startPoint]) +-- -- valueSize[startPoint] = valueSize[startPoint] + 2 +-- end +-- lastDecimalism = decimalism +-- end +-- -- print(valueSize) +-- result = result .. string.format("%02X",totalPairs) + +-- for ke,_ in pairsByKeys(valueSize) do +-- -- print("jade") +-- -- print(ke,vl) +-- result = result .. hexToLittleEndian(string.format("%04X",ke)) .. hexToLittleEndian(string.format("%04X",valueSize[ke])) .. valueResult[ke] +-- end +-- return result +-- -- local byteArray = {} +-- -- for i = 1, #result, 2 do +-- -- local hexByte = string.sub(result, i, i + 1) +-- -- local decimalValue = tonumber(hexByte, 16) +-- -- table.insert(byteArray, decimalValue) +-- -- end + +-- -- for _, byte in ipairs(byteArray) do +-- -- print(byte) +-- -- end + +-- -- -- print("result",byteArray) +-- -- return byteArray +-- end + +-- parseRecord("0001A90AE4650000000001020002000100") + +-- local valuess = {} +-- valuess["0002"] = "0001" +-- print (valuess["0002"]) + + +-- valuess = {[0002]="-10"} +-- myTable = {type = "00", version = "01",time = 1709294663000,values = valuess} +-- print(issueOrder(myTable)) +-- print(hexToLittleEndian(string.format("%04X",-100))) +-- print(string.sub(hexToLittleEndian(string.format("%04X",-100)),1,4)) +-- 示例 +-- local json_str = '{"name": "John", "age": 30, "city": "New York"}' +-- local result_table = parse_json(json_str) + +-- -- 输出解析结果 +-- for key, value in pairs(result_table) do +-- print(key, value) +-- end + +-- values = {} +-- values[1] = "1" +-- myTable = {type = "00", version = "01",values = values} +-- print(issueOrder(myTable)) +-- function +-- issueOrder('{"version":"01","type":"00","time":"1709284976000","values":{"1":"1"}}') + +-- print("result","0001801a860f0000000004000006000100010001003275060032753375347518790600187919791a79007d0a00007d017d027d037d047d") + +-- 0001801a860f00000000043000010001000133000275327533753433100079187919791a5320007d007d017d027d037d04 +-- 0001801a860f0000000004000006000100010001003275060032753375347518790600187919791a79007d0a00007d017d027d037d047d +-- local result = parseRecord("000177EEE3650000000001020002000100") +-- print(result) diff --git a/public/lua/mdWrite.lua b/public/lua/mdWrite.lua new file mode 100644 index 0000000..4480031 --- /dev/null +++ b/public/lua/mdWrite.lua @@ -0,0 +1,482 @@ +-- local cjson = require("cjson") +function parseRecord(t) + local result = {} + local start = 1 + local type = hex_to_bytes(t, start, 1) + --print("type:", type) + start = start + 2 + local version = hex_to_bytes(t, start, 1) + --print("version:", version) + start = start + 2 + local time = hex_to_bytes(t, start, 8) + --print("time:", time) + start = start + 16 + local pair = hex_to_bytes(t, start, 1) + --print("pair:", pair) + start = start + 2 + local values = {} + for i = 1, tonumber(pair, 16) do + local address = hex_to_bytes(t, start, 2) + + + -- print("startAdd:", address) + start = start + 4 + local size = hex_to_bytes(t, start, 2) + --print("size:", size) + start = start + 4 + for j = 1, tonumber(size, 16) / 2 do + --print(address, hex_to_bytes(t, start, 2)) + values[address] = hex_to_bytes(t, start, 2) + address = string.gsub(string.format("%#x", tonumber(address, 16) + 1), "0x", "") + if string.len(address) < 4 + then + address = string.rep("0", 4 - string.len(address)) .. address + end + start = start + 4 + end + end + result["type"] = type + result["version"] = version + result["time"] = tonumber(time, 16) + result["pair"] = pair + result["values"] = values + -- print(result["type"], result["version"], result["time"], result["pair"]) + for k,v in pairsByKeys(result["values"]) do + -- print(k,v) + end + -- print(table2string(result)) + return table2string(result) +end + +function table2string(tablevalue) + local stringtable = serialize(tablevalue) + -- print(stringtable) + return stringtable +end + +function serialize(obj) + local lua = "" + local t = type(obj) + if t == "number" then + lua = lua .. obj + elseif t == "boolean" then + lua = lua .. tostring(obj) + elseif t == "string" then + lua = lua .. string.format("%q", obj) + elseif t == "table" then + lua = lua .. "{" + for k, v in pairs(obj) do + lua = lua .. serialize(k) .. ":" .. serialize(v) .. "," + end + local metatable = getmetatable(obj) + if metatable ~= nil and type(metatable.__index) == "table" then + for k, v in pairs(metatable.__index) do + lua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. "," + end + end + lua = string.sub(lua, 1, -2) + lua = lua .. "}" + elseif t == "nil" then + return nil + else + error("can not serialize a " .. t .. " type.") + end + return lua +end + + +function pairsByKeys(t) + local a = {} + for n in pairs(t) do + a[#a + 1] = n + end + table.sort(a) + local i = 0 + local iter = function() + i = i + 1 + if a[i] == nil + then + return nil + else + return a[i], t[a[i]] + end + end + return iter +end + +function length(t) + local res=0 + for k,v in pairs(t) do + res=res+1 + end + return res +end + +function hex_to_bytes(hex, start, len) + -- print(hex) + local value = hex:sub(start, start + len * 2 - 1) + if len > 1 + then + value = toBigEndian(value) + end + return value +end + +function toBigEndian(value) + --print(string.len(value)) + local hexResult = "" + for i = string.len(value), 1, -2 do + local hex = value:sub(i - 1, i) + hexResult = hexResult .. hex + end + + return hexResult + +end + +-- 将16进制字符串转换为小端格式 +local function hexToLittleEndian(hexString) + local littleEndian = "" + for i = #hexString, 1, -2 do + local byte = hexString:sub(i - 1, i) + littleEndian = littleEndian .. byte + end + return littleEndian +end + +-- 判断字符串是否表示一个负数 +function isNegative(str) + -- 将字符串转换为数字 + local num = tonumber(str) + -- 如果转换成功,并且数字小于0,则返回true;否则返回false + return num and num < 0 +end + +function negativeToHex(n) + -- 将负数转换为其补码形式 + local complement = 0xFFFFFFFF + n + 1 + -- 使用string.format将补码形式转换为十六进制字符串 + local hexStr = string.format("%X", complement) + hexStr = hexToLittleEndian(hexStr) + -- 如果字符串长度大于4,则截取头4位(即高4位) + if #hexStr > 4 then + return string.sub(hexStr, 1, 4) + else + return hexStr + end +end + +-- function issueOrder(luaTable) +-- -- print("start") +-- print("luaTable",luaTable) +-- local result = "" +-- local timestamp = os.time() +-- print("timestamp",timestamp) +-- print("time",hexToLittleEndian(string.format("%016X",timestamp))) +-- print("version",luaTable["version"]) +-- print("type",luaTable["type"]) + +-- result = result .. luaTable["type"] .. luaTable["version"] .. hexToLittleEndian(string.format("%016X",timestamp)) +-- -- print(type(luaTable["values"])) +-- local values = luaTable["values"] +-- -- print("values",values) + +-- local keys = {} +-- -- print("keys",keys) +-- for key in pairs(values) do +-- -- print("key",key) +-- table.insert(keys, key) +-- end +-- table.sort(keys) +-- local lastDecimalism = -2 +-- local totalPairs = 0 +-- -- 打印排序后的键值对 + +-- local valueResult = {} +-- local valueSize = {} +-- local startPoint = -2 +-- for _, key in ipairs(keys) do +-- -- print(key, values[key]) +-- -- print(key) +-- local decimalism = key +-- -- print(tonumber(decimalism) ~= lastDecimalism + 1) +-- if tonumber(decimalism) ~= lastDecimalism + 1 then +-- -- print("last + 1",lastDecimalism + 1) +-- -- print("current",decimalism) +-- -- print(decimalism) +-- startPoint = decimalism +-- totalPairs = totalPairs + 1 +-- -- print(hexToLittleEndian(string.format("%04X",values[key]))) +-- print("value",values[key]) +-- if isEmptyString(values[key]) then +-- valueResult[startPoint] = values[key] +-- valueSize[startPoint] = 2 +-- else +-- valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) +-- valueSize[startPoint] = 2 +-- -- print(valueSize[startPoint]) +-- end +-- else +-- -- print(decimalism) +-- -- print(valueResult[startPoint]) +-- if isEmptyString(values[key]) then +-- print("result",valueResult[startPoint]) +-- valueResult[startPoint] = valueResult[startPoint] +-- -- valueResult[startPoint] = valueResult[startPoint] .. values[key] +-- valueSize[startPoint] = valueSize[startPoint] + 2 +-- else +-- valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) +-- -- print(valueSize[startPoint]) +-- valueSize[startPoint] = valueSize[startPoint] + 2 +-- end +-- end +-- lastDecimalism = decimalism +-- end +-- -- print(valueSize) +-- result = result .. string.format("%02X",totalPairs) + +-- for ke,_ in pairsByKeys(valueSize) do +-- -- print("jade") +-- -- print(ke,vl) +-- result = result .. hexToLittleEndian(string.format("%04X",ke)) .. hexToLittleEndian(string.format("%04X",valueSize[ke])) .. valueResult[ke] +-- end +-- local byteArray = {} +-- for i = 1, #result, 2 do +-- local hexByte = string.sub(result, i, i + 1) +-- local decimalValue = tonumber(hexByte, 16) +-- table.insert(byteArray, decimalValue) +-- end + +-- for _, byte in ipairs(byteArray) do +-- print(byte) +-- end + +-- -- print("result",byteArray) +-- return byteArray +-- end + +function issueReadOrder(luaTable) + -- print("start") + -- print("luaTable",luaTable) + local result = "" + local timestamp = os.time() + -- print("timestamp",timestamp) + -- print("time",hexToLittleEndian(string.format("%016X",timestamp))) + -- print("version",luaTable["version"]) + -- print("type",luaTable["type"]) + + result = result .. luaTable["type"] .. luaTable["version"] .. hexToLittleEndian(string.format("%016X",timestamp)) + -- print(type(luaTable["values"])) + + result = result .. string.format("%02X",luaTable["totalPairs"]) + local values = luaTable["values"] + -- print("values",values) + + local keys = {} + -- print("keys",keys) + for key in pairs(values) do + result = result .. hexToLittleEndian(string.format("%04X",key)) .. hexToLittleEndian(string.format("%04X",values[key])) + -- print("key",key) + -- table.insert(keys, key) + end + -- table.sort(keys) + -- local lastDecimalism = -2 + -- local totalPairs = 0 + -- -- 打印排序后的键值对 + + -- local valueResult = {} + -- local valueSize = {} + -- local startPoint = -2 + -- for _, key in ipairs(keys) do + -- -- print(key, values[key]) + -- -- print(key) + -- local decimalism = key + -- -- print(tonumber(decimalism) ~= lastDecimalism + 1) + -- if tonumber(decimalism) ~= lastDecimalism + 1 then + -- -- print("last + 1",lastDecimalism + 1) + -- -- print("current",decimalism) + -- -- print(decimalism) + -- startPoint = decimalism + -- totalPairs = totalPairs + 1 + -- -- print(hexToLittleEndian(string.format("%04X",values[key]))) + -- print("value",values[key]) + -- if isEmptyString(values[key]) then + -- valueResult[startPoint] = values[key] + -- valueSize[startPoint] = 2 + -- else + -- valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) + -- valueSize[startPoint] = 2 + -- -- print(valueSize[startPoint]) + -- end + -- else + -- -- print(decimalism) + -- -- print(valueResult[startPoint]) + -- if isEmptyString(values[key]) then + -- print("result",valueResult[startPoint]) + -- valueResult[startPoint] = valueResult[startPoint] + -- -- valueResult[startPoint] = valueResult[startPoint] .. values[key] + -- valueSize[startPoint] = valueSize[startPoint] + 2 + -- else + -- valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) + -- -- print(valueSize[startPoint]) + -- valueSize[startPoint] = valueSize[startPoint] + 2 + -- end + -- end + -- lastDecimalism = decimalism + -- end + -- -- print(valueSize) + -- result = result .. string.format("%02X",totalPairs) + + -- for ke,_ in pairsByKeys(valueSize) do + -- -- print("jade") + -- -- print(ke,vl) + -- result = result .. hexToLittleEndian(string.format("%04X",ke)) .. hexToLittleEndian(string.format("%04X",valueSize[ke])) .. valueResult[ke] + -- end + local byteArray = {} + -- table.insert(123,123333) + -- for i = 1, #result, 2 do + -- local hexByte = string.sub(result, i, i + 1) + -- local decimalValue = tonumber(hexByte, 16) + -- table.insert(byteArray, decimalValue) + -- end + + -- for _, byte in ipairs(byteArray) do + -- print(byte) + -- end + + -- print("result",byteArray) + return result +end + +function issueOrder(luaTable) + -- print("start") + -- print("luaTable",luaTable) + local result = "" + local timestamp = os.time() + -- print("timestamp",timestamp) + -- print("time",hexToLittleEndian(string.format("%016X",timestamp))) + -- print("version",luaTable["version"]) + -- print("type",luaTable["type"]) + + result = result .. luaTable["type"] .. luaTable["version"] .. hexToLittleEndian(string.format("%016X",timestamp)) + -- print(type(luaTable["values"])) + local values = luaTable["values"] + + local keys = {} + for key in pairs(values) do + table.insert(keys, key) + end + table.sort(keys) + local lastDecimalism = -2 + local totalPairs = 0 + -- 打印排序后的键值对 + + local valueResult = {} + local valueSize = {} + local startPoint = -2 + for _, key in ipairs(keys) do + -- print(key, values[key]) + -- print(key) + local decimalism = key + -- print(tonumber(decimalism) ~= lastDecimalism + 1) + if tonumber(decimalism) ~= lastDecimalism + 1 then + -- print("last + 1",lastDecimalism + 1) + -- print("current",decimalism) + -- print(decimalism) + startPoint = decimalism + totalPairs = totalPairs + 1 + -- print(values[key]) + if isNegative(values[key]) then + -- print("jade") + -- print(string.format("%04X",values[key])) + -- print(negativeToHex(values[key])) + -- print(string.len((string.format("%04X",values[key])))) + -- print(valueResult[startPoint]) + -- string.sub(hexToLittleEndian(string.format("%04X",values[key])),1,4) + valueResult[startPoint] = negativeToHex(values[key]) + valueSize[startPoint]=2 + else + -- string.format("%04X",values[key]) + valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) + valueSize[startPoint]=2 + end + -- valueResult[startPoint] = hexToLittleEndian(string.format("%04X",values[key])) + -- valueSize[startPoint] = 2 + -- print(valueSize[startPoint]) + else + -- print(decimalism) + -- print(valueResult[startPoint]) + if isNegative(values[key]) then + -- print("jade") + -- print(negativeToHex(values[key])) + valueResult[startPoint] = valueResult[startPoint] .. negativeToHex(values[key]) + valueSize[startPoint] = valueSize[startPoint] + 2 + else + -- string.format("%04X",values[key]) + valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) + valueSize[startPoint] = valueSize[startPoint] + 2 + end + -- valueResult[startPoint] = valueResult[startPoint] .. hexToLittleEndian(string.format("%04X",values[key])) + -- print(valueSize[startPoint]) + -- valueSize[startPoint] = valueSize[startPoint] + 2 + end + lastDecimalism = decimalism + end + -- print(valueSize) + result = result .. string.format("%02X",totalPairs) + + for ke,_ in pairsByKeys(valueSize) do + -- print("jade") + -- print(ke,vl) + result = result .. hexToLittleEndian(string.format("%04X",ke)) .. hexToLittleEndian(string.format("%04X",valueSize[ke])) .. valueResult[ke] + end + return result + -- local byteArray = {} + -- for i = 1, #result, 2 do + -- local hexByte = string.sub(result, i, i + 1) + -- local decimalValue = tonumber(hexByte, 16) + -- table.insert(byteArray, decimalValue) + -- end + + -- for _, byte in ipairs(byteArray) do + -- print(byte) + -- end + + -- -- print("result",byteArray) + -- return byteArray +end + +-- parseRecord("0001A90AE4650000000001020002000100") + +-- local valuess = {} +-- valuess["0002"] = "0001" +-- print (valuess["0002"]) + + +-- valuess = {[0002]="-10"} +-- myTable = {type = "00", version = "01",time = 1709294663000,values = valuess} +-- print(issueOrder(myTable)) +-- print(hexToLittleEndian(string.format("%04X",-100))) +-- print(string.sub(hexToLittleEndian(string.format("%04X",-100)),1,4)) +-- 示例 +-- local json_str = '{"name": "John", "age": 30, "city": "New York"}' +-- local result_table = parse_json(json_str) + +-- -- 输出解析结果 +-- for key, value in pairs(result_table) do +-- print(key, value) +-- end + +-- values = {} +-- values[1] = "1" +-- myTable = {type = "00", version = "01",values = values} +-- print(issueOrder(myTable)) +-- function +-- issueOrder('{"version":"01","type":"00","time":"1709284976000","values":{"1":"1"}}') + +-- print("result","0001801a860f0000000004000006000100010001003275060032753375347518790600187919791a79007d0a00007d017d027d037d047d") + +-- 0001801a860f00000000043000010001000133000275327533753433100079187919791a5320007d007d017d027d037d04 +-- 0001801a860f0000000004000006000100010001003275060032753375347518790600187919791a79007d0a00007d017d027d037d047d +-- local result = parseRecord("000177EEE3650000000001020002000100") +-- print(result) diff --git a/public/lua/pd.lua b/public/lua/pd.lua new file mode 100644 index 0000000..5f59a66 --- /dev/null +++ b/public/lua/pd.lua @@ -0,0 +1,150 @@ +function parseRecord(t) + local result = {} + local start = 1 + local type = hex_to_bytes(t, start, 1) + --print("type:", type) + start = start + 2 + local version = hex_to_bytes(t, start, 1) + --print("version:", version) + start = start + 2 + local time = hex_to_bytes(t, start, 8) + --print("time:", time) + start = start + 16 + local pair = hex_to_bytes(t, start, 1) + --print("pair:", pair) + start = start + 2 + local values = {} + for i = 1, tonumber(pair, 16) do + local address = hex_to_bytes(t, start, 2) + -- print("startAdd:", address) + start = start + 4 + local size = hex_to_bytes(t, start, 2) + --print("size:", size) + start = start + 4 + if tonumber(size, 16) / 2 == 0 + then + values[address] = "" + end + for j = 1, tonumber(size, 16) / 2 do + --print(address, hex_to_bytes(t, start, 2)) + values[address] = hex_to_bytes(t, start, 2) + address = string.gsub(string.format("%04x", tonumber(address, 16) + 1), "0x", "") + start = start + 4 + end + end + result["type"] = type + result["version"] = version + result["time"] = time + result["pair"] = pair + result["values"] = values + -- print(result["type"], result["version"], result["time"], result["pair"]) + for k,v in pairsByKeys(result["values"]) do + -- print(k,v) + end + -- print(tableToJson(result)) + return tableToJson(result) +end + +function pairsByKeys(t) + local a = {} + for n in pairs(t) do + a[#a + 1] = n + end + table.sort(a) + local i = 0 + local iter = function() + i = i + 1 + if a[i] == nil + then + return nil + else + return a[i], t[a[i]] + end + end + return iter +end + +function length(t) + local res=0 + for k,v in pairs(t) do + res=res+1 + end + return res +end + +function hex_to_bytes(hex, start, len) + local value = hex:sub(start, start + len * 2 - 1) + if len > 1 + then + value = toBigEndian(value) + end + return value +end + +function toBigEndian(value) + --print(string.len(value)) + local hexResult = "" + for i = string.len(value), 1, -2 do + local hex = value:sub(i - 1, i) + hexResult = hexResult .. hex + end + return hexResult + + + --local s2 = tonumber(value, 16) + ----print(s2) + --s2 = string.pack(" 0 then + table.insert(result, "{\n") + end + local keys = {} + for k in pairs(val) do + table.insert(keys, k) + end + table.sort(keys) + for i, k in ipairs(keys) do + local v = val[k] + local key = type(k) == "number" and "" .. k .. "" or '"' .. k .. '"' + if type(v) == "table" then + table.insert(result, string.rep(indent, depth + 1) .. key .. " : " .. serializeTable(v, name, indent, depth + 1) .. ",\n") + else + if(i == length(keys)) then + table.insert(result, string.rep(indent, depth + 1) .. key .. " : \"" .. tostring(v) .. "\"\n") + else + table.insert(result, string.rep(indent, depth + 1) .. key .. " : \"" .. tostring(v) .. "\",\n") + end + end + end + if depth > 0 then + table.insert(result, string.rep(indent, depth) .. "}\n") + end + return table.concat(result) + elseif tblType == "number" then + return tostring(val) + elseif tblType == "string" then + return '"' .. val .. '"' + else + return tostring(val) + end + end + + return "{" .. serializeTable(tbl, "root", "", 0) .. "}" +end + +--parse("1Bfjx615uzpncE5GQsHydLQ631y2DmcWRQdnK4XqErRxyo2QSP88cmbhuKbUSnqFixv39kyBXpEewZJ8Uxb8yWVemoCQjQFFta9sxbm64NXYt8yNFB9QgyCLxnHdqcXF5hshzuY9VkGYpWxykgdr8c2TZ1XsjX7bDS35f6YfCfoU4qmQkTCgcZXNMLt7G7dL4aD8szZUHLwVn") +-- parse("0001801a860f000000000451c30a0051c352c353c354c355c3419c0600419c429c439ca49c4400a49ca59ca69ca79ca89ca99caa9cab9cac9cad9cae9caf9cb09cb19cb29cb39cb49cb59cb69cb79cb89cb99cba9cbb9cbc9cbd9cbe9cbf9cc09cc19cc29cc39cc49cc59c317528003175327533753475357536753775387539753a753b753c753d753e753f7540754175427543754475") +--toBigEndian("801a860f00000000") \ No newline at end of file diff --git a/public/static/point.json b/public/static/point.json new file mode 100644 index 0000000..dda4e96 --- /dev/null +++ b/public/static/point.json @@ -0,0 +1,38 @@ +[ + { + "geometry": { "type": "Point", "coordinates": [102.714601, 25.049153] }, + "properties": { + "text": "10001站点" + } + }, + { + "geometry": { "type": "Point", "coordinates": [104.067923, 30.679943] }, + "properties": { + "text": "10003站点" + } + }, + { + "geometry": { "type": "Point", "coordinates": [114.3162, 30.581084] }, + "properties": { + "text": "10004站点" + } + }, + { + "geometry": { "type": "Point", "coordinates": [113.649644, 34.75661] }, + "properties": { + "text": "10005站点" + } + }, + { + "geometry": { "type": "Point", "coordinates": [119.330221, 26.047125] }, + "properties": { + "text": "10006站点" + } + }, + { + "geometry": { "type": "Point", "coordinates": [111.660351, 40.828319] }, + "properties": { + "text": "10011站点" + } + } +] diff --git a/public/three/draco/draco_decoder.wasm b/public/three/draco/draco_decoder.wasm new file mode 100644 index 0000000..e5a5e06 Binary files /dev/null and b/public/three/draco/draco_decoder.wasm differ diff --git a/public/three/draco/draco_encoder.js b/public/three/draco/draco_encoder.js new file mode 100644 index 0000000..2ace437 --- /dev/null +++ b/public/three/draco/draco_encoder.js @@ -0,0 +1,33 @@ +var DracoEncoderModule = function(DracoEncoderModule) { + DracoEncoderModule = DracoEncoderModule || {}; + +var Module=typeof DracoEncoderModule!=="undefined"?DracoEncoderModule:{};var isRuntimeInitialized=false;var isModuleParsed=false;Module["onRuntimeInitialized"]=(function(){isRuntimeInitialized=true;if(isModuleParsed){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});Module["onModuleParsed"]=(function(){isModuleParsed=true;if(isRuntimeInitialized){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});function isVersionSupported(versionString){if(typeof versionString!=="string")return false;const version=versionString.split(".");if(version.length<2||version.length>3)return false;if(version[0]==1&&version[1]>=0&&version[1]<=3)return true;if(version[0]!=0||version[1]>10)return false;return true}Module["isVersionSupported"]=isVersionSupported;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename)}return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){process["exit"](1)}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}Module["print"]=typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null;Module["printErr"]=typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||Module["print"];Module.print=Module["print"];Module.printErr=Module["printErr"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+18640;__ATINIT__.push();memoryInitializer="data:application/octet-stream;base64,vBoAACwbAADkGgAAehsAACAAAAAAAAAAvBoAAKEbAADkGgAAvhsAACAAAAAAAAAAvBoAAOcbAADkGgAAAxwAADgAAAAAAAAAvBoAACUcAADkGgAAShwAADgAAAAAAAAA5BoAAI4mAABQAAAAAAAAAOQaAAB6HAAAiAAAAAAAAADkGgAA0xwAAJgAAAAAAAAA5BoAACcdAACoAAAAAAAAAOQaAABbHQAAuAAAAAAAAAC8GgAAhh0AAOQaAACqHQAA0AAAAAAAAAC8GgAASB4AAOQaAADmHgAA6AAAAAAAAADkGgAAfh8AAIgAAAAAAAAA5BoAAAcgAADoAAAAAAAAAOQaAAChIAAA6AAAAAAAAADkGgAARyEAAOgAAAAAAAAA5BoAAN0hAAA4AQAAAAAAALwaAACIIgAA5BoAADMjAABQAQAAAAAAAOQaAADYIwAAiAAAAAAAAADkGgAAbiQAAFABAAAAAAAA5BoAABUlAABQAQAAAAAAAOQaAADIJQAAUAEAAAAAAADkGgAAqDEAAGgAAAAAAAAA5BoAALomAACwAQAAAAAAAOQaAAArJwAAmAAAAAAAAADkGgAAlycAANABAAAAAAAAvBoAAE0oAADkGgAAAykAAOgBAAAAAAAA5BoAALMpAACwAQAAAAAAAOQaAABUKgAA6AEAAAAAAADkGgAABisAAOgBAAAAAAAA5BoAAMQrAADoAQAAAAAAAOQaAAByLAAAOAIAAAAAAAC8GgAANS0AAOQaAAD4LQAAUAIAAAAAAADkGgAAtS4AALABAAAAAAAA5BoAAGMvAABQAgAAAAAAAOQaAAAiMAAAUAIAAAAAAADkGgAA7TAAAFACAAAAAAAA5BoAANMxAABoAAAAAAAAAOQaAABJMgAACAAAAAAAAAC8GgAAFjIAAOQaAABcMgAAsAIAAAAAAADkGgAAbDMAAHgDAAAAAAAA5BoAAOE3AABgAwAAAAAAALwaAAAsNAAA5BoAAJM0AADoAgAAAAAAAOQaAAAANQAAEAMAAAAAAAC8GgAAizUAALwaAAClNQAA5BoAAP81AAAYAwAAAAAAAOQaAABfNgAAEAMAAAAAAADkGgAA3TYAABgDAAAAAAAA5BoAAEY3AAAQAwAAAAAAALwaAAAtOAAA5BoAAFs4AABgAwAAAAAAAOQaAADMOAAAqAMAAAAAAADkGgAAEjkAAHgDAAAAAAAA5BoAAPg4AAAQAwAAAAAAALwaAAAyOQAA5BoAAAc6AACoAwAAAAAAAOQaAAApOgAAqAMAAAAAAADkGgAATzoAAOADAAAAAAAAvBoAAKE6AAC8GgAA0EQAAOQaAAAwRQAAAAQAAAAAAADkGgAA3UQAABAEAAAAAAAAvBoAAP5EAADkGgAAC0UAAPADAAAAAAAA5BoAABJGAADoAwAAAAAAAOQaAAAiRgAAKAQAAAAAAADkGgAAV0YAAAAEAAAAAAAA5BoAADNGAABIBAAAAAAAAAAAAAAIAAAAAQAAAAIAAAAAAAAAEAAAAAMAAAAEAAAAAQAAAAEAAAABAAAAAAAAACgAAAAFAAAABgAAAAIAAAACAAAAAgAAAP//////////AAAAADgAAAAHAAAACAAAAAEAAAADAAAAAQAAAAQAAAAFAAAAAgAAAAYAAAAHAAAAAwAAAAEAAAAIAAAAAAAAAEAAAAAJAAAACgAAAAEAAAADAAAABAAAAAQAAAAFAAAAAgAAAAYAAAAHAAAABQAAAAkAAAAKAAAAAAAAAFAAAAALAAAADAAAAAMAAAALAAAADAAAAAQAAAANAAAABgAAAAcAAAAOAAAADwAAAAUAAAAAAAAAWAAAAA0AAAAOAAAABgAAABAAAAAIAAAAEQAAABIAAAAHAAAAEwAAABQAAAAJAAAAFQAAABYAAAAKAAAAAQAAAAAAAABoAAAADwAAABAAAAAIAAAACwAAABcAAAAEAAAADQAAAAYAAAALAAAADgAAAA8AAAAJAAAAAgAAAAoAAAD/////AAAAAIgAAAARAAAAEgAAAAEAAAAMAAAAAQAAAA0AAAAYAAAAGQAAAA4AAAAPAAAAGgAAAAEAAAAAAAAAeAAAABEAAAATAAAAEAAAAAwAAAARAAAADQAAABgAAAAZAAAADgAAAA8AAAAaAAAAAQAAAAAAAAAYAQAAEQAAABQAAAASAAAADAAAABMAAAANAAAAGAAAABkAAAAOAAAADwAAABoAAAACAAAAAAAAAPgAAAAVAAAAFgAAABQAAAAMAAAAFQAAABYAAAAbAAAAHAAAAA4AAAAPAAAAHQAAAAMAAAAAAAAA2AAAABcAAAAYAAAAFwAAAAwAAAAYAAAAGQAAAB4AAAAfAAAADgAAAA8AAAAgAAAABAAAAAAAAADAAAAAGQAAABoAAAAhAAAAGgAAAAMAAAAAAAAA6AAAABEAAAAbAAAAAQAAAAwAAAABAAAADQAAABgAAAAZAAAADgAAAA8AAAAaAAAAAQAAAAAAAAAIAQAAHAAAAB0AAAAbAAAADAAAABwAAAANAAAAGAAAABkAAAAOAAAADwAAACIAAAAFAAAAAAAAAIABAAARAAAAHgAAAB0AAAAMAAAAHgAAAA0AAAAYAAAAGQAAAA4AAAAPAAAAGgAAAAYAAAAAAAAAYAEAAB8AAAAgAAAAHwAAAAwAAAAgAAAAIQAAACMAAAAkAAAADgAAAA8AAAAlAAAABwAAAAAAAABAAQAAIQAAACIAAAAiAAAADAAAACMAAAAkAAAAJgAAACcAAAAOAAAADwAAACgAAAAIAAAAAAAAACgBAAAjAAAAJAAAACkAAAAlAAAABAAAAAAAAABQAQAAEQAAACUAAAABAAAADAAAAAEAAAANAAAAGAAAABkAAAAOAAAADwAAABoAAAABAAAAAAAAAHABAAAmAAAAJwAAACYAAAAMAAAAJwAAAA0AAAAYAAAAGQAAAA4AAAAPAAAAKgAAAAkAAAAAAAAAkAEAACgAAAApAAAACwAAAAsAAAAXAAAABAAAACsAAAAoAAAAKQAAAA4AAAAPAAAACQAAAAUAAAAMAAAAAAAAAKABAAAqAAAAKwAAACoAAAArAAAALAAAAC0AAAAsAAAALQAAAC4AAAAvAAAALgAAAAoAAAAAAAAAGAIAACoAAAAsAAAAMAAAACsAAAAxAAAALQAAACwAAAAtAAAALgAAAC8AAAAuAAAACwAAAAAAAAAIAgAALQAAAC4AAAAyAAAAKwAAADMAAAAtAAAALAAAAC0AAAAuAAAALwAAAC8AAAAMAAAAAAAAAPgBAAAvAAAAMAAAADQAAAArAAAANQAAADYAAAAwAAAAMQAAAC4AAAAvAAAAMgAAAA0AAAAAAAAA2AEAADEAAAAyAAAANwAAACsAAAA4AAAAOQAAADMAAAA0AAAALgAAAC8AAAA1AAAADgAAAAAAAADAAQAAMwAAADQAAAA2AAAAOgAAAAYAAAAAAAAAgAIAACoAAAA1AAAAOwAAACsAAAA8AAAALQAAACwAAAAtAAAALgAAAC8AAAAuAAAADwAAAAAAAABwAgAANgAAADcAAAA9AAAAKwAAAD4AAAAtAAAALAAAAC0AAAAuAAAALwAAADcAAAAQAAAAAAAAAGACAAA4AAAAOQAAAD8AAAArAAAAQAAAAEEAAAA4AAAAOQAAAC4AAAAvAAAAOgAAABEAAAAAAAAAQAIAADoAAAA7AAAAQgAAACsAAABDAAAARAAAADsAAAA8AAAALgAAAC8AAAA9AAAAEgAAAAAAAAAoAgAAPAAAAD0AAAA+AAAARQAAAAcAAAAAAAAAkAIAAD4AAAA/AAAADQAAAAsAAAAXAAAABAAAAD8AAABGAAAARwAAAA4AAAAPAAAACQAAAAIAAAAOAAAAAAAAAKACAAABAAAAQAAAAAEAAAACAAAAAAAAALACAABBAAAAQgAAAAAAAAC4AgAAQQAAAEMAAAAAAAAAyAIAAEQAAABFAAAASAAAAEkAAABKAAAASwAAAAMAAABMAAAATQAAAEAAAABBAAAATgAAAEYAAABPAAAAQgAAAEMAAAAEAAAARwAAAAAAAADYAgAASAAAAEkAAABEAAAARQAAAEYAAABHAAAASAAAAAUAAABQAAAASQAAAFEAAAABAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAwAASgAAAEsAAABKAAAAUgAAAAAAAADwAgAATAAAAE0AAAAIAAAAAAAAAOgCAABOAAAATwAAAAgAAAD/////AAAAADADAABQAAAAUQAAAEsAAABTAAAAAAAAACADAABSAAAAUwAAAAkAAAAAAAAAGAMAAFQAAABVAAAACQAAAAAAAABQAwAAVgAAAFcAAABMAAAAVAAAAAAAAABAAwAAWAAAAFkAAAAJAAAAAAAAAGgDAABaAAAAWwAAAE0AAABOAAAATwAAAFAAAABRAAAABgAAAFUAAABSAAAAVgAAAAAAAAABAAAABQAAAAIAAAAFAAAAAwAAAAUAAAAEAAAAAAAAAHgDAABcAAAAXQAAAEgAAAABAAAAVwAAAEsAAAADAAAATAAAAE0AAAABAAAAUwAAAE4AAAABAAAAWAAAAFQAAABVAAAAAQAAAAEAAAAAAAAAiAMAAFwAAABeAAAASAAAAFkAAABXAAAASwAAAAMAAABMAAAATQAAAFYAAABTAAAATgAAAF8AAABYAAAAVAAAAFUAAAAHAAAAYAAAAAAAAACYAwAAYQAAAGIAAABXAAAAWgAAAAAAAACoAwAAXAAAAGMAAABbAAAAAQAAAFcAAABLAAAACAAAAEwAAABNAAAAAQAAAFMAAABOAAAAAQAAAAAAAACwAwAAXAAAAGQAAABbAAAAXAAAAFcAAABLAAAACQAAAEwAAABNAAAAWAAAAFMAAABOAAAAZQAAAAAAAADAAwAAXAAAAGYAAABbAAAAXQAAAFcAAABLAAAACgAAAEwAAABNAAAAWQAAAFMAAABOAAAAZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAFZVVVUCAAAAAAAAAAIAAACamZmZAwAAAFZVVVUDAAAAJUmSJAMAAAAAAAAAAwAAAMhxHMcEAAAAmpmZmQQAAABGF110BAAAAFZVVVUEAAAAPLETOwQAAAAlSZIkBAAAABIREREEAAAAAAAAAAQAAADi4eHhBQAAAMhxHMcFAAAAy2sorwUAAACamZmZBQAAAIdhGIYFAAAARhdddAUAAACRhSxkBQAAAFZVVVUFAAAAexSuRwUAAAA8sRM7BQAAANtLaC8FAAAAJUmSJAUAAAASlnsaBQAAABIREREFAAAAhRBCCAUAAAAAAAAABQAAAAgffPAGAAAA4uHh4QYAAADVQR3UBgAAAMhxHMcGAAAATZHPugYAAADLayivBgAAAKVBGqQGAAAAmpmZmQYAAAD6GJyPBgAAAIdhGIYGAAAAGPQFfQYAAABGF110BgAAAG3BFmwGAAAAkYUsZAYAAAC6gphcBgAAAFZVVVUGAAAAcwpeTgYAAAB7FK5HBgAAAEJBQUEGAAAAPLETOwYAAACzzyE1BgAAANtLaC8GAAAAnxLkKQYAAAAlSZIkBgAAAN1HcB8GAAAAEpZ7GgYAAAD45bEVBgAAABIREREGAAAA/BSXDAYAAACFEEIIBgAAAAVBEAQGAAAAAAAAAAYAAAD5gR/4BwAAAAgffPAHAAAAwBoT6QcAAADi4eHhBwAAAGwH5toHAAAA1UEd1AcAAACRaIXNBwAAAMhxHMcHAAAAOXDgwAcAAABNkc+6BwAAAE8b6LQHAAAAy2sorwcAAAAH9o6pBwAAAKVBGqQHAAAAUunIngcAAACamZmZBwAAAM4Pi5QHAAAA+hicjwcAAAD3kMuKBwAAAIdhGIYHAAAAgoGBgQcAAAAY9AV9BwAAABjIpHgHAAAARhdddAcAAADBBS5wBwAAAG3BFmwHAAAAaYEWaAcAAACRhSxkBwAAAAYWWGAHAAAAuoKYXAcAAAAJI+1YBwAAAFZVVVUHAAAAr37QUQcAAABzCl5OBwAAAAZq/UoHAAAAexSuRwcAAABXhm9EBwAAAEJBQUEHAAAAz8siPgcAAAA8sRM7BwAAADmBEzgHAAAAs88hNQcAAACjND4yBwAAANtLaC8HAAAA2bSfLAcAAACfEuQpBwAAAIkLNScHAAAAJUmSJAcAAAATePshBwAAAN1HcB8HAAAA22rwHAcAAAASlnsaBwAAABmBERgHAAAA+OWxFQcAAAAUgVwTBwAAABIREREHAAAAv1bPDgcAAAD8FJcMBwAAAKcQaAoHAAAAhRBCCAcAAAAw3SQGBwAAAAVBEAQHAAAAEQgEAgcAAAAAAAAABwAAACDwB/wIAAAA+YEf+AgAAADlWUb0CAAAAAgffPAIAAAAMXvA7AgAAADAGhPpCAAAAJGsc+UIAAAA4uHh4QgAAABAbl3eCAAAAGwH5toIAAAATGV71wgAAADVQR3UCAAAAPdYy9AIAAAAkWiFzQgAAABWMEvKCAAAAMhxHMcIAAAAHfD4wwgAAAA5cODACAAAAJq40r0IAAAATZHPuggAAADew9a3CAAAAE8b6LQIAAAAB2QDsggAAADLayivCAAAAK0BV6wIAAAAB/aOqQgAAABuGtCmCAAAAKVBGqQIAAAAmD9toQgAAABS6cieCAAAAO8ULZwIAAAAmpmZmQgAAACBTw6XCAAAAM4Pi5QIAAAAnrQPkggAAAD6GJyPCAAAANQYMI0IAAAA95DLiggAAAALX26ICAAAAIdhGIYIAAAArHfJgwgAAACCgYGBCAAAANFfQH8IAAAAGPQFfQgAAACPINJ6CAAAABjIpHgIAAAARM59dggAAABGF110CAAAAPWHQnIIAAAAwQUucAgAAAC1dh9uCAAAAG3BFmwIAAAAFs0TaggAAABpgRZoCAAAAKbGHmYIAAAAkYUsZAgAAABxpz9iCAAAAAYWWGAIAAAAjrt1XggAAAC6gphcCAAAALFWwFoIAAAACSPtWAgAAADG0x5XCAAAAFZVVVUIAAAAkJSQUwgAAACvftBRCAAAAFEBFVAIAAAAcwpeTggAAABziKtMCAAAAAZq/UoIAAAAPJ5TSQgAAAB7FK5HCAAAAIC8DEYIAAAAV4ZvRAgAAABeYtZCCAAAAEJBQUEIAAAA/BOwPwgAAADPyyI+CAAAAEhamTwIAAAAPLETOwgAAADCwpE5CAAAADmBEzgIAAAAPt+YNggAAACzzyE1CAAAALZFrjMIAAAAozQ+MggAAAAUkNEwCAAAANtLaC8IAAAABVwCLggAAADZtJ8sCAAAANFKQCsIAAAAnxLkKQgAAAApAYsoCAAAAIkLNScIAAAACSfiJQgAAAAlSZIkCAAAAIpnRSMIAAAAE3j7IQgAAADHcLQgCAAAAN1HcB8IAAAAtPMuHggAAADbavAcCAAAAAWktBsIAAAAEpZ7GggAAAAJOEUZCAAAABmBERgIAAAAlWjgFggAAAD45bEVCAAAAOHwhRQIAAAAFIFcEwgAAAB2jjUSCAAAABIREREIAAAAEAHvDwgAAAC/Vs8OCAAAAIkKsg0IAAAA/BSXDAgAAADDbn4LCAAAAKcQaAoIAAAAkfNTCQgAAACFEEIICAAAAKVgMgcIAAAAMN0kBggAAAB+fxkFCAAAAAVBEAQIAAAAUhsJAwgAAAARCAQCCAAAAAIBAQEIAAAA/////wAAAADQAwAAaAAAAGkAAAAKAAAACwAAAF4AAABqAAAACwAAAP////8AAAAA4AMAAGsAAABsAAAADAAAAAwAAABeAAAAagAAAA0AAAD/////HBcAAAUAAAAAAAAAAAAAAF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAQAAAAyEgAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJxIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFX3CJAP8JLw8AAAAAAgAAAAMAAAAFAAAABwAAAAsAAAANAAAAEQAAABMAAAAXAAAAHQAAAB8AAAAlAAAAKQAAACsAAAAvAAAANQAAADsAAAA9AAAAQwAAAEcAAABJAAAATwAAAFMAAABZAAAAYQAAAGUAAABnAAAAawAAAG0AAABxAAAAfwAAAIMAAACJAAAAiwAAAJUAAACXAAAAnQAAAKMAAACnAAAArQAAALMAAAC1AAAAvwAAAMEAAADFAAAAxwAAANMAAAABAAAACwAAAA0AAAARAAAAEwAAABcAAAAdAAAAHwAAACUAAAApAAAAKwAAAC8AAAA1AAAAOwAAAD0AAABDAAAARwAAAEkAAABPAAAAUwAAAFkAAABhAAAAZQAAAGcAAABrAAAAbQAAAHEAAAB5AAAAfwAAAIMAAACJAAAAiwAAAI8AAACVAAAAlwAAAJ0AAACjAAAApwAAAKkAAACtAAAAswAAALUAAAC7AAAAvwAAAMEAAADFAAAAxwAAANEAAAACAAAAAAAAAPADAABtAAAAbgAAAG8AAABwAAAAEgAAAAEAAAABAAAAAwAAAAAAAAAYBAAAbQAAAHEAAABvAAAAcAAAABIAAAACAAAAAgAAAAQAAAAAAAAAKAQAAHIAAABzAAAAYAAAAAAAAAA4BAAAcgAAAHQAAABgAAAATjVkcmFjbzExRW5jb2RlckJhc2VJTlNfMThFbmNvZGVyT3B0aW9uc0Jhc2VJTlNfMTdHZW9tZXRyeUF0dHJpYnV0ZTRUeXBlRUVFRUUATjVkcmFjbzI4QXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybUUATjVkcmFjbzE4QXR0cmlidXRlVHJhbnNmb3JtRQBONWRyYWNvMzBBdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1FAE41ZHJhY28xN0F0dHJpYnV0ZXNFbmNvZGVyRQBONWRyYWNvMjNLZFRyZWVBdHRyaWJ1dGVzRW5jb2RlckUATjVkcmFjbzI2U2VxdWVudGlhbEF0dHJpYnV0ZUVuY29kZXJFAE41ZHJhY28zN1NlcXVlbnRpYWxBdHRyaWJ1dGVFbmNvZGVyc0NvbnRyb2xsZXJFAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFRUUATjVkcmFjbzIzUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFRUUATjVkcmFjbzM3UHJlZGljdGlvblNjaGVtZVR5cGVkRW5jb2RlckludGVyZmFjZUlpaUVFAE41ZHJhY28zMlByZWRpY3Rpb25TY2hlbWVFbmNvZGVySW50ZXJmYWNlRQBONWRyYWNvMjVQcmVkaWN0aW9uU2NoZW1lSW50ZXJmYWNlRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280NE1lc2hQcmVkaWN0aW9uU2NoZW1lVGV4Q29vcmRzUG9ydGFibGVFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ0TWVzaFByZWRpY3Rpb25TY2hlbWVUZXhDb29yZHNQb3J0YWJsZUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280ME1lc2hQcmVkaWN0aW9uU2NoZW1lUGFyYWxsZWxvZ3JhbUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQB1c2VfYnVpbHRfaW5fYXR0cmlidXRlX2NvbXByZXNzaW9uAE41ZHJhY28zM1NlcXVlbnRpYWxJbnRlZ2VyQXR0cmlidXRlRW5jb2RlckUATjVkcmFjbzI4UHJlZGljdGlvblNjaGVtZURlbHRhRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVFRQBONWRyYWNvMjNQcmVkaWN0aW9uU2NoZW1lRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280NE1lc2hQcmVkaWN0aW9uU2NoZW1lVGV4Q29vcmRzUG9ydGFibGVFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ0TWVzaFByZWRpY3Rpb25TY2hlbWVUZXhDb29yZHNQb3J0YWJsZUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280ME1lc2hQcmVkaWN0aW9uU2NoZW1lUGFyYWxsZWxvZ3JhbUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMzJTZXF1ZW50aWFsTm9ybWFsQXR0cmlidXRlRW5jb2RlckUATjVkcmFjbzM4U2VxdWVudGlhbFF1YW50aXphdGlvbkF0dHJpYnV0ZUVuY29kZXJFAHByZWRpY3Rpb25fc2NoZW1lAE41ZHJhY28xMUVuY29kZXJCYXNlSU5TXzE4RW5jb2Rlck9wdGlvbnNCYXNlSWlFRUVFAE41ZHJhY283RW5jb2RlckUAIABONWRyYWNvMTNFeHBlcnRFbmNvZGVyRQBlbmNvZGluZ19tZXRob2QAcXVhbnRpemF0aW9uX2JpdHMASW52YWxpZCBlbmNvZGluZyBtZXRob2QuAGVuY29kaW5nX3NwZWVkAGRlY29kaW5nX3NwZWVkAHF1YW50aXphdGlvbl9vcmlnaW4AcXVhbnRpemF0aW9uX3JhbmdlAHN5bWJvbF9lbmNvZGluZ19tZXRob2QAc3ltYm9sX2VuY29kaW5nX2NvbXByZXNzaW9uX2xldmVsAHN0YW5kYXJkX2VkZ2VicmVha2VyAHByZWRpY3RpdmVfZWRnZWJyZWFrZXIAZWRnZWJyZWFrZXJfbWV0aG9kAE41ZHJhY28yMk1lc2hFZGdlYnJlYWtlckVuY29kZXJFAEFsbCB0cmlhbmdsZXMgYXJlIGRlZ2VuZXJhdGUuAEZhaWxlZCB0byBwcm9jZXNzIG1lc2ggaG9sZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIGF0dHJpYnV0ZSBkYXRhLgBGYWlsZWQgdG8gZW5jb2RlIG1lc2ggY29tcG9uZW50LgBGYWlsZWQgdG8gZW5jb2RlIHNwbGl0IGRhdGEuAE41ZHJhY28xM1RyYXZlcnNlckJhc2VJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQBONWRyYWNvMTlEZXB0aEZpcnN0VHJhdmVyc2VySU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzJfRUVFRUVFAE41ZHJhY28xNVBvaW50c1NlcXVlbmNlckUATjVkcmFjbzEzVHJhdmVyc2VyQmFzZUlOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzE5RGVwdGhGaXJzdFRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMTFDb3JuZXJUYWJsZUVOU18zNk1lc2hBdHRyaWJ1dGVJbmRpY2VzRW5jb2RpbmdPYnNlcnZlcklTMl9FRUVFRUUATjVkcmFjbzI4TWF4UHJlZGljdGlvbkRlZ3JlZVRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18yOE1heFByZWRpY3Rpb25EZWdyZWVUcmF2ZXJzZXJJTlNfMTFDb3JuZXJUYWJsZUVOU18zNk1lc2hBdHRyaWJ1dGVJbmRpY2VzRW5jb2RpbmdPYnNlcnZlcklTMl9FRUVFRUUAc3BsaXRfbWVzaF9vbl9zZWFtcwBONWRyYWNvMjZNZXNoRWRnZWJyZWFrZXJFbmNvZGVySW1wbElOU18zMU1lc2hFZGdlYnJlYWtlclRyYXZlcnNhbEVuY29kZXJFRUUATjVkcmFjbzM1TWVzaEVkZ2VicmVha2VyRW5jb2RlckltcGxJbnRlcmZhY2VFAE41ZHJhY28yNk1lc2hFZGdlYnJlYWtlckVuY29kZXJJbXBsSU5TXzM4TWVzaEVkZ2VicmVha2VyVHJhdmVyc2FsVmFsZW5jZUVuY29kZXJFRUUAc3RvcmVfbnVtYmVyX29mX2VuY29kZWRfZmFjZXMATjVkcmFjbzExTWVzaEVuY29kZXJFAGNvbXByZXNzX2Nvbm5lY3Rpdml0eQBONWRyYWNvMTVMaW5lYXJTZXF1ZW5jZXJFAE41ZHJhY28yMU1lc2hTZXF1ZW50aWFsRW5jb2RlckUATjVkcmFjbzE3UG9pbnRDbG91ZEVuY29kZXJFAEludmFsaWQgaW5wdXQgZ2VvbWV0cnkuAEZhaWxlZCB0byBpbml0aWFsaXplIGVuY29kZXIuAEZhaWxlZCB0byBlbmNvZGUgaW50ZXJuYWwgZGF0YS4ARmFpbGVkIHRvIGVuY29kZSBwb2ludCBhdHRyaWJ1dGVzLgBzdG9yZV9udW1iZXJfb2ZfZW5jb2RlZF9wb2ludHMARmFpbGVkIHRvIGVuY29kZSBtZXRhZGF0YS4ARFJBQ08ATjVkcmFjbzIzUG9pbnRDbG91ZEtkVHJlZUVuY29kZXJFAE41ZHJhY28yN1BvaW50Q2xvdWRTZXF1ZW50aWFsRW5jb2RlckUATjVkcmFjbzRNZXNoRQBhbGxvY2F0b3I8VD46OmFsbG9jYXRlKHNpemVfdCBuKSAnbicgZXhjZWVkcyBtYXhpbXVtIHN1cHBvcnRlZCBzaXplAE41ZHJhY28xMFBvaW50Q2xvdWRFABEACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABEwkLCwAACQYLAAALAAYRAAAAERERAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAADQAAAAQNAAAAAAkOAAAAAAAOAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEhISAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAACgAAAAAKAAAAAAkLAAAAAAALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBOQU4AMDEyMzQ1Njc4OUFCQ0RFRi4AVCEiGQ0BAgMRSxwMEAQLHRIeJ2hub3BxYiAFBg8TFBUaCBYHKCQXGAkKDhsfJSODgn0mKis8PT4/Q0dKTVhZWltcXV5fYGFjZGVmZ2lqa2xyc3R5ent8AElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAABpbmZpbml0eQBuYW4AJWQAJWYAdGVybWluYXRpbmcgd2l0aCAlcyBleGNlcHRpb24gb2YgdHlwZSAlczogJXMAdGVybWluYXRpbmcgd2l0aCAlcyBleGNlcHRpb24gb2YgdHlwZSAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGZvcmVpZ24gZXhjZXB0aW9uAHRlcm1pbmF0aW5nAHVuY2F1Z2h0AFN0OWV4Y2VwdGlvbgBOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQBTdDl0eXBlX2luZm8ATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQBwdGhyZWFkX29uY2UgZmFpbHVyZSBpbiBfX2N4YV9nZXRfZ2xvYmFsc19mYXN0KCkAY2Fubm90IGNyZWF0ZSBwdGhyZWFkIGtleSBmb3IgX19jeGFfZ2V0X2dsb2JhbHMoKQBjYW5ub3QgemVybyBvdXQgdGhyZWFkIHZhbHVlIGZvciBfX2N4YV9nZXRfZ2xvYmFscygpAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZABTdDExbG9naWNfZXJyb3IAU3QxMmxlbmd0aF9lcnJvcgBOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0U=";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___cxa_allocate_exception(size){return _malloc(size)}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___gxx_personality_v0(){}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function flush_NO_FILESYSTEM(){var fflush=Module["_fflush"];if(fflush)fflush(0);var printChar=___syscall146.printChar;if(!printChar)return;var buffers=___syscall146.buffers;if(buffers[1].length)printChar(1,10);if(buffers[2].length)printChar(2,10)}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffers){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:(function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true} +// EMSCRIPTEN_START_FUNCS +function wc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;if(!a)return;b=a+-8|0;c=f[4516]|0;d=f[a+-4>>2]|0;a=d&-8;e=b+a|0;do if(!(d&1)){g=f[b>>2]|0;if(!(d&3))return;h=b+(0-g)|0;i=g+a|0;if(h>>>0>>0)return;if((f[4517]|0)==(h|0)){j=e+4|0;k=f[j>>2]|0;if((k&3|0)!=3){l=h;m=i;n=h;break}f[4514]=i;f[j>>2]=k&-2;f[h+4>>2]=i|1;f[h+i>>2]=i;return}k=g>>>3;if(g>>>0<256){g=f[h+8>>2]|0;j=f[h+12>>2]|0;if((j|0)==(g|0)){f[4512]=f[4512]&~(1<>2]=j;f[j+8>>2]=g;l=h;m=i;n=h;break}}g=f[h+24>>2]|0;j=f[h+12>>2]|0;do if((j|0)==(h|0)){k=h+16|0;o=k+4|0;p=f[o>>2]|0;if(!p){q=f[k>>2]|0;if(!q){r=0;break}else{s=q;t=k}}else{s=p;t=o}while(1){o=s+20|0;p=f[o>>2]|0;if(p|0){s=p;t=o;continue}o=s+16|0;p=f[o>>2]|0;if(!p)break;else{s=p;t=o}}f[t>>2]=0;r=s}else{o=f[h+8>>2]|0;f[o+12>>2]=j;f[j+8>>2]=o;r=j}while(0);if(g){j=f[h+28>>2]|0;o=18352+(j<<2)|0;if((f[o>>2]|0)==(h|0)){f[o>>2]=r;if(!r){f[4513]=f[4513]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=r;if(!r){l=h;m=i;n=h;break}}f[r+24>>2]=g;j=h+16|0;o=f[j>>2]|0;if(o|0){f[r+16>>2]=o;f[o+24>>2]=r}o=f[j+4>>2]|0;if(o){f[r+20>>2]=o;f[o+24>>2]=r;l=h;m=i;n=h}else{l=h;m=i;n=h}}else{l=h;m=i;n=h}}else{l=b;m=a;n=b}while(0);if(n>>>0>=e>>>0)return;b=e+4|0;a=f[b>>2]|0;if(!(a&1))return;if(!(a&2)){if((f[4518]|0)==(e|0)){r=(f[4515]|0)+m|0;f[4515]=r;f[4518]=l;f[l+4>>2]=r|1;if((l|0)!=(f[4517]|0))return;f[4517]=0;f[4514]=0;return}if((f[4517]|0)==(e|0)){r=(f[4514]|0)+m|0;f[4514]=r;f[4517]=n;f[l+4>>2]=r|1;f[n+r>>2]=r;return}r=(a&-8)+m|0;s=a>>>3;do if(a>>>0<256){t=f[e+8>>2]|0;c=f[e+12>>2]|0;if((c|0)==(t|0)){f[4512]=f[4512]&~(1<>2]=c;f[c+8>>2]=t;break}}else{t=f[e+24>>2]|0;c=f[e+12>>2]|0;do if((c|0)==(e|0)){d=e+16|0;o=d+4|0;j=f[o>>2]|0;if(!j){p=f[d>>2]|0;if(!p){u=0;break}else{v=p;w=d}}else{v=j;w=o}while(1){o=v+20|0;j=f[o>>2]|0;if(j|0){v=j;w=o;continue}o=v+16|0;j=f[o>>2]|0;if(!j)break;else{v=j;w=o}}f[w>>2]=0;u=v}else{o=f[e+8>>2]|0;f[o+12>>2]=c;f[c+8>>2]=o;u=c}while(0);if(t|0){c=f[e+28>>2]|0;h=18352+(c<<2)|0;if((f[h>>2]|0)==(e|0)){f[h>>2]=u;if(!u){f[4513]=f[4513]&~(1<>2]|0)!=(e|0)&1)<<2)>>2]=u;if(!u)break}f[u+24>>2]=t;c=e+16|0;h=f[c>>2]|0;if(h|0){f[u+16>>2]=h;f[h+24>>2]=u}h=f[c+4>>2]|0;if(h|0){f[u+20>>2]=h;f[h+24>>2]=u}}}while(0);f[l+4>>2]=r|1;f[n+r>>2]=r;if((l|0)==(f[4517]|0)){f[4514]=r;return}else x=r}else{f[b>>2]=a&-2;f[l+4>>2]=m|1;f[n+m>>2]=m;x=m}m=x>>>3;if(x>>>0<256){n=18088+(m<<1<<2)|0;a=f[4512]|0;b=1<>2]|0;z=b}f[z>>2]=l;f[y+12>>2]=l;f[l+8>>2]=y;f[l+12>>2]=n;return}n=x>>>8;if(n)if(x>>>0>16777215)A=31;else{y=(n+1048320|0)>>>16&8;z=n<>>16&4;b=z<>>16&2;a=14-(n|y|z)+(b<>>15)|0;A=x>>>(a+7|0)&1|a<<1}else A=0;a=18352+(A<<2)|0;f[l+28>>2]=A;f[l+20>>2]=0;f[l+16>>2]=0;z=f[4513]|0;b=1<>>1)|0);n=f[a>>2]|0;while(1){if((f[n+4>>2]&-8|0)==(x|0)){B=73;break}C=n+16+(y>>>31<<2)|0;m=f[C>>2]|0;if(!m){B=72;break}else{y=y<<1;n=m}}if((B|0)==72){f[C>>2]=l;f[l+24>>2]=n;f[l+12>>2]=l;f[l+8>>2]=l;break}else if((B|0)==73){y=n+8|0;t=f[y>>2]|0;f[t+12>>2]=l;f[y>>2]=l;f[l+8>>2]=t;f[l+12>>2]=n;f[l+24>>2]=0;break}}else{f[4513]=z|b;f[a>>2]=l;f[l+24>>2]=a;f[l+12>>2]=l;f[l+8>>2]=l}while(0);l=(f[4520]|0)+-1|0;f[4520]=l;if(!l)D=18504;else return;while(1){l=f[D>>2]|0;if(!l)break;else D=l+8|0}f[4520]=-1;return}function xc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=Oa,F=Oa,G=Oa,H=0,I=0,J=0,K=0;d=b[c+11>>0]|0;e=d<<24>>24<0;g=e?f[c>>2]|0:c;i=e?f[c+4>>2]|0:d&255;if(i>>>0>3){d=g;e=i;j=i;while(1){k=X(h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24,1540483477)|0;e=(X(k>>>24^k,1540483477)|0)^(X(e,1540483477)|0);j=j+-4|0;if(j>>>0<=3)break;else d=d+4|0}d=i+-4|0;j=d&-4;l=d-j|0;m=g+(j+4)|0;o=e}else{l=i;m=g;o=i}switch(l|0){case 3:{p=h[m+2>>0]<<16^o;q=6;break}case 2:{p=o;q=6;break}case 1:{r=o;q=7;break}default:s=o}if((q|0)==6){r=h[m+1>>0]<<8^p;q=7}if((q|0)==7)s=X(r^h[m>>0],1540483477)|0;m=X(s>>>13^s,1540483477)|0;s=m>>>15^m;m=a+4|0;r=f[m>>2]|0;p=(r|0)==0;a:do if(!p){o=r+-1|0;l=(o&r|0)==0;if(!l)if(s>>>0>>0)t=s;else t=(s>>>0)%(r>>>0)|0;else t=s&o;e=f[(f[a>>2]|0)+(t<<2)>>2]|0;if((e|0)!=0?(j=f[e>>2]|0,(j|0)!=0):0){e=(i|0)==0;if(l){if(e){l=j;while(1){d=f[l+4>>2]|0;if(!((d|0)==(s|0)|(d&o|0)==(t|0))){u=t;break a}d=b[l+8+11>>0]|0;if(!((d<<24>>24<0?f[l+12>>2]|0:d&255)|0)){v=l;break}l=f[l>>2]|0;if(!l){u=t;break a}}w=v+20|0;return w|0}else x=j;b:while(1){l=f[x+4>>2]|0;if(!((l|0)==(s|0)|(l&o|0)==(t|0))){u=t;break a}l=x+8|0;d=b[l+11>>0]|0;k=d<<24>>24<0;y=d&255;do if(((k?f[x+12>>2]|0:y)|0)==(i|0)){d=f[l>>2]|0;if(k)if(!(Pk(d,g,i)|0)){v=x;q=63;break b}else break;if((b[g>>0]|0)==(d&255)<<24>>24){d=l;z=y;A=g;do{z=z+-1|0;d=d+1|0;if(!z){v=x;q=63;break b}A=A+1|0}while((b[d>>0]|0)==(b[A>>0]|0))}}while(0);x=f[x>>2]|0;if(!x){u=t;break a}}if((q|0)==63){w=v+20|0;return w|0}}if(e){o=j;while(1){y=f[o+4>>2]|0;if((y|0)!=(s|0)){if(y>>>0>>0)B=y;else B=(y>>>0)%(r>>>0)|0;if((B|0)!=(t|0)){u=t;break a}}y=b[o+8+11>>0]|0;if(!((y<<24>>24<0?f[o+12>>2]|0:y&255)|0)){v=o;break}o=f[o>>2]|0;if(!o){u=t;break a}}w=v+20|0;return w|0}else C=j;c:while(1){o=f[C+4>>2]|0;if((o|0)!=(s|0)){if(o>>>0>>0)D=o;else D=(o>>>0)%(r>>>0)|0;if((D|0)!=(t|0)){u=t;break a}}o=C+8|0;e=b[o+11>>0]|0;y=e<<24>>24<0;l=e&255;do if(((y?f[C+12>>2]|0:l)|0)==(i|0)){e=f[o>>2]|0;if(y)if(!(Pk(e,g,i)|0)){v=C;q=63;break c}else break;if((b[g>>0]|0)==(e&255)<<24>>24){e=o;k=l;A=g;do{k=k+-1|0;e=e+1|0;if(!k){v=C;q=63;break c}A=A+1|0}while((b[e>>0]|0)==(b[A>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){u=t;break a}}if((q|0)==63){w=v+20|0;return w|0}}else u=t}else u=0;while(0);t=dn(24)|0;dj(t+8|0,c);f[t+20>>2]=0;f[t+4>>2]=s;f[t>>2]=0;c=a+12|0;E=$(((f[c>>2]|0)+1|0)>>>0);F=$(r>>>0);G=$(n[a+16>>2]);do if(p|$(G*F)>>0<3|(r+-1&r|0)!=0)&1;g=~~$(W($(E/G)))>>>0;Ph(a,C>>>0>>0?g:C);C=f[m>>2]|0;g=C+-1|0;if(!(g&C)){H=C;I=g&s;break}if(s>>>0>>0){H=C;I=s}else{H=C;I=(s>>>0)%(C>>>0)|0}}else{H=r;I=u}while(0);u=(f[a>>2]|0)+(I<<2)|0;I=f[u>>2]|0;if(!I){r=a+8|0;f[t>>2]=f[r>>2];f[r>>2]=t;f[u>>2]=r;r=f[t>>2]|0;if(r|0){u=f[r+4>>2]|0;r=H+-1|0;if(r&H)if(u>>>0>>0)J=u;else J=(u>>>0)%(H>>>0)|0;else J=u&r;K=(f[a>>2]|0)+(J<<2)|0;q=61}}else{f[t>>2]=f[I>>2];K=I;q=61}if((q|0)==61)f[K>>2]=t;f[c>>2]=(f[c>>2]|0)+1;v=t;w=v+20|0;return w|0}function yc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0.0,R=0.0,S=0,T=0.0,U=0,V=0,W=0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0.0,da=0,ea=0.0;g=a+4|0;i=f[g>>2]|0;j=a+100|0;if(i>>>0<(f[j>>2]|0)>>>0){f[g>>2]=i+1;k=h[i>>0]|0;l=0}else{k=Di(a)|0;l=0}a:while(1){switch(k|0){case 46:{m=8;break a;break}case 48:break;default:{n=0;o=0;p=1.0;q=0.0;r=0;s=k;t=l;u=0;v=0;w=0;x=0;break a}}i=f[g>>2]|0;if(i>>>0<(f[j>>2]|0)>>>0){f[g>>2]=i+1;k=h[i>>0]|0;l=1;continue}else{k=Di(a)|0;l=1;continue}}if((m|0)==8){k=f[g>>2]|0;if(k>>>0<(f[j>>2]|0)>>>0){f[g>>2]=k+1;y=h[k>>0]|0}else y=Di(a)|0;if((y|0)==48){k=0;i=0;while(1){z=f[g>>2]|0;if(z>>>0<(f[j>>2]|0)>>>0){f[g>>2]=z+1;A=h[z>>0]|0}else A=Di(a)|0;z=Tn(k|0,i|0,-1,-1)|0;B=I;if((A|0)==48){k=z;i=B}else{n=1;o=0;p=1.0;q=0.0;r=0;s=A;t=1;u=0;v=0;w=z;x=B;break}}}else{n=1;o=0;p=1.0;q=0.0;r=0;s=y;t=l;u=0;v=0;w=0;x=0}}while(1){l=s+-48|0;y=s|32;if(l>>>0>=10){A=(s|0)==46;if(!(A|(y+-97|0)>>>0<6)){C=s;break}if(A)if(!n){D=1;E=o;F=p;G=q;H=r;J=t;K=v;L=u;M=v;N=u}else{C=46;break}else m=20}else m=20;if((m|0)==20){m=0;A=(s|0)>57?y+-87|0:l;do if(!((u|0)<0|(u|0)==0&v>>>0<8))if((u|0)<0|(u|0)==0&v>>>0<14){O=p*.0625;P=o;Q=O;R=q+O*+(A|0);S=r;break}else{l=(o|0)!=0|(A|0)==0;P=l?o:1;Q=p;R=l?q:q+p*.5;S=r;break}else{P=o;Q=p;R=q;S=A+(r<<4)|0}while(0);A=Tn(v|0,u|0,1,0)|0;D=n;E=P;F=Q;G=R;H=S;J=1;K=w;L=x;M=A;N=I}A=f[g>>2]|0;if(A>>>0<(f[j>>2]|0)>>>0){f[g>>2]=A+1;n=D;o=E;p=F;q=G;r=H;s=h[A>>0]|0;t=J;u=N;v=M;w=K;x=L;continue}else{n=D;o=E;p=F;q=G;r=H;s=Di(a)|0;t=J;u=N;v=M;w=K;x=L;continue}}do if(!t){L=(f[j>>2]|0)==0;if(!L)f[g>>2]=(f[g>>2]|0)+-1;if(e){if(!L)f[g>>2]=(f[g>>2]|0)+-1;if(!((n|0)==0|L))f[g>>2]=(f[g>>2]|0)+-1}else Rm(a,0);T=+(d|0)*0.0}else{L=(n|0)==0;K=L?v:w;M=L?u:x;if((u|0)<0|(u|0)==0&v>>>0<8){L=r;N=v;J=u;while(1){s=L<<4;H=N;N=Tn(N|0,J|0,1,0)|0;if(!((J|0)<0|(J|0)==0&H>>>0<7)){U=s;break}else{L=s;J=I}}}else U=r;if((C|32|0)==112){J=De(a,e)|0;L=I;if((J|0)==0&(L|0)==-2147483648){if(!e){Rm(a,0);T=0.0;break}if(!(f[j>>2]|0)){V=0;W=0}else{f[g>>2]=(f[g>>2]|0)+-1;V=0;W=0}}else{V=J;W=L}}else if(!(f[j>>2]|0)){V=0;W=0}else{f[g>>2]=(f[g>>2]|0)+-1;V=0;W=0}L=Rn(K|0,M|0,2)|0;J=Tn(L|0,I|0,-32,-1)|0;L=Tn(J|0,I|0,V|0,W|0)|0;J=I;if(!U){T=+(d|0)*0.0;break}N=0-c|0;s=((N|0)<0)<<31>>31;if((J|0)>(s|0)|(J|0)==(s|0)&L>>>0>N>>>0){N=ir()|0;f[N>>2]=34;T=+(d|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}N=c+-106|0;s=((N|0)<0)<<31>>31;if((J|0)<(s|0)|(J|0)==(s|0)&L>>>0>>0){N=ir()|0;f[N>>2]=34;T=+(d|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((U|0)>-1){G=q;N=U;s=L;H=J;while(1){E=!(G>=.5);o=N<<1|(E^1)&1;F=G+(E?G:G+-1.0);E=Tn(s|0,H|0,-1,-1)|0;D=I;if((o|0)>-1){G=F;N=o;s=E;H=D}else{X=F;Y=o;Z=E;_=D;break}}}else{X=q;Y=U;Z=L;_=J}H=((b|0)<0)<<31>>31;s=Vn(32,0,c|0,((c|0)<0)<<31>>31|0)|0;N=Tn(s|0,I|0,Z|0,_|0)|0;s=I;if((s|0)<(H|0)|(s|0)==(H|0)&N>>>0>>0)if((N|0)>0){$=N;m=59}else{aa=0;ba=84;m=61}else{$=b;m=59}if((m|0)==59)if(($|0)<53){aa=$;ba=84-$|0;m=61}else{ca=0.0;da=$;ea=+(d|0)}if((m|0)==61){G=+(d|0);ca=+Gq(+Wj(1.0,ba),G);da=aa;ea=G}N=(Y&1|0)==0&(X!=0.0&(da|0)<32);G=(N?0.0:X)*ea+(ca+ea*+((Y+(N&1)|0)>>>0))-ca;if(!(G!=0.0)){N=ir()|0;f[N>>2]=34}T=+Hq(G,Z)}while(0);return +T}function zc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;g=u;u=u+16|0;h=g+4|0;i=g;if(!(oh(a,d)|0)){j=0;u=g;return j|0}d=a+84|0;k=f[d>>2]|0;l=a+88|0;m=f[l>>2]|0;if((m|0)!=(k|0))f[l>>2]=m+(~((m+-4-k|0)>>>2)<<2);f[d>>2]=0;f[l>>2]=0;f[a+92>>2]=0;if(k|0)br(k);k=a+72|0;l=f[k>>2]|0;d=a+76|0;if((f[d>>2]|0)!=(l|0))f[d>>2]=l;f[k>>2]=0;f[d>>2]=0;f[a+80>>2]=0;if(l|0)br(l);l=a+64|0;d=f[l>>2]|0;if((f[d+4>>2]|0)!=(f[d>>2]|0)){k=a+12|0;m=e+84|0;n=e+68|0;o=c+96|0;p=a+24|0;q=0;r=d;do{f[i>>2]=(q>>>0)/3|0;f[h>>2]=f[i>>2];d=Rj(r,h)|0;r=f[l>>2]|0;do if(!d){s=f[(f[r+12>>2]|0)+(q<<2)>>2]|0;if((s|0)==-1){t=(f[a>>2]|0)+(q>>>5<<2)|0;f[t>>2]=f[t>>2]|1<<(q&31);t=q+1|0;v=((t>>>0)%3|0|0)==0?q+-2|0:t;if((v|0)==-1)w=-1;else w=f[(f[r>>2]|0)+(v<<2)>>2]|0;v=(f[k>>2]|0)+(w>>>5<<2)|0;f[v>>2]=f[v>>2]|1<<(w&31);v=(((q>>>0)%3|0|0)==0?2:-1)+q|0;if((v|0)==-1)x=-1;else x=f[(f[r>>2]|0)+(v<<2)>>2]|0;v=(f[k>>2]|0)+(x>>>5<<2)|0;f[v>>2]=f[v>>2]|1<<(x&31);break}if(s>>>0>=q>>>0){v=q+1|0;t=((v>>>0)%3|0|0)==0?q+-2|0:v;y=s+(((s>>>0)%3|0|0)==0?2:-1)|0;z=(t|0)==-1;if(!(b[m>>0]|0)){if(z)A=-1;else A=f[(f[o>>2]|0)+(((t|0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]|0;B=(y|0)==-1;if(B)C=-1;else C=f[(f[o>>2]|0)+(((y|0)/3|0)*12|0)+(((y|0)%3|0)<<2)>>2]|0;D=f[n>>2]|0;if((f[D+(A<<2)>>2]|0)==(f[D+(C<<2)>>2]|0)){E=t+1|0;if(z)F=-1;else F=((E>>>0)%3|0|0)==0?t+-2|0:E;do if(!B)if(!((y>>>0)%3|0)){G=y+2|0;break}else{G=y+-1|0;break}else G=-1;while(0);if((F|0)==-1)H=-1;else H=f[(f[o>>2]|0)+(((F|0)/3|0)*12|0)+(((F|0)%3|0)<<2)>>2]|0;if((G|0)==-1)I=-1;else I=f[(f[o>>2]|0)+(((G|0)/3|0)*12|0)+(((G|0)%3|0)<<2)>>2]|0;if((f[D+(H<<2)>>2]|0)==(f[D+(I<<2)>>2]|0))break}}else{if(z)J=-1;else J=f[(f[o>>2]|0)+(((t|0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]|0;B=(y|0)==-1;if(B)K=-1;else K=f[(f[o>>2]|0)+(((y|0)/3|0)*12|0)+(((y|0)%3|0)<<2)>>2]|0;if((J|0)==(K|0)){E=t+1|0;if(z)L=-1;else L=((E>>>0)%3|0|0)==0?t+-2|0:E;do if(!B)if(!((y>>>0)%3|0)){M=y+2|0;break}else{M=y+-1|0;break}else M=-1;while(0);if((L|0)==-1)N=-1;else N=f[(f[o>>2]|0)+(((L|0)/3|0)*12|0)+(((L|0)%3|0)<<2)>>2]|0;if((M|0)==-1)O=-1;else O=f[(f[o>>2]|0)+(((M|0)/3|0)*12|0)+(((M|0)%3|0)<<2)>>2]|0;if((N|0)==(O|0))break}}b[p>>0]=0;y=f[a>>2]|0;B=y+(q>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(q&31);B=y+(s>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(s&31);B=((v>>>0)%3|0|0)==0?q+-2|0:v;if((B|0)==-1)P=-1;else P=f[(f[r>>2]|0)+(B<<2)>>2]|0;B=(f[k>>2]|0)+(P>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(P&31);B=(((q>>>0)%3|0|0)==0?2:-1)+q|0;if((B|0)==-1)Q=-1;else Q=f[(f[r>>2]|0)+(B<<2)>>2]|0;B=(f[k>>2]|0)+(Q>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(Q&31);B=s+1|0;y=((B>>>0)%3|0|0)==0?s+-2|0:B;if((y|0)==-1)R=-1;else R=f[(f[r>>2]|0)+(y<<2)>>2]|0;y=(f[k>>2]|0)+(R>>>5<<2)|0;f[y>>2]=f[y>>2]|1<<(R&31);y=(((s>>>0)%3|0|0)==0?2:-1)+s|0;if((y|0)==-1)S=-1;else S=f[(f[r>>2]|0)+(y<<2)>>2]|0;y=(f[k>>2]|0)+(S>>>5<<2)|0;f[y>>2]=f[y>>2]|1<<(S&31)}}while(0);q=q+1|0}while(q>>>0<(f[r+4>>2]|0)-(f[r>>2]|0)>>2>>>0)}if((c|0)!=0&(e|0)!=0){Kc(a,c,e);j=1;u=g;return j|0}else{gd(a,0,0);j=1;u=g;return j|0}return 0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;d=u;u=u+32|0;e=d+12|0;g=d+8|0;h=d+4|0;i=d;j=a+8|0;a:do if(f[j>>2]|0?(k=f[a>>2]|0,l=a+4|0,f[a>>2]=l,f[(f[l>>2]|0)+8>>2]=0,f[l>>2]=0,f[j>>2]=0,m=f[k+4>>2]|0,n=(m|0)==0?k:m,n|0):0){m=a+4|0;k=n;n=f[b>>2]|0;while(1){if((n|0)==(f[c>>2]|0))break;o=k+16|0;f[o>>2]=f[n+16>>2];if((k|0)!=(n|0)){f[h>>2]=f[n+20>>2];f[i>>2]=n+24;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Hc(k+20|0,g,e)}p=k+8|0;q=f[p>>2]|0;do if(q){r=f[q>>2]|0;if((r|0)==(k|0)){f[q>>2]=0;s=f[q+4>>2]|0;if(!s){t=q;break}else v=s;while(1){s=f[v>>2]|0;if(s|0){v=s;continue}s=f[v+4>>2]|0;if(!s)break;else v=s}t=v;break}else{f[q+4>>2]=0;if(!r){t=q;break}else w=r;while(1){s=f[w>>2]|0;if(s|0){w=s;continue}s=f[w+4>>2]|0;if(!s)break;else w=s}t=w;break}}else t=0;while(0);q=f[l>>2]|0;do if(q){r=f[o>>2]|0;s=q;while(1){if((r|0)<(f[s+16>>2]|0)){x=f[s>>2]|0;if(!x){y=22;break}else z=x}else{A=s+4|0;x=f[A>>2]|0;if(!x){y=25;break}else z=x}s=z}if((y|0)==22){y=0;B=s;C=s;break}else if((y|0)==25){y=0;B=s;C=A;break}}else{B=l;C=l}while(0);f[k>>2]=0;f[k+4>>2]=0;f[p>>2]=B;f[C>>2]=k;q=f[f[a>>2]>>2]|0;if(!q)D=k;else{f[a>>2]=q;D=f[C>>2]|0}Ae(f[m>>2]|0,D);f[j>>2]=(f[j>>2]|0)+1;q=f[n+4>>2]|0;if(!q){o=n+8|0;r=f[o>>2]|0;if((f[r>>2]|0)==(n|0))E=r;else{r=o;do{o=f[r>>2]|0;r=o+8|0;x=f[r>>2]|0}while((f[x>>2]|0)!=(o|0));E=x}}else{r=q;while(1){p=f[r>>2]|0;if(!p)break;else r=p}E=r}f[b>>2]=E;if(!t)break a;else{k=t;n=E}}n=f[k+8>>2]|0;if(!n)F=k;else{m=n;while(1){n=f[m+8>>2]|0;if(!n)break;else m=n}F=m}Dj(a,F)}while(0);F=f[b>>2]|0;E=f[c>>2]|0;if((F|0)==(E|0)){u=d;return}c=a+4|0;t=a+4|0;D=F;while(1){tg(e,a,D+16|0);F=f[c>>2]|0;do if(F){C=f[e>>2]|0;B=f[C+16>>2]|0;A=F;while(1){if((B|0)<(f[A+16>>2]|0)){z=f[A>>2]|0;if(!z){y=43;break}else G=z}else{H=A+4|0;z=f[H>>2]|0;if(!z){y=46;break}else G=z}A=G}if((y|0)==43){y=0;I=A;J=A;K=C;break}else if((y|0)==46){y=0;I=A;J=H;K=C;break}}else{I=c;J=c;K=f[e>>2]|0}while(0);f[K>>2]=0;f[K+4>>2]=0;f[K+8>>2]=I;f[J>>2]=K;F=f[f[a>>2]>>2]|0;if(!F)L=K;else{f[a>>2]=F;L=f[J>>2]|0}Ae(f[t>>2]|0,L);f[j>>2]=(f[j>>2]|0)+1;F=f[D+4>>2]|0;if(!F){m=D+8|0;B=f[m>>2]|0;if((f[B>>2]|0)==(D|0))M=B;else{B=m;do{m=f[B>>2]|0;B=m+8|0;r=f[B>>2]|0}while((f[r>>2]|0)!=(m|0));M=r}}else{B=F;while(1){r=f[B>>2]|0;if(!r)break;else B=r}M=B}f[b>>2]=M;if((M|0)==(E|0))break;else D=M}u=d;return}function Bc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;g=a+8|0;Ah(g,b,d,e);d=e>>>0>1073741823?-1:e<<2;h=_q(d)|0;hj(h|0,0,d|0)|0;d=f[a+48>>2]|0;i=f[a+56>>2]|0;j=f[i>>2]|0;k=(f[i+4>>2]|0)-j|0;l=k>>2;a:do if((k|0)>4){m=f[a+52>>2]|0;n=a+16|0;o=a+32|0;p=a+12|0;q=a+28|0;r=a+20|0;s=a+24|0;t=d+12|0;u=(e|0)>0;v=j;w=l;while(1){x=w;w=w+-1|0;if(l>>>0<=w>>>0)break;y=f[v+(w<<2)>>2]|0;z=X(w,e)|0;if((y|0)!=-1?(A=f[(f[t>>2]|0)+(y<<2)>>2]|0,(A|0)!=-1):0){y=f[d>>2]|0;B=f[m>>2]|0;C=f[B+(f[y+(A<<2)>>2]<<2)>>2]|0;D=A+1|0;E=((D>>>0)%3|0|0)==0?A+-2|0:D;if((E|0)==-1)F=-1;else F=f[y+(E<<2)>>2]|0;E=f[B+(F<<2)>>2]|0;D=(((A>>>0)%3|0|0)==0?2:-1)+A|0;if((D|0)==-1)G=-1;else G=f[y+(D<<2)>>2]|0;D=f[B+(G<<2)>>2]|0;if((C|0)<(w|0)&(E|0)<(w|0)&(D|0)<(w|0)){B=X(C,e)|0;C=X(E,e)|0;E=X(D,e)|0;if(u){D=0;do{f[h+(D<<2)>>2]=(f[b+(D+E<<2)>>2]|0)+(f[b+(D+C<<2)>>2]|0)-(f[b+(D+B<<2)>>2]|0);D=D+1|0}while((D|0)!=(e|0))}D=b+(z<<2)|0;B=c+(z<<2)|0;C=f[g>>2]|0;if((C|0)>0){E=0;y=h;A=C;while(1){if((A|0)>0){C=0;do{H=f[y+(C<<2)>>2]|0;I=f[n>>2]|0;if((H|0)>(I|0)){J=f[o>>2]|0;f[J+(C<<2)>>2]=I;K=J}else{J=f[p>>2]|0;I=f[o>>2]|0;f[I+(C<<2)>>2]=(H|0)<(J|0)?J:H;K=I}C=C+1|0}while((C|0)<(f[g>>2]|0));L=K}else L=f[o>>2]|0;C=(f[D+(E<<2)>>2]|0)-(f[L+(E<<2)>>2]|0)|0;I=B+(E<<2)|0;f[I>>2]=C;if((C|0)>=(f[q>>2]|0)){if((C|0)>(f[s>>2]|0)){M=C-(f[r>>2]|0)|0;N=42}}else{M=(f[r>>2]|0)+C|0;N=42}if((N|0)==42){N=0;f[I>>2]=M}E=E+1|0;A=f[g>>2]|0;if((E|0)>=(A|0))break;else y=L}}}else N=16}else N=16;if((N|0)==16?(N=0,y=b+(z<<2)|0,A=c+(z<<2)|0,E=f[g>>2]|0,(E|0)>0):0){B=0;D=b+((X(x+-2|0,e)|0)<<2)|0;I=E;while(1){if((I|0)>0){E=0;do{C=f[D+(E<<2)>>2]|0;H=f[n>>2]|0;if((C|0)>(H|0)){J=f[o>>2]|0;f[J+(E<<2)>>2]=H;O=J}else{J=f[p>>2]|0;H=f[o>>2]|0;f[H+(E<<2)>>2]=(C|0)<(J|0)?J:C;O=H}E=E+1|0}while((E|0)<(f[g>>2]|0));P=O}else P=f[o>>2]|0;E=(f[y+(B<<2)>>2]|0)-(f[P+(B<<2)>>2]|0)|0;H=A+(B<<2)|0;f[H>>2]=E;if((E|0)>=(f[q>>2]|0)){if((E|0)>(f[s>>2]|0)){Q=E-(f[r>>2]|0)|0;N=29}}else{Q=(f[r>>2]|0)+E|0;N=29}if((N|0)==29){N=0;f[H>>2]=Q}B=B+1|0;I=f[g>>2]|0;if((B|0)>=(I|0))break;else D=P}}if((x|0)<=2)break a}mq(i)}while(0);if((e|0)>0)hj(h|0,0,e<<2|0)|0;e=f[g>>2]|0;if((e|0)<=0){$q(h);return 1}i=a+16|0;P=a+32|0;Q=a+12|0;O=a+28|0;L=a+20|0;M=a+24|0;a=0;K=h;G=e;while(1){if((G|0)>0){e=0;do{F=f[K+(e<<2)>>2]|0;d=f[i>>2]|0;if((F|0)>(d|0)){l=f[P>>2]|0;f[l+(e<<2)>>2]=d;R=l}else{l=f[Q>>2]|0;d=f[P>>2]|0;f[d+(e<<2)>>2]=(F|0)<(l|0)?l:F;R=d}e=e+1|0}while((e|0)<(f[g>>2]|0));S=R}else S=f[P>>2]|0;e=(f[b+(a<<2)>>2]|0)-(f[S+(a<<2)>>2]|0)|0;d=c+(a<<2)|0;f[d>>2]=e;if((e|0)>=(f[O>>2]|0)){if((e|0)>(f[M>>2]|0)){T=e-(f[L>>2]|0)|0;N=56}}else{T=(f[L>>2]|0)+e|0;N=56}if((N|0)==56){N=0;f[d>>2]=T}a=a+1|0;G=f[g>>2]|0;if((a|0)>=(G|0))break;else K=S}$q(h);return 1}function Cc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;g=a+8|0;Ah(g,b,d,e);d=e>>>0>1073741823?-1:e<<2;h=_q(d)|0;hj(h|0,0,d|0)|0;d=f[a+48>>2]|0;i=f[a+56>>2]|0;j=f[i>>2]|0;k=(f[i+4>>2]|0)-j|0;l=k>>2;a:do if((k|0)>4){m=f[a+52>>2]|0;n=a+16|0;o=a+32|0;p=a+12|0;q=a+28|0;r=a+20|0;s=a+24|0;t=d+64|0;u=d+28|0;v=(e|0)>0;w=j;x=l;while(1){y=x;x=x+-1|0;if(l>>>0<=x>>>0)break;z=f[w+(x<<2)>>2]|0;A=X(x,e)|0;if((((z|0)!=-1?(f[(f[d>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)==0:0)?(B=f[(f[(f[t>>2]|0)+12>>2]|0)+(z<<2)>>2]|0,(B|0)!=-1):0)?(z=f[u>>2]|0,C=f[m>>2]|0,D=f[C+(f[z+(B<<2)>>2]<<2)>>2]|0,E=B+1|0,F=f[C+(f[z+((((E>>>0)%3|0|0)==0?B+-2|0:E)<<2)>>2]<<2)>>2]|0,E=f[C+(f[z+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(D|0)<(x|0)&(F|0)<(x|0)&(E|0)<(x|0)):0){B=X(D,e)|0;D=X(F,e)|0;F=X(E,e)|0;if(v){E=0;do{f[h+(E<<2)>>2]=(f[b+(E+F<<2)>>2]|0)+(f[b+(E+D<<2)>>2]|0)-(f[b+(E+B<<2)>>2]|0);E=E+1|0}while((E|0)!=(e|0))}E=b+(A<<2)|0;B=c+(A<<2)|0;D=f[g>>2]|0;if((D|0)>0){F=0;z=h;C=D;while(1){if((C|0)>0){D=0;do{G=f[z+(D<<2)>>2]|0;H=f[n>>2]|0;if((G|0)>(H|0)){I=f[o>>2]|0;f[I+(D<<2)>>2]=H;J=I}else{I=f[p>>2]|0;H=f[o>>2]|0;f[H+(D<<2)>>2]=(G|0)<(I|0)?I:G;J=H}D=D+1|0}while((D|0)<(f[g>>2]|0));K=J}else K=f[o>>2]|0;D=(f[E+(F<<2)>>2]|0)-(f[K+(F<<2)>>2]|0)|0;H=B+(F<<2)|0;f[H>>2]=D;if((D|0)>=(f[q>>2]|0)){if((D|0)>(f[s>>2]|0)){L=D-(f[r>>2]|0)|0;M=39}}else{L=(f[r>>2]|0)+D|0;M=39}if((M|0)==39){M=0;f[H>>2]=L}F=F+1|0;C=f[g>>2]|0;if((F|0)>=(C|0))break;else z=K}}}else M=13;if((M|0)==13?(M=0,z=b+(A<<2)|0,C=c+(A<<2)|0,F=f[g>>2]|0,(F|0)>0):0){B=0;E=b+((X(y+-2|0,e)|0)<<2)|0;H=F;while(1){if((H|0)>0){F=0;do{D=f[E+(F<<2)>>2]|0;G=f[n>>2]|0;if((D|0)>(G|0)){I=f[o>>2]|0;f[I+(F<<2)>>2]=G;N=I}else{I=f[p>>2]|0;G=f[o>>2]|0;f[G+(F<<2)>>2]=(D|0)<(I|0)?I:D;N=G}F=F+1|0}while((F|0)<(f[g>>2]|0));O=N}else O=f[o>>2]|0;F=(f[z+(B<<2)>>2]|0)-(f[O+(B<<2)>>2]|0)|0;G=C+(B<<2)|0;f[G>>2]=F;if((F|0)>=(f[q>>2]|0)){if((F|0)>(f[s>>2]|0)){P=F-(f[r>>2]|0)|0;M=26}}else{P=(f[r>>2]|0)+F|0;M=26}if((M|0)==26){M=0;f[G>>2]=P}B=B+1|0;H=f[g>>2]|0;if((B|0)>=(H|0))break;else E=O}}if((y|0)<=2)break a}mq(i)}while(0);if((e|0)>0)hj(h|0,0,e<<2|0)|0;e=f[g>>2]|0;if((e|0)<=0){$q(h);return 1}i=a+16|0;O=a+32|0;P=a+12|0;N=a+28|0;K=a+20|0;L=a+24|0;a=0;J=h;d=e;while(1){if((d|0)>0){e=0;do{l=f[J+(e<<2)>>2]|0;j=f[i>>2]|0;if((l|0)>(j|0)){k=f[O>>2]|0;f[k+(e<<2)>>2]=j;Q=k}else{k=f[P>>2]|0;j=f[O>>2]|0;f[j+(e<<2)>>2]=(l|0)<(k|0)?k:l;Q=j}e=e+1|0}while((e|0)<(f[g>>2]|0));R=Q}else R=f[O>>2]|0;e=(f[b+(a<<2)>>2]|0)-(f[R+(a<<2)>>2]|0)|0;j=c+(a<<2)|0;f[j>>2]=e;if((e|0)>=(f[N>>2]|0)){if((e|0)>(f[L>>2]|0)){S=e-(f[K>>2]|0)|0;M=53}}else{S=(f[K>>2]|0)+e|0;M=53}if((M|0)==53){M=0;f[j>>2]=S}a=a+1|0;d=f[g>>2]|0;if((a|0)>=(d|0))break;else J=R}$q(h);return 1}function Dc(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;h=u;u=u+48|0;i=h+28|0;j=h+24|0;k=h;l=h+12|0;m=h+40|0;if((c|0)<0){n=0;u=h;return n|0}if(!c){n=1;u=h;return n|0}o=(d|0)>1;p=o?d:1;f[k>>2]=0;d=k+4|0;f[d>>2]=0;f[k+8>>2]=0;$j(k,c);q=k+8|0;if(o){o=0;r=0;while(1){s=1;t=f[a+(r<<2)>>2]|0;do{v=f[a+(s+r<<2)>>2]|0;t=t>>>0>>0?v:t;s=s+1|0}while((s|0)!=(p|0));s=(_(t|0)|0)^31;v=t>>>0>o>>>0?t:o;w=(t|0)==0?1:s+1|0;f[i>>2]=w;s=f[d>>2]|0;if(s>>>0<(f[q>>2]|0)>>>0){f[s>>2]=w;f[d>>2]=s+4}else Ci(k,i);r=r+p|0;if((r|0)>=(c|0)){x=v;break}else o=v}}else{o=0;r=0;while(1){v=f[a+(o<<2)>>2]|0;s=(_(v|0)|0)^31;w=v>>>0>r>>>0?v:r;y=(v|0)==0?1:s+1|0;f[i>>2]=y;s=f[d>>2]|0;if(s>>>0<(f[q>>2]|0)>>>0){f[s>>2]=y;f[d>>2]=s+4}else Ci(k,i);o=o+p|0;if((o|0)>=(c|0)){x=w;break}else r=w}}f[l>>2]=0;r=l+4|0;f[r>>2]=0;f[l+8>>2]=0;o=f[k>>2]|0;q=(f[d>>2]|0)-o|0;w=q>>2;if(w){if(w>>>0>1073741823)mq(l);s=dn(q)|0;f[r>>2]=s;f[l>>2]=s;f[l+8>>2]=s+(w<<2);w=s;if((q|0)>0){y=s+(q>>>2<<2)|0;Rg(s|0,o|0,q|0)|0;f[r>>2]=y;q=y-w>>2;if((y|0)==(s|0)){z=q;A=s;B=0;C=0}else{y=0;o=0;v=0;while(1){D=Tn(o|0,v|0,f[s+(y<<2)>>2]|0,0)|0;E=I;y=y+1|0;if(y>>>0>=q>>>0){z=q;A=s;B=D;C=E;break}else{o=D;v=E}}}}else{F=w;G=18}}else{F=0;G=18}if((G|0)==18){z=0;A=F;B=0;C=0}F=rg(A,z,32,i)|0;z=I;A=f[i>>2]<<3;w=Rn(A|0,((A|0)<0)<<31>>31|0,1)|0;A=I;v=on(B|0,C|0,p|0,0)|0;C=Tn(F|0,z|0,v|0,I|0)|0;v=Tn(C|0,I|0,w|0,A|0)|0;A=I;w=f[l>>2]|0;if(w|0){l=f[r>>2]|0;if((l|0)!=(w|0))f[r>>2]=l+(~((l+-4-w|0)>>>2)<<2);br(w)}w=rg(a,c,x,i)|0;l=f[i>>2]|0;r=((x-l|0)/64|0)+l<<3;C=l<<3;z=Tn(w|0,I|0,C|0,((C|0)<0)<<31>>31|0)|0;C=Tn(z|0,I|0,r|0,((r|0)<0)<<31>>31|0)|0;r=I;z=(_((x>>>0>1?x:1)|0)|0)^30;if(e){f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;w=dn(32)|0;f[i>>2]=w;f[i+8>>2]=-2147483616;f[i+4>>2]=22;F=w;B=13044;o=F+22|0;do{b[F>>0]=b[B>>0]|0;F=F+1|0;B=B+1|0}while((F|0)<(o|0));b[w+22>>0]=0;w=(sh(e,i)|0)==0;if((b[i+11>>0]|0)<0)br(f[i>>2]|0);if(!w){f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;w=dn(32)|0;f[i>>2]=w;f[i+8>>2]=-2147483616;f[i+4>>2]=22;F=w;B=13044;o=F+22|0;do{b[F>>0]=b[B>>0]|0;F=F+1|0;B=B+1|0}while((F|0)<(o|0));b[w+22>>0]=0;w=Ck(e,i)|0;if((b[i+11>>0]|0)<0)br(f[i>>2]|0);H=w}else G=32}else G=32;if((G|0)==32)H=z>>>0<18&((A|0)>(r|0)|(A|0)==(r|0)&v>>>0>=C>>>0)&1;b[m>>0]=H;C=g+16|0;v=f[C+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[C>>2]|0)>>>0>0)){f[j>>2]=f[g+4>>2];f[i>>2]=f[j>>2];ye(g,i,m,m+1|0)|0}switch(H|0){case 0:{J=md(a,c,p,k,g)|0;break}case 1:{J=Nc(a,c,x,l,e,g)|0;break}default:J=0}g=f[k>>2]|0;if(g|0){k=f[d>>2]|0;if((k|0)!=(g|0))f[d>>2]=k+(~((k+-4-g|0)>>>2)<<2);br(g)}n=J;u=h;return n|0}function Ec(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if((b|0)<0)return;c=a+12|0;d=f[c>>2]|0;e=f[a+8>>2]|0;g=e;h=d;if(d-e>>2>>>0<=b>>>0)return;e=g+(b<<2)|0;d=f[(f[e>>2]|0)+56>>2]|0;i=f[(f[g+(b<<2)>>2]|0)+60>>2]|0;g=e+4|0;if((g|0)!=(h|0)){j=g;g=e;do{k=f[j>>2]|0;f[j>>2]=0;l=f[g>>2]|0;f[g>>2]=k;if(l|0){k=l+88|0;m=f[k>>2]|0;f[k>>2]=0;if(m|0){k=f[m+8>>2]|0;if(k|0){n=m+12|0;if((f[n>>2]|0)!=(k|0))f[n>>2]=k;br(k)}br(m)}m=f[l+68>>2]|0;if(m|0){k=l+72|0;n=f[k>>2]|0;if((n|0)!=(m|0))f[k>>2]=n+(~((n+-4-m|0)>>>2)<<2);br(m)}m=l+64|0;n=f[m>>2]|0;f[m>>2]=0;if(n|0){m=f[n>>2]|0;if(m|0){k=n+4|0;if((f[k>>2]|0)!=(m|0))f[k>>2]=m;br(m)}br(n)}br(l)}j=j+4|0;g=g+4|0}while((j|0)!=(h|0));j=f[c>>2]|0;if((j|0)!=(g|0)){o=g;p=j;q=24}}else{o=e;p=h;q=24}if((q|0)==24){q=p;do{p=q+-4|0;f[c>>2]=p;h=f[p>>2]|0;f[p>>2]=0;if(h|0){p=h+88|0;e=f[p>>2]|0;f[p>>2]=0;if(e|0){p=f[e+8>>2]|0;if(p|0){j=e+12|0;if((f[j>>2]|0)!=(p|0))f[j>>2]=p;br(p)}br(e)}e=f[h+68>>2]|0;if(e|0){p=h+72|0;j=f[p>>2]|0;if((j|0)!=(e|0))f[p>>2]=j+(~((j+-4-e|0)>>>2)<<2);br(e)}e=h+64|0;j=f[e>>2]|0;f[e>>2]=0;if(j|0){e=f[j>>2]|0;if(e|0){p=j+4|0;if((f[p>>2]|0)!=(e|0))f[p>>2]=e;br(e)}br(j)}br(h)}q=f[c>>2]|0}while((q|0)!=(o|0))}o=f[a+4>>2]|0;a:do if(o|0){q=o+44|0;c=f[q>>2]|0;h=f[o+40>>2]|0;while(1){if((h|0)==(c|0))break a;r=h+4|0;if((f[(f[h>>2]|0)+40>>2]|0)==(i|0))break;else h=r}if((r|0)!=(c|0)){j=r;e=h;do{p=f[j>>2]|0;f[j>>2]=0;g=f[e>>2]|0;f[e>>2]=p;if(g|0){Qi(g);br(g)}j=j+4|0;e=e+4|0}while((j|0)!=(c|0));j=f[q>>2]|0;if((j|0)==(e|0))break;else{s=e;t=j}}else{s=h;t=c}j=t;do{g=j+-4|0;f[q>>2]=g;p=f[g>>2]|0;f[g>>2]=0;if(p|0){Qi(p);br(p)}j=f[q>>2]|0}while((j|0)!=(s|0))}while(0);b:do if((d|0)<5){s=f[a+20+(d*12|0)>>2]|0;t=a+20+(d*12|0)+4|0;r=f[t>>2]|0;i=r;c:do if((s|0)==(r|0))u=s;else{o=s;while(1){if((f[o>>2]|0)==(b|0)){u=o;break c}o=o+4|0;if((o|0)==(r|0))break b}}while(0);if((u|0)!=(r|0)){s=u+4|0;o=i-s|0;j=o>>2;if(!j)v=r;else{Xl(u|0,s|0,o|0)|0;v=f[t>>2]|0}o=u+(j<<2)|0;if((v|0)!=(o|0))f[t>>2]=v+(~((v+-4-o|0)>>>2)<<2)}}while(0);v=f[a+24>>2]|0;u=f[a+20>>2]|0;d=u;if((v|0)!=(u|0)){o=v-u>>2;u=0;do{v=d+(u<<2)|0;j=f[v>>2]|0;if((j|0)>(b|0))f[v>>2]=j+-1;u=u+1|0}while(u>>>0>>0)}o=f[a+36>>2]|0;u=f[a+32>>2]|0;d=u;if((o|0)!=(u|0)){j=o-u>>2;u=0;do{o=d+(u<<2)|0;v=f[o>>2]|0;if((v|0)>(b|0))f[o>>2]=v+-1;u=u+1|0}while(u>>>0>>0)}j=f[a+48>>2]|0;u=f[a+44>>2]|0;d=u;if((j|0)!=(u|0)){v=j-u>>2;u=0;do{j=d+(u<<2)|0;o=f[j>>2]|0;if((o|0)>(b|0))f[j>>2]=o+-1;u=u+1|0}while(u>>>0>>0)}v=f[a+60>>2]|0;u=f[a+56>>2]|0;d=u;if((v|0)!=(u|0)){o=v-u>>2;u=0;do{v=d+(u<<2)|0;j=f[v>>2]|0;if((j|0)>(b|0))f[v>>2]=j+-1;u=u+1|0}while(u>>>0>>0)}o=f[a+72>>2]|0;u=f[a+68>>2]|0;a=u;if((o|0)==(u|0))return;d=o-u>>2;u=0;do{o=a+(u<<2)|0;j=f[o>>2]|0;if((j|0)>(b|0))f[o>>2]=j+-1;u=u+1|0}while(u>>>0>>0);return}function Fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;d=u;u=u+32|0;e=d+16|0;g=d;h=c+4|0;i=f[(f[h>>2]|0)+48>>2]|0;j=c+12|0;c=f[j>>2]|0;k=dn(32)|0;f[e>>2]=k;f[e+8>>2]=-2147483616;f[e+4>>2]=17;l=k;m=12932;n=l+17|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[k+17>>0]=0;k=i+16|0;o=f[k>>2]|0;if(o){p=k;q=o;a:while(1){o=q;while(1){if((f[o+16>>2]|0)>=(c|0))break;r=f[o+4>>2]|0;if(!r){s=p;break a}else o=r}q=f[o>>2]|0;if(!q){s=o;break}else p=o}if(((s|0)!=(k|0)?(c|0)>=(f[s+16>>2]|0):0)?(c=s+20|0,(sh(c,e)|0)!=0):0)t=yk(c,e,-1)|0;else v=10}else v=10;if((v|0)==10)t=yk(i,e,-1)|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);i=(1<>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;if(i&1|0?(t=(_(i|0)|0)^31,(t+-1|0)>>>0<=28):0){f[e>>2]=t+1;i=2<>2]=i+-1;t=i+-2|0;f[e+8>>2]=t;f[e+12>>2]=(t|0)/2|0}t=Ki(f[j>>2]|0,f[h>>2]|0)|0;i=f[(f[h>>2]|0)+48>>2]|0;c=f[j>>2]|0;s=dn(32)|0;f[g>>2]=s;f[g+8>>2]=-2147483616;f[g+4>>2]=17;l=s;m=12804;n=l+17|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[s+17>>0]=0;s=i+16|0;m=f[s>>2]|0;if(m){l=s;n=m;b:while(1){m=n;while(1){if((f[m+16>>2]|0)>=(c|0))break;k=f[m+4>>2]|0;if(!k){w=l;break b}else m=k}n=f[m>>2]|0;if(!n){w=m;break}else l=m}if(((w|0)!=(s|0)?(c|0)>=(f[w+16>>2]|0):0)?(c=w+20|0,(sh(c,g)|0)!=0):0)x=yk(c,g,t)|0;else v=25}else v=25;if((v|0)==25)x=yk(i,g,t)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);switch(x|0){case 6:{x=f[j>>2]|0;t=f[h>>2]|0;i=f[(f[(f[t+4>>2]|0)+8>>2]|0)+(x<<2)>>2]|0;do if((Qa[f[(f[t>>2]|0)+8>>2]&127](t)|0)==1){rf(g,t,6,x,e,514);c=f[g>>2]|0;if(!c){f[g>>2]=0;y=g;v=34;break}else{z=g;A=c;break}}else{y=g;v=34}while(0);if((v|0)==34){x=dn(24)|0;f[x+4>>2]=i;i=x+8|0;f[i>>2]=f[e>>2];f[i+4>>2]=f[e+4>>2];f[i+8>>2]=f[e+8>>2];f[i+12>>2]=f[e+12>>2];f[x>>2]=2320;i=x;f[g>>2]=i;z=y;A=i}f[a>>2]=A;f[z>>2]=0;u=d;return}case 0:{z=f[j>>2]|0;j=f[h>>2]|0;h=f[(f[(f[j+4>>2]|0)+8>>2]|0)+(z<<2)>>2]|0;do if((Qa[f[(f[j>>2]|0)+8>>2]&127](j)|0)==1){rf(g,j,0,z,e,514);A=f[g>>2]|0;if(!A){f[g>>2]=0;B=g;v=41;break}else{C=g;D=A;break}}else{B=g;v=41}while(0);if((v|0)==41){v=dn(24)|0;f[v+4>>2]=h;h=v+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[v>>2]=2320;e=v;f[g>>2]=e;C=B;D=e}f[a>>2]=D;f[C>>2]=0;u=d;return}default:{f[a>>2]=0;u=d;return}}}function Gc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;b=u;u=u+32|0;c=b+20|0;d=b+8|0;e=b;g=a+4|0;h=f[g>>2]|0;i=f[a>>2]|0;j=h-i|0;k=j>>2;f[c>>2]=0;l=c+4|0;f[l>>2]=0;m=c+8|0;f[m>>2]=0;n=i;if(k|0){if((j|0)<0)mq(c);j=((k+-1|0)>>>5)+1|0;o=dn(j<<2)|0;f[c>>2]=o;f[m>>2]=j;f[l>>2]=k;l=k>>>5;hj(o|0,0,l<<2|0)|0;j=k&31;k=o+(l<<2)|0;if(j|0)f[k>>2]=f[k>>2]&~(-1>>>(32-j|0))}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;k=a+12|0;l=e+4|0;o=d+8|0;m=n;n=h;h=i;while(1){if((n|0)==(h|0))break;else{p=0;q=0;r=h;s=m}while(1){i=f[c>>2]|0;do if(!(f[i+(q>>>5<<2)>>2]&1<<(q&31))){t=f[d>>2]|0;v=f[j>>2]|0;if((v|0)==(t|0))w=t;else{x=v+(~((v+-8-t|0)>>>3)<<3)|0;f[j>>2]=x;w=x}x=q;while(1){v=x+1|0;y=((v>>>0)%3|0|0)==0?x+-2|0:v;if((y|0)==-1){z=x;A=r;B=i;C=s;D=t;E=w;break}v=f[(f[k>>2]|0)+(y<<2)>>2]|0;y=v+1|0;if((v|0)==-1){z=x;A=r;B=i;C=s;D=t;E=w;break}F=((y>>>0)%3|0|0)==0?v+-2|0:y;if(!((F|0)!=(q|0)&(F|0)!=-1)){z=x;A=r;B=i;C=s;D=t;E=w;break}if(!(f[i+(F>>>5<<2)>>2]&1<<(F&31)))x=F;else{z=x;A=r;B=i;C=s;D=t;E=w;break}}a:while(1){t=B+(z>>>5<<2)|0;f[t>>2]=f[t>>2]|1<<(z&31);t=z+1|0;F=((t>>>0)%3|0|0)==0?z+-2|0:t;t=f[C+(F<<2)>>2]|0;G=(((z>>>0)%3|0|0)==0?2:-1)+z|0;if((D|0)!=(E|0))if((G|0)==-1){y=D;do{if((f[y>>2]|0)==(t|0)?(v=f[y+4>>2]|0,(v|0)!=-1):0){H=v;I=-1;J=-1;K=25;break a}y=y+8|0}while((y|0)!=(E|0))}else{y=D;do{if((f[y>>2]|0)==(t|0)?(L=f[y+4>>2]|0,M=f[(f[k>>2]|0)+(G<<2)>>2]|0,(M|0)!=(L|0)):0){K=24;break a}y=y+8|0}while((y|0)!=(E|0))}f[e>>2]=0;f[e>>2]=f[C+(G<<2)>>2];f[l>>2]=F;if((E|0)==(f[o>>2]|0))ei(d,e);else{y=e;t=f[y+4>>2]|0;v=E;f[v>>2]=f[y>>2];f[v+4>>2]=t;f[j>>2]=(f[j>>2]|0)+8}if((G|0)==-1){K=38;break}t=f[(f[k>>2]|0)+(G<<2)>>2]|0;if((t|0)==-1){K=38;break}v=t+(((t>>>0)%3|0|0)==0?2:-1)|0;if(!((v|0)!=(x|0)&(v|0)!=-1)){K=40;break}t=f[a>>2]|0;z=v;A=t;B=f[c>>2]|0;C=t;D=f[d>>2]|0;E=f[j>>2]|0}if((K|0)==24){K=0;if((L|0)==-1){N=-1;O=-1;P=M;Q=G}else{H=L;I=M;J=G;K=25}}else if((K|0)==38){K=0;K=40}if((K|0)==25){K=0;N=H;O=f[(f[k>>2]|0)+(H<<2)>>2]|0;P=I;Q=J}else if((K|0)==40){K=0;R=p;S=f[a>>2]|0;break}if((P|0)!=-1)f[(f[k>>2]|0)+(P<<2)>>2]=-1;x=f[k>>2]|0;if((O|0)!=-1)f[x+(O<<2)>>2]=-1;f[x+(Q<<2)>>2]=-1;f[x+(N<<2)>>2]=-1;R=1;S=A}else{R=p;S=r}while(0);q=q+1|0;T=f[g>>2]|0;s=S;if(q>>>0>=T-S>>2>>>0)break;else{p=R;r=S}}if(R){m=s;n=T;h=S}else break}S=f[d>>2]|0;if(S|0){d=f[j>>2]|0;if((d|0)!=(S|0))f[j>>2]=d+(~((d+-8-S|0)>>>3)<<3);br(S)}S=f[c>>2]|0;if(!S){u=b;return 1}br(S);u=b;return 1}function Hc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;e=a+8|0;a:do if(f[e>>2]|0?(g=f[a>>2]|0,h=a+4|0,f[a>>2]=h,f[(f[h>>2]|0)+8>>2]=0,f[h>>2]=0,f[e>>2]=0,i=f[g+4>>2]|0,j=(i|0)==0?g:i,j|0):0){i=a+4|0;g=j;j=f[c>>2]|0;while(1){if((j|0)==(f[d>>2]|0))break;k=g+16|0;Ql(k,j+16|0)|0;Ql(g+28|0,j+28|0)|0;l=g+8|0;m=f[l>>2]|0;do if(m){n=f[m>>2]|0;if((n|0)==(g|0)){f[m>>2]=0;o=f[m+4>>2]|0;if(!o){p=m;break}else q=o;while(1){o=f[q>>2]|0;if(o|0){q=o;continue}o=f[q+4>>2]|0;if(!o)break;else q=o}p=q;break}else{f[m+4>>2]=0;if(!n){p=m;break}else r=n;while(1){o=f[r>>2]|0;if(o|0){r=o;continue}o=f[r+4>>2]|0;if(!o)break;else r=o}p=r;break}}else p=0;while(0);m=f[h>>2]|0;do if(m){n=b[k+11>>0]|0;o=n<<24>>24<0;s=o?f[g+20>>2]|0:n&255;n=o?f[k>>2]|0:k;o=m;while(1){t=o+16|0;u=b[t+11>>0]|0;v=u<<24>>24<0;w=v?f[o+20>>2]|0:u&255;u=w>>>0>>0?w:s;if((u|0)!=0?(x=Pk(n,v?f[t>>2]|0:t,u)|0,(x|0)!=0):0)if((x|0)<0)y=22;else y=24;else if(s>>>0>>0)y=22;else y=24;if((y|0)==22){y=0;w=f[o>>2]|0;if(!w){y=23;break}else z=w}else if((y|0)==24){y=0;A=o+4|0;w=f[A>>2]|0;if(!w){y=26;break}else z=w}o=z}if((y|0)==23){y=0;B=o;C=o;break}else if((y|0)==26){y=0;B=A;C=o;break}}else{B=h;C=h}while(0);f[g>>2]=0;f[g+4>>2]=0;f[l>>2]=C;f[B>>2]=g;m=f[f[a>>2]>>2]|0;if(!m)D=g;else{f[a>>2]=m;D=f[B>>2]|0}Ae(f[i>>2]|0,D);f[e>>2]=(f[e>>2]|0)+1;m=f[j+4>>2]|0;if(!m){k=j+8|0;s=f[k>>2]|0;if((f[s>>2]|0)==(j|0))E=s;else{s=k;do{k=f[s>>2]|0;s=k+8|0;n=f[s>>2]|0}while((f[n>>2]|0)!=(k|0));E=n}}else{s=m;while(1){l=f[s>>2]|0;if(!l)break;else s=l}E=s}f[c>>2]=E;if(!p)break a;else{g=p;j=E}}j=f[g+8>>2]|0;if(!j)F=g;else{i=j;while(1){j=f[i+8>>2]|0;if(!j)break;else i=j}F=i}sj(a,F)}while(0);F=f[c>>2]|0;E=f[d>>2]|0;if((F|0)==(E|0))return;else G=F;while(1){Qe(a,G+16|0)|0;F=f[G+4>>2]|0;if(!F){d=G+8|0;p=f[d>>2]|0;if((f[p>>2]|0)==(G|0))H=p;else{p=d;do{d=f[p>>2]|0;p=d+8|0;e=f[p>>2]|0}while((f[e>>2]|0)!=(d|0));H=e}}else{p=F;while(1){i=f[p>>2]|0;if(!i)break;else p=i}H=p}f[c>>2]=H;if((H|0)==(E|0))break;else G=H}return}function Ic(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;g=u;u=u+16|0;h=g;i=c+4|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;j=dn(16)|0;f[h>>2]=j;f[h+8>>2]=-2147483632;f[h+4>>2]=15;k=j;l=12916;m=k+15|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[j+15>>0]=0;j=yk(i,h,-1)|0;if((b[h+11>>0]|0)<0)br(f[h>>2]|0);switch(j|0){case 0:{n=dn(56)|0;k=n;m=k+56|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(m|0));zn(n);o=3728;p=n;break}case -1:{if((Yh(i)|0)==10){n=dn(56)|0;k=n;m=k+56|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(m|0));zn(n);o=3728;p=n}else q=6;break}default:q=6}a:do if((q|0)==6){n=d+8|0;r=d+12|0;s=f[r>>2]|0;t=f[n>>2]|0;b:do if((s-t|0)>0){v=h+8|0;w=h+4|0;x=c+20|0;y=h+11|0;z=0;A=t;B=s;c:while(1){C=f[(f[A+(z<<2)>>2]|0)+28>>2]|0;switch(C|0){case 9:{q=12;break}case 6:case 5:case 4:case 2:{D=A;E=B;break}default:{if((C|2|0)!=3)break c;if((C|0)==9)q=12;else{D=A;E=B}}}if((q|0)==12){q=0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;C=dn(32)|0;f[h>>2]=C;f[v>>2]=-2147483616;f[w>>2]=17;k=C;l=12932;m=k+17|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[C+17>>0]=0;F=f[x>>2]|0;if(F){G=x;H=F;d:while(1){F=H;while(1){if((f[F+16>>2]|0)>=0)break;I=f[F+4>>2]|0;if(!I){J=G;break d}else F=I}H=f[F>>2]|0;if(!H){J=F;break}else G=F}if(((J|0)!=(x|0)?(f[J+16>>2]|0)<=0:0)?(G=J+20|0,(sh(G,h)|0)!=0):0)K=yk(G,h,-1)|0;else q=21}else q=21;if((q|0)==21){q=0;K=yk(i,h,-1)|0}if((b[y>>0]|0)<0)br(f[h>>2]|0);if((K|0)<1)break;D=f[n>>2]|0;E=f[r>>2]|0}z=z+1|0;if((z|0)>=(E-D>>2|0))break b;else{A=D;B=E}}if((j|0)!=1){B=dn(56)|0;k=B;m=k+56|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(m|0));zn(B);o=3728;p=B;break a}f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;A=dn(32)|0;f[h>>2]=A;f[h+8>>2]=-2147483616;f[h+4>>2]=24;k=A;l=12950;m=k+24|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[A+24>>0]=0;f[a>>2]=-1;dj(a+4|0,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}while(0);r=dn(56)|0;k=r;m=k+56|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(m|0));zn(r);o=3668;p=r}while(0);f[p>>2]=o;tp(p,d);Ad(a,p,i,e);if(!(f[a>>2]|0)){e=a+4|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);f[c+40>>2]=f[p+52>>2];f[c+44>>2]=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}Va[f[(f[p>>2]|0)+4>>2]&127](p);u=g;return}function Jc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;b=u;u=u+32|0;c=b+4|0;d=b;e=a+16|0;g=f[e>>2]|0;if(g>>>0>112){f[e>>2]=g+-113;g=a+4|0;e=f[g>>2]|0;h=f[e>>2]|0;i=e+4|0;f[g>>2]=i;e=a+8|0;j=f[e>>2]|0;k=a+12|0;l=f[k>>2]|0;m=l;do if((j|0)==(l|0)){n=f[a>>2]|0;o=n;if(i>>>0>n>>>0){p=i;q=((p-o>>2)+1|0)/-2|0;r=i+(q<<2)|0;s=j-p|0;p=s>>2;if(!p)t=i;else{Xl(r|0,i|0,s|0)|0;t=f[g>>2]|0}s=r+(p<<2)|0;f[e>>2]=s;f[g>>2]=t+(q<<2);v=s;break}s=m-o>>1;o=(s|0)==0?1:s;if(o>>>0>1073741823){s=ra(8)|0;Wo(s,14941);f[s>>2]=6944;va(s|0,1080,114)}s=dn(o<<2)|0;q=s;p=s+(o>>>2<<2)|0;r=p;w=s+(o<<2)|0;if((i|0)==(j|0)){x=r;y=n}else{n=p;p=r;o=i;do{f[n>>2]=f[o>>2];n=p+4|0;p=n;o=o+4|0}while((o|0)!=(j|0));x=p;y=f[a>>2]|0}f[a>>2]=q;f[g>>2]=r;f[e>>2]=x;f[k>>2]=w;if(!y)v=x;else{br(y);v=f[e>>2]|0}}else v=j;while(0);f[v>>2]=h;f[e>>2]=(f[e>>2]|0)+4;u=b;return}e=a+8|0;h=f[e>>2]|0;v=a+4|0;j=h-(f[v>>2]|0)|0;y=a+12|0;x=f[y>>2]|0;k=x-(f[a>>2]|0)|0;if(j>>>0>=k>>>0){g=k>>1;k=(g|0)==0?1:g;f[c+12>>2]=0;f[c+16>>2]=a+12;if(k>>>0>1073741823){g=ra(8)|0;Wo(g,14941);f[g>>2]=6944;va(g|0,1080,114)}g=dn(k<<2)|0;f[c>>2]=g;i=g+(j>>2<<2)|0;j=c+8|0;f[j>>2]=i;m=c+4|0;f[m>>2]=i;i=c+12|0;f[i>>2]=g+(k<<2);k=dn(4068)|0;f[d>>2]=k;kg(c,d);d=f[e>>2]|0;while(1){z=f[v>>2]|0;if((d|0)==(z|0))break;k=d+-4|0;dg(c,k);d=k}k=z;z=f[a>>2]|0;f[a>>2]=f[c>>2];f[c>>2]=z;f[v>>2]=f[m>>2];f[m>>2]=k;m=f[e>>2]|0;f[e>>2]=f[j>>2];f[j>>2]=m;g=f[y>>2]|0;f[y>>2]=f[i>>2];f[i>>2]=g;g=m;if((d|0)!=(g|0))f[j>>2]=g+(~((g+-4-k|0)>>>2)<<2);if(z|0)br(z);u=b;return}if((x|0)!=(h|0)){h=dn(4068)|0;f[c>>2]=h;kg(a,c);u=b;return}h=dn(4068)|0;f[c>>2]=h;dg(a,c);c=f[v>>2]|0;h=f[c>>2]|0;x=c+4|0;f[v>>2]=x;c=f[e>>2]|0;z=f[y>>2]|0;k=z;do if((c|0)==(z|0)){g=f[a>>2]|0;j=g;if(x>>>0>g>>>0){d=x;m=((d-j>>2)+1|0)/-2|0;i=x+(m<<2)|0;t=c-d|0;d=t>>2;if(!d)A=x;else{Xl(i|0,x|0,t|0)|0;A=f[v>>2]|0}t=i+(d<<2)|0;f[e>>2]=t;f[v>>2]=A+(m<<2);B=t;break}t=k-j>>1;j=(t|0)==0?1:t;if(j>>>0>1073741823){t=ra(8)|0;Wo(t,14941);f[t>>2]=6944;va(t|0,1080,114)}t=dn(j<<2)|0;m=t;d=t+(j>>>2<<2)|0;i=d;l=t+(j<<2)|0;if((x|0)==(c|0)){C=i;D=g}else{g=d;d=i;j=x;do{f[g>>2]=f[j>>2];g=d+4|0;d=g;j=j+4|0}while((j|0)!=(c|0));C=d;D=f[a>>2]|0}f[a>>2]=m;f[v>>2]=i;f[e>>2]=C;f[y>>2]=l;if(!D)B=C;else{br(D);B=f[e>>2]|0}}else B=c;while(0);f[B>>2]=h;f[e>>2]=(f[e>>2]|0)+4;u=b;return}function Kc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;e=u;u=u+16|0;g=e+8|0;h=e+4|0;i=e;j=a+64|0;k=f[j>>2]|0;if((f[k+28>>2]|0)==(f[k+24>>2]|0)){u=e;return}l=c+96|0;c=a+52|0;m=d+84|0;n=d+68|0;d=a+56|0;o=a+60|0;p=a+12|0;q=a+28|0;r=a+40|0;s=a+44|0;t=a+48|0;v=0;w=0;x=k;while(1){k=f[(f[x+24>>2]|0)+(w<<2)>>2]|0;if((k|0)==-1){y=v;z=x}else{A=v+1|0;B=f[(f[l>>2]|0)+(((k|0)/3|0)*12|0)+(((k|0)%3|0)<<2)>>2]|0;if(!(b[m>>0]|0))C=f[(f[n>>2]|0)+(B<<2)>>2]|0;else C=B;f[g>>2]=C;B=f[d>>2]|0;if(B>>>0<(f[o>>2]|0)>>>0){f[B>>2]=C;f[d>>2]=B+4}else Ci(c,g);f[g>>2]=k;f[h>>2]=0;a:do if(!(f[(f[p>>2]|0)+(w>>>5<<2)>>2]&1<<(w&31)))D=k;else{B=k+1|0;E=((B>>>0)%3|0|0)==0?k+-2|0:B;if(((E|0)!=-1?(f[(f[a>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)==0:0)?(B=f[(f[(f[j>>2]|0)+12>>2]|0)+(E<<2)>>2]|0,E=B+1|0,(B|0)!=-1):0){F=((E>>>0)%3|0|0)==0?B+-2|0:E;f[h>>2]=F;if((F|0)==-1){D=k;break}else G=F;while(1){f[g>>2]=G;F=G+1|0;E=((F>>>0)%3|0|0)==0?G+-2|0:F;if((E|0)==-1)break;if(f[(f[a>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)break;F=f[(f[(f[j>>2]|0)+12>>2]|0)+(E<<2)>>2]|0;E=F+1|0;if((F|0)==-1)break;B=((E>>>0)%3|0|0)==0?F+-2|0:E;f[h>>2]=B;if((B|0)==-1){D=G;break a}else G=B}f[h>>2]=-1;D=G;break}f[h>>2]=-1;D=k}while(0);f[(f[q>>2]|0)+(D<<2)>>2]=v;k=f[s>>2]|0;if((k|0)==(f[t>>2]|0))Ci(r,g);else{f[k>>2]=f[g>>2];f[s>>2]=k+4}k=f[j>>2]|0;B=f[g>>2]|0;b:do if(((B|0)!=-1?(E=(((B>>>0)%3|0|0)==0?2:-1)+B|0,(E|0)!=-1):0)?(F=f[(f[k+12>>2]|0)+(E<<2)>>2]|0,(F|0)!=-1):0){E=F+(((F>>>0)%3|0|0)==0?2:-1)|0;f[h>>2]=E;if((E|0)!=-1&(E|0)!=(B|0)){F=A;H=v;I=E;while(1){E=I+1|0;J=((E>>>0)%3|0|0)==0?I+-2|0:E;do if(f[(f[a>>2]|0)+(J>>>5<<2)>>2]&1<<(J&31)){E=F+1|0;K=f[(f[l>>2]|0)+(((I|0)/3|0)*12|0)+(((I|0)%3|0)<<2)>>2]|0;if(!(b[m>>0]|0))L=f[(f[n>>2]|0)+(K<<2)>>2]|0;else L=K;f[i>>2]=L;K=f[d>>2]|0;if(K>>>0<(f[o>>2]|0)>>>0){f[K>>2]=L;f[d>>2]=K+4}else Ci(c,i);K=f[s>>2]|0;if((K|0)==(f[t>>2]|0)){Ci(r,h);M=E;N=F;break}else{f[K>>2]=f[h>>2];f[s>>2]=K+4;M=E;N=F;break}}else{M=F;N=H}while(0);f[(f[q>>2]|0)+(f[h>>2]<<2)>>2]=N;O=f[j>>2]|0;J=f[h>>2]|0;if((J|0)==-1)break;E=(((J>>>0)%3|0|0)==0?2:-1)+J|0;if((E|0)==-1)break;J=f[(f[O+12>>2]|0)+(E<<2)>>2]|0;if((J|0)==-1)break;I=J+(((J>>>0)%3|0|0)==0?2:-1)|0;f[h>>2]=I;if(!((I|0)!=-1?(I|0)!=(f[g>>2]|0):0)){P=M;Q=O;break b}else{F=M;H=N}}f[h>>2]=-1;P=M;Q=O}else{P=A;Q=k}}else R=28;while(0);if((R|0)==28){R=0;f[h>>2]=-1;P=A;Q=k}y=P;z=Q}w=w+1|0;if(w>>>0>=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2>>>0)break;else{v=y;x=z}}u=e;return}function Lc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,D=0,E=0,F=0;switch(c|0){case 0:{e=-149;g=24;i=4;break}case 1:{e=-1074;g=53;i=4;break}case 2:{e=-1074;g=53;i=4;break}default:j=0.0}a:do if((i|0)==4){c=a+4|0;k=a+100|0;do{l=f[c>>2]|0;if(l>>>0<(f[k>>2]|0)>>>0){f[c>>2]=l+1;m=h[l>>0]|0}else m=Di(a)|0}while((tq(m)|0)!=0);b:do switch(m|0){case 43:case 45:{l=1-(((m|0)==45&1)<<1)|0;n=f[c>>2]|0;if(n>>>0<(f[k>>2]|0)>>>0){f[c>>2]=n+1;o=h[n>>0]|0;p=l;break b}else{o=Di(a)|0;p=l;break b}break}default:{o=m;p=1}}while(0);l=0;n=o;while(1){if((n|32|0)!=(b[17452+l>>0]|0)){q=l;r=n;break}do if(l>>>0<7){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;t=h[s>>0]|0;break}else{t=Di(a)|0;break}}else t=n;while(0);s=l+1|0;if(s>>>0<8){l=s;n=t}else{q=s;r=t;break}}c:do switch(q|0){case 8:break;case 3:{i=23;break}default:{n=(d|0)!=0;if(n&q>>>0>3)if((q|0)==8)break c;else{i=23;break c}d:do if(!q){l=0;s=r;while(1){if((s|32|0)!=(b[17461+l>>0]|0)){u=l;v=s;break d}do if(l>>>0<2){w=f[c>>2]|0;if(w>>>0<(f[k>>2]|0)>>>0){f[c>>2]=w+1;x=h[w>>0]|0;break}else{x=Di(a)|0;break}}else x=s;while(0);w=l+1|0;if(w>>>0<3){l=w;s=x}else{u=w;v=x;break}}}else{u=q;v=r}while(0);switch(u|0){case 3:{s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;y=h[s>>0]|0}else y=Di(a)|0;if((y|0)==40)z=1;else{if(!(f[k>>2]|0)){j=B;break a}f[c>>2]=(f[c>>2]|0)+-1;j=B;break a}while(1){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;A=h[s>>0]|0}else A=Di(a)|0;if(!((A+-48|0)>>>0<10|(A+-65|0)>>>0<26)?!((A|0)==95|(A+-97|0)>>>0<26):0)break;z=z+1|0}if((A|0)==41){j=B;break a}s=(f[k>>2]|0)==0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if(!n){l=ir()|0;f[l>>2]=22;Rm(a,0);j=0.0;break a}if(!z){j=B;break a}else D=z;while(1){D=D+-1|0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if(!D){j=B;break a}}break}case 0:{if((v|0)==48){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;E=h[s>>0]|0}else E=Di(a)|0;if((E|32|0)==120){j=+yc(a,g,e,p,d);break a}if(!(f[k>>2]|0))F=48;else{f[c>>2]=(f[c>>2]|0)+-1;F=48}}else F=v;j=+ob(a,F,g,e,p,d);break a;break}default:{if(f[k>>2]|0)f[c>>2]=(f[c>>2]|0)+-1;s=ir()|0;f[s>>2]=22;Rm(a,0);j=0.0;break a}}}}while(0);if((i|0)==23){s=(f[k>>2]|0)==0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if((d|0)!=0&q>>>0>3){n=q;do{if(!s)f[c>>2]=(f[c>>2]|0)+-1;n=n+-1|0}while(n>>>0>3)}}j=+$($(p|0)*$(C))}while(0);return +j}function Mc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;b=u;u=u+16|0;c=b+4|0;d=b;e=f[a+64>>2]|0;if(!e){u=b;return}g=Qa[f[(f[e>>2]|0)+32>>2]&127](e)|0;if(!g){u=b;return}e=g+24|0;h=g+28|0;i=((f[h>>2]|0)-(f[e>>2]|0)>>2)-(f[g+44>>2]|0)|0;j=a+56|0;k=f[j>>2]|0;if(((f[k+12>>2]|0)-(f[k+8>>2]|0)|0)>4){f[c>>2]=0;l=c+4|0;f[l>>2]=0;f[c+8>>2]=0;m=c+8|0;n=0;o=k;while(1){if(!(f[(f[(f[o+8>>2]|0)+(n<<2)>>2]|0)+56>>2]|0))p=o;else{k=Ra[f[(f[a>>2]|0)+56>>2]&127](a,n)|0;f[d>>2]=k;q=k;do if(k|0){r=f[l>>2]|0;if((r|0)==(f[m>>2]|0)){Ci(c,d);break}else{f[r>>2]=q;f[l>>2]=(f[l>>2]|0)+4;break}}while(0);p=f[j>>2]|0}n=n+1|0;if((n|0)>=((f[p+12>>2]|0)-(f[p+8>>2]|0)>>2|0))break;else o=p}o=f[h>>2]|0;h=f[e>>2]|0;e=h;if((o|0)==(h|0)){s=i;t=f[c>>2]|0}else{n=o-h>>2;h=g+12|0;g=f[l>>2]|0;o=f[c>>2]|0;c=(g|0)==(o|0);j=o;d=g-o>>2;o=p+96|0;p=i;g=0;while(1){m=f[e+(g<<2)>>2]|0;if((m|0)==-1)v=p;else{q=f[o>>2]|0;k=f[q+(((m|0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]|0;r=(((m>>>0)%3|0|0)==0?2:-1)+m|0;a:do if(((r|0)!=-1?(w=f[(f[h>>2]|0)+(r<<2)>>2]|0,(w|0)!=-1):0)?(x=w+(((w>>>0)%3|0|0)==0?2:-1)|0,(x|0)!=-1):0){if(c){w=0;y=x;z=k;while(1){A=z;z=f[q+(((y|0)/3|0)*12|0)+(((y|0)%3|0)<<2)>>2]|0;B=w+((z|0)!=(A|0)&1)|0;if((y|0)==(m|0)){C=B;break a}A=(((y>>>0)%3|0|0)==0?2:-1)+y|0;if((A|0)==-1){C=B;break a}D=f[(f[h>>2]|0)+(A<<2)>>2]|0;if((D|0)==-1){C=B;break a}y=D+(((D>>>0)%3|0|0)==0?2:-1)|0;if((y|0)==-1){C=B;break a}else w=B}}else{E=0;F=x;G=m;H=k}while(1){w=f[q+(((F|0)/3|0)*12|0)+(((F|0)%3|0)<<2)>>2]|0;b:do if((w|0)==(H|0)){y=0;while(1){z=f[(f[j+(y<<2)>>2]|0)+28>>2]|0;y=y+1|0;if((f[z+(F<<2)>>2]|0)!=(f[z+(G<<2)>>2]|0)){I=H;J=28;break b}if(y>>>0>=d>>>0){K=H;L=E;break}}}else{I=w;J=28}while(0);if((J|0)==28){J=0;K=I;L=E+1|0}if((F|0)==(m|0)){C=L;break a}w=(((F>>>0)%3|0|0)==0?2:-1)+F|0;if((w|0)==-1){C=L;break a}y=f[(f[h>>2]|0)+(w<<2)>>2]|0;if((y|0)==-1){C=L;break a}w=y+(((y>>>0)%3|0|0)==0?2:-1)|0;if((w|0)==-1){C=L;break}else{y=F;E=L;F=w;H=K;G=y}}}else C=0;while(0);m=f[e+(g<<2)>>2]|0;q=m+1|0;if(((m|0)!=-1?(k=((q>>>0)%3|0|0)==0?m+-2|0:q,(k|0)!=-1):0)?(q=f[(f[h>>2]|0)+(k<<2)>>2]|0,k=q+1|0,(q|0)!=-1):0)M=((((k>>>0)%3|0|0)==0?q+-2|0:k)|0)==-1;else M=1;v=C+p+(((C|0)!=0&(M^1))<<31>>31)|0}g=g+1|0;if(g>>>0>=n>>>0){s=v;t=j;break}else p=v}}if(t|0){v=f[l>>2]|0;if((v|0)!=(t|0))f[l>>2]=v+(~((v+-4-t|0)>>>2)<<2);br(t)}N=s}else N=i;f[a+52>>2]=N;u=b;return}function Nc(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=u;u=u+32|0;j=i+4|0;k=i;l=i+16|0;m=(_(e|0)|0)^31;if((e|0)>0)if(m>>>0>17){n=0;u=i;return n|0}else o=m+1|0;else o=1;do if(g){m=dn(48)|0;f[j>>2]=m;f[j+8>>2]=-2147483600;f[j+4>>2]=33;e=m;p=13067;q=e+33|0;do{b[e>>0]=b[p>>0]|0;e=e+1|0;p=p+1|0}while((e|0)<(q|0));b[m+33>>0]=0;r=(sh(g,j)|0)==0;if((b[j+11>>0]|0)<0)br(f[j>>2]|0);if(!r){r=dn(48)|0;f[j>>2]=r;f[j+8>>2]=-2147483600;f[j+4>>2]=33;e=r;p=13067;q=e+33|0;do{b[e>>0]=b[p>>0]|0;e=e+1|0;p=p+1|0}while((e|0)<(q|0));b[r+33>>0]=0;p=Ck(g,j)|0;if((b[j+11>>0]|0)<0)br(f[j>>2]|0);if((p|0)<4){s=o+-2|0;break}if((p|0)<6){s=o+-1|0;break}if((p|0)>9){s=o+2|0;break}else{s=o+((p|0)>7&1)|0;break}}else s=o}else s=o;while(0);o=(s|0)>1?s:1;s=(o|0)<18?o:18;b[l>>0]=s;o=h+16|0;g=f[o+4>>2]|0;if(!((g|0)>0|(g|0)==0&(f[o>>2]|0)>>>0>0)){f[k>>2]=f[h+4>>2];f[j>>2]=f[k>>2];ye(h,j,l,l+1|0)|0}do switch(s&31){case 1:case 0:{n=je(a,c,d,h)|0;u=i;return n|0}case 2:{n=ie(a,c,d,h)|0;u=i;return n|0}case 3:{n=he(a,c,d,h)|0;u=i;return n|0}case 4:{n=ge(a,c,d,h)|0;u=i;return n|0}case 5:{n=fe(a,c,d,h)|0;u=i;return n|0}case 6:{n=ee(a,c,d,h)|0;u=i;return n|0}case 7:{n=de(a,c,d,h)|0;u=i;return n|0}case 8:{n=ce(a,c,d,h)|0;u=i;return n|0}case 9:{n=be(a,c,d,h)|0;u=i;return n|0}case 10:{n=ae(a,c,d,h)|0;u=i;return n|0}case 11:{n=$d(a,c,d,h)|0;u=i;return n|0}case 12:{n=_d(a,c,d,h)|0;u=i;return n|0}case 13:{n=Zd(a,c,d,h)|0;u=i;return n|0}case 14:{n=Yd(a,c,d,h)|0;u=i;return n|0}case 15:{n=Xd(a,c,d,h)|0;u=i;return n|0}case 16:{n=Wd(a,c,d,h)|0;u=i;return n|0}case 17:{n=Vd(a,c,d,h)|0;u=i;return n|0}case 18:{n=Ud(a,c,d,h)|0;u=i;return n|0}default:{n=0;u=i;return n|0}}while(0);return 0}function Oc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;wb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Pc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;xb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;yb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;zb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Ab(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*524288.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==524288){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Eb(z,A,g);a:do if((x|0)<524288){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=524288-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>524288;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-524288|0;m=x;while(1){v=524288.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==524288){C=p;D=524288;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=524288){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*1.9073486328125e-06)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*262144.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==262144){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Bb(z,A,g);a:do if((x|0)<262144){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=262144-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>262144;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-262144|0;m=x;while(1){v=262144.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==262144){C=p;D=262144;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=262144){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*3.814697265625e-06)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*65536.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==65536){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Cb(z,A,g);a:do if((x|0)<65536){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=65536-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>65536;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-65536|0;m=x;while(1){v=65536.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==65536){C=p;D=65536;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=65536){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.0000152587890625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Wc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*32768.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==32768){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Db(z,A,g);a:do if((x|0)<32768){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=32768-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>32768;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-32768|0;m=x;while(1){v=32768.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==32768){C=p;D=32768;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=32768){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000030517578125)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Xc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*8192.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==8192){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Fb(z,A,g);a:do if((x|0)<8192){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=8192-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>8192;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-8192|0;m=x;while(1){v=8192.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==8192){C=p;D=8192;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=8192){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.0001220703125)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Gb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Hb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function _c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Ib(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Jb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function ad(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Kb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function bd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Lb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function cd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Mb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function dd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Nb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function ed(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;g=u;u=u+32|0;d=g+16|0;h=g+8|0;i=g;j=e>>>0>1073741823?-1:e<<2;k=_q(j)|0;hj(k|0,0,j|0)|0;j=f[a+28>>2]|0;l=a+36|0;m=f[l>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;a:do if((p|0)>4){q=p>>2;r=f[a+32>>2]|0;s=a+8|0;t=h+4|0;v=i+4|0;w=d+4|0;x=j+12|0;y=(e|0)>0;z=k+4|0;A=h+4|0;B=i+4|0;C=d+4|0;D=q+-1|0;if(n-o>>2>>>0>D>>>0){E=q;F=D;G=o}else{H=m;mq(H)}while(1){D=f[G+(F<<2)>>2]|0;q=X(F,e)|0;if((D|0)!=-1?(I=f[(f[x>>2]|0)+(D<<2)>>2]|0,(I|0)!=-1):0){D=f[j>>2]|0;J=f[r>>2]|0;K=f[J+(f[D+(I<<2)>>2]<<2)>>2]|0;L=I+1|0;M=((L>>>0)%3|0|0)==0?I+-2|0:L;if((M|0)==-1)N=-1;else N=f[D+(M<<2)>>2]|0;M=f[J+(N<<2)>>2]|0;L=(((I>>>0)%3|0|0)==0?2:-1)+I|0;if((L|0)==-1)O=-1;else O=f[D+(L<<2)>>2]|0;L=f[J+(O<<2)>>2]|0;if((K|0)<(F|0)&(M|0)<(F|0)&(L|0)<(F|0)){J=X(K,e)|0;K=X(M,e)|0;M=X(L,e)|0;if(y){L=0;do{f[k+(L<<2)>>2]=(f[b+(L+M<<2)>>2]|0)+(f[b+(L+K<<2)>>2]|0)-(f[b+(L+J<<2)>>2]|0);L=L+1|0}while((L|0)!=(e|0))}L=b+(q<<2)|0;J=c+(q<<2)|0;K=f[L+4>>2]|0;M=f[k>>2]|0;D=f[z>>2]|0;f[h>>2]=f[L>>2];f[A>>2]=K;f[i>>2]=M;f[B>>2]=D;Dd(d,s,h,i);f[J>>2]=f[d>>2];f[J+4>>2]=f[C>>2]}else P=15}else P=15;if((P|0)==15){P=0;J=b+(q<<2)|0;D=b+((X(E+-2|0,e)|0)<<2)|0;M=c+(q<<2)|0;K=f[J+4>>2]|0;L=f[D>>2]|0;I=f[D+4>>2]|0;f[h>>2]=f[J>>2];f[t>>2]=K;f[i>>2]=L;f[v>>2]=I;Dd(d,s,h,i);f[M>>2]=f[d>>2];f[M+4>>2]=f[w>>2]}if((E|0)<=2)break a;M=f[l>>2]|0;G=f[M>>2]|0;I=F+-1|0;if((f[M+4>>2]|0)-G>>2>>>0<=I>>>0){H=M;break}else{M=F;F=I;E=M}}mq(H)}while(0);if((e|0)<=0){Q=a+8|0;R=b+4|0;S=f[b>>2]|0;T=f[R>>2]|0;U=k+4|0;V=f[k>>2]|0;W=f[U>>2]|0;f[h>>2]=S;Y=h+4|0;f[Y>>2]=T;f[i>>2]=V;Z=i+4|0;f[Z>>2]=W;Dd(d,Q,h,i);_=f[d>>2]|0;f[c>>2]=_;$=d+4|0;aa=f[$>>2]|0;ba=c+4|0;f[ba>>2]=aa;$q(k);u=g;return 1}hj(k|0,0,e<<2|0)|0;Q=a+8|0;R=b+4|0;S=f[b>>2]|0;T=f[R>>2]|0;U=k+4|0;V=f[k>>2]|0;W=f[U>>2]|0;f[h>>2]=S;Y=h+4|0;f[Y>>2]=T;f[i>>2]=V;Z=i+4|0;f[Z>>2]=W;Dd(d,Q,h,i);_=f[d>>2]|0;f[c>>2]=_;$=d+4|0;aa=f[$>>2]|0;ba=c+4|0;f[ba>>2]=aa;$q(k);u=g;return 1}function fd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0;d=u;u=u+32|0;e=d;g=d+20|0;h=d+24|0;i=d+8|0;j=f[a>>2]|0;k=j+8|0;l=j;j=f[l>>2]|0;m=f[l+4>>2]|0;l=Tn(j|0,m|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=I;n=Tn(l|0,k|0,(l|0)==0&(k|0)==0&1|0,0)|0;k=~~((+(j>>>0)+4294967296.0*+(m>>>0))/(+(n>>>0)+4294967296.0*+(I>>>0))*256.0+.5)>>>0;n=k>>>0<255?k:255;k=n+((n|0)==0&1)&255;b[h>>0]=k;n=a+12|0;m=a+16|0;j=((f[m>>2]|0)-(f[n>>2]|0)<<1)+64|0;f[i>>2]=0;l=i+4|0;f[l>>2]=0;f[i+8>>2]=0;if(!j)o=0;else{if((j|0)<0)mq(i);p=dn(j)|0;f[l>>2]=p;f[i>>2]=p;f[i+8>>2]=p+j;q=j;j=p;do{b[j>>0]=0;j=(f[l>>2]|0)+1|0;f[l>>2]=j;q=q+-1|0}while((q|0)!=0);o=f[i>>2]|0}q=a+28|0;j=(f[q>>2]|0)+-1|0;a:do if((j|0)>-1){p=a+24|0;r=j;s=0;t=4096;v=k;while(1){w=(f[p>>2]&1<>>0>>0){y=s;z=t}else{b[o+s>>0]=t;y=s+1|0;z=t>>>8}on(f[3780+(x<<3)>>2]|0,0,z|0,0)|0;A=z+(w?0:0-v&255)+(X((z+I|0)>>>(f[3780+(x<<3)+4>>2]|0),256-x|0)|0)|0;x=r+-1|0;if((x|0)<=-1){B=y;C=A;break a}r=x;s=y;t=A;v=b[h>>0]|0}}else{B=0;C=4096}while(0);y=f[m>>2]|0;if((f[n>>2]|0)==(y|0)){D=B;E=C}else{z=B;B=C;C=y;while(1){C=C+-4|0;y=f[C>>2]|0;k=31;j=z;v=B;while(1){t=b[h>>0]|0;s=(1<>>0>>0){F=j;G=v}else{b[o+j>>0]=v;F=j+1|0;G=v>>>8}on(f[3780+(r<<3)>>2]|0,0,G|0,0)|0;v=G+(s?0:0-t&255)+(X((G+I|0)>>>(f[3780+(r<<3)+4>>2]|0),256-r|0)|0)|0;if((k|0)<=0)break;else{k=k+-1|0;j=F}}if((f[n>>2]|0)==(C|0)){D=F;E=v;break}else{z=F;B=v}}}B=E+-4096|0;do if(B>>>0>=64){if(B>>>0<16384){F=o+D|0;z=E+12288|0;b[F>>0]=z;H=2;J=z>>>8;K=F+1|0;L=25;break}if(B>>>0<4194304){F=o+D|0;z=E+8384512|0;b[F>>0]=z;b[F+1>>0]=z>>>8;H=3;J=z>>>16;K=F+2|0;L=25}else M=D}else{H=1;J=B;K=o+D|0;L=25}while(0);if((L|0)==25){b[K>>0]=J;M=H+D|0}D=c+16|0;H=D;J=f[H+4>>2]|0;if(!((J|0)>0|(J|0)==0&(f[H>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}Nh(M,c)|0;h=f[i>>2]|0;H=D;D=f[H+4>>2]|0;if(!((D|0)>0|(D|0)==0&(f[H>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+M|0)|0}M=e;f[M>>2]=0;f[M+4>>2]=0;cf(a,2,e);e=f[a+12>>2]|0;M=f[m>>2]|0;if((M|0)!=(e|0))f[m>>2]=M+(~((M+-4-e|0)>>>2)<<2);f[a+24>>2]=0;f[q>>2]=0;q=f[i>>2]|0;if(!q){u=d;return}if((f[l>>2]|0)!=(q|0))f[l>>2]=q;br(q);u=d;return}function gd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c=u;u=u+16|0;b=c+8|0;d=c+4|0;e=c;g=a+64|0;h=f[g>>2]|0;if((f[h+28>>2]|0)==(f[h+24>>2]|0)){u=c;return}i=a+52|0;j=a+56|0;k=a+60|0;l=a+12|0;m=a+28|0;n=a+40|0;o=a+44|0;p=a+48|0;q=0;r=0;s=h;while(1){h=f[(f[s+24>>2]|0)+(r<<2)>>2]|0;if((h|0)==-1){t=q;v=s}else{w=q+1|0;f[b>>2]=q;x=f[j>>2]|0;if((x|0)==(f[k>>2]|0))Ci(i,b);else{f[x>>2]=q;f[j>>2]=x+4}f[d>>2]=h;f[e>>2]=0;a:do if(!(f[(f[l>>2]|0)+(r>>>5<<2)>>2]&1<<(r&31)))y=h;else{x=h+1|0;z=((x>>>0)%3|0|0)==0?h+-2|0:x;if(((z|0)!=-1?(f[(f[a>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)==0:0)?(x=f[(f[(f[g>>2]|0)+12>>2]|0)+(z<<2)>>2]|0,z=x+1|0,(x|0)!=-1):0){A=((z>>>0)%3|0|0)==0?x+-2|0:z;f[e>>2]=A;if((A|0)==-1){y=h;break}else B=A;while(1){f[d>>2]=B;A=B+1|0;z=((A>>>0)%3|0|0)==0?B+-2|0:A;if((z|0)==-1)break;if(f[(f[a>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)break;A=f[(f[(f[g>>2]|0)+12>>2]|0)+(z<<2)>>2]|0;z=A+1|0;if((A|0)==-1)break;x=((z>>>0)%3|0|0)==0?A+-2|0:z;f[e>>2]=x;if((x|0)==-1){y=B;break a}else B=x}f[e>>2]=-1;y=B;break}f[e>>2]=-1;y=h}while(0);f[(f[m>>2]|0)+(y<<2)>>2]=f[b>>2];h=f[o>>2]|0;if((h|0)==(f[p>>2]|0))Ci(n,d);else{f[h>>2]=f[d>>2];f[o>>2]=h+4}h=f[g>>2]|0;x=f[d>>2]|0;b:do if(((x|0)!=-1?(z=(((x>>>0)%3|0|0)==0?2:-1)+x|0,(z|0)!=-1):0)?(A=f[(f[h+12>>2]|0)+(z<<2)>>2]|0,(A|0)!=-1):0){z=A+(((A>>>0)%3|0|0)==0?2:-1)|0;f[e>>2]=z;if((z|0)!=-1&(z|0)!=(x|0)){A=w;C=z;while(1){z=C+1|0;D=((z>>>0)%3|0|0)==0?C+-2|0:z;do if(f[(f[a>>2]|0)+(D>>>5<<2)>>2]&1<<(D&31)){z=A+1|0;f[b>>2]=A;E=f[j>>2]|0;if((E|0)==(f[k>>2]|0))Ci(i,b);else{f[E>>2]=A;f[j>>2]=E+4}E=f[o>>2]|0;if((E|0)==(f[p>>2]|0)){Ci(n,e);F=z;break}else{f[E>>2]=f[e>>2];f[o>>2]=E+4;F=z;break}}else F=A;while(0);f[(f[m>>2]|0)+(f[e>>2]<<2)>>2]=f[b>>2];G=f[g>>2]|0;D=f[e>>2]|0;if((D|0)==-1)break;z=(((D>>>0)%3|0|0)==0?2:-1)+D|0;if((z|0)==-1)break;D=f[(f[G+12>>2]|0)+(z<<2)>>2]|0;if((D|0)==-1)break;C=D+(((D>>>0)%3|0|0)==0?2:-1)|0;f[e>>2]=C;if(!((C|0)!=-1?(C|0)!=(f[d>>2]|0):0)){H=F;I=G;break b}else A=F}f[e>>2]=-1;H=F;I=G}else{H=w;I=h}}else J=26;while(0);if((J|0)==26){J=0;f[e>>2]=-1;H=w;I=h}t=H;v=I}r=r+1|0;if(r>>>0>=(f[v+28>>2]|0)-(f[v+24>>2]|0)>>2>>>0)break;else{q=t;s=v}}u=c;return}function hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+124|0;f[h>>2]=(f[h>>2]|0)+1;h=a+88|0;i=a+120|0;j=f[i>>2]|0;k=j+1|0;do if((j|0)!=-1){l=((k>>>0)%3|0|0)==0?j+-2|0:k;if(!((j>>>0)%3|0)){m=j+2|0;n=l;break}else{m=j+-1|0;n=l;break}}else{m=-1;n=-1}while(0);k=a+104|0;l=a+92|0;o=f[l>>2]|0;p=o+(n<<2)|0;q=f[k>>2]|0;r=q+(f[p>>2]<<2)|0;s=f[r>>2]|0;switch(b|0){case 1:case 0:{f[r>>2]=s+-1;r=q+(f[o+(m<<2)>>2]<<2)|0;f[r>>2]=(f[r>>2]|0)+-1;if((b|0)==1){if((m|0)!=-1?(r=f[(f[(f[h>>2]|0)+12>>2]|0)+(m<<2)>>2]|0,(r|0)!=-1):0){t=a+64|0;v=1;w=r;while(1){r=f[t>>2]|0;x=f[(f[r>>2]|0)+36>>2]|0;f[e>>2]=(w>>>0)/3|0;f[d>>2]=f[e>>2];if(Ra[x&127](r,d)|0){y=v;break}r=w+1|0;x=((r>>>0)%3|0|0)==0?w+-2|0:r;if((x|0)==-1){z=12;break}w=f[(f[(f[h>>2]|0)+12>>2]|0)+(x<<2)>>2]|0;x=v+1|0;if((w|0)==-1){y=x;break}else v=x}if((z|0)==12)y=v+1|0;A=y;B=f[k>>2]|0;C=f[l>>2]|0}else{A=1;B=q;C=o}f[B+(f[C+(f[i>>2]<<2)>>2]<<2)>>2]=A;A=a+108|0;i=f[A>>2]|0;C=i-B>>2;B=i;if((n|0)!=-1?(i=f[(f[(f[h>>2]|0)+12>>2]|0)+(n<<2)>>2]|0,(i|0)!=-1):0){n=a+64|0;y=1;v=i;while(1){i=f[n>>2]|0;w=f[(f[i>>2]|0)+36>>2]|0;f[g>>2]=(v>>>0)/3|0;f[d>>2]=f[g>>2];if(Ra[w&127](i,d)|0){D=y;break}i=v+1|0;f[(f[l>>2]|0)+((((i>>>0)%3|0|0)==0?v+-2|0:i)<<2)>>2]=C;i=(((v>>>0)%3|0|0)==0?2:-1)+v|0;if((i|0)==-1){z=20;break}v=f[(f[(f[h>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;i=y+1|0;if((v|0)==-1){D=i;break}else y=i}if((z|0)==20)D=y+1|0;E=D;F=f[A>>2]|0}else{E=1;F=B}f[d>>2]=E;if(F>>>0<(f[a+112>>2]|0)>>>0){f[F>>2]=E;f[A>>2]=F+4}else Ci(k,d)}break}case 5:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;break}case 3:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;break}case 7:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;break}default:{}}k=a+116|0;m=f[k>>2]|0;if((m|0)==-1){f[k>>2]=b;u=c;return}o=f[a+128>>2]|0;if((s|0)<(o|0))G=o;else{q=f[a+132>>2]|0;G=(s|0)>(q|0)?q:s}s=G-o|0;o=f[a+136>>2]|0;a=f[3384+(m<<2)>>2]|0;f[d>>2]=a;m=o+(s*12|0)+4|0;G=f[m>>2]|0;if(G>>>0<(f[o+(s*12|0)+8>>2]|0)>>>0){f[G>>2]=a;f[m>>2]=G+4}else Ci(o+(s*12|0)|0,d);f[k>>2]=b;u=c;return}function id(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0;g=u;u=u+32|0;d=g+16|0;h=g+8|0;i=g;j=e>>>0>1073741823?-1:e<<2;k=_q(j)|0;hj(k|0,0,j|0)|0;j=f[a+28>>2]|0;l=a+36|0;m=f[l>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;a:do if((p|0)>4){q=p>>2;r=f[a+32>>2]|0;s=a+8|0;t=h+4|0;v=i+4|0;w=d+4|0;x=j+64|0;y=j+28|0;z=(e|0)>0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=q+-1|0;if(n-o>>2>>>0>E>>>0){F=q;G=E;H=o}else{I=m;mq(I)}while(1){E=f[H+(G<<2)>>2]|0;q=X(G,e)|0;if((((E|0)!=-1?(f[(f[j>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)==0:0)?(J=f[(f[(f[x>>2]|0)+12>>2]|0)+(E<<2)>>2]|0,(J|0)!=-1):0)?(E=f[y>>2]|0,K=f[r>>2]|0,L=f[K+(f[E+(J<<2)>>2]<<2)>>2]|0,M=J+1|0,N=f[K+(f[E+((((M>>>0)%3|0|0)==0?J+-2|0:M)<<2)>>2]<<2)>>2]|0,M=f[K+(f[E+((((J>>>0)%3|0|0)==0?2:-1)+J<<2)>>2]<<2)>>2]|0,(L|0)<(G|0)&(N|0)<(G|0)&(M|0)<(G|0)):0){J=X(L,e)|0;L=X(N,e)|0;N=X(M,e)|0;if(z){M=0;do{f[k+(M<<2)>>2]=(f[b+(M+N<<2)>>2]|0)+(f[b+(M+L<<2)>>2]|0)-(f[b+(M+J<<2)>>2]|0);M=M+1|0}while((M|0)!=(e|0))}M=b+(q<<2)|0;J=c+(q<<2)|0;L=f[M+4>>2]|0;N=f[k>>2]|0;E=f[A>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=L;f[i>>2]=N;f[C>>2]=E;Dd(d,s,h,i);f[J>>2]=f[d>>2];f[J+4>>2]=f[D>>2]}else{J=b+(q<<2)|0;E=b+((X(F+-2|0,e)|0)<<2)|0;N=c+(q<<2)|0;L=f[J+4>>2]|0;M=f[E>>2]|0;K=f[E+4>>2]|0;f[h>>2]=f[J>>2];f[t>>2]=L;f[i>>2]=M;f[v>>2]=K;Dd(d,s,h,i);f[N>>2]=f[d>>2];f[N+4>>2]=f[w>>2]}if((F|0)<=2)break a;N=f[l>>2]|0;H=f[N>>2]|0;K=G+-1|0;if((f[N+4>>2]|0)-H>>2>>>0<=K>>>0){I=N;break}else{N=G;G=K;F=N}}mq(I)}while(0);if((e|0)<=0){O=a+8|0;P=b+4|0;Q=f[b>>2]|0;R=f[P>>2]|0;S=k+4|0;T=f[k>>2]|0;U=f[S>>2]|0;f[h>>2]=Q;V=h+4|0;f[V>>2]=R;f[i>>2]=T;W=i+4|0;f[W>>2]=U;Dd(d,O,h,i);Y=f[d>>2]|0;f[c>>2]=Y;Z=d+4|0;_=f[Z>>2]|0;$=c+4|0;f[$>>2]=_;$q(k);u=g;return 1}hj(k|0,0,e<<2|0)|0;O=a+8|0;P=b+4|0;Q=f[b>>2]|0;R=f[P>>2]|0;S=k+4|0;T=f[k>>2]|0;U=f[S>>2]|0;f[h>>2]=Q;V=h+4|0;f[V>>2]=R;f[i>>2]=T;W=i+4|0;f[W>>2]=U;Dd(d,O,h,i);Y=f[d>>2]|0;f[c>>2]=Y;Z=d+4|0;_=f[Z>>2]|0;$=c+4|0;f[$>>2]=_;$q(k);u=g;return 1}function jd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+2|0;v=e+12|0;w=q+6|0;x=f[e>>2]|0;d:do if(!x)y=e;else{z=d[q>>1]|0;A=e;B=x;while(1){C=B+8|0;if(z<<16>>16!=(d[C>>1]|0)){y=A;break d}if((d[u>>1]|0)!=(d[C+2>>1]|0)){y=A;break d}if((d[v>>1]|0)!=(d[B+12>>1]|0)){y=A;break d}if((d[w>>1]|0)!=(d[C+6>>1]|0)){y=A;break d}C=f[B>>2]|0;if(!C){y=B;break}else{D=B;B=C;A=D}}}while(0);f[j>>2]=f[y>>2];f[y>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}else{e=c;while(1){w=f[e+4>>2]|0;if(w>>>0>>0)F=w;else F=(w>>>0)%(b>>>0)|0;if((F|0)==(k|0)){p=e;break c}w=(f[a>>2]|0)+(F<<2)|0;if(!(f[w>>2]|0)){r=e;s=F;t=w;break b}w=e+8|0;v=w+2|0;u=e+12|0;x=w+6|0;q=f[e>>2]|0;e:do if(!q)G=e;else{A=d[w>>1]|0;B=e;z=q;while(1){D=z+8|0;if(A<<16>>16!=(d[D>>1]|0)){G=B;break e}if((d[v>>1]|0)!=(d[D+2>>1]|0)){G=B;break e}if((d[u>>1]|0)!=(d[z+12>>1]|0)){G=B;break e}if((d[x>>1]|0)!=(d[D+6>>1]|0)){G=B;break e}D=f[z>>2]|0;if(!D){G=z;break}else{C=z;z=D;B=C}}}while(0);f[j>>2]=f[G>>2];f[G>>2]=f[f[(f[a>>2]|0)+(F<<2)>>2]>>2];f[f[(f[a>>2]|0)+(F<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}while(0);c=f[p>>2]|0;if(!c){E=43;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){E=43;break}else{k=s;l=r;n=r}}if((E|0)==43)return}function kd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+1|0;v=q+2|0;w=q+3|0;x=f[e>>2]|0;d:do if(!x)y=e;else{z=b[q>>0]|0;A=e;B=x;while(1){C=B+8|0;if(z<<24>>24!=(b[C>>0]|0)){y=A;break d}if((b[u>>0]|0)!=(b[C+1>>0]|0)){y=A;break d}if((b[v>>0]|0)!=(b[C+2>>0]|0)){y=A;break d}if((b[w>>0]|0)!=(b[C+3>>0]|0)){y=A;break d}C=f[B>>2]|0;if(!C){y=B;break}else{D=B;B=C;A=D}}}while(0);f[j>>2]=f[y>>2];f[y>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}else{e=d;while(1){w=f[e+4>>2]|0;if(w>>>0>>0)F=w;else F=(w>>>0)%(c>>>0)|0;if((F|0)==(k|0)){p=e;break c}w=(f[a>>2]|0)+(F<<2)|0;if(!(f[w>>2]|0)){r=e;s=F;t=w;break b}w=e+8|0;v=w+1|0;u=w+2|0;x=w+3|0;q=f[e>>2]|0;e:do if(!q)G=e;else{A=b[w>>0]|0;B=e;z=q;while(1){D=z+8|0;if(A<<24>>24!=(b[D>>0]|0)){G=B;break e}if((b[v>>0]|0)!=(b[D+1>>0]|0)){G=B;break e}if((b[u>>0]|0)!=(b[D+2>>0]|0)){G=B;break e}if((b[x>>0]|0)!=(b[D+3>>0]|0)){G=B;break e}D=f[z>>2]|0;if(!D){G=z;break}else{C=z;z=D;B=C}}}while(0);f[j>>2]=f[G>>2];f[G>>2]=f[f[(f[a>>2]|0)+(F<<2)>>2]>>2];f[f[(f[a>>2]|0)+(F<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}while(0);d=f[p>>2]|0;if(!d){E=43;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){E=43;break}else{k=s;l=r;n=r}}if((E|0)==43)return}function ld(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)br(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}d=dn(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)br(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=d+16|0;u=d+20|0;v=f[d>>2]|0;d:do if(!v)w=d;else{x=f[d+8>>2]|0;y=d;z=v;while(1){if((x|0)!=(f[z+8>>2]|0)){w=y;break d}if((f[p>>2]|0)!=(f[z+12>>2]|0)){w=y;break d}if((f[t>>2]|0)!=(f[z+16>>2]|0)){w=y;break d}if((f[u>>2]|0)!=(f[z+20>>2]|0)){w=y;break d}A=f[z>>2]|0;if(!A){w=z;break}else{B=z;z=A;y=B}}}while(0);f[i>>2]=f[w>>2];f[w>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){C=43;break a}}}else{d=c;while(1){u=f[d+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(b>>>0)|0;if((D|0)==(j|0)){o=d;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){q=d;r=D;s=u;break b}u=d+12|0;t=d+16|0;p=d+20|0;v=f[d>>2]|0;e:do if(!v)E=d;else{y=f[d+8>>2]|0;z=d;x=v;while(1){if((y|0)!=(f[x+8>>2]|0)){E=z;break e}if((f[u>>2]|0)!=(f[x+12>>2]|0)){E=z;break e}if((f[t>>2]|0)!=(f[x+16>>2]|0)){E=z;break e}if((f[p>>2]|0)!=(f[x+20>>2]|0)){E=z;break e}B=f[x>>2]|0;if(!B){E=x;break}else{A=x;x=B;z=A}}}while(0);f[i>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){C=43;break a}}}while(0);c=f[o>>2]|0;if(!c){C=43;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){C=43;break}else{j=r;k=q;m=q}}if((C|0)==43)return}function md(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0;i=u;u=u+352|0;j=i+340|0;k=i+336|0;l=i+80|0;m=i+48|0;n=i;hj(l|0,0,256)|0;o=f[e+4>>2]|0;p=f[e>>2]|0;q=p;if((o|0)!=(p|0)){r=o-p>>2;p=0;do{o=l+(f[q+(p<<2)>>2]<<3)|0;s=o;t=Tn(f[s>>2]|0,f[s+4>>2]|0,1,0)|0;s=o;f[s>>2]=t;f[s+4>>2]=I;p=p+1|0}while(p>>>0>>0)}Cn(m);r=Rn(c|0,((c|0)<0)<<31>>31|0,5)|0;p=I;q=n+40|0;s=q;f[s>>2]=0;f[s+4>>2]=0;s=n;t=s+36|0;do{f[s>>2]=0;s=s+4|0}while((s|0)<(t|0));$c(n,l,32,g)|0;l=n+16|0;s=Rn(f[l>>2]|0,f[l+4>>2]|0,1)|0;l=g+4|0;t=(f[l>>2]|0)-(f[g>>2]|0)|0;o=q;f[o>>2]=t;f[o+4>>2]=0;o=Tn(s|0,I|0,39,0)|0;s=Wn(o|0,I|0,3)|0;o=Tn(s|0,I|0,8,0)|0;s=Tn(o|0,I|0,t|0,0)|0;vl(g,s,I);s=n+24|0;f[s>>2]=(f[g>>2]|0)+(f[q>>2]|0);q=n+28|0;f[q>>2]=0;t=n+32|0;f[t>>2]=16384;li(m,r,p,0)|0;p=c-d|0;if((p|0)>-1){c=(d|0)>0;r=m+16|0;o=m+12|0;v=p;do{w=f[e>>2]|0;x=f[w+(((v|0)/(d|0)|0)<<2)>>2]|0;y=f[n>>2]|0;z=f[y+(x<<3)>>2]|0;A=f[t>>2]|0;B=z<<10;if(A>>>0>>0){C=A;D=w}else{w=A;do{A=f[s>>2]|0;E=f[q>>2]|0;f[q>>2]=E+1;b[A+E>>0]=w;w=(f[t>>2]|0)>>>8;f[t>>2]=w}while(w>>>0>=B>>>0);C=w;D=f[e>>2]|0}f[t>>2]=(((C>>>0)/(z>>>0)|0)<<12)+((C>>>0)%(z>>>0)|0)+(f[y+(x<<3)+4>>2]|0);B=p-v|0;E=f[D+(((B|0)/(d|0)|0)<<2)>>2]|0;if(c&(E|0)>0){A=0;do{F=f[a+(A+B<<2)>>2]|0;G=r;H=f[G+4>>2]|0;if((H|0)>0|(H|0)==0&(f[G>>2]|0)>>>0>0){G=f[o>>2]|0;H=G+4|0;J=0;K=f[H>>2]|0;do{L=K>>>3;M=K&7;N=(f[G>>2]|0)+L|0;b[N>>0]=(1<>0]|0);N=(f[G>>2]|0)+L|0;b[N>>0]=(F>>>J&1)<>0]|0);K=(f[H>>2]|0)+1|0;f[H>>2]=K;J=J+1|0}while((J|0)!=(E|0))}A=A+1|0}while((A|0)!=(d|0))}v=v-d|0}while((v|0)>-1)}Lf(n,g);Qf(m);v=f[m>>2]|0;d=m+4|0;o=g+16|0;r=f[o+4>>2]|0;if(!((r|0)>0|(r|0)==0&(f[o>>2]|0)>>>0>0)){o=(f[d>>2]|0)-v|0;f[k>>2]=f[l>>2];f[j>>2]=f[k>>2];ye(g,j,v,v+o|0)|0}o=f[n>>2]|0;if(o|0){v=n+4|0;n=f[v>>2]|0;if((n|0)!=(o|0))f[v>>2]=n+(~((n+-8-o|0)>>>3)<<3);br(o)}o=m+12|0;n=f[o>>2]|0;f[o>>2]=0;if(n|0)br(n);n=f[m>>2]|0;if(!n){u=i;return 1}if((f[d>>2]|0)!=(n|0))f[d>>2]=n;br(n);u=i;return 1}function nd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=e+12|0;v=f[e>>2]|0;d:do if(!v)w=e;else{x=d[q>>1]|0;y=q+2|0;z=e;A=v;while(1){B=A+8|0;if(x<<16>>16!=(d[B>>1]|0)){w=z;break d}if((d[y>>1]|0)!=(d[B+2>>1]|0)){w=z;break d}if((d[u>>1]|0)!=(d[A+12>>1]|0)){w=z;break d}B=f[A>>2]|0;if(!B){w=A;break}else{C=A;A=B;z=C}}}while(0);f[j>>2]=f[w>>2];f[w>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}else{e=c;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)E=u;else E=(u>>>0)%(b>>>0)|0;if((E|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(E<<2)|0;if(!(f[u>>2]|0)){r=e;s=E;t=u;break b}u=e+8|0;v=e+12|0;q=f[e>>2]|0;e:do if(!q)F=e;else{z=d[u>>1]|0;A=u+2|0;y=e;x=q;while(1){C=x+8|0;if(z<<16>>16!=(d[C>>1]|0)){F=y;break e}if((d[A>>1]|0)!=(d[C+2>>1]|0)){F=y;break e}if((d[v>>1]|0)!=(d[x+12>>1]|0)){F=y;break e}C=f[x>>2]|0;if(!C){F=x;break}else{B=x;x=C;y=B}}}while(0);f[j>>2]=f[F>>2];f[F>>2]=f[f[(f[a>>2]|0)+(E<<2)>>2]>>2];f[f[(f[a>>2]|0)+(E<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}while(0);c=f[p>>2]|0;if(!c){D=41;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){D=41;break}else{k=s;l=r;n=r}}if((D|0)==41)return}function od(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+1|0;v=q+2|0;w=f[e>>2]|0;d:do if(!w)x=e;else{y=b[q>>0]|0;z=e;A=w;while(1){B=A+8|0;if(y<<24>>24!=(b[B>>0]|0)){x=z;break d}if((b[u>>0]|0)!=(b[B+1>>0]|0)){x=z;break d}if((b[v>>0]|0)!=(b[B+2>>0]|0)){x=z;break d}B=f[A>>2]|0;if(!B){x=A;break}else{C=A;A=B;z=C}}}while(0);f[j>>2]=f[x>>2];f[x>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}else{e=d;while(1){v=f[e+4>>2]|0;if(v>>>0>>0)E=v;else E=(v>>>0)%(c>>>0)|0;if((E|0)==(k|0)){p=e;break c}v=(f[a>>2]|0)+(E<<2)|0;if(!(f[v>>2]|0)){r=e;s=E;t=v;break b}v=e+8|0;u=v+1|0;w=v+2|0;q=f[e>>2]|0;e:do if(!q)F=e;else{z=b[v>>0]|0;A=e;y=q;while(1){C=y+8|0;if(z<<24>>24!=(b[C>>0]|0)){F=A;break e}if((b[u>>0]|0)!=(b[C+1>>0]|0)){F=A;break e}if((b[w>>0]|0)!=(b[C+2>>0]|0)){F=A;break e}C=f[y>>2]|0;if(!C){F=y;break}else{B=y;y=C;A=B}}}while(0);f[j>>2]=f[F>>2];f[F>>2]=f[f[(f[a>>2]|0)+(E<<2)>>2]>>2];f[f[(f[a>>2]|0)+(E<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}while(0);d=f[p>>2]|0;if(!d){D=41;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){D=41;break}else{k=s;l=r;n=r}}if((D|0)==41)return}function pd(a,b){a=+a;b=+b;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;p[s>>3]=b;e=f[s>>2]|0;g=f[s+4>>2]|0;h=Wn(c|0,d|0,52)|0;i=h&2047;h=Wn(e|0,g|0,52)|0;j=h&2047;h=d&-2147483648;k=Rn(e|0,g|0,1)|0;l=I;a:do if(!((k|0)==0&(l|0)==0)?(m=xo(b)|0,n=I&2147483647,!((i|0)==2047|(n>>>0>2146435072|(n|0)==2146435072&m>>>0>0))):0){m=Rn(c|0,d|0,1)|0;n=I;if(!(n>>>0>l>>>0|(n|0)==(l|0)&m>>>0>k>>>0))return +((m|0)==(k|0)&(n|0)==(l|0)?a*0.0:a);if(!i){n=Rn(c|0,d|0,12)|0;m=I;if((m|0)>-1|(m|0)==-1&n>>>0>4294967295){o=0;q=n;n=m;while(1){m=o+-1|0;q=Rn(q|0,n|0,1)|0;n=I;if(!((n|0)>-1|(n|0)==-1&q>>>0>4294967295)){r=m;break}else o=m}}else r=0;o=Rn(c|0,d|0,1-r|0)|0;t=r;u=o;v=I}else{t=i;u=c;v=d&1048575|1048576}if(!j){o=Rn(e|0,g|0,12)|0;q=I;if((q|0)>-1|(q|0)==-1&o>>>0>4294967295){n=0;m=o;o=q;while(1){q=n+-1|0;m=Rn(m|0,o|0,1)|0;o=I;if(!((o|0)>-1|(o|0)==-1&m>>>0>4294967295)){w=q;break}else n=q}}else w=0;n=Rn(e|0,g|0,1-w|0)|0;x=w;y=n;z=I}else{x=j;y=e;z=g&1048575|1048576}n=Vn(u|0,v|0,y|0,z|0)|0;m=I;o=(m|0)>-1|(m|0)==-1&n>>>0>4294967295;b:do if((t|0)>(x|0)){q=t;A=m;B=o;C=u;D=v;E=n;while(1){if(B)if((E|0)==0&(A|0)==0)break;else{F=E;G=A}else{F=C;G=D}H=Rn(F|0,G|0,1)|0;J=I;K=q+-1|0;L=Vn(H|0,J|0,y|0,z|0)|0;M=I;N=(M|0)>-1|(M|0)==-1&L>>>0>4294967295;if((K|0)>(x|0)){q=K;A=M;B=N;C=H;D=J;E=L}else{O=K;P=N;Q=L;R=M;S=H;T=J;break b}}U=a*0.0;break a}else{O=t;P=o;Q=n;R=m;S=u;T=v}while(0);if(P)if((Q|0)==0&(R|0)==0){U=a*0.0;break}else{V=R;W=Q}else{V=T;W=S}if(V>>>0<1048576|(V|0)==1048576&W>>>0<0){m=O;n=W;o=V;while(1){E=Rn(n|0,o|0,1)|0;D=I;C=m+-1|0;if(D>>>0<1048576|(D|0)==1048576&E>>>0<0){m=C;n=E;o=D}else{X=C;Y=E;Z=D;break}}}else{X=O;Y=W;Z=V}if((X|0)>0){o=Tn(Y|0,Z|0,0,-1048576)|0;n=I;m=Rn(X|0,0,52)|0;_=n|I;$=o|m}else{m=Wn(Y|0,Z|0,1-X|0)|0;_=I;$=m}f[s>>2]=$;f[s+4>>2]=_|h;U=+p[s>>3]}else aa=3;while(0);if((aa|0)==3){ba=a*b;U=ba/ba}return +U}function qd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)br(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}d=dn(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)br(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=d+16|0;u=f[d>>2]|0;d:do if(!u)v=d;else{w=f[d+8>>2]|0;x=d;y=u;while(1){if((w|0)!=(f[y+8>>2]|0)){v=x;break d}if((f[p>>2]|0)!=(f[y+12>>2]|0)){v=x;break d}if((f[t>>2]|0)!=(f[y+16>>2]|0)){v=x;break d}z=f[y>>2]|0;if(!z){v=y;break}else{A=y;y=z;x=A}}}while(0);f[i>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){B=41;break a}}}else{d=c;while(1){t=f[d+4>>2]|0;if(t>>>0>>0)C=t;else C=(t>>>0)%(b>>>0)|0;if((C|0)==(j|0)){o=d;break c}t=(f[a>>2]|0)+(C<<2)|0;if(!(f[t>>2]|0)){q=d;r=C;s=t;break b}t=d+12|0;p=d+16|0;u=f[d>>2]|0;e:do if(!u)D=d;else{x=f[d+8>>2]|0;y=d;w=u;while(1){if((x|0)!=(f[w+8>>2]|0)){D=y;break e}if((f[t>>2]|0)!=(f[w+12>>2]|0)){D=y;break e}if((f[p>>2]|0)!=(f[w+16>>2]|0)){D=y;break e}A=f[w>>2]|0;if(!A){D=w;break}else{z=w;w=A;y=z}}}while(0);f[i>>2]=f[D>>2];f[D>>2]=f[f[(f[a>>2]|0)+(C<<2)>>2]>>2];f[f[(f[a>>2]|0)+(C<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){B=41;break a}}}while(0);c=f[o>>2]|0;if(!c){B=41;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){B=41;break}else{j=r;k=q;m=q}}if((B|0)==41)return}function rd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){o=d;while(1){e=f[o+4>>2]|0;if(!i)if(e>>>0>>0)p=e;else p=(e>>>0)%(c>>>0)|0;else p=e&h;if((p|0)==(k|0))break;q=(f[a>>2]|0)+(p<<2)|0;if(!(f[q>>2]|0))break b;e=f[o>>2]|0;c:do if(!e)r=o;else{s=o+8|0;t=b[s+11>>0]|0;u=t<<24>>24<0;v=t&255;t=u?f[o+12>>2]|0:v;w=(t|0)==0;if(u){u=o;x=e;while(1){y=x+8|0;z=b[y+11>>0]|0;A=z<<24>>24<0;if((t|0)!=((A?f[x+12>>2]|0:z&255)|0)){r=u;break c}if(!w?Pk(f[s>>2]|0,A?f[y>>2]|0:y,t)|0:0){r=u;break c}y=f[x>>2]|0;if(!y){r=x;break c}else{A=x;x=y;u=A}}}if(w){u=o;x=e;while(1){A=b[x+8+11>>0]|0;if((A<<24>>24<0?f[x+12>>2]|0:A&255)|0){r=u;break c}A=f[x>>2]|0;if(!A){r=x;break c}else{y=x;x=A;u=y}}}u=o;x=e;while(1){w=x+8|0;y=b[w+11>>0]|0;A=y<<24>>24<0;if((t|0)!=((A?f[x+12>>2]|0:y&255)|0)){r=u;break c}y=A?f[w>>2]|0:w;if((b[y>>0]|0)==(f[s>>2]&255)<<24>>24){B=s;C=v;D=y}else{r=u;break c}while(1){C=C+-1|0;B=B+1|0;if(!C)break;D=D+1|0;if((b[B>>0]|0)!=(b[D>>0]|0)){r=u;break c}}y=f[x>>2]|0;if(!y){r=x;break}else{w=x;x=y;u=w}}}while(0);f[j>>2]=f[r>>2];f[r>>2]=f[f[(f[a>>2]|0)+(p<<2)>>2]>>2];f[f[(f[a>>2]|0)+(p<<2)>>2]>>2]=o;e=f[g>>2]|0;if(!e){E=43;break a}else o=e}d=f[o>>2]|0;if(!d){E=43;break a}else{g=o;j=o}}f[q>>2]=j;m=f[o>>2]|0;if(!m){E=43;break}else{k=p;l=o;n=o}}if((E|0)==43)return}function sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+48|0;d=c+8|0;e=c+4|0;g=c;h=a+44|0;Nh(f[h>>2]|0,b)|0;if(f[h>>2]|0){rn(d);lk(d);i=f[h>>2]|0;if((i|0)>0){h=a+40|0;j=i;do{i=j;j=j+-1|0;Vi(d,(f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0)}while((i|0)>1)}fd(d,b);tj(d)}j=a+56|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);h=f[j>>2]|0;if((h|0)>1){j=a+52|0;i=h;do{h=i;i=i+-2|0;Vi(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);k=h+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((h|0)>3)}fd(d,b);tj(d)}j=a+68|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);i=f[j>>2]|0;if((i|0)>2){j=a+64|0;h=i;do{i=h;h=h+-3|0;Vi(d,(f[(f[j>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)!=0);k=i+-2|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=i+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((i|0)>5)}fd(d,b);tj(d)}j=a+80|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);h=f[j>>2]|0;if((h|0)>3){j=a+76|0;i=h;do{h=i;i=i+-4|0;Vi(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);k=h+-3|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=h+-2|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=h+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((h|0)>7)}fd(d,b);tj(d)}f[g>>2]=f[a+12>>2];j=b+16|0;i=j;h=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&h>>>0>0){l=k;m=h}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;h=j;l=f[h+4>>2]|0;m=f[h>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;u=c;return 1}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+48|0;d=c+8|0;e=c+4|0;g=c;h=a+64|0;Nh(f[h>>2]|0,b)|0;if(f[h>>2]|0){rn(d);lk(d);i=f[h>>2]|0;if((i|0)>0){h=a+60|0;j=i;do{i=j;j=j+-1|0;Vi(d,(f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0)}while((i|0)>1)}fd(d,b);tj(d)}j=a+76|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);h=f[j>>2]|0;if((h|0)>1){j=a+72|0;i=h;do{h=i;i=i+-2|0;Vi(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);k=h+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((h|0)>3)}fd(d,b);tj(d)}j=a+88|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);i=f[j>>2]|0;if((i|0)>2){j=a+84|0;h=i;do{i=h;h=h+-3|0;Vi(d,(f[(f[j>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)!=0);k=i+-2|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=i+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((i|0)>5)}fd(d,b);tj(d)}j=a+100|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);h=f[j>>2]|0;if((h|0)>3){j=a+96|0;i=h;do{h=i;i=i+-4|0;Vi(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);k=h+-3|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=h+-2|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=h+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((h|0)>7)}fd(d,b);tj(d)}f[g>>2]=f[a+12>>2];j=b+16|0;i=j;h=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&h>>>0>0){l=k;m=h}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;h=j;l=f[h+4>>2]|0;m=f[h>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;u=c;return 1}function ud(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=f[e>>2]|0;d:do if(!u)v=e;else{w=d[q>>1]|0;x=q+2|0;y=e;z=u;while(1){A=z+8|0;if(w<<16>>16!=(d[A>>1]|0)){v=y;break d}if((d[x>>1]|0)!=(d[A+2>>1]|0)){v=y;break d}A=f[z>>2]|0;if(!A){v=z;break}else{B=z;z=A;y=B}}}while(0);f[j>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}else{e=c;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(b>>>0)|0;if((D|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){r=e;s=D;t=u;break b}u=e+8|0;q=f[e>>2]|0;e:do if(!q)E=e;else{y=d[u>>1]|0;z=u+2|0;x=e;w=q;while(1){B=w+8|0;if(y<<16>>16!=(d[B>>1]|0)){E=x;break e}if((d[z>>1]|0)!=(d[B+2>>1]|0)){E=x;break e}B=f[w>>2]|0;if(!B){E=w;break}else{A=w;w=B;x=A}}}while(0);f[j>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}while(0);c=f[p>>2]|0;if(!c){C=39;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){C=39;break}else{k=s;l=r;n=r}}if((C|0)==39)return}function vd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=f[e>>2]|0;d:do if(!u)v=e;else{w=b[q>>0]|0;x=q+1|0;y=e;z=u;while(1){A=z+8|0;if(w<<24>>24!=(b[A>>0]|0)){v=y;break d}if((b[x>>0]|0)!=(b[A+1>>0]|0)){v=y;break d}A=f[z>>2]|0;if(!A){v=z;break}else{B=z;z=A;y=B}}}while(0);f[j>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}else{e=d;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(c>>>0)|0;if((D|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){r=e;s=D;t=u;break b}u=e+8|0;q=f[e>>2]|0;e:do if(!q)E=e;else{y=b[u>>0]|0;z=u+1|0;x=e;w=q;while(1){B=w+8|0;if(y<<24>>24!=(b[B>>0]|0)){E=x;break e}if((b[z>>0]|0)!=(b[B+1>>0]|0)){E=x;break e}B=f[w>>2]|0;if(!B){E=w;break}else{A=w;w=B;x=A}}}while(0);f[j>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}while(0);d=f[p>>2]|0;if(!d){C=39;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){C=39;break}else{k=s;l=r;n=r}}if((C|0)==39)return}function wd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;c=u;u=u+48|0;d=c+32|0;e=c+28|0;g=c+16|0;h=c;i=a+16|0;j=f[i>>2]|0;if(j|0){k=f[b>>2]|0;l=i;m=j;a:while(1){j=m;while(1){if((f[j+16>>2]|0)>=(k|0))break;n=f[j+4>>2]|0;if(!n){o=l;break a}else j=n}m=f[j>>2]|0;if(!m){o=j;break}else l=j}if((o|0)!=(i|0)?(k|0)>=(f[o+16>>2]|0):0){p=o;q=p+20|0;u=c;return q|0}}wp(g);f[h>>2]=f[b>>2];b=h+4|0;f[h+8>>2]=0;o=h+12|0;f[o>>2]=0;k=h+8|0;f[b>>2]=k;l=f[g>>2]|0;m=g+4|0;if((l|0)!=(m|0)){n=k;r=l;while(1){l=r+16|0;f[e>>2]=n;f[d>>2]=f[e>>2];Wg(b,d,l,l)|0;l=f[r+4>>2]|0;if(!l){s=r+8|0;t=f[s>>2]|0;if((f[t>>2]|0)==(r|0))v=t;else{t=s;do{s=f[t>>2]|0;t=s+8|0;w=f[t>>2]|0}while((f[w>>2]|0)!=(s|0));v=w}}else{t=l;while(1){j=f[t>>2]|0;if(!j)break;else t=j}v=t}if((v|0)==(m|0))break;else r=v}}v=a+12|0;r=f[i>>2]|0;do if(r){d=f[h>>2]|0;e=a+16|0;n=r;while(1){l=f[n+16>>2]|0;if((d|0)<(l|0)){j=f[n>>2]|0;if(!j){x=23;break}else{y=n;z=j}}else{if((l|0)>=(d|0)){x=27;break}A=n+4|0;l=f[A>>2]|0;if(!l){x=26;break}else{y=A;z=l}}e=y;n=z}if((x|0)==23){B=n;C=n;break}else if((x|0)==26){B=n;C=A;break}else if((x|0)==27){B=n;C=e;break}}else{B=i;C=i}while(0);i=f[C>>2]|0;if(!i){x=dn(32)|0;f[x+16>>2]=f[h>>2];A=x+20|0;f[A>>2]=f[b>>2];z=x+24|0;y=f[h+8>>2]|0;f[z>>2]=y;r=f[o>>2]|0;f[x+28>>2]=r;if(!r)f[A>>2]=z;else{f[y+8>>2]=z;f[b>>2]=k;f[k>>2]=0;f[o>>2]=0}f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=B;f[C>>2]=x;B=f[f[v>>2]>>2]|0;if(!B)D=x;else{f[v>>2]=B;D=f[C>>2]|0}Ae(f[a+16>>2]|0,D);D=a+20|0;f[D>>2]=(f[D>>2]|0)+1;E=x}else E=i;sj(h+4|0,f[k>>2]|0);sj(g,f[m>>2]|0);p=E;q=p+20|0;u=c;return q|0}function xd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=b[c+11>>0]|0;e=d<<24>>24<0;g=e?f[c>>2]|0:c;i=e?f[c+4>>2]|0:d&255;if(i>>>0>3){d=g;c=i;e=i;while(1){j=X(h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24,1540483477)|0;c=(X(j>>>24^j,1540483477)|0)^(X(c,1540483477)|0);e=e+-4|0;if(e>>>0<=3)break;else d=d+4|0}d=i+-4|0;e=d&-4;k=d-e|0;l=g+(e+4)|0;m=c}else{k=i;l=g;m=i}switch(k|0){case 3:{n=h[l+2>>0]<<16^m;o=6;break}case 2:{n=m;o=6;break}case 1:{p=m;o=7;break}default:q=m}if((o|0)==6){p=h[l+1>>0]<<8^n;o=7}if((o|0)==7)q=X(p^h[l>>0],1540483477)|0;l=X(q>>>13^q,1540483477)|0;q=l>>>15^l;l=f[a+4>>2]|0;if(!l){r=0;return r|0}p=l+-1|0;n=(p&l|0)==0;if(!n)if(q>>>0>>0)s=q;else s=(q>>>0)%(l>>>0)|0;else s=q&p;m=f[(f[a>>2]|0)+(s<<2)>>2]|0;if(!m){r=0;return r|0}a=f[m>>2]|0;if(!a){r=0;return r|0}m=(i|0)==0;if(n){n=a;a:while(1){k=f[n+4>>2]|0;c=(k|0)==(q|0);if(!(c|(k&p|0)==(s|0))){r=0;o=40;break}do if(c?(k=n+8|0,e=b[k+11>>0]|0,d=e<<24>>24<0,j=e&255,((d?f[n+12>>2]|0:j)|0)==(i|0)):0){e=f[k>>2]|0;t=d?e:k;if(d){if(m){r=n;o=40;break a}if(!(Pk(t,g,i)|0)){r=n;o=40;break a}else break}if(m){r=n;o=40;break a}if((b[g>>0]|0)==(e&255)<<24>>24){e=k;k=j;j=g;do{k=k+-1|0;e=e+1|0;if(!k){r=n;o=40;break a}j=j+1|0}while((b[e>>0]|0)==(b[j>>0]|0))}}while(0);n=f[n>>2]|0;if(!n){r=0;o=40;break}}if((o|0)==40)return r|0}else u=a;b:while(1){a=f[u+4>>2]|0;do if((a|0)==(q|0)){n=u+8|0;p=b[n+11>>0]|0;c=p<<24>>24<0;j=p&255;if(((c?f[u+12>>2]|0:j)|0)==(i|0)){p=f[n>>2]|0;e=c?p:n;if(c){if(m){r=u;o=40;break b}if(!(Pk(e,g,i)|0)){r=u;o=40;break b}else break}if(m){r=u;o=40;break b}if((b[g>>0]|0)==(p&255)<<24>>24){p=n;n=j;j=g;do{n=n+-1|0;p=p+1|0;if(!n){r=u;o=40;break b}j=j+1|0}while((b[p>>0]|0)==(b[j>>0]|0))}}}else{if(a>>>0>>0)v=a;else v=(a>>>0)%(l>>>0)|0;if((v|0)!=(s|0)){r=0;o=40;break b}}while(0);u=f[u>>2]|0;if(!u){r=0;o=40;break}}if((o|0)==40)return r|0;return 0}function yd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)br(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}d=dn(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)br(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=f[d>>2]|0;d:do if(!t)u=d;else{v=f[d+8>>2]|0;w=d;x=t;while(1){if((v|0)!=(f[x+8>>2]|0)){u=w;break d}if((f[p>>2]|0)!=(f[x+12>>2]|0)){u=w;break d}y=f[x>>2]|0;if(!y){u=x;break}else{z=x;x=y;w=z}}}while(0);f[i>>2]=f[u>>2];f[u>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){A=39;break a}}}else{d=c;while(1){p=f[d+4>>2]|0;if(p>>>0>>0)B=p;else B=(p>>>0)%(b>>>0)|0;if((B|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(B<<2)|0;if(!(f[p>>2]|0)){q=d;r=B;s=p;break b}p=d+12|0;t=f[d>>2]|0;e:do if(!t)C=d;else{w=f[d+8>>2]|0;x=d;v=t;while(1){if((w|0)!=(f[v+8>>2]|0)){C=x;break e}if((f[p>>2]|0)!=(f[v+12>>2]|0)){C=x;break e}z=f[v>>2]|0;if(!z){C=v;break}else{y=v;v=z;x=y}}}while(0);f[i>>2]=f[C>>2];f[C>>2]=f[f[(f[a>>2]|0)+(B<<2)>>2]>>2];f[f[(f[a>>2]|0)+(B<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){A=39;break a}}}while(0);c=f[o>>2]|0;if(!c){A=39;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){A=39;break}else{j=r;k=q;m=q}}if((A|0)==39)return}function zd(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=a+4|0;i=f[c>>2]|0;c=i;do if((i|0)!=(h|0)){j=i+16|0;k=b[j+11>>0]|0;l=k<<24>>24<0;m=l?f[i+20>>2]|0:k&255;k=b[g+11>>0]|0;n=k<<24>>24<0;o=n?f[g+4>>2]|0:k&255;k=m>>>0>>0;p=k?m:o;if((p|0)!=0?(q=Pk(n?f[g>>2]|0:g,l?f[j>>2]|0:j,p)|0,(q|0)!=0):0){if((q|0)<0)break}else r=4;if((r|0)==4?o>>>0>>0:0)break;q=o>>>0>>0?o:m;if((q|0)!=0?(m=Pk(l?f[j>>2]|0:j,n?f[g>>2]|0:g,q)|0,(m|0)!=0):0){if((m|0)>=0)r=37}else r=21;if((r|0)==21?!k:0)r=37;if((r|0)==37){f[d>>2]=c;f[e>>2]=c;s=e;return s|0}k=f[i+4>>2]|0;m=(k|0)==0;if(m){q=i+8|0;j=f[q>>2]|0;if((f[j>>2]|0)==(i|0))t=j;else{j=q;do{q=f[j>>2]|0;j=q+8|0;l=f[j>>2]|0}while((f[l>>2]|0)!=(q|0));t=l}}else{j=k;while(1){l=f[j>>2]|0;if(!l)break;else j=l}t=j}do if((t|0)!=(h|0)){k=t+16|0;l=b[k+11>>0]|0;q=l<<24>>24<0;p=q?f[t+20>>2]|0:l&255;l=p>>>0>>0?p:o;if((l|0)!=0?(u=Pk(n?f[g>>2]|0:g,q?f[k>>2]|0:k,l)|0,(u|0)!=0):0){if((u|0)<0)break}else r=31;if((r|0)==31?o>>>0

>>0:0)break;s=hg(a,d,g)|0;return s|0}while(0);if(m){f[d>>2]=c;s=i+4|0;return s|0}else{f[d>>2]=t;s=t;return s|0}}while(0);t=f[i>>2]|0;do if((f[a>>2]|0)==(i|0))v=c;else{if(!t){h=i;while(1){e=f[h+8>>2]|0;if((f[e>>2]|0)==(h|0))h=e;else{w=e;break}}}else{h=t;while(1){m=f[h+4>>2]|0;if(!m){w=h;break}else h=m}}h=w;m=w+16|0;e=b[g+11>>0]|0;o=e<<24>>24<0;n=o?f[g+4>>2]|0:e&255;e=b[m+11>>0]|0;j=e<<24>>24<0;p=j?f[w+20>>2]|0:e&255;e=n>>>0

>>0?n:p;if((e|0)!=0?(u=Pk(j?f[m>>2]|0:m,o?f[g>>2]|0:g,e)|0,(u|0)!=0):0){if((u|0)<0){v=h;break}}else r=13;if((r|0)==13?p>>>0>>0:0){v=h;break}s=hg(a,d,g)|0;return s|0}while(0);if(!t){f[d>>2]=i;s=i;return s|0}else{f[d>>2]=v;s=v+4|0;return s|0}return 0}function Ad(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=u;u=u+16|0;h=g;f[c+48>>2]=d;f[c+44>>2]=e;e=f[c+8>>2]|0;i=c+12|0;j=f[i>>2]|0;if((j|0)!=(e|0)){k=j;do{j=k+-4|0;f[i>>2]=j;l=f[j>>2]|0;f[j>>2]=0;if(l|0)Va[f[(f[l>>2]|0)+4>>2]&127](l);k=f[i>>2]|0}while((k|0)!=(e|0))}e=f[c+20>>2]|0;k=c+24|0;i=f[k>>2]|0;if((i|0)!=(e|0))f[k>>2]=i+(~((i+-4-e|0)>>>2)<<2);e=f[c+32>>2]|0;i=c+36|0;k=f[i>>2]|0;if((k|0)!=(e|0))f[i>>2]=k+(~((k+-4-e|0)>>>2)<<2);if(!(f[c+4>>2]|0)){e=dn(32)|0;f[h>>2]=e;f[h+8>>2]=-2147483616;f[h+4>>2]=23;m=e;n=14670;o=m+23|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[e+23>>0]=0;f[a>>2]=-1;dj(a+4|0,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}Jd(a,c);if(f[a>>2]|0){u=g;return}e=a+4|0;k=e+11|0;if((b[k>>0]|0)<0)br(f[e>>2]|0);Ji(a,c);if(f[a>>2]|0){u=g;return}if((b[k>>0]|0)<0)br(f[e>>2]|0);if(!(Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0)){i=dn(32)|0;f[h>>2]=i;f[h+8>>2]=-2147483616;f[h+4>>2]=29;m=i;n=14694;o=m+29|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[i+29>>0]=0;f[a>>2]=-1;dj(e,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}if(!(Qa[f[(f[c>>2]|0)+20>>2]&127](c)|0)){i=dn(32)|0;f[h>>2]=i;f[h+8>>2]=-2147483616;f[h+4>>2]=31;m=i;n=14724;o=m+31|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[i+31>>0]=0;f[a>>2]=-1;dj(e,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}Wa[f[(f[c>>2]|0)+24>>2]&15](a,c);if(f[a>>2]|0){u=g;return}if((b[k>>0]|0)<0)br(f[e>>2]|0);if(!(Qa[f[(f[c>>2]|0)+28>>2]&127](c)|0)){k=dn(48)|0;f[h>>2]=k;f[h+8>>2]=-2147483600;f[h+4>>2]=34;m=k;n=14756;o=m+34|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[k+34>>0]=0;f[a>>2]=-1;dj(e,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}e=dn(32)|0;f[h>>2]=e;f[h+8>>2]=-2147483616;f[h+4>>2]=30;m=e;n=14791;o=m+30|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[e+30>>0]=0;e=Oj(d,h,0)|0;if((b[h+11>>0]|0)<0)br(f[h>>2]|0);if(e)Va[f[(f[c>>2]|0)+48>>2]&127](c);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=g;return}function Bd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;g=a;h=b;i=h;j=c;k=d;l=k;if(!i){m=(e|0)!=0;if(!l){if(m){f[e>>2]=(g>>>0)%(j>>>0);f[e+4>>2]=0}n=0;o=(g>>>0)/(j>>>0)>>>0;return (I=n,o)|0}else{if(!m){n=0;o=0;return (I=n,o)|0}f[e>>2]=a|0;f[e+4>>2]=b&0;n=0;o=0;return (I=n,o)|0}}m=(l|0)==0;do if(j){if(!m){p=(_(l|0)|0)-(_(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<>>(q>>>0)&s;w=0;x=g<>2]=a|0;f[e+4>>2]=h|b&0;n=0;o=0;return (I=n,o)|0}r=j-1|0;if(r&j|0){s=(_(j|0)|0)+33-(_(i|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&i>>>(z>>>0)|(i<>>(s>>>0))&A;v=A&i>>>(s>>>0);w=g<>>(z>>>0))&y|g<>31;break}if(e|0){f[e>>2]=r&g;f[e+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return (I=n,o)|0}else{r=im(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return (I=n,o)|0}}else{if(m){if(e|0){f[e>>2]=(i>>>0)%(j>>>0);f[e+4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return (I=n,o)|0}if(!g){if(e|0){f[e>>2]=0;f[e+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return (I=n,o)|0}r=l-1|0;if(!(r&l)){if(e|0){f[e>>2]=a|0;f[e+4>>2]=r&i|b&0}n=0;o=i>>>((im(l|0)|0)>>>0);return (I=n,o)|0}r=(_(l|0)|0)-(_(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<>>(s>>>0);v=i>>>(s>>>0);w=0;x=g<>2]=a|0;f[e+4>>2]=h|b&0;n=0;o=0;return (I=n,o)|0}while(0);if(!t){B=x;C=w;D=v;E=u;F=0;G=0}else{b=c|0|0;c=k|d&0;d=Tn(b|0,c|0,-1,-1)|0;k=I;h=x;x=w;w=v;v=u;u=t;t=0;do{a=h;h=x>>>31|h<<1;x=t|x<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;Vn(d|0,k|0,g|0,a|0)|0;i=I;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=Vn(g|0,a|0,l&b|0,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&c|0)|0;w=I;u=u-1|0}while((u|0)!=0);B=h;C=x;D=w;E=v;F=0;G=t}t=C;C=0;if(e|0){f[e>>2]=E;f[e+4>>2]=D}n=(t|0)>>>31|(B|C)<<1|(C<<1|t>>>31)&0|F;o=(t<<1|0>>>31)&-2|G;return (I=n,o)|0}function Cd(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;c=u;u=u+32|0;d=c+4|0;e=c;g=c+16|0;h=a+48|0;i=f[h>>2]|0;j=dn(32)|0;f[d>>2]=j;f[d+8>>2]=-2147483616;f[d+4>>2]=20;k=j;l=13101;m=k+20|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[j+20>>0]=0;j=vk(i+24|0,d)|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);i=f[h>>2]|0;n=dn(32)|0;f[d>>2]=n;f[d+8>>2]=-2147483616;f[d+4>>2]=22;k=n;l=13122;m=k+22|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[n+22>>0]=0;n=vk(i+24|0,d)|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);i=a+64|0;o=f[i>>2]|0;f[i>>2]=0;if(o|0)Va[f[(f[o>>2]|0)+4>>2]&127](o);o=f[a+56>>2]|0;p=(((f[o+100>>2]|0)-(f[o+96>>2]|0)|0)/12|0)>>>0<1e3;o=f[h>>2]|0;q=dn(32)|0;f[d>>2]=q;f[d+8>>2]=-2147483616;f[d+4>>2]=18;k=q;l=13145;m=k+18|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[q+18>>0]=0;q=yk(o,d,-1)|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);switch(q|0){case -1:{if(j?p|((Yh(f[h>>2]|0)|0)>4|n^1):0)r=13;else r=17;break}case 0:{if(j)r=13;else r=21;break}case 2:{r=17;break}default:r=21}if((r|0)==13){j=f[a+44>>2]|0;b[g>>0]=0;n=j+16|0;h=f[n+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[n>>2]|0)>>>0>0)){f[e>>2]=f[j+4>>2];f[d>>2]=f[e>>2];ye(j,d,g,g+1|0)|0}j=dn(296)|0;Ni(j);n=f[i>>2]|0;f[i>>2]=j;if(!n)s=j;else{Va[f[(f[n>>2]|0)+4>>2]&127](n);r=21}}else if((r|0)==17){n=f[a+44>>2]|0;b[g>>0]=2;j=n+16|0;h=f[j+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[j>>2]|0)>>>0>0)){f[e>>2]=f[n+4>>2];f[d>>2]=f[e>>2];ye(n,d,g,g+1|0)|0}g=dn(360)|0;ji(g);d=f[i>>2]|0;f[i>>2]=g;if(!d)s=g;else{Va[f[(f[d>>2]|0)+4>>2]&127](d);r=21}}if((r|0)==21){r=f[i>>2]|0;if(!r){t=0;u=c;return t|0}else s=r}t=Ra[f[(f[s>>2]|0)+8>>2]&127](s,a)|0;u=c;return t|0}function Dd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;e=b+12|0;g=f[e>>2]|0;h=c+4|0;i=(f[h>>2]|0)-g|0;j=c;f[j>>2]=(f[c>>2]|0)-g;f[j+4>>2]=i;i=(f[d>>2]|0)-g|0;j=d+4|0;k=(f[j>>2]|0)-g|0;g=d;f[g>>2]=i;f[g+4>>2]=k;g=f[e>>2]|0;if((((k|0)>-1?k:0-k|0)+((i|0)>-1?i:0-i|0)|0)>(g|0)){l=f[c>>2]|0;m=f[h>>2]|0;if((l|0)>-1)if((m|0)<=-1)if((l|0)<1){n=-1;o=-1}else p=6;else{n=1;o=1}else if((m|0)<1){n=-1;o=-1}else p=6;if((p|0)==6){n=(l|0)>0?1:-1;o=(m|0)>0?1:-1}q=X(g,n)|0;r=X(g,o)|0;g=(l<<1)-q|0;f[c>>2]=g;l=(m<<1)-r|0;f[h>>2]=l;if((X(n,o)|0)>-1){o=0-l|0;f[c>>2]=o;s=0-g|0;t=o}else{f[c>>2]=l;s=g;t=l}f[c>>2]=(t+q|0)/2|0;f[h>>2]=(s+r|0)/2|0;r=f[d>>2]|0;s=f[j>>2]|0;if((r|0)>-1)if((s|0)<=-1)if((r|0)<1){u=-1;v=-1}else p=14;else{u=1;v=1}else if((s|0)<1){u=-1;v=-1}else p=14;if((p|0)==14){u=(r|0)>0?1:-1;v=(s|0)>0?1:-1}q=f[e>>2]|0;e=X(q,u)|0;t=X(q,v)|0;q=(r<<1)-e|0;f[d>>2]=q;r=(s<<1)-t|0;f[j>>2]=r;if((X(u,v)|0)>-1){v=0-r|0;f[d>>2]=v;w=0-q|0;x=v}else{f[d>>2]=r;w=q;x=r}r=(x+e|0)/2|0;f[d>>2]=r;e=(w+t|0)/2|0;f[j>>2]=e;y=r;z=e}else{y=i;z=k}if(!y)if(!z){A=y;B=z}else p=22;else if((y|0)<0&(z|0)<1){A=y;B=z}else p=22;if((p|0)==22){if(!y)C=(z|0)==0?0:(z|0)>0?3:1;else C=(y|0)>0?(z>>31)+2|0:(z|0)<1?0:3;z=f[c>>2]|0;y=f[h>>2]|0;switch(C|0){case 1:{C=c;f[C>>2]=y;f[C+4>>2]=0-z;D=f[j>>2]|0;E=0-(f[d>>2]|0)|0;break}case 2:{C=c;f[C>>2]=0-z;f[C+4>>2]=0-y;D=0-(f[d>>2]|0)|0;E=0-(f[j>>2]|0)|0;break}case 3:{C=c;f[C>>2]=0-y;f[C+4>>2]=z;D=0-(f[j>>2]|0)|0;E=f[d>>2]|0;break}default:{C=c;f[C>>2]=z;f[C+4>>2]=y;D=f[d>>2]|0;E=f[j>>2]|0}}j=d;f[j>>2]=D;f[j+4>>2]=E;A=D;B=E}E=(f[c>>2]|0)-A|0;f[a>>2]=E;A=(f[h>>2]|0)-B|0;B=a+4|0;f[B>>2]=A;if((E|0)<0)F=(f[b+4>>2]|0)+E|0;else F=E;f[a>>2]=F;if((A|0)>=0){G=A;f[B>>2]=G;return}G=(f[b+4>>2]|0)+A|0;f[B>>2]=G;return}function Ed(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){b:do if(i){g=l;c=m;j=n;while(1){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0))break;p=(f[a>>2]|0)+(o<<2)|0;if(!(f[p>>2]|0)){q=e;r=j;s=o;t=p;break b}p=e+8|0;u=e;while(1){v=f[u>>2]|0;if(!v)break;if((d[p>>1]|0)==(d[v+8>>1]|0))u=v;else break}f[j>>2]=v;f[u>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;p=f[g>>2]|0;if(!p){w=37;break a}else e=p}c=f[e>>2]|0;if(!c){w=37;break a}else{g=e;j=e}}}else{j=l;g=m;c=n;while(1){p=g;while(1){x=f[p+4>>2]|0;if(x>>>0>>0)y=x;else y=(x>>>0)%(b>>>0)|0;if((y|0)==(k|0))break;x=(f[a>>2]|0)+(y<<2)|0;if(!(f[x>>2]|0)){q=p;r=c;s=y;t=x;break b}x=p+8|0;z=p;while(1){A=f[z>>2]|0;if(!A)break;if((d[x>>1]|0)==(d[A+8>>1]|0))z=A;else break}f[c>>2]=A;f[z>>2]=f[f[(f[a>>2]|0)+(y<<2)>>2]>>2];f[f[(f[a>>2]|0)+(y<<2)>>2]>>2]=p;x=f[j>>2]|0;if(!x){w=37;break a}else p=x}g=f[p>>2]|0;if(!g){w=37;break a}else{j=p;c=p}}}while(0);f[t>>2]=r;m=f[q>>2]|0;if(!m){w=37;break}else{k=s;l=q;n=q}}if((w|0)==37)return}function Fd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){b:do if(i){g=l;d=m;j=n;while(1){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0))break;p=(f[a>>2]|0)+(o<<2)|0;if(!(f[p>>2]|0)){q=e;r=j;s=o;t=p;break b}p=e+8|0;u=e;while(1){v=f[u>>2]|0;if(!v)break;if((b[p>>0]|0)==(b[v+8>>0]|0))u=v;else break}f[j>>2]=v;f[u>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;p=f[g>>2]|0;if(!p){w=37;break a}else e=p}d=f[e>>2]|0;if(!d){w=37;break a}else{g=e;j=e}}}else{j=l;g=m;d=n;while(1){p=g;while(1){x=f[p+4>>2]|0;if(x>>>0>>0)y=x;else y=(x>>>0)%(c>>>0)|0;if((y|0)==(k|0))break;x=(f[a>>2]|0)+(y<<2)|0;if(!(f[x>>2]|0)){q=p;r=d;s=y;t=x;break b}x=p+8|0;z=p;while(1){A=f[z>>2]|0;if(!A)break;if((b[x>>0]|0)==(b[A+8>>0]|0))z=A;else break}f[d>>2]=A;f[z>>2]=f[f[(f[a>>2]|0)+(y<<2)>>2]>>2];f[f[(f[a>>2]|0)+(y<<2)>>2]>>2]=p;x=f[j>>2]|0;if(!x){w=37;break a}else p=x}g=f[p>>2]|0;if(!g){w=37;break a}else{j=p;d=p}}}while(0);f[t>>2]=r;m=f[q>>2]|0;if(!m){w=37;break}else{k=s;l=q;n=q}}if((w|0)==37)return}function Gd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=f[c>>2]|0;c=f[b>>2]|0;h=g-c|0;i=a+8|0;j=f[i>>2]|0;if(h>>>0<64){if(j>>>0<=1){k=0;return k|0}l=f[e>>2]|0;m=0;n=1;while(1){o=(f[l+(m<<2)>>2]|0)>>>0>(f[l+(n<<2)>>2]|0)>>>0?n:m;n=n+1|0;if(n>>>0>=j>>>0){k=o;break}else m=o}return k|0}if(j){j=f[a+1128>>2]|0;m=f[e>>2]|0;e=f[a+1140>>2]|0;n=f[d>>2]|0;d=b+4|0;l=b+8|0;if((g|0)==(c|0)){b=0;do{o=j+(b<<2)|0;f[o>>2]=0;p=(f[a>>2]|0)-(f[m+(b<<2)>>2]|0)|0;f[e+(b<<2)>>2]=p;if(p|0){p=f[o>>2]|0;q=h-p|0;f[o>>2]=q>>>0

>>0?p:q}b=b+1|0;q=f[i>>2]|0}while(b>>>0>>0);r=q}else{b=0;do{q=j+(b<<2)|0;f[q>>2]=0;p=(f[a>>2]|0)-(f[m+(b<<2)>>2]|0)|0;f[e+(b<<2)>>2]=p;if(p|0){o=(f[n+(b<<2)>>2]|0)+(1<>2]|0;s=f[(f[d>>2]|0)+24>>2]|0;t=c;u=f[q>>2]|0;do{v=s+((X(t,p)|0)<<2)+(b<<2)|0;u=u+((f[v>>2]|0)>>>0>>0&1)|0;f[q>>2]=u;t=t+1|0}while((t|0)!=(g|0));t=h-u|0;f[q>>2]=t>>>0>>0?u:t}b=b+1|0;t=f[i>>2]|0}while(b>>>0>>0);r=t}if(r){b=f[a+1140>>2]|0;i=a+1128|0;h=0;g=0;c=0;while(1){if(!(f[b+(g<<2)>>2]|0)){w=h;x=c}else{d=f[(f[i>>2]|0)+(g<<2)>>2]|0;l=h>>>0>>0;w=l?d:h;x=l?g:c}g=g+1|0;if(g>>>0>=r>>>0){y=x;break}else{h=w;c=x}}}else y=0}else y=0;x=a+1088|0;c=a+1104|0;w=f[c>>2]|0;h=32-w|0;if((h|0)<4){r=y&15;g=4-h|0;f[c>>2]=g;h=a+1100|0;i=f[h>>2]|r>>>g;f[h>>2]=i;g=a+1092|0;b=f[g>>2]|0;if((b|0)==(f[a+1096>>2]|0))Ci(x,h);else{f[b>>2]=i;f[g>>2]=b+4}f[h>>2]=r<<32-(f[c>>2]|0);k=y;return k|0}r=a+1100|0;h=f[r>>2]|y<<28>>>w;f[r>>2]=h;b=w+4|0;f[c>>2]=b;if((b|0)!=32){k=y;return k|0}b=a+1092|0;w=f[b>>2]|0;if((w|0)==(f[a+1096>>2]|0))Ci(x,r);else{f[w>>2]=h;f[b>>2]=w+4}f[r>>2]=0;f[c>>2]=0;k=y;return k|0}function Hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)br(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}d=dn(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)br(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){b:do if(h){e=k;c=l;i=m;while(1){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0))break;o=(f[a>>2]|0)+(n<<2)|0;if(!(f[o>>2]|0)){p=d;q=i;r=n;s=o;break b}o=d+8|0;t=d;while(1){u=f[t>>2]|0;if(!u)break;if((f[o>>2]|0)==(f[u+8>>2]|0))t=u;else break}f[i>>2]=u;f[t>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;o=f[e>>2]|0;if(!o){v=37;break a}else d=o}c=f[d>>2]|0;if(!c){v=37;break a}else{e=d;i=d}}}else{i=k;e=l;c=m;while(1){o=e;while(1){w=f[o+4>>2]|0;if(w>>>0>>0)x=w;else x=(w>>>0)%(b>>>0)|0;if((x|0)==(j|0))break;w=(f[a>>2]|0)+(x<<2)|0;if(!(f[w>>2]|0)){p=o;q=c;r=x;s=w;break b}w=o+8|0;y=o;while(1){z=f[y>>2]|0;if(!z)break;if((f[w>>2]|0)==(f[z+8>>2]|0))y=z;else break}f[c>>2]=z;f[y>>2]=f[f[(f[a>>2]|0)+(x<<2)>>2]>>2];f[f[(f[a>>2]|0)+(x<<2)>>2]>>2]=o;w=f[i>>2]|0;if(!w){v=37;break a}else o=w}e=f[o>>2]|0;if(!e){v=37;break a}else{i=o;c=o}}}while(0);f[s>>2]=q;l=f[p>>2]|0;if(!l){v=37;break}else{j=r;k=p;m=p}}if((v|0)==37)return}function Id(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;e=a+24|0;k=j;j=g;l=d;d=g;a:while(1){g=j;m=l;n=d;b:while(1){o=m;while(1){p=f[o+4>>2]|0;if(!i)if(p>>>0>>0)q=p;else q=(p>>>0)%(c>>>0)|0;else q=p&h;if((q|0)==(k|0))break;r=(f[a>>2]|0)+(q<<2)|0;if(!(f[r>>2]|0))break b;p=f[o>>2]|0;c:do if(!p)s=o;else{t=f[o+8>>2]|0;u=f[e>>2]|0;v=f[u+8>>2]|0;w=(f[u+12>>2]|0)-v|0;u=v;v=w>>>2;if((w|0)>0){x=o;y=p}else{w=p;while(1){z=f[w>>2]|0;if(!z){s=w;break c}else w=z}}while(1){w=f[y+8>>2]|0;z=0;do{A=f[u+(z<<2)>>2]|0;if(!(b[A+84>>0]|0)){B=f[A+68>>2]|0;C=f[B+(w<<2)>>2]|0;D=f[B+(t<<2)>>2]|0}else{C=w;D=t}z=z+1|0;if((D|0)!=(C|0)){s=x;break c}}while((z|0)<(v|0));z=f[y>>2]|0;if(!z){s=y;break}else{w=y;y=z;x=w}}}while(0);f[n>>2]=f[s>>2];f[s>>2]=f[f[(f[a>>2]|0)+(q<<2)>>2]>>2];f[f[(f[a>>2]|0)+(q<<2)>>2]>>2]=o;p=f[g>>2]|0;if(!p){E=38;break a}else o=p}m=f[o>>2]|0;if(!m){E=38;break a}else{g=o;n=o}}f[r>>2]=n;l=f[o>>2]|0;if(!l){E=38;break}else{k=q;j=o;d=o}}if((E|0)==38)return}function Jd(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;e=u;u=u+16|0;g=e+4|0;h=e;i=e+12|0;j=e+11|0;k=e+10|0;l=e+8|0;m=c+44|0;n=f[m>>2]|0;o=n+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];ye(n,g,14849,14854)|0}n=Qa[f[(f[c>>2]|0)+8>>2]&127](c)|0;b[i>>0]=n;b[j>>0]=2;b[k>>0]=(n&255|0)==0?3:2;n=f[m>>2]|0;o=n+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];ye(n,g,j,j+1|0)|0;j=f[m>>2]|0;o=j+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[j+4>>2];f[g>>2]=f[h>>2];ye(j,g,k,k+1|0)|0;k=f[m>>2]|0;o=k+16|0;p=f[o+4>>2]|0;if((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0){q=h;r=k}else{f[h>>2]=f[k+4>>2];f[g>>2]=f[h>>2];ye(k,g,i,i+1|0)|0;q=h;r=f[m>>2]|0}}else{s=h;t=j;v=6}}else{s=h;t=n;v=6}if((v|0)==6){q=h;r=t}t=Qa[f[(f[c>>2]|0)+12>>2]&127](c)|0;b[l>>0]=t;t=r+16|0;q=f[t+4>>2]|0;if(!((q|0)>0|(q|0)==0&(f[t>>2]|0)>>>0>0)){f[h>>2]=f[r+4>>2];f[g>>2]=f[h>>2];ye(r,g,l,l+1|0)|0}d[l>>1]=(f[(f[c+4>>2]|0)+4>>2]|0)==0?0:-32768;c=f[m>>2]|0;m=c+16|0;r=f[m+4>>2]|0;if((r|0)>0|(r|0)==0&(f[m>>2]|0)>>>0>0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}f[h>>2]=f[c+4>>2];f[g>>2]=f[h>>2];ye(c,g,l,l+2|0)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}function Kd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=Oa,x=0,y=Oa,z=Oa,A=Oa,B=Oa;e=u;u=u+16|0;g=e;h=a+4|0;if((f[h>>2]|0)!=-1){i=0;u=e;return i|0}f[h>>2]=d;d=b[c+24>>0]|0;h=d<<24>>24;j=a+20|0;n[j>>2]=$(0.0);f[g>>2]=0;k=g+4|0;f[k>>2]=0;f[g+8>>2]=0;do if(d<<24>>24)if(d<<24>>24<0)mq(g);else{l=h<<2;m=dn(l)|0;f[g>>2]=m;o=m+(h<<2)|0;f[g+8>>2]=o;hj(m|0,0,l|0)|0;l=m+(h<<2)|0;f[k>>2]=l;p=m;q=l;r=o;break}else{p=0;q=0;r=0}while(0);k=a+8|0;g=f[k>>2]|0;o=a+12|0;if(!g)s=a+16|0;else{l=f[o>>2]|0;if((l|0)!=(g|0))f[o>>2]=l+(~((l+-4-g|0)>>>2)<<2);br(g);g=a+16|0;f[g>>2]=0;f[o>>2]=0;f[k>>2]=0;s=g}f[k>>2]=p;f[o>>2]=q;f[s>>2]=r;r=h>>>0>1073741823?-1:h<<2;s=_q(r)|0;q=_q(r)|0;r=c+48|0;o=f[r>>2]|0;g=c+40|0;a=f[g>>2]|0;l=f[c>>2]|0;Rg(q|0,(f[l>>2]|0)+o|0,a|0)|0;Rg(p|0,(f[l>>2]|0)+o|0,a|0)|0;a=r;r=f[a>>2]|0;o=f[a+4>>2]|0;a=g;g=f[a>>2]|0;l=f[a+4>>2]|0;a=f[c>>2]|0;Rg(s|0,(f[a>>2]|0)+r|0,g|0)|0;p=f[c+80>>2]|0;a:do if(p>>>0>1){if(d<<24>>24<=0){c=1;while(1){m=on(g|0,l|0,c|0,0)|0;t=Tn(m|0,I|0,r|0,o|0)|0;Rg(q|0,(f[a>>2]|0)+t|0,g|0)|0;c=c+1|0;if(c>>>0>=p>>>0)break a}}c=f[k>>2]|0;t=1;do{m=on(g|0,l|0,t|0,0)|0;v=Tn(m|0,I|0,r|0,o|0)|0;Rg(q|0,(f[a>>2]|0)+v|0,g|0)|0;v=0;do{m=c+(v<<2)|0;w=$(n[m>>2]);x=q+(v<<2)|0;y=$(n[x>>2]);if(w>y){n[m>>2]=y;z=$(n[x>>2])}else z=y;x=s+(v<<2)|0;if($(n[x>>2])>2]=z;v=v+1|0}while((v|0)!=(h|0));t=t+1|0}while(t>>>0

>>0)}while(0);if(d<<24>>24>0){d=f[k>>2]|0;k=0;z=$(n[j>>2]);while(1){y=$(n[s+(k<<2)>>2]);w=$(y-$(n[d+(k<<2)>>2]));if(w>z){n[j>>2]=w;A=w}else A=z;k=k+1|0;if((k|0)==(h|0)){B=A;break}else z=A}}else B=$(n[j>>2]);if(B==$(0.0))n[j>>2]=$(1.0);$q(q);$q(s);i=1;u=e;return i|0}function Ld(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;g=a+8|0;Ah(g,b,d,e);h=d-e|0;if((h|0)>0){d=0-e|0;i=a+16|0;j=a+32|0;k=a+12|0;l=a+28|0;m=a+20|0;n=a+24|0;o=h;h=f[g>>2]|0;while(1){p=b+(o<<2)|0;q=c+(o<<2)|0;if((h|0)>0){r=0;s=p+(d<<2)|0;t=h;while(1){if((t|0)>0){u=0;do{v=f[s+(u<<2)>>2]|0;w=f[i>>2]|0;if((v|0)>(w|0)){x=f[j>>2]|0;f[x+(u<<2)>>2]=w;y=x}else{x=f[k>>2]|0;w=f[j>>2]|0;f[w+(u<<2)>>2]=(v|0)<(x|0)?x:v;y=w}u=u+1|0}while((u|0)<(f[g>>2]|0));z=y}else z=f[j>>2]|0;u=(f[p+(r<<2)>>2]|0)-(f[z+(r<<2)>>2]|0)|0;w=q+(r<<2)|0;f[w>>2]=u;if((u|0)>=(f[l>>2]|0)){if((u|0)>(f[n>>2]|0)){A=u-(f[m>>2]|0)|0;B=31}}else{A=(f[m>>2]|0)+u|0;B=31}if((B|0)==31){B=0;f[w>>2]=A}r=r+1|0;w=f[g>>2]|0;if((r|0)>=(w|0)){C=w;break}else{s=z;t=w}}}else C=h;o=o-e|0;if((o|0)<=0){D=C;break}else h=C}}else D=f[g>>2]|0;C=e>>>0>1073741823?-1:e<<2;e=_q(C)|0;hj(e|0,0,C|0)|0;if((D|0)<=0){$q(e);return 1}C=a+16|0;h=a+32|0;o=a+12|0;z=a+28|0;A=a+20|0;m=a+24|0;a=0;n=e;l=D;while(1){if((l|0)>0){D=0;do{j=f[n+(D<<2)>>2]|0;y=f[C>>2]|0;if((j|0)>(y|0)){k=f[h>>2]|0;f[k+(D<<2)>>2]=y;E=k}else{k=f[o>>2]|0;y=f[h>>2]|0;f[y+(D<<2)>>2]=(j|0)<(k|0)?k:j;E=y}D=D+1|0}while((D|0)<(f[g>>2]|0));F=E}else F=f[h>>2]|0;D=(f[b+(a<<2)>>2]|0)-(f[F+(a<<2)>>2]|0)|0;y=c+(a<<2)|0;f[y>>2]=D;if((D|0)>=(f[z>>2]|0)){if((D|0)>(f[m>>2]|0)){G=D-(f[A>>2]|0)|0;B=16}}else{G=(f[A>>2]|0)+D|0;B=16}if((B|0)==16){B=0;f[y>>2]=G}a=a+1|0;l=f[g>>2]|0;if((a|0)>=(l|0))break;else n=F}$q(e);return 1}function Md(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=f[a>>2]|0;g=e;h=(f[b>>2]|0)-g|0;b=e+(h>>2<<2)|0;i=f[c>>2]|0;c=f[d>>2]|0;d=c-i|0;j=d>>2;k=i;l=c;if((d|0)<=0){m=b;return m|0}d=a+8|0;n=f[d>>2]|0;o=a+4|0;p=f[o>>2]|0;q=p;if((j|0)<=(n-q>>2|0)){r=b;s=q-r|0;t=s>>2;if((j|0)>(t|0)){u=k+(t<<2)|0;t=u;if((u|0)==(l|0))v=p;else{w=l+-4-t|0;x=u;u=p;while(1){f[u>>2]=f[x>>2];x=x+4|0;if((x|0)==(l|0))break;else u=u+4|0}u=p+((w>>>2)+1<<2)|0;f[o>>2]=u;v=u}if((s|0)>0){y=t;z=v}else{m=b;return m|0}}else{y=c;z=p}c=z-(b+(j<<2))>>2;v=b+(c<<2)|0;if(v>>>0

>>0){t=(p+(0-c<<2)+~r|0)>>>2;r=v;s=z;while(1){f[s>>2]=f[r>>2];r=r+4|0;if(r>>>0>=p>>>0)break;else s=s+4|0}f[o>>2]=z+(t+1<<2)}if(c|0){c=v;v=z;do{c=c+-4|0;v=v+-4|0;f[v>>2]=f[c>>2]}while((c|0)!=(b|0))}c=y;if((k|0)==(c|0)){m=b;return m|0}else{A=b;B=k}while(1){f[A>>2]=f[B>>2];B=B+4|0;if((B|0)==(c|0)){m=b;break}else A=A+4|0}return m|0}A=(q-g>>2)+j|0;if(A>>>0>1073741823)mq(a);j=n-g|0;g=j>>1;n=j>>2>>>0<536870911?(g>>>0>>0?A:g):1073741823;g=b;A=h>>2;do if(n)if(n>>>0>1073741823){j=ra(8)|0;Wo(j,14941);f[j>>2]=6944;va(j|0,1080,114)}else{j=dn(n<<2)|0;C=j;D=j;break}else{C=0;D=0}while(0);j=D+(A<<2)|0;A=D+(n<<2)|0;if((l|0)==(k|0))E=j;else{n=((l+-4-i|0)>>>2)+1|0;i=k;k=j;while(1){f[k>>2]=f[i>>2];i=i+4|0;if((i|0)==(l|0))break;else k=k+4|0}E=j+(n<<2)|0}if((h|0)>0)Rg(C|0,e|0,h|0)|0;h=q-g|0;if((h|0)>0){Rg(E|0,b|0,h|0)|0;F=E+(h>>>2<<2)|0}else F=E;f[a>>2]=D;f[o>>2]=F;f[d>>2]=A;if(!e){m=j;return m|0}br(e);m=j;return m|0}function Nd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0;switch(c|0){case 1:{c=dn(60)|0;f[c>>2]=1528;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1948;i=c;f[a>>2]=i;return}case 4:{c=dn(168)|0;Ei(c,d,e,g);i=c;f[a>>2]=i;return}case 5:{c=dn(104)|0;f[c>>2]=1528;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2004;f[c+60>>2]=0;f[c+64>>2]=0;f[c+76>>2]=0;f[c+80>>2]=0;f[c+84>>2]=0;h=c+88|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=dn(140)|0;f[c>>2]=1528;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);e=c+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=2060;f[c+64>>2]=0;f[c+68>>2]=0;e=c+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+60>>2]=2116;f[c+88>>2]=1;g=c+92|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;rn(c+108|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Od(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0;switch(c|0){case 1:{c=dn(60)|0;f[c>>2]=1528;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1640;i=c;f[a>>2]=i;return}case 4:{c=dn(168)|0;Hi(c,d,e,g);i=c;f[a>>2]=i;return}case 5:{c=dn(104)|0;f[c>>2]=1528;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1696;f[c+60>>2]=0;f[c+64>>2]=0;f[c+76>>2]=0;f[c+80>>2]=0;f[c+84>>2]=0;h=c+88|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=dn(140)|0;f[c>>2]=1528;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);e=c+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=1752;f[c+64>>2]=0;f[c+68>>2]=0;e=c+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+60>>2]=1808;f[c+88>>2]=1;g=c+92|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;rn(c+108|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Pd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0;switch(c|0){case 1:{c=dn(40)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2628;i=c;f[a>>2]=i;return}case 4:{c=dn(152)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2684;h=c+96|0;b=c+40|0;j=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));Sm(h);f[c+136>>2]=0;f[c+140>>2]=0;f[c+144>>2]=0;i=c;f[a>>2]=i;return}case 5:{c=dn(84)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2740;f[c+40>>2]=0;f[c+44>>2]=0;f[c+56>>2]=0;f[c+60>>2]=0;f[c+64>>2]=0;h=c+68|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=dn(120)|0;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];e=c+24|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=2796;f[c+44>>2]=0;f[c+48>>2]=0;e=c+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+40>>2]=2852;f[c+68>>2]=1;g=c+72|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;rn(c+88|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;switch(b-a>>2|0){case 2:{d=b+-4|0;e=f[d>>2]|0;g=f[a>>2]|0;h=f[c>>2]|0;i=f[h>>2]|0;j=(f[h+4>>2]|0)-i>>3;if(j>>>0<=e>>>0)mq(h);k=i;if(j>>>0<=g>>>0)mq(h);if((f[k+(e<<3)>>2]|0)>>>0>=(f[k+(g<<3)>>2]|0)>>>0){l=1;return l|0}f[a>>2]=e;f[d>>2]=g;l=1;return l|0}case 3:{Cg(a,a+4|0,b+-4|0,c)|0;l=1;return l|0}case 4:{Qg(a,a+4|0,a+8|0,b+-4|0,c)|0;l=1;return l|0}case 5:{Tf(a,a+4|0,a+8|0,a+12|0,b+-4|0,c)|0;l=1;return l|0}case 1:case 0:{l=1;return l|0}default:{g=a+8|0;Cg(a,a+4|0,g,c)|0;d=a+12|0;a:do if((d|0)!=(b|0)){e=f[c>>2]|0;k=f[e>>2]|0;h=(f[e+4>>2]|0)-k>>3;j=k;k=d;i=0;m=g;b:while(1){n=f[k>>2]|0;o=f[m>>2]|0;if(h>>>0<=n>>>0){p=14;break}if(h>>>0<=o>>>0){p=16;break}q=j+(n<<3)|0;if((f[q>>2]|0)>>>0<(f[j+(o<<3)>>2]|0)>>>0){r=m;s=k;t=o;while(1){f[s>>2]=t;if((r|0)==(a|0)){u=a;break}o=r+-4|0;t=f[o>>2]|0;if(h>>>0<=t>>>0){p=20;break b}if((f[q>>2]|0)>>>0>=(f[j+(t<<3)>>2]|0)>>>0){u=r;break}else{v=r;r=o;s=v}}f[u>>2]=n;s=i+1|0;if((s|0)==8){w=0;x=(k+4|0)==(b|0);break a}else y=s}else y=i;s=k+4|0;if((s|0)==(b|0)){w=1;x=0;break a}else{r=k;k=s;i=y;m=r}}if((p|0)==14)mq(e);else if((p|0)==16)mq(e);else if((p|0)==20)mq(e)}else{w=1;x=0}while(0);l=x|w;return l|0}}return 0}function Rd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0;switch(c|0){case 1:{c=dn(40)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2376;i=c;f[a>>2]=i;return}case 4:{c=dn(152)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2432;h=c+96|0;b=c+40|0;j=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));Sm(h);f[c+136>>2]=0;f[c+140>>2]=0;f[c+144>>2]=0;i=c;f[a>>2]=i;return}case 5:{c=dn(84)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2488;f[c+40>>2]=0;f[c+44>>2]=0;f[c+56>>2]=0;f[c+60>>2]=0;f[c+64>>2]=0;h=c+68|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=dn(120)|0;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];e=c+24|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=2544;f[c+44>>2]=0;f[c+48>>2]=0;e=c+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+40>>2]=2600;f[c+68>>2]=1;g=c+72|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;rn(c+88|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=Oa,t=Oa,u=Oa,v=0,w=0,x=0,y=0,z=0;c=f[b>>2]|0;b=a+4|0;d=f[b>>2]|0;e=(d|0)==0;a:do if(!e){g=d+-1|0;h=(g&d|0)==0;if(!h)if(c>>>0>>0)i=c;else i=(c>>>0)%(d>>>0)|0;else i=g&c;j=f[(f[a>>2]|0)+(i<<2)>>2]|0;if(!j)k=i;else{if(h){h=j;while(1){l=f[h>>2]|0;if(!l){k=i;break a}m=f[l+4>>2]|0;if(!((m|0)==(c|0)|(m&g|0)==(i|0))){k=i;break a}if((f[l+8>>2]|0)==(c|0)){o=l;break}else h=l}p=o+12|0;return p|0}else q=j;while(1){h=f[q>>2]|0;if(!h){k=i;break a}g=f[h+4>>2]|0;if((g|0)!=(c|0)){if(g>>>0>>0)r=g;else r=(g>>>0)%(d>>>0)|0;if((r|0)!=(i|0)){k=i;break a}}if((f[h+8>>2]|0)==(c|0)){o=h;break}else q=h}p=o+12|0;return p|0}}else k=0;while(0);q=dn(16)|0;f[q+8>>2]=c;f[q+12>>2]=0;f[q+4>>2]=c;f[q>>2]=0;i=a+12|0;s=$(((f[i>>2]|0)+1|0)>>>0);t=$(d>>>0);u=$(n[a+16>>2]);do if(e|$(u*t)>>0<3|(d+-1&d|0)!=0)&1;j=~~$(W($(s/u)))>>>0;ti(a,r>>>0>>0?j:r);r=f[b>>2]|0;j=r+-1|0;if(!(j&r)){v=r;w=j&c;break}if(c>>>0>>0){v=r;w=c}else{v=r;w=(c>>>0)%(r>>>0)|0}}else{v=d;w=k}while(0);k=(f[a>>2]|0)+(w<<2)|0;w=f[k>>2]|0;if(!w){d=a+8|0;f[q>>2]=f[d>>2];f[d>>2]=q;f[k>>2]=d;d=f[q>>2]|0;if(d|0){k=f[d+4>>2]|0;d=v+-1|0;if(d&v)if(k>>>0>>0)x=k;else x=(k>>>0)%(v>>>0)|0;else x=k&d;y=(f[a>>2]|0)+(x<<2)|0;z=30}}else{f[q>>2]=f[w>>2];y=w;z=30}if((z|0)==30)f[y>>2]=q;f[i>>2]=(f[i>>2]|0)+1;o=q;p=o+12|0;return p|0}function Td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;c=u;u=u+16|0;d=c+4|0;e=c;f[a+64>>2]=b;g=a+128|0;f[g>>2]=2;h=a+132|0;f[h>>2]=7;i=Qa[f[(f[b>>2]|0)+32>>2]&127](b)|0;b=a+88|0;f[b>>2]=i;j=a+104|0;k=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;i=a+108|0;l=f[i>>2]|0;m=f[j>>2]|0;n=l-m>>2;o=m;p=l;if(k>>>0<=n>>>0)if(k>>>0>>0?(q=o+(k<<2)|0,(q|0)!=(p|0)):0){o=p+(~((p+-4-q|0)>>>2)<<2)|0;f[i>>2]=o;r=o;s=m}else{r=l;s=m}else{oi(j,k-n|0);r=f[i>>2]|0;s=f[j>>2]|0}if((r|0)!=(s|0)){s=0;do{r=f[b>>2]|0;f[e>>2]=s;f[d>>2]=f[e>>2];n=Og(r,d)|0;r=f[j>>2]|0;f[r+(s<<2)>>2]=n;s=s+1|0}while(s>>>0<(f[i>>2]|0)-r>>2>>>0)}i=a+92|0;s=f[b>>2]|0;j=f[s>>2]|0;d=(f[s+4>>2]|0)-j>>2;e=a+96|0;r=f[e>>2]|0;n=f[i>>2]|0;k=r-n>>2;m=n;n=r;if(d>>>0<=k>>>0)if(d>>>0>>0?(r=m+(d<<2)|0,(r|0)!=(n|0)):0){f[e>>2]=n+(~((n+-4-r|0)>>>2)<<2);t=s;v=j}else{t=s;v=j}else{oi(i,d-k|0);k=f[b>>2]|0;t=k;v=f[k>>2]|0}k=f[t+4>>2]|0;if((k|0)!=(v|0)){v=f[i>>2]|0;i=f[t>>2]|0;t=k-i>>2;k=0;do{f[v+(k<<2)>>2]=f[i+(k<<2)>>2];k=k+1|0}while(k>>>0>>0)}t=(f[h>>2]|0)-(f[g>>2]|0)+1|0;g=a+136|0;h=a+140|0;a=f[h>>2]|0;k=f[g>>2]|0;i=(a-k|0)/12|0;v=a;if(t>>>0>i>>>0){vf(g,t-i|0);u=c;return 1}if(t>>>0>=i>>>0){u=c;return 1}i=k+(t*12|0)|0;if((i|0)==(v|0)){u=c;return 1}else w=v;while(1){v=w+-12|0;f[h>>2]=v;t=f[v>>2]|0;if(!t)x=v;else{v=w+-8|0;k=f[v>>2]|0;if((k|0)!=(t|0))f[v>>2]=k+(~((k+-4-t|0)>>>2)<<2);br(t);x=f[h>>2]|0}if((x|0)==(i|0))break;else w=x}u=c;return 1}function Ud(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Oc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Vd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Pc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Wd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Qc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Xd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Rc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Yd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Sc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Zd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Tc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=2097152;if(d){d=c;c=2097152;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<19)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}yf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function _d(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Uc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=1048576;if(d){d=c;c=1048576;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<18)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}zf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function $d(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Vc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=262144;if(d){d=c;c=262144;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<16)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Cf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ae(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Wc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=131072;if(d){d=c;c=131072;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<15)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Df(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function be(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Xc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=32768;if(d){d=c;c=32768;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<13)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Ef(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ce(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Yc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function de(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Zc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ee(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));_c(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function fe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));$c(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ge(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));ad(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function he(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));bd(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ie(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));cd(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function je(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));dd(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=f[b>>2]|0;g=b+4|0;h=f[g>>2]|0;i=((f[c>>2]|0)-e<<3)+(f[c+4>>2]|0)-h|0;c=e;if((i|0)<=0){j=d+4|0;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}if(!h){e=d+4|0;n=i;o=e;p=c;q=f[e>>2]|0}else{e=32-h|0;r=(i|0)<(e|0)?i:e;s=-1>>>(e-r|0)&-1<>2];c=d+4|0;h=f[c>>2]|0;e=32-h|0;t=e>>>0>>0?e:r;u=f[d>>2]|0;v=f[u>>2]&~(-1>>>(e-t|0)&-1<>2]=v;h=f[c>>2]|0;e=f[g>>2]|0;f[u>>2]=(h>>>0>e>>>0?s<>>(e-h|0))|v;v=(f[c>>2]|0)+t|0;h=u+(v>>>5<<2)|0;f[d>>2]=h;u=v&31;f[c>>2]=u;v=r-t|0;if((v|0)>0){e=f[h>>2]&~(-1>>>(32-v|0));f[h>>2]=e;f[h>>2]=e|s>>>((f[g>>2]|0)+t|0);f[c>>2]=v;w=v}else w=u;u=(f[b>>2]|0)+4|0;f[b>>2]=u;n=i-r|0;o=c;p=u;q=w}w=32-q|0;u=-1<31){q=~u;c=~n;r=n+((c|0)>-64?c:-64)+32&-32;c=n;i=p;while(1){v=f[i>>2]|0;t=f[d>>2]|0;g=f[t>>2]&q;f[t>>2]=g;f[t>>2]=g|v<>2];g=t+4|0;f[d>>2]=g;f[g>>2]=f[g>>2]&u|v>>>w;i=(f[b>>2]|0)+4|0;f[b>>2]=i;if((c|0)<=63)break;else c=c+-32|0}x=n+-32-r|0;y=i}else{x=n;y=p}if((x|0)<=0){j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}p=f[y>>2]&-1>>>(32-x|0);y=(w|0)<(x|0)?w:x;n=f[d>>2]|0;i=f[n>>2]&~(-1<>2]&-1>>>(w-y|0));f[n>>2]=i;f[n>>2]=i|p<>2];i=(f[o>>2]|0)+y|0;w=n+(i>>>5<<2)|0;f[d>>2]=w;f[o>>2]=i&31;i=x-y|0;if((i|0)<=0){j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}f[w>>2]=f[w>>2]&~(-1>>>(32-i|0))|p>>>y;f[o>>2]=i;j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}function le(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+9|0;i=d+8|0;j=f[(f[a+184>>2]|0)+(c<<2)>>2]&255;b[h>>0]=j;c=a+4|0;k=f[(f[c>>2]|0)+44>>2]|0;l=k+16|0;m=f[l+4>>2]|0;if((m|0)>0|(m|0)==0&(f[l>>2]|0)>>>0>0)n=j;else{f[g>>2]=f[k+4>>2];f[e>>2]=f[g>>2];ye(k,e,h,h+1|0)|0;n=b[h>>0]|0}a:do if(n<<24>>24>-1){k=a+172|0;j=f[(f[k>>2]|0)+((n<<24>>24)*136|0)>>2]|0;l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+56|0;m=b[h>>0]|0;o=f[k>>2]|0;k=f[o+(m*136|0)+132>>2]|0;switch(f[(f[(f[l>>2]|0)+84>>2]|0)+(j<<2)>>2]|0){case 0:{p=k;q=7;break a;break}case 1:{if(b[o+(m*136|0)+28>>0]|0){p=k;q=7;break a}break}default:{}}m=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=1;o=m+16|0;j=f[o+4>>2]|0;if(!((j|0)>0|(j|0)==0&(f[o>>2]|0)>>>0>0)){f[g>>2]=f[m+4>>2];f[e>>2]=f[g>>2];ye(m,e,i,i+1|0)|0}r=k}else{p=f[a+68>>2]|0;q=7}while(0);if((q|0)==7){q=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=0;a=q+16|0;h=f[a+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[a>>2]|0)>>>0>0)){f[g>>2]=f[q+4>>2];f[e>>2]=f[g>>2];ye(q,e,i,i+1|0)|0}r=p}p=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=r;r=p+16|0;c=f[r+4>>2]|0;if((c|0)>0|(c|0)==0&(f[r>>2]|0)>>>0>0){u=d;return 1}f[g>>2]=f[p+4>>2];f[e>>2]=f[g>>2];ye(p,e,i,i+1|0)|0;u=d;return 1}function me(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;h=u;u=u+16|0;i=h+4|0;j=h;k=a+60|0;f[a+64>>2]=g;g=a+8|0;Ah(g,b,d,e);d=a+56|0;l=f[d>>2]|0;m=f[l+4>>2]|0;n=f[l>>2]|0;o=m-n|0;if((o|0)<=0){u=h;return 1}p=(o>>>2)+-1|0;o=a+68|0;q=a+16|0;r=a+32|0;s=a+12|0;t=a+28|0;v=a+20|0;w=a+24|0;if(m-n>>2>>>0>p>>>0){x=p;y=n}else{z=l;mq(z)}while(1){f[j>>2]=f[y+(x<<2)>>2];f[i>>2]=f[j>>2];tb(k,i,b,x)|0;l=X(x,e)|0;n=b+(l<<2)|0;p=c+(l<<2)|0;l=f[g>>2]|0;if((l|0)>0){m=0;a=o;A=l;while(1){if((A|0)>0){l=0;do{B=f[a+(l<<2)>>2]|0;C=f[q>>2]|0;if((B|0)>(C|0)){D=f[r>>2]|0;f[D+(l<<2)>>2]=C;E=D}else{D=f[s>>2]|0;C=f[r>>2]|0;f[C+(l<<2)>>2]=(B|0)<(D|0)?D:B;E=C}l=l+1|0}while((l|0)<(f[g>>2]|0));F=E}else F=f[r>>2]|0;l=(f[n+(m<<2)>>2]|0)-(f[F+(m<<2)>>2]|0)|0;C=p+(m<<2)|0;f[C>>2]=l;if((l|0)>=(f[t>>2]|0)){if((l|0)>(f[w>>2]|0)){G=l-(f[v>>2]|0)|0;H=18}}else{G=(f[v>>2]|0)+l|0;H=18}if((H|0)==18){H=0;f[C>>2]=G}m=m+1|0;A=f[g>>2]|0;if((m|0)>=(A|0))break;else a=F}}x=x+-1|0;if((x|0)<=-1){H=3;break}a=f[d>>2]|0;y=f[a>>2]|0;if((f[a+4>>2]|0)-y>>2>>>0<=x>>>0){z=a;H=4;break}}if((H|0)==3){u=h;return 1}else if((H|0)==4)mq(z);return 0}function ne(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;h=u;u=u+16|0;i=h+4|0;j=h;k=a+60|0;f[a+64>>2]=g;g=a+8|0;Ah(g,b,d,e);d=a+56|0;l=f[d>>2]|0;m=f[l+4>>2]|0;n=f[l>>2]|0;o=m-n|0;if((o|0)<=0){u=h;return 1}p=(o>>>2)+-1|0;o=a+68|0;q=a+16|0;r=a+32|0;s=a+12|0;t=a+28|0;v=a+20|0;w=a+24|0;if(m-n>>2>>>0>p>>>0){x=p;y=n}else{z=l;mq(z)}while(1){f[j>>2]=f[y+(x<<2)>>2];f[i>>2]=f[j>>2];sb(k,i,b,x)|0;l=X(x,e)|0;n=b+(l<<2)|0;p=c+(l<<2)|0;l=f[g>>2]|0;if((l|0)>0){m=0;a=o;A=l;while(1){if((A|0)>0){l=0;do{B=f[a+(l<<2)>>2]|0;C=f[q>>2]|0;if((B|0)>(C|0)){D=f[r>>2]|0;f[D+(l<<2)>>2]=C;E=D}else{D=f[s>>2]|0;C=f[r>>2]|0;f[C+(l<<2)>>2]=(B|0)<(D|0)?D:B;E=C}l=l+1|0}while((l|0)<(f[g>>2]|0));F=E}else F=f[r>>2]|0;l=(f[n+(m<<2)>>2]|0)-(f[F+(m<<2)>>2]|0)|0;C=p+(m<<2)|0;f[C>>2]=l;if((l|0)>=(f[t>>2]|0)){if((l|0)>(f[w>>2]|0)){G=l-(f[v>>2]|0)|0;H=18}}else{G=(f[v>>2]|0)+l|0;H=18}if((H|0)==18){H=0;f[C>>2]=G}m=m+1|0;A=f[g>>2]|0;if((m|0)>=(A|0))break;else a=F}}x=x+-1|0;if((x|0)<=-1){H=3;break}a=f[d>>2]|0;y=f[a>>2]|0;if((f[a+4>>2]|0)-y>>2>>>0<=x>>>0){z=a;H=4;break}}if((H|0)==3){u=h;return 1}else if((H|0)==4)mq(z);return 0}function oe(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+12|0;g=f[e>>2]|0;h=(f[g+4>>2]|0)-(f[g>>2]|0)>>2;if(!h){u=b;return 1}i=a+152|0;j=a+140|0;k=a+144|0;l=a+148|0;a=0;m=g;while(1){f[d>>2]=(a>>>0)/3|0;f[c>>2]=f[d>>2];if(!(Rj(m,c)|0)?(g=f[e>>2]|0,(f[(f[g+12>>2]|0)+(a<<2)>>2]|0)==-1):0){n=a+1|0;o=((n>>>0)%3|0|0)==0?a+-2|0:n;if((o|0)==-1)p=-1;else p=f[(f[g>>2]|0)+(o<<2)>>2]|0;o=f[i>>2]|0;if((f[o+(p<<2)>>2]|0)==-1){g=f[k>>2]|0;n=f[l>>2]|0;if((g|0)==(n<<5|0)){if((g+1|0)<0){q=11;break}r=n<<6;n=g+32&-32;hi(j,g>>>0<1073741823?(r>>>0>>0?n:r):2147483647);s=f[k>>2]|0;t=f[i>>2]|0}else{s=g;t=o}f[k>>2]=s+1;o=(f[j>>2]|0)+(s>>>5<<2)|0;f[o>>2]=f[o>>2]&~(1<<(s&31));o=t+(p<<2)|0;if((f[o>>2]|0)==-1){r=a;n=o;while(1){f[n>>2]=g;o=r+1|0;a:do if((r|0)!=-1?(v=((o>>>0)%3|0|0)==0?r+-2|0:o,(v|0)!=-1):0){w=f[e>>2]|0;x=f[w+12>>2]|0;y=v;while(1){v=f[x+(y<<2)>>2]|0;if((v|0)==-1)break;z=v+1|0;A=((z>>>0)%3|0|0)==0?v+-2|0:z;if((A|0)==-1){B=-1;C=-1;break a}else y=A}x=y+1|0;A=((x>>>0)%3|0|0)==0?y+-2|0:x;if((A|0)==-1){B=y;C=-1}else{B=y;C=f[(f[w>>2]|0)+(A<<2)>>2]|0}}else{B=-1;C=-1}while(0);n=t+(C<<2)|0;if((f[n>>2]|0)!=-1)break;else r=B}}}}r=a+1|0;if(r>>>0>=h>>>0){q=3;break}a=r;m=f[e>>2]|0}if((q|0)==3){u=b;return 1}else if((q|0)==11)mq(j);return 0} +function pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=u;u=u+32|0;e=d+8|0;g=d;h=a+4|0;i=f[h>>2]|0;if(i>>>0>=b>>>0){f[h>>2]=b;u=d;return}j=a+8|0;k=f[j>>2]|0;l=k<<5;m=b-i|0;if(l>>>0>>0|i>>>0>(l-m|0)>>>0){f[e>>2]=0;n=e+4|0;f[n>>2]=0;o=e+8|0;f[o>>2]=0;if((b|0)<0)mq(a);p=k<<6;k=b+31&-32;hi(e,l>>>0<1073741823?(p>>>0>>0?k:p):2147483647);p=f[h>>2]|0;f[n>>2]=p+m;k=f[a>>2]|0;l=k;q=f[e>>2]|0;r=(l+(p>>>5<<2)-k<<3)+(p&31)|0;if((r|0)>0){p=r>>>5;Xl(q|0,k|0,p<<2|0)|0;k=r&31;r=q+(p<<2)|0;s=r;if(!k){t=0;v=s}else{w=-1>>>(32-k|0);f[r>>2]=f[r>>2]&~w|f[l+(p<<2)>>2]&w;t=k;v=s}}else{t=0;v=q}f[g>>2]=v;f[g+4>>2]=t;t=g;g=f[t>>2]|0;v=f[t+4>>2]|0;t=f[a>>2]|0;f[a>>2]=f[e>>2];f[e>>2]=t;e=f[h>>2]|0;f[h>>2]=f[n>>2];f[n>>2]=e;e=f[j>>2]|0;f[j>>2]=f[o>>2];f[o>>2]=e;if(t|0)br(t);x=g;y=v}else{v=(f[a>>2]|0)+(i>>>5<<2)|0;f[h>>2]=b;x=v;y=i&31}if(!m){u=d;return}i=(y|0)==0;v=x;if(c){if(i){z=m;A=x;B=v}else{c=32-y|0;b=c>>>0>m>>>0?m:c;f[v>>2]=f[v>>2]|-1>>>(c-b|0)&-1<>>5;hj(A|0,-1,c<<2|0)|0;A=z&31;z=B+(c<<2)|0;if(!A){u=d;return}f[z>>2]=f[z>>2]|-1>>>(32-A|0);u=d;return}else{if(i){C=m;D=x;E=v}else{x=32-y|0;i=x>>>0>m>>>0?m:x;f[v>>2]=f[v>>2]&~(-1>>>(x-i|0)&-1<>>5;hj(D|0,0,y<<2|0)|0;D=C&31;C=E+(y<<2)|0;if(!D){u=d;return}f[C>>2]=f[C>>2]&~(-1>>>(32-D|0));u=d;return}}function qe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;a=u;u=u+48|0;g=a+36|0;h=a+24|0;i=a+12|0;j=a;if(!c){k=0;u=a;return k|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;l=vj(d)|0;if(l>>>0>4294967279)mq(g);if(l>>>0<11){b[g+11>>0]=l;if(!l)m=g;else{n=g;o=7}}else{p=l+16&-16;q=dn(p)|0;f[g>>2]=q;f[g+8>>2]=p|-2147483648;f[g+4>>2]=l;n=q;o=7}if((o|0)==7){Rg(n|0,d|0,l|0)|0;m=n}b[m+l>>0]=0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;l=vj(e)|0;if(l>>>0>4294967279)mq(h);if(l>>>0<11){b[h+11>>0]=l;if(!l)r=h;else{s=h;o=13}}else{m=l+16&-16;n=dn(m)|0;f[h>>2]=n;f[h+8>>2]=m|-2147483648;f[h+4>>2]=l;s=n;o=13}if((o|0)==13){Rg(s|0,e|0,l|0)|0;r=s}b[r+l>>0]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;l=vj(d)|0;if(l>>>0>4294967279)mq(i);if(l>>>0<11){b[i+11>>0]=l;if(!l)t=i;else{v=i;o=19}}else{r=l+16&-16;s=dn(r)|0;f[i>>2]=s;f[i+8>>2]=r|-2147483648;f[i+4>>2]=l;v=s;o=19}if((o|0)==19){Rg(v|0,d|0,l|0)|0;t=v}b[t+l>>0]=0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;l=vj(e)|0;if(l>>>0>4294967279)mq(j);if(l>>>0<11){b[j+11>>0]=l;if(!l)w=j;else{x=j;o=25}}else{t=l+16&-16;v=dn(t)|0;f[j>>2]=v;f[j+8>>2]=t|-2147483648;f[j+4>>2]=l;x=v;o=25}if((o|0)==25){Rg(x|0,e|0,l|0)|0;w=x}b[w+l>>0]=0;en(c,i,j);if((b[j+11>>0]|0)<0)br(f[j>>2]|0);if((b[i+11>>0]|0)<0)br(f[i>>2]|0);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);k=1;u=a;return k|0}function re(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;f[a>>2]=f[c>>2];d=c+4|0;f[a+4>>2]=f[d>>2];e=c+8|0;f[a+8>>2]=f[e>>2];g=c+12|0;f[a+12>>2]=f[g>>2];f[d>>2]=0;f[e>>2]=0;f[g>>2]=0;g=c+16|0;f[a+16>>2]=f[g>>2];e=c+20|0;f[a+20>>2]=f[e>>2];d=c+24|0;f[a+24>>2]=f[d>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;b[a+28>>0]=b[c+28>>0]|0;d=a+32|0;e=c+32|0;f[d>>2]=0;g=a+36|0;f[g>>2]=0;f[a+40>>2]=0;f[d>>2]=f[e>>2];d=c+36|0;f[g>>2]=f[d>>2];g=c+40|0;f[a+40>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;e=a+44|0;d=c+44|0;f[e>>2]=0;g=a+48|0;f[g>>2]=0;f[a+52>>2]=0;f[e>>2]=f[d>>2];e=c+48|0;f[g>>2]=f[e>>2];g=c+52|0;f[a+52>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+56|0;e=c+56|0;f[d>>2]=0;g=a+60|0;f[g>>2]=0;f[a+64>>2]=0;f[d>>2]=f[e>>2];d=c+60|0;f[g>>2]=f[d>>2];g=c+64|0;f[a+64>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;f[a+68>>2]=f[c+68>>2];f[a+72>>2]=f[c+72>>2];e=a+76|0;d=c+76|0;f[e>>2]=0;g=a+80|0;f[g>>2]=0;f[a+84>>2]=0;f[e>>2]=f[d>>2];e=c+80|0;f[g>>2]=f[e>>2];g=c+84|0;f[a+84>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+88|0;e=c+88|0;f[d>>2]=0;g=a+92|0;f[g>>2]=0;f[a+96>>2]=0;f[d>>2]=f[e>>2];d=c+92|0;f[g>>2]=f[d>>2];g=c+96|0;f[a+96>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;b[a+100>>0]=b[c+100>>0]|0;e=a+104|0;d=c+104|0;f[e>>2]=0;g=a+108|0;f[g>>2]=0;f[a+112>>2]=0;f[e>>2]=f[d>>2];e=c+108|0;f[g>>2]=f[e>>2];g=c+112|0;f[a+112>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+116|0;e=c+116|0;f[d>>2]=0;g=a+120|0;f[g>>2]=0;f[a+124>>2]=0;f[d>>2]=f[e>>2];d=c+120|0;f[g>>2]=f[d>>2];g=c+124|0;f[a+124>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;f[a+128>>2]=f[c+128>>2];f[a+132>>2]=f[c+132>>2];return}function se(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;h=u;u=u+48|0;i=h+36|0;j=h+24|0;k=h+8|0;l=h+4|0;m=h;n=e+4|0;Bh(i,c,(f[n>>2]|0)-(f[e>>2]|0)>>2,2,g,d,1);g=f[i>>2]|0;o=(f[f[g>>2]>>2]|0)+(f[g+48>>2]|0)|0;f[k>>2]=-1;f[k+4>>2]=-1;f[k+8>>2]=-1;f[k+12>>2]=-1;p=f[c+4>>2]|0;if((p+-2|0)>>>0<=28){f[k>>2]=p;c=1<>2]=c+-1;p=c+-2|0;f[k+8>>2]=p;f[k+12>>2]=(p|0)/2|0;p=f[e>>2]|0;if((f[n>>2]|0)==(p|0))q=g;else{c=d+84|0;r=d+68|0;s=d+48|0;t=d+40|0;v=0;w=0;x=p;while(1){p=f[x+(v<<2)>>2]|0;if(!(b[c>>0]|0))y=f[(f[r>>2]|0)+(p<<2)>>2]|0;else y=p;p=s;z=f[p>>2]|0;A=f[p+4>>2]|0;p=t;B=f[p>>2]|0;C=on(B|0,f[p+4>>2]|0,y|0,0)|0;p=Tn(C|0,I|0,z|0,A|0)|0;Rg(j|0,(f[f[d>>2]>>2]|0)+p|0,B|0)|0;df(k,j,l,m);f[o+(w<<2)>>2]=f[l>>2];f[o+((w|1)<<2)>>2]=f[m>>2];v=v+1|0;x=f[e>>2]|0;if(v>>>0>=(f[n>>2]|0)-x>>2>>>0)break;else w=w+2|0}q=f[i>>2]|0}f[a>>2]=q;f[i>>2]=0;u=h;return}f[a>>2]=0;f[i>>2]=0;if(!g){u=h;return}i=g+88|0;a=f[i>>2]|0;f[i>>2]=0;if(a|0){i=f[a+8>>2]|0;if(i|0){q=a+12|0;if((f[q>>2]|0)!=(i|0))f[q>>2]=i;br(i)}br(a)}a=f[g+68>>2]|0;if(a|0){i=g+72|0;q=f[i>>2]|0;if((q|0)!=(a|0))f[i>>2]=q+(~((q+-4-a|0)>>>2)<<2);br(a)}a=g+64|0;q=f[a>>2]|0;f[a>>2]=0;if(q|0){a=f[q>>2]|0;if(a|0){i=q+4|0;if((f[i>>2]|0)!=(a|0))f[i>>2]=a;br(a)}br(q)}br(g);u=h;return}function te(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if(((e-h|0)/136|0)>>>0>=c>>>0){i=c;j=h;do{f[j>>2]=-1;Ek(j+4|0);b[j+100>>0]=1;k=j+104|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[k+24>>2]=0;j=(f[g>>2]|0)+136|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=(h-i|0)/136|0;h=j+c|0;if(h>>>0>31580641)mq(a);k=(e-i|0)/136|0;i=k<<1;e=k>>>0<15790320?(i>>>0>>0?h:i):31580641;do if(e)if(e>>>0>31580641){i=ra(8)|0;Wo(i,14941);f[i>>2]=6944;va(i|0,1080,114)}else{l=dn(e*136|0)|0;break}else l=0;while(0);i=l+(j*136|0)|0;j=i;h=l+(e*136|0)|0;e=c;c=j;l=i;do{f[l>>2]=-1;Ek(l+4|0);b[l+100>>0]=1;k=l+104|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[k+24>>2]=0;l=c+136|0;c=l;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;l=f[g>>2]|0;if((l|0)==(e|0)){m=j;n=e;o=e}else{k=l;l=j;j=i;do{k=k+-136|0;re(j+-136|0,k);j=l+-136|0;l=j}while((k|0)!=(e|0));m=l;n=f[a>>2]|0;o=f[g>>2]|0}f[a>>2]=m;f[g>>2]=c;f[d>>2]=h;h=n;if((o|0)!=(h|0)){d=o;do{o=f[d+-20>>2]|0;if(o|0){c=d+-16|0;g=f[c>>2]|0;if((g|0)!=(o|0))f[c>>2]=g+(~((g+-4-o|0)>>>2)<<2);br(o)}o=f[d+-32>>2]|0;if(o|0){g=d+-28|0;c=f[g>>2]|0;if((c|0)!=(o|0))f[g>>2]=c+(~((c+-4-o|0)>>>2)<<2);br(o)}yi(d+-132|0);d=d+-136|0}while((d|0)!=(h|0))}if(!n)return;br(n);return}function ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=f[b>>2]|0;b=a+12|0;d=(c|0)==-1;e=c+1|0;do if(!d){g=((e>>>0)%3|0|0)==0?c+-2|0:e;if(!((c>>>0)%3|0)){h=g;i=c+2|0;break}else{h=g;i=c+-1|0;break}}else{h=-1;i=-1}while(0);e=d?-1:(c>>>0)/3|0;g=a+28|0;j=(f[g>>2]|0)+(e>>>5<<2)|0;f[j>>2]=1<<(e&31)|f[j>>2];j=a+172|0;e=a+176|0;k=a+280|0;if(((!d?(d=f[(f[(f[b>>2]|0)+12>>2]|0)+(c<<2)>>2]|0,(d|0)!=-1):0)?(a=(d>>>0)/3|0,(f[(f[g>>2]|0)+(a>>>5<<2)>>2]&1<<(a&31)|0)==0):0)?(a=f[j>>2]|0,(f[e>>2]|0)!=(a|0)):0){d=c>>>5;l=1<<(c&31);c=0;m=a;do{a=(f[k>>2]|0)+(c<<5)|0;if(!(l&f[(f[m+(c*136|0)+4>>2]|0)+(d<<2)>>2]))Vi(a,0);else Vi(a,1);c=c+1|0;m=f[j>>2]|0}while(c>>>0<(((f[e>>2]|0)-m|0)/136|0)>>>0)}if((((h|0)!=-1?(m=f[(f[(f[b>>2]|0)+12>>2]|0)+(h<<2)>>2]|0,(m|0)!=-1):0)?(c=(m>>>0)/3|0,(f[(f[g>>2]|0)+(c>>>5<<2)>>2]&1<<(c&31)|0)==0):0)?(c=f[j>>2]|0,(f[e>>2]|0)!=(c|0)):0){m=h>>>5;d=1<<(h&31);h=0;l=c;do{c=(f[k>>2]|0)+(h<<5)|0;if(!(d&f[(f[l+(h*136|0)+4>>2]|0)+(m<<2)>>2]))Vi(c,0);else Vi(c,1);h=h+1|0;l=f[j>>2]|0}while(h>>>0<(((f[e>>2]|0)-l|0)/136|0)>>>0)}if((i|0)==-1)return 1;l=f[(f[(f[b>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;if((l|0)==-1)return 1;b=(l>>>0)/3|0;if(f[(f[g>>2]|0)+(b>>>5<<2)>>2]&1<<(b&31)|0)return 1;b=f[j>>2]|0;if((f[e>>2]|0)==(b|0))return 1;g=i>>>5;l=1<<(i&31);i=0;h=b;do{b=(f[k>>2]|0)+(i<<5)|0;if(!(l&f[(f[h+(i*136|0)+4>>2]|0)+(g<<2)>>2]))Vi(b,0);else Vi(b,1);i=i+1|0;h=f[j>>2]|0}while(i>>>0<(((f[e>>2]|0)-h|0)/136|0)>>>0);return 1}function ve(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+4|0;j=a+8|0;Nh((f[j>>2]|0)-(f[i>>2]|0)>>2,c)|0;k=f[i>>2]|0;if((f[j>>2]|0)==(k|0)){u=d;return 1}l=a+32|0;a=c+16|0;m=c+4|0;n=h+1|0;o=h+1|0;p=h+1|0;q=h+1|0;r=0;s=k;do{k=f[(f[(f[l>>2]|0)+8>>2]|0)+(f[s+(r<<2)>>2]<<2)>>2]|0;b[h>>0]=f[k+56>>2];t=a;v=f[t>>2]|0;w=f[t+4>>2]|0;if((w|0)>0|(w|0)==0&v>>>0>0){x=w;y=v}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,q)|0;v=a;x=f[v+4>>2]|0;y=f[v>>2]|0}b[h>>0]=f[k+28>>2];if((x|0)>0|(x|0)==0&y>>>0>0){z=x;A=y}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,p)|0;v=a;z=f[v+4>>2]|0;A=f[v>>2]|0}b[h>>0]=b[k+24>>0]|0;if((z|0)>0|(z|0)==0&A>>>0>0){B=z;C=A}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,o)|0;v=a;B=f[v+4>>2]|0;C=f[v>>2]|0}b[h>>0]=b[k+32>>0]|0;if(!((B|0)>0|(B|0)==0&C>>>0>0)){f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,n)|0}Nh(f[k+60>>2]|0,c)|0;r=r+1|0;s=f[i>>2]|0}while(r>>>0<(f[j>>2]|0)-s>>2>>>0);u=d;return 1}function we(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;d=u;u=u+32|0;e=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;wp(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;k=a+24|0;wp(k);l=b+4|0;if((a|0)!=(l|0)){f[h>>2]=f[l>>2];f[i>>2]=b+8;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Hc(a,g,e)}l=b+28|0;if((k|0)!=(l|0)){f[h>>2]=f[l>>2];f[i>>2]=b+32;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Hc(k,g,e)}f[j>>2]=0;k=c+8|0;l=c+12|0;c=f[l>>2]|0;m=f[k>>2]|0;if((c-m|0)<=0){u=d;return}n=b+20|0;b=m;m=c;c=0;while(1){o=f[(f[b+(c<<2)>>2]|0)+56>>2]|0;p=f[n>>2]|0;if(p){q=n;r=p;a:while(1){p=r;while(1){if((f[p+16>>2]|0)>=(o|0))break;s=f[p+4>>2]|0;if(!s){t=q;break a}else p=s}r=f[p>>2]|0;if(!r){t=p;break}else q=p}if((t|0)!=(n|0)?(o|0)>=(f[t+16>>2]|0):0){q=t+20|0;r=wd(a,j)|0;if((r|0)!=(q|0)){f[h>>2]=f[q>>2];f[i>>2]=t+24;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Hc(r,g,e)}v=f[j>>2]|0;w=f[k>>2]|0;x=f[l>>2]|0}else{v=c;w=b;x=m}}else{v=c;w=b;x=m}c=v+1|0;f[j>>2]=c;if((c|0)>=(x-w>>2|0))break;else{b=w;m=x}}u=d;return}function xe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+12|0;Nh(f[i>>2]|0,c)|0;if(!(f[i>>2]|0)){j=1;u=d;return j|0}k=c+16|0;l=c+4|0;m=h+1|0;n=h+1|0;o=h+1|0;p=0;while(1){q=f[a>>2]|0;r=f[q+(p<<3)>>2]|0;if(r>>>0>63)if(r>>>0>16383)if(r>>>0>4194303){j=0;s=20;break}else{t=2;s=13}else{t=1;s=13}else if(!r){v=p+1|0;w=0;while(1){if(f[q+(v+w<<3)>>2]|0){x=w;break}y=w+1|0;if(y>>>0<63)w=y;else{x=y;break}}b[h>>0]=x<<2|3;w=k;v=f[w+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[w>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];ye(c,e,h,o)|0}z=x+p|0}else{t=0;s=13}if((s|0)==13){s=0;b[h>>0]=t|r<<2;w=k;v=f[w+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[w>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];ye(c,e,h,n)|0}if(!t)z=p;else{w=0;do{w=w+1|0;b[h>>0]=r>>>((w<<3)+-2|0);v=k;q=f[v+4>>2]|0;if(!((q|0)>0|(q|0)==0&(f[v>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];ye(c,e,h,m)|0}}while((w|0)<(t|0));z=p}}p=z+1|0;if(p>>>0>=(f[i>>2]|0)>>>0){j=1;s=20;break}}if((s|0)==20){u=d;return j|0}return 0}function ye(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=f[a>>2]|0;h=g;i=(f[c>>2]|0)-h|0;c=g+i|0;j=e-d|0;if((j|0)<=0){k=c;return k|0}l=a+8|0;m=f[l>>2]|0;n=a+4|0;o=f[n>>2]|0;p=o;if((j|0)<=(m-p|0)){q=p-c|0;if((j|0)>(q|0)){r=d+q|0;if((r|0)==(e|0))s=o;else{t=r;u=o;while(1){b[u>>0]=b[t>>0]|0;t=t+1|0;v=(f[n>>2]|0)+1|0;f[n>>2]=v;if((t|0)==(e|0)){s=v;break}else u=v}}if((q|0)>0){w=r;x=s}else{k=c;return k|0}}else{w=e;x=o}s=x-(c+j)|0;r=c+s|0;if(r>>>0>>0){q=r;r=x;do{b[r>>0]=b[q>>0]|0;q=q+1|0;r=(f[n>>2]|0)+1|0;f[n>>2]=r}while((q|0)!=(o|0))}if(s|0)Xl(x+(0-s)|0,c|0,s|0)|0;if((w|0)==(d|0)){k=c;return k|0}else{y=d;z=c}while(1){b[z>>0]=b[y>>0]|0;y=y+1|0;if((y|0)==(w|0)){k=c;break}else z=z+1|0}return k|0}z=p-h+j|0;if((z|0)<0)mq(a);j=m-h|0;h=j<<1;m=j>>>0<1073741823?(h>>>0>>0?z:h):2147483647;h=c;if(!m)A=0;else A=dn(m)|0;z=A+i|0;i=z;j=A+m|0;if((d|0)==(e|0)){B=i;C=g}else{g=d;d=i;i=z;do{b[i>>0]=b[g>>0]|0;i=d+1|0;d=i;g=g+1|0}while((g|0)!=(e|0));B=d;C=f[a>>2]|0}d=h-C|0;e=z+(0-d)|0;if((d|0)>0)Rg(e|0,C|0,d|0)|0;d=(f[n>>2]|0)-h|0;if((d|0)>0){h=B;Rg(h|0,c|0,d|0)|0;D=h+d|0;E=f[a>>2]|0}else{D=B;E=C}f[a>>2]=e;f[n>>2]=D;f[l>>2]=j;if(!E){k=z;return k|0}br(E);k=z;return k|0}function ze(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=u;u=u+16|0;g=e;h=f[(f[c+4>>2]|0)+(d<<2)>>2]|0;d=f[c+28>>2]|0;c=f[(f[(f[d+4>>2]|0)+8>>2]|0)+(h<<2)>>2]|0;switch(f[c+28>>2]|0){case 5:case 6:case 3:case 4:case 1:case 2:{i=dn(40)|0;Ao(i);j=i;k=j;f[a>>2]=k;u=e;return}case 9:{l=3;break}default:{}}if((l|0)==3){i=f[d+48>>2]|0;d=dn(32)|0;f[g>>2]=d;f[g+8>>2]=-2147483616;f[g+4>>2]=17;m=d;n=12932;o=m+17|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[d+17>>0]=0;d=i+16|0;n=f[d>>2]|0;if(n){p=d;q=n;a:while(1){n=q;while(1){if((f[n+16>>2]|0)>=(h|0))break;r=f[n+4>>2]|0;if(!r){s=p;break a}else n=r}q=f[n>>2]|0;if(!q){s=n;break}else p=n}if(((s|0)!=(d|0)?(h|0)>=(f[s+16>>2]|0):0)?(h=s+20|0,(sh(h,g)|0)!=0):0)t=yk(h,g,-1)|0;else l=12}else l=12;if((l|0)==12)t=yk(i,g,-1)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if((t|0)>0)if((f[c+56>>2]|0)==1){c=dn(48)|0;m=c;o=m+48|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(o|0));Ao(c);f[c>>2]=2256;f[c+40>>2]=1152;f[c+44>>2]=-1;j=c;k=j;f[a>>2]=k;u=e;return}else{c=dn(64)|0;mm(c);j=c;k=j;f[a>>2]=k;u=e;return}}c=dn(36)|0;wm(c);j=c;k=j;f[a>>2]=k;u=e;return}function Ae(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=(c|0)==(a|0);b[c+12>>0]=d&1;if(d)return;else e=c;while(1){g=e+8|0;h=f[g>>2]|0;c=h+12|0;if(b[c>>0]|0){i=23;break}j=h+8|0;k=f[j>>2]|0;d=f[k>>2]|0;if((d|0)==(h|0)){l=f[k+4>>2]|0;if(!l){i=7;break}m=l+12|0;if(!(b[m>>0]|0))n=m;else{i=7;break}}else{if(!d){i=16;break}m=d+12|0;if(!(b[m>>0]|0))n=m;else{i=16;break}}b[c>>0]=1;c=(k|0)==(a|0);b[k+12>>0]=c&1;b[n>>0]=1;if(c){i=23;break}else e=k}if((i|0)==7){if((f[h>>2]|0)==(e|0)){o=h;p=k}else{n=h+4|0;a=f[n>>2]|0;c=f[a>>2]|0;f[n>>2]=c;if(!c)q=k;else{f[c+8>>2]=h;q=f[j>>2]|0}f[a+8>>2]=q;q=f[j>>2]|0;f[((f[q>>2]|0)==(h|0)?q:q+4|0)>>2]=a;f[a>>2]=h;f[j>>2]=a;o=a;p=f[a+8>>2]|0}b[o+12>>0]=1;b[p+12>>0]=0;o=f[p>>2]|0;a=o+4|0;q=f[a>>2]|0;f[p>>2]=q;if(q|0)f[q+8>>2]=p;q=p+8|0;f[o+8>>2]=f[q>>2];c=f[q>>2]|0;f[((f[c>>2]|0)==(p|0)?c:c+4|0)>>2]=o;f[a>>2]=p;f[q>>2]=o;return}else if((i|0)==16){if((f[h>>2]|0)==(e|0)){o=e+4|0;q=f[o>>2]|0;f[h>>2]=q;if(!q)r=k;else{f[q+8>>2]=h;r=f[j>>2]|0}f[g>>2]=r;r=f[j>>2]|0;f[((f[r>>2]|0)==(h|0)?r:r+4|0)>>2]=e;f[o>>2]=h;f[j>>2]=e;s=e;t=f[e+8>>2]|0}else{s=h;t=k}b[s+12>>0]=1;b[t+12>>0]=0;s=t+4|0;k=f[s>>2]|0;h=f[k>>2]|0;f[s>>2]=h;if(h|0)f[h+8>>2]=t;h=t+8|0;f[k+8>>2]=f[h>>2];s=f[h>>2]|0;f[((f[s>>2]|0)==(t|0)?s:s+4|0)>>2]=k;f[k>>2]=t;f[h>>2]=k;return}else if((i|0)==23)return}function Be(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=Oa,C=Oa;h=u;u=u+16|0;i=h;j=e+4|0;k=b[d+24>>0]|0;l=k<<24>>24;Bh(a,c,(f[j>>2]|0)-(f[e>>2]|0)>>2,l,g,d,1);g=f[a>>2]|0;a=(f[f[g>>2]>>2]|0)+(f[g+48>>2]|0)|0;g=f[c+4>>2]|0;sq(i);yo(i,$(n[c+20>>2]),(1<>>0>1073741823?-1:l<<2)|0;m=f[j>>2]|0;j=f[e>>2]|0;e=j;if((m|0)==(j|0)){$q(g);u=h;return}o=d+68|0;p=d+48|0;q=d+40|0;r=c+8|0;c=(b[d+84>>0]|0)==0;s=m-j>>2;if(k<<24>>24>0){t=0;v=0}else{k=0;do{j=f[e+(k<<2)>>2]|0;if(c)w=f[(f[o>>2]|0)+(j<<2)>>2]|0;else w=j;j=p;m=f[j>>2]|0;x=f[j+4>>2]|0;j=q;y=f[j>>2]|0;z=on(y|0,f[j+4>>2]|0,w|0,0)|0;j=Tn(z|0,I|0,m|0,x|0)|0;Rg(g|0,(f[f[d>>2]>>2]|0)+j|0,y|0)|0;k=k+1|0}while(k>>>0>>0);$q(g);u=h;return}while(1){k=f[e+(t<<2)>>2]|0;if(c)A=f[(f[o>>2]|0)+(k<<2)>>2]|0;else A=k;k=p;w=f[k>>2]|0;y=f[k+4>>2]|0;k=q;j=f[k>>2]|0;x=on(j|0,f[k+4>>2]|0,A|0,0)|0;k=Tn(x|0,I|0,w|0,y|0)|0;Rg(g|0,(f[f[d>>2]>>2]|0)+k|0,j|0)|0;j=f[r>>2]|0;B=$(n[i>>2]);k=0;y=v;while(1){C=$(n[g+(k<<2)>>2]);w=~~$(J($($(B*$(C-$(n[j+(k<<2)>>2])))+$(.5))));f[a+(y<<2)>>2]=w;k=k+1|0;if((k|0)==(l|0))break;else y=y+1|0}t=t+1|0;if(t>>>0>=s>>>0)break;else v=v+l|0}$q(g);u=h;return}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=f[b>>2]|0;b=a+12|0;e=(d|0)==-1;do if(e){g=1;h=-1;i=-1}else{j=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((j|0)!=-1){k=f[(f[b>>2]|0)+12>>2]|0;l=j;while(1){j=f[k+(l<<2)>>2]|0;if((j|0)==-1){m=0;n=l;break}o=j+1|0;l=((o>>>0)%3|0|0)==0?j+-2|0:o;if((l|0)==-1){m=1;n=-1;break}}if(e){g=m;h=-1;i=n;break}else{p=m;q=n}}else{p=1;q=-1}g=p;h=f[(f[f[b>>2]>>2]|0)+(d<<2)>>2]|0;i=q}while(0);if(c){c=(f[a+84>>2]|0)+(h>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(h&31);r=1}else r=0;c=f[(f[a+152>>2]|0)+(h<<2)>>2]|0;q=(f[a+140>>2]|0)+(c>>>5<<2)|0;f[q>>2]=f[q>>2]|1<<(c&31);if(!g){g=(((i>>>0)%3|0|0)==0?2:-1)+i|0;if((g|0)==-1){s=-1;t=i}else{s=f[(f[f[b>>2]>>2]|0)+(g<<2)>>2]|0;t=i}}else{s=-1;t=-1}if((s|0)==(h|0)){u=r;return u|0}i=f[a+84>>2]|0;a=r;r=s;s=t;while(1){t=i+(r>>>5<<2)|0;f[t>>2]=f[t>>2]|1<<(r&31);t=a+1|0;g=s+1|0;a:do if((s|0)!=-1?(c=((g>>>0)%3|0|0)==0?s+-2|0:g,(c|0)!=-1):0){q=f[b>>2]|0;d=f[q+12>>2]|0;p=c;while(1){c=f[d+(p<<2)>>2]|0;if((c|0)==-1)break;n=c+1|0;m=((n>>>0)%3|0|0)==0?c+-2|0:n;if((m|0)==-1){v=-1;w=-1;break a}else p=m}d=(((p>>>0)%3|0|0)==0?2:-1)+p|0;if((d|0)==-1){v=-1;w=p}else{v=f[(f[q>>2]|0)+(d<<2)>>2]|0;w=p}}else{v=-1;w=-1}while(0);if((v|0)==(h|0)){u=t;break}else{a=t;r=v;s=w}}return u|0}function De(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;c=a+4|0;d=f[c>>2]|0;e=a+100|0;if(d>>>0<(f[e>>2]|0)>>>0){f[c>>2]=d+1;g=h[d>>0]|0}else g=Di(a)|0;switch(g|0){case 43:case 45:{d=(g|0)==45&1;i=f[c>>2]|0;if(i>>>0<(f[e>>2]|0)>>>0){f[c>>2]=i+1;j=h[i>>0]|0}else j=Di(a)|0;if((b|0)!=0&(j+-48|0)>>>0>9?(f[e>>2]|0)!=0:0){f[c>>2]=(f[c>>2]|0)+-1;k=d;l=j}else{k=d;l=j}break}default:{k=0;l=g}}if((l+-48|0)>>>0>9)if(!(f[e>>2]|0)){m=-2147483648;n=0}else{f[c>>2]=(f[c>>2]|0)+-1;m=-2147483648;n=0}else{g=0;j=l;while(1){g=j+-48+(g*10|0)|0;l=f[c>>2]|0;if(l>>>0<(f[e>>2]|0)>>>0){f[c>>2]=l+1;o=h[l>>0]|0}else o=Di(a)|0;if(!((o+-48|0)>>>0<10&(g|0)<214748364))break;else j=o}j=((g|0)<0)<<31>>31;if((o+-48|0)>>>0<10){l=o;d=g;b=j;while(1){i=on(d|0,b|0,10,0)|0;p=I;q=Tn(l|0,((l|0)<0)<<31>>31|0,-48,-1)|0;r=Tn(q|0,I|0,i|0,p|0)|0;p=I;i=f[c>>2]|0;if(i>>>0<(f[e>>2]|0)>>>0){f[c>>2]=i+1;s=h[i>>0]|0}else s=Di(a)|0;if((s+-48|0)>>>0<10&((p|0)<21474836|(p|0)==21474836&r>>>0<2061584302)){l=s;d=r;b=p}else{t=s;u=r;v=p;break}}}else{t=o;u=g;v=j}if((t+-48|0)>>>0<10)do{t=f[c>>2]|0;if(t>>>0<(f[e>>2]|0)>>>0){f[c>>2]=t+1;w=h[t>>0]|0}else w=Di(a)|0}while((w+-48|0)>>>0<10);if(f[e>>2]|0)f[c>>2]=(f[c>>2]|0)+-1;c=(k|0)!=0;k=Vn(0,0,u|0,v|0)|0;m=c?I:v;n=c?k:u}I=m;return n|0}function Ee(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;b=a+1176|0;c=f[b>>2]|0;if(c|0){d=a+1180|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);br(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}br(g)}g=a+1164|0;b=f[g>>2]|0;if(b|0){j=a+1168|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);br(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}br(l)}l=f[a+1152>>2]|0;if(l|0){g=a+1156|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l)}l=f[a+1140>>2]|0;if(l|0){m=a+1144|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);br(l)}l=f[a+1128>>2]|0;if(!l){n=a+1108|0;dl(n);o=a+1088|0;dl(o);p=a+1068|0;dl(p);q=a+1036|0;tj(q);r=a+12|0;xh(r);return}g=a+1132|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l);n=a+1108|0;dl(n);o=a+1088|0;dl(o);p=a+1068|0;dl(p);q=a+1036|0;tj(q);r=a+12|0;xh(r);return}function Fe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=u;u=u+16|0;e=d;g=a+4|0;h=f[g>>2]|0;i=f[(f[a>>2]|0)+52>>2]|0;if(!h){if(!(Sa[i&31](a,c,0)|0)){j=0;u=d;return j|0}}else if(!(Sa[i&31](a,c,f[(f[h+4>>2]|0)+80>>2]|0)|0)){j=0;u=d;return j|0}if(!(b[a+28>>0]|0)){j=1;u=d;return j|0}h=f[a+8>>2]|0;i=f[a+32>>2]|0;a=f[h+80>>2]|0;f[e>>2]=0;k=e+4|0;f[k>>2]=0;f[e+8>>2]=0;do if(a)if(a>>>0>1073741823)mq(e);else{l=a<<2;m=dn(l)|0;f[e>>2]=m;n=m+(a<<2)|0;f[e+8>>2]=n;hj(m|0,0,l|0)|0;f[k>>2]=n;o=m;p=n;q=m;break}else{o=0;p=0;q=0}while(0);e=f[c+4>>2]|0;a=f[c>>2]|0;c=a;a:do if((e|0)!=(a|0)){m=e-a>>2;if(b[h+84>>0]|0){n=0;while(1){f[o+(f[c+(n<<2)>>2]<<2)>>2]=n;n=n+1|0;if(n>>>0>=m>>>0)break a}}n=f[h+68>>2]|0;l=0;do{f[o+(f[n+(f[c+(l<<2)>>2]<<2)>>2]<<2)>>2]=l;l=l+1|0}while(l>>>0>>0)}while(0);c=f[(f[(f[g>>2]|0)+4>>2]|0)+80>>2]|0;b:do if(c|0){g=f[i+68>>2]|0;if(b[h+84>>0]|0){a=0;while(1){f[g+(a<<2)>>2]=f[o+(a<<2)>>2];a=a+1|0;if(a>>>0>=c>>>0)break b}}a=f[h+68>>2]|0;e=0;do{f[g+(e<<2)>>2]=f[o+(f[a+(e<<2)>>2]<<2)>>2];e=e+1|0}while(e>>>0>>0)}while(0);if(o|0){if((p|0)!=(o|0))f[k>>2]=p+(~((p+-4-o|0)>>>2)<<2);br(q)}j=1;u=d;return j|0}function Ge(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;yh(a+12|0);rn(a+1036|0);to(a+1068|0);to(a+1088|0);to(a+1108|0);e=a+1128|0;f[e>>2]=0;g=a+1132|0;f[g>>2]=0;f[a+1136>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)mq(e);else{i=b<<2;j=dn(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+1136>>2]=k;hj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+1140|0;f[g>>2]=0;e=a+1144|0;f[e>>2]=0;f[a+1148>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+1148>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=a+1152|0;f[g>>2]=0;e=a+1156|0;f[e>>2]=0;f[a+1160>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+1160>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;hj(i|0,0,k|0)|0;f[e>>2]=j}fk(a+1164|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);br(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=dn(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;hj(k|0,0,h|0)|0;f[j>>2]=e}fk(a+1176|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g);u=c;return}function He(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0;g=u;u=u+16|0;h=g;i=b+16|0;f[a>>2]=f[i>>2];f[a+4>>2]=f[i+4>>2];f[a+8>>2]=f[i+8>>2];f[a+12>>2]=f[i+12>>2];f[a+16>>2]=f[i+16>>2];f[a+20>>2]=f[i+20>>2];j=a+8|0;f[j>>2]=(f[j>>2]|0)+d;j=(d|0)>0;if(j){k=b+4|0;l=a+16|0;m=a+12|0;n=f[b>>2]|0;o=n;q=0;r=o;s=n;n=o;while(1){o=f[c+(q<<2)>>2]|0;t=f[k>>2]|0;if(t-s>>2>>>0>o>>>0){v=r;w=n}else{x=o+1|0;f[h>>2]=0;y=t-s>>2;z=s;A=t;if(x>>>0<=y>>>0)if(x>>>0>>0?(t=z+(x<<2)|0,(t|0)!=(A|0)):0){f[k>>2]=A+(~((A+-4-t|0)>>>2)<<2);B=r}else B=r;else{kh(b,x-y|0,h);B=f[b>>2]|0}v=B;w=B}y=w+(o<<2)|0;x=f[y>>2]|0;s=w;if((x|0)<=1)if((x|0)==0?(f[l>>2]=(f[l>>2]|0)+1,o>>>0>(f[m>>2]|0)>>>0):0){f[m>>2]=o;C=0.0}else C=0.0;else{D=+(x|0);C=+Fg(D)*D}x=(f[y>>2]|0)+1|0;f[y>>2]=x;D=+(x|0);E=+Fg(D)*D-C;p[a>>3]=+p[a>>3]+E;q=q+1|0;if((q|0)==(d|0))break;else{r=v;n=w}}}if(e){f[i>>2]=f[a>>2];f[i+4>>2]=f[a+4>>2];f[i+8>>2]=f[a+8>>2];f[i+12>>2]=f[a+12>>2];f[i+16>>2]=f[a+16>>2];u=g;return}if(!j){u=g;return}j=f[b>>2]|0;b=0;do{a=j+(f[c+(b<<2)>>2]<<2)|0;f[a>>2]=(f[a>>2]|0)+-1;b=b+1|0}while((b|0)!=(d|0));u=g;return}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(f[c>>2]|0)+(4-1)&~(4-1);e=f[d>>2]|0;f[c>>2]=d+4;f[a>>2]=e;break a;break}case 10:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a;break}case 11:{d=(f[c>>2]|0)+(4-1)&~(4-1);e=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=e;f[d+4>>2]=0;break a;break}case 12:{d=(f[c>>2]|0)+(8-1)&~(8-1);e=d;g=f[e>>2]|0;h=f[e+4>>2]|0;f[c>>2]=d+8;d=a;f[d>>2]=g;f[d+4>>2]=h;break a;break}case 13:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=(d&65535)<<16>>16;d=a;f[d>>2]=h;f[d+4>>2]=((h|0)<0)<<31>>31;break a;break}case 14:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=a;f[h>>2]=d&65535;f[h+4>>2]=0;break a;break}case 15:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=(d&255)<<24>>24;d=a;f[d>>2]=h;f[d+4>>2]=((h|0)<0)<<31>>31;break a;break}case 16:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=a;f[h>>2]=d&255;f[h+4>>2]=0;break a;break}case 17:{h=(f[c>>2]|0)+(8-1)&~(8-1);i=+p[h>>3];f[c>>2]=h+8;p[a>>3]=i;break a;break}case 18:{h=(f[c>>2]|0)+(8-1)&~(8-1);i=+p[h>>3];f[c>>2]=h+8;p[a>>3]=i;break a;break}default:break a}while(0);while(0);return}function Je(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;c=u;u=u+16|0;d=c+4|0;e=c;g=c+8|0;if(!(Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0)){h=0;u=c;return h|0}i=a+44|0;j=f[i>>2]|0;k=a+8|0;l=a+12|0;m=f[l>>2]|0;n=f[k>>2]|0;b[g>>0]=(m-n|0)>>>2;o=j+16|0;p=f[o+4>>2]|0;if((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0){q=k;r=n;s=m}else{f[e>>2]=f[j+4>>2];f[d>>2]=f[e>>2];ye(j,d,g,g+1|0)|0;q=k;r=f[k>>2]|0;s=f[l>>2]|0}a:do if((r|0)!=(s|0)){l=a+4|0;k=r;while(1){g=f[k>>2]|0;k=k+4|0;if(!(Sa[f[(f[g>>2]|0)+8>>2]&31](g,a,f[l>>2]|0)|0)){h=0;break}if((k|0)==(s|0))break a}u=c;return h|0}while(0);if(!(vc(a)|0)){h=0;u=c;return h|0}s=a+32|0;r=f[s>>2]|0;k=a+36|0;l=f[k>>2]|0;b:do if((r|0)!=(l|0)){g=r;do{if(!(Ra[f[(f[a>>2]|0)+40>>2]&127](a,f[g>>2]|0)|0)){h=0;t=18;break}g=g+4|0}while((g|0)!=(l|0));if((t|0)==18){u=c;return h|0}g=f[s>>2]|0;d=f[k>>2]|0;if((g|0)!=(d|0)){j=g;while(1){g=f[(f[q>>2]|0)+(f[j>>2]<<2)>>2]|0;j=j+4|0;if(!(Ra[f[(f[g>>2]|0)+12>>2]&127](g,f[i>>2]|0)|0)){h=0;break}if((j|0)==(d|0))break b}u=c;return h|0}}while(0);h=Qa[f[(f[a>>2]|0)+44>>2]&127](a)|0;u=c;return h|0}function Ke(a,b){a=a|0;b=b|0;fd(a,b);fd(a+32|0,b);fd(a+64|0,b);fd(a+96|0,b);fd(a+128|0,b);fd(a+160|0,b);fd(a+192|0,b);fd(a+224|0,b);fd(a+256|0,b);fd(a+288|0,b);fd(a+320|0,b);fd(a+352|0,b);fd(a+384|0,b);fd(a+416|0,b);fd(a+448|0,b);fd(a+480|0,b);fd(a+512|0,b);fd(a+544|0,b);fd(a+576|0,b);fd(a+608|0,b);fd(a+640|0,b);fd(a+672|0,b);fd(a+704|0,b);fd(a+736|0,b);fd(a+768|0,b);fd(a+800|0,b);fd(a+832|0,b);fd(a+864|0,b);fd(a+896|0,b);fd(a+928|0,b);fd(a+960|0,b);fd(a+992|0,b);fd(a+1024|0,b);return}function Le(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=u;u=u+64|0;g=e+60|0;h=e;i=dn(80)|0;j=f[c+8>>2]|0;f[i+4>>2]=0;f[i>>2]=3232;k=i+8|0;l=i+12|0;m=l+44|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[k>>2]=3256;n=i+56|0;f[n>>2]=0;f[i+60>>2]=0;f[i+64>>2]=0;f[i+68>>2]=j;f[i+72>>2]=d;o=i+76|0;f[o>>2]=0;p=i;q=f[c+12>>2]|0;r=h+4|0;l=r+4|0;m=l+40|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[h>>2]=3256;l=h+48|0;f[l>>2]=0;m=h+52|0;f[m>>2]=0;f[h+56>>2]=0;s=q;f[r>>2]=s;t=((f[s+4>>2]|0)-(f[q>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;Xg(h+24|0,t,g);t=f[r>>2]|0;r=(f[t+28>>2]|0)-(f[t+24>>2]|0)>>2;b[g>>0]=0;Xg(h+36|0,r,g);f[h+8>>2]=q;f[h+12>>2]=d;f[h+16>>2]=j;f[h+20>>2]=i;f[o>>2]=c+72;ef(k,h)|0;Yf(n,f[l>>2]|0,f[m>>2]|0);f[a>>2]=p;f[h>>2]=3256;p=f[l>>2]|0;if(p|0){l=f[m>>2]|0;if((l|0)!=(p|0))f[m>>2]=l+(~((l+-4-p|0)>>>2)<<2);br(p)}f[h>>2]=3276;p=f[h+36>>2]|0;if(p|0)br(p);p=f[h+24>>2]|0;if(!p){u=e;return}br(p);u=e;return}function Me(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;c=u;u=u+32|0;d=c;e=a+4|0;g=f[a>>2]|0;h=(f[e>>2]|0)-g>>2;i=h+1|0;if(i>>>0>1073741823)mq(a);j=a+8|0;k=(f[j>>2]|0)-g|0;g=k>>1;l=k>>2>>>0<536870911?(g>>>0>>0?i:g):1073741823;f[d+12>>2]=0;f[d+16>>2]=a+8;do if(l)if(l>>>0>1073741823){g=ra(8)|0;Wo(g,14941);f[g>>2]=6944;va(g|0,1080,114)}else{m=dn(l<<2)|0;break}else m=0;while(0);f[d>>2]=m;g=m+(h<<2)|0;h=d+8|0;i=d+4|0;f[i>>2]=g;k=m+(l<<2)|0;l=d+12|0;f[l>>2]=k;m=f[b>>2]|0;f[b>>2]=0;f[g>>2]=m;m=g+4|0;f[h>>2]=m;b=f[a>>2]|0;n=f[e>>2]|0;if((n|0)==(b|0)){o=g;p=l;q=h;r=b;s=m;t=n;v=k;w=o;f[a>>2]=w;f[i>>2]=r;f[e>>2]=s;f[q>>2]=t;x=f[j>>2]|0;f[j>>2]=v;f[p>>2]=x;f[d>>2]=r;Wh(d);u=c;return}else{y=n;z=g}do{y=y+-4|0;g=f[y>>2]|0;f[y>>2]=0;f[z+-4>>2]=g;z=(f[i>>2]|0)+-4|0;f[i>>2]=z}while((y|0)!=(b|0));o=z;p=l;q=h;r=f[a>>2]|0;s=f[h>>2]|0;t=f[e>>2]|0;v=f[l>>2]|0;w=o;f[a>>2]=w;f[i>>2]=r;f[e>>2]=s;f[q>>2]=t;x=f[j>>2]|0;f[j>>2]=v;f[p>>2]=x;f[d>>2]=r;Wh(d);u=c;return}function Ne(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=u;u=u+32|0;e=d+12|0;g=d;h=hl(c,0)|0;if(!h){f[a>>2]=0;u=d;return}i=f[c+100>>2]|0;j=f[c+96>>2]|0;c=i-j|0;k=(c|0)/12|0;f[e>>2]=0;l=e+4|0;f[l>>2]=0;f[e+8>>2]=0;m=j;do if(c)if(k>>>0>357913941)mq(e);else{n=dn(c)|0;f[e>>2]=n;f[e+8>>2]=n+(k*12|0);hj(n|0,0,c|0)|0;f[l>>2]=n+c;o=n;break}else o=0;while(0);f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;a:do if((i|0)!=(j|0)){c=g+4|0;n=g+8|0;if(b[h+84>>0]|0){p=0;while(1){q=m+(p*12|0)|0;f[g>>2]=f[q>>2];f[g+4>>2]=f[q+4>>2];f[g+8>>2]=f[q+8>>2];f[o+(p*12|0)>>2]=f[g>>2];f[o+(p*12|0)+4>>2]=f[c>>2];f[o+(p*12|0)+8>>2]=f[n>>2];p=p+1|0;if(p>>>0>=k>>>0)break a}}p=f[h+68>>2]|0;q=0;do{r=f[p+(f[m+(q*12|0)>>2]<<2)>>2]|0;f[g>>2]=r;s=f[p+(f[m+(q*12|0)+4>>2]<<2)>>2]|0;f[c>>2]=s;t=f[p+(f[m+(q*12|0)+8>>2]<<2)>>2]|0;f[n>>2]=t;f[o+(q*12|0)>>2]=r;f[o+(q*12|0)+4>>2]=s;f[o+(q*12|0)+8>>2]=t;q=q+1|0}while(q>>>0>>0)}while(0);Cj(a,e);a=f[e>>2]|0;if(a|0){e=f[l>>2]|0;if((e|0)!=(a|0))f[l>>2]=e+(~(((e+-12-a|0)>>>0)/12|0)*12|0);br(a)}u=d;return}function Oe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;rn(a+12|0);to(a+44|0);to(a+64|0);to(a+84|0);e=a+104|0;f[e>>2]=0;g=a+108|0;f[g>>2]=0;f[a+112>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)mq(e);else{i=b<<2;j=dn(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+112>>2]=k;hj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+116|0;f[g>>2]=0;e=a+120|0;f[e>>2]=0;f[a+124>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+124>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=a+128|0;f[g>>2]=0;e=a+132|0;f[e>>2]=0;f[a+136>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+136>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;hj(i|0,0,k|0)|0;f[e>>2]=j}fk(a+140|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);br(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=dn(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;hj(k|0,0,h|0)|0;f[j>>2]=e}fk(a+152|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g);u=c;return}function Pe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;to(a+12|0);to(a+32|0);to(a+52|0);to(a+72|0);e=a+92|0;f[e>>2]=0;g=a+96|0;f[g>>2]=0;f[a+100>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)mq(e);else{i=b<<2;j=dn(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+100>>2]=k;hj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+104|0;f[g>>2]=0;e=a+108|0;f[e>>2]=0;f[a+112>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+112>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=a+116|0;f[g>>2]=0;e=a+120|0;f[e>>2]=0;f[a+124>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+124>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;hj(i|0,0,k|0)|0;f[e>>2]=j}fk(a+128|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);br(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=dn(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;hj(k|0,0,h|0)|0;f[j>>2]=e}fk(a+140|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g);u=c;return}function Qe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;d=dn(40)|0;e=d+16|0;dj(e,c);dj(d+28|0,c+12|0);c=a+4|0;g=f[c>>2]|0;do if(g){h=b[d+27>>0]|0;i=h<<24>>24<0;j=i?f[d+20>>2]|0:h&255;h=i?f[e>>2]|0:e;i=g;while(1){k=i+16|0;l=b[k+11>>0]|0;m=l<<24>>24<0;n=m?f[i+20>>2]|0:l&255;l=n>>>0>>0?n:j;if((l|0)!=0?(o=Pk(h,m?f[k>>2]|0:k,l)|0,(o|0)!=0):0)if((o|0)<0)p=7;else p=9;else if(j>>>0>>0)p=7;else p=9;if((p|0)==7){p=0;n=f[i>>2]|0;if(!n){p=8;break}else q=n}else if((p|0)==9){p=0;r=i+4|0;n=f[r>>2]|0;if(!n){p=11;break}else q=n}i=q}if((p|0)==8){s=i;t=i;break}else if((p|0)==11){s=i;t=r;break}}else{s=c;t=c}while(0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=s;f[t>>2]=d;s=f[f[a>>2]>>2]|0;if(!s){u=d;v=a+4|0;w=f[v>>2]|0;Ae(w,u);x=a+8|0;y=f[x>>2]|0;z=y+1|0;f[x>>2]=z;return d|0}f[a>>2]=s;u=f[t>>2]|0;v=a+4|0;w=f[v>>2]|0;Ae(w,u);x=a+8|0;y=f[x>>2]|0;z=y+1|0;f[x>>2]=z;return d|0}function Re(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=Oa,B=Oa;g=u;u=u+16|0;h=g;i=b[d+24>>0]|0;j=i<<24>>24;Bh(a,c,e,j,0,d,1);k=f[a>>2]|0;a=(f[f[k>>2]>>2]|0)+(f[k+48>>2]|0)|0;k=f[c+4>>2]|0;sq(h);yo(h,$(n[c+20>>2]),(1<>>0>1073741823?-1:j<<2)|0;if(!e){$q(k);u=g;return}l=d+68|0;m=d+48|0;o=d+40|0;p=c+8|0;c=(b[d+84>>0]|0)==0;if(i<<24>>24>0){q=0;r=0}else{i=0;do{if(c)s=f[(f[l>>2]|0)+(i<<2)>>2]|0;else s=i;t=m;v=f[t>>2]|0;w=f[t+4>>2]|0;t=o;x=f[t>>2]|0;y=on(x|0,f[t+4>>2]|0,s|0,0)|0;t=Tn(y|0,I|0,v|0,w|0)|0;Rg(k|0,(f[f[d>>2]>>2]|0)+t|0,x|0)|0;i=i+1|0}while((i|0)!=(e|0));$q(k);u=g;return}while(1){if(c)z=f[(f[l>>2]|0)+(r<<2)>>2]|0;else z=r;i=m;s=f[i>>2]|0;x=f[i+4>>2]|0;i=o;t=f[i>>2]|0;w=on(t|0,f[i+4>>2]|0,z|0,0)|0;i=Tn(w|0,I|0,s|0,x|0)|0;Rg(k|0,(f[f[d>>2]>>2]|0)+i|0,t|0)|0;t=f[p>>2]|0;A=$(n[h>>2]);i=0;x=q;while(1){B=$(n[k+(i<<2)>>2]);s=~~$(J($($(A*$(B-$(n[t+(i<<2)>>2])))+$(.5))));f[a+(x<<2)>>2]=s;i=i+1|0;if((i|0)==(j|0))break;else x=x+1|0}r=r+1|0;if((r|0)==(e|0))break;else q=q+j|0}$q(k);u=g;return}function Se(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3340;ii(a+200|0);b=f[a+184>>2]|0;if(b|0){c=a+188|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}_i(a+172|0);b=f[a+152>>2]|0;if(b|0){d=a+156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+140>>2]|0;if(b|0)br(b);b=f[a+128>>2]|0;if(b|0){c=b;do{b=c;c=f[c>>2]|0;br(b)}while((c|0)!=0)}c=a+120|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)br(b);b=f[a+108>>2]|0;if(b|0){c=a+112|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);br(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+84>>2]|0;if(b|0)br(b);b=f[a+72>>2]|0;if(b|0){c=a+76|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+28>>2]|0;if(b|0)br(b);b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=a+12|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;ui(a);br(a);return}function Te(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=a+140|0;c=f[b>>2]|0;if(c|0){d=a+144|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);br(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}br(g)}g=a+128|0;b=f[g>>2]|0;if(b|0){j=a+132|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);br(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}br(l)}l=f[a+116>>2]|0;if(l|0){g=a+120|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l)}l=f[a+104>>2]|0;if(l|0){m=a+108|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);br(l)}l=f[a+92>>2]|0;if(!l){n=a+72|0;dl(n);o=a+52|0;dl(o);p=a+32|0;dl(p);q=a+12|0;dl(q);return}g=a+96|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l);n=a+72|0;dl(n);o=a+52|0;dl(o);p=a+32|0;dl(p);q=a+12|0;dl(q);return}function Ue(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=a+152|0;c=f[b>>2]|0;if(c|0){d=a+156|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);br(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}br(g)}g=a+140|0;b=f[g>>2]|0;if(b|0){j=a+144|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);br(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}br(l)}l=f[a+128>>2]|0;if(l|0){g=a+132|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l)}l=f[a+116>>2]|0;if(l|0){m=a+120|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);br(l)}l=f[a+104>>2]|0;if(!l){n=a+84|0;dl(n);o=a+64|0;dl(o);p=a+44|0;dl(p);q=a+12|0;tj(q);return}g=a+108|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l);n=a+84|0;dl(n);o=a+64|0;dl(o);p=a+44|0;dl(p);q=a+12|0;tj(q);return}function Ve(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3080;jj(a+200|0);b=f[a+184>>2]|0;if(b|0){c=a+188|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}_i(a+172|0);b=f[a+152>>2]|0;if(b|0){d=a+156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+140>>2]|0;if(b|0)br(b);b=f[a+128>>2]|0;if(b|0){c=b;do{b=c;c=f[c>>2]|0;br(b)}while((c|0)!=0)}c=a+120|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)br(b);b=f[a+108>>2]|0;if(b|0){c=a+112|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);br(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+84>>2]|0;if(b|0)br(b);b=f[a+72>>2]|0;if(b|0){c=a+76|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+28>>2]|0;if(b|0)br(b);b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=a+12|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;ui(a);br(a);return}function We(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+48|0;d=c+44|0;e=c+40|0;g=c+36|0;h=c+32|0;i=c;f[h>>2]=f[a+60>>2];j=b+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,h,h+4|0)|0}rn(i);lk(i);if((f[h>>2]|0)>0){k=a+56|0;l=1;m=0;do{n=l;l=(f[(f[k>>2]|0)+(m>>>5<<2)>>2]&1<<(m&31)|0)!=0;Vi(i,n^l^1);m=m+1|0}while((m|0)<(f[h>>2]|0))}fd(i,b);f[g>>2]=f[a+12>>2];h=j;m=f[h>>2]|0;l=f[h+4>>2]|0;if((l|0)>0|(l|0)==0&m>>>0>0){o=l;p=m}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;m=j;o=f[m+4>>2]|0;p=f[m>>2]|0}f[g>>2]=f[a+20>>2];if((o|0)>0|(o|0)==0&p>>>0>0){tj(i);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;tj(i);u=c;return 1}function Xe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=f[c>>2]|0;c=f[d>>2]|0;e=f[a+4>>2]|0;g=f[d+4>>2]|0;h=e+-1|0;i=(h&e|0)==0;if(!i)if(g>>>0>>0)j=g;else j=(g>>>0)%(e>>>0)|0;else j=h&g;g=(f[a>>2]|0)+(j<<2)|0;k=f[g>>2]|0;while(1){l=f[k>>2]|0;if((l|0)==(d|0))break;else k=l}if((k|0)!=(a+8|0)){l=f[k+4>>2]|0;if(!i)if(l>>>0>>0)m=l;else m=(l>>>0)%(e>>>0)|0;else m=l&h;if((m|0)==(j|0)){n=c;o=21}else o=13}else o=13;do if((o|0)==13){if(c|0){m=f[c+4>>2]|0;if(!i)if(m>>>0>>0)p=m;else p=(m>>>0)%(e>>>0)|0;else p=m&h;if((p|0)==(j|0)){q=c;r=c;o=22;break}}f[g>>2]=0;n=f[d>>2]|0;o=21}while(0);if((o|0)==21){g=n;if(!n)s=g;else{q=n;r=g;o=22}}if((o|0)==22){o=f[q+4>>2]|0;if(!i)if(o>>>0>>0)t=o;else t=(o>>>0)%(e>>>0)|0;else t=o&h;if((t|0)==(j|0))s=r;else{f[(f[a>>2]|0)+(t<<2)>>2]=k;s=f[d>>2]|0}}f[k>>2]=s;f[d>>2]=0;s=a+12|0;f[s>>2]=(f[s>>2]|0)+-1;if(!d)return c|0;s=d+8|0;a=f[d+20>>2]|0;if(a|0){k=d+24|0;if((f[k>>2]|0)!=(a|0))f[k>>2]=a;br(a)}if((b[s+11>>0]|0)<0)br(f[s>>2]|0);br(d);return c|0}function Ye(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;b=u;u=u+16|0;c=b+4|0;d=b;f[c>>2]=0;e=c+4|0;f[e>>2]=0;f[c+8>>2]=0;g=a+56|0;h=f[g>>2]|0;i=(f[h+100>>2]|0)-(f[h+96>>2]|0)|0;j=(i|0)/12|0;if(!i){k=0;l=0}else{i=c+8|0;m=0;n=0;o=h;h=0;p=0;while(1){q=f[o+96>>2]|0;r=f[q+(n*12|0)>>2]|0;s=r-m|0;t=((s|0)>-1?s:0-s|0)<<1|s>>>31;f[d>>2]=t;if((h|0)==(p|0)){Ci(c,d);v=f[e>>2]|0;w=f[i>>2]|0}else{f[h>>2]=t;t=h+4|0;f[e>>2]=t;v=t;w=p}t=f[q+(n*12|0)+4>>2]|0;s=t-r|0;r=((s|0)>-1?s:0-s|0)<<1|s>>>31;f[d>>2]=r;if((v|0)==(w|0)){Ci(c,d);x=f[e>>2]|0;y=f[i>>2]|0}else{f[v>>2]=r;r=v+4|0;f[e>>2]=r;x=r;y=w}r=f[q+(n*12|0)+8>>2]|0;q=r-t|0;t=((q|0)>-1?q:0-q|0)<<1|q>>>31;f[d>>2]=t;if((x|0)==(y|0))Ci(c,d);else{f[x>>2]=t;f[e>>2]=x+4}t=n+1|0;if(t>>>0>=j>>>0)break;m=r;n=t;o=f[g>>2]|0;h=f[e>>2]|0;p=f[i>>2]|0}k=f[c>>2]|0;l=f[e>>2]|0}Dc(k,l-k>>2,1,0,f[a+44>>2]|0)|0;a=f[c>>2]|0;if(!a){u=b;return 1}c=f[e>>2]|0;if((c|0)!=(a|0))f[e>>2]=c+(~((c+-4-a|0)>>>2)<<2);br(a);u=b;return 1}function Ze(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=f[a+12>>2]|0;e=a+108|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{kh(i,h-m|0,3220);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=a+112|0;a=c+68|0;c=f[o+96>>2]|0;o=0;while(1){h=o*3|0;if((h|0)==-1){q=0;r=12;break}i=f[d>>2]|0;g=f[i+(h<<2)>>2]|0;if((g|0)==-1){q=0;r=12;break}k=f[(f[m>>2]|0)+12>>2]|0;l=f[k+(g<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}g=f[a>>2]|0;f[g+(f[c+(o*12|0)>>2]<<2)>>2]=l;l=h+1|0;if((l|0)==-1){q=0;r=12;break}j=f[i+(l<<2)>>2]|0;if((j|0)==-1){q=0;r=12;break}l=f[k+(j<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}f[g+(f[c+(o*12|0)+4>>2]<<2)>>2]=l;l=h+2|0;if((l|0)==-1){q=0;r=12;break}h=f[i+(l<<2)>>2]|0;if((h|0)==-1){q=0;r=12;break}l=f[k+(h<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}f[g+(f[c+(o*12|0)+8>>2]<<2)>>2]=l;o=o+1|0;if(o>>>0>=e>>>0){q=1;r=12;break}}if((r|0)==12)return q|0;return 0}function _e(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+48|0;d=c+44|0;e=c+40|0;g=c+36|0;h=c+32|0;i=c;f[h>>2]=f[a+80>>2];j=b+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,h,h+4|0)|0}rn(i);lk(i);if((f[h>>2]|0)>0){k=a+76|0;l=1;m=0;do{n=l;l=(f[(f[k>>2]|0)+(m>>>5<<2)>>2]&1<<(m&31)|0)!=0;Vi(i,n^l^1);m=m+1|0}while((m|0)<(f[h>>2]|0))}fd(i,b);f[g>>2]=f[a+12>>2];h=j;m=f[h>>2]|0;l=f[h+4>>2]|0;if((l|0)>0|(l|0)==0&m>>>0>0){o=l;p=m}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;m=j;o=f[m+4>>2]|0;p=f[m>>2]|0}f[g>>2]=f[a+16>>2];if((o|0)>0|(o|0)==0&p>>>0>0){tj(i);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;tj(i);u=c;return 1}function $e(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=a+12|0;h=f[g>>2]|0;$j(f[a+4>>2]|0,(f[h+28>>2]|0)-(f[h+24>>2]|0)>>2);h=a+96|0;i=f[g>>2]|0;j=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;f[c>>2]=0;i=a+100|0;k=f[i>>2]|0;l=f[h>>2]|0;m=k-l>>2;n=l;l=k;if(j>>>0<=m>>>0){if(j>>>0>>0?(k=n+(j<<2)|0,(k|0)!=(l|0)):0)f[i>>2]=l+(~((l+-4-k|0)>>>2)<<2)}else kh(h,j-m|0,c);m=a+116|0;a=f[m>>2]|0;if(!a){j=f[g>>2]|0;g=(f[j+4>>2]|0)-(f[j>>2]|0)>>2;j=(g>>>0)/3|0;if(g>>>0<=2){o=1;u=b;return o|0}g=0;while(1){f[d>>2]=g*3;f[c>>2]=f[d>>2];g=g+1|0;if(!(vb(e,c)|0)){o=0;p=15;break}if((g|0)>=(j|0)){o=1;p=15;break}}if((p|0)==15){u=b;return o|0}}else{j=f[a>>2]|0;if((f[a+4>>2]|0)==(j|0)){o=1;u=b;return o|0}a=0;g=j;while(1){f[d>>2]=f[g+(a<<2)>>2];f[c>>2]=f[d>>2];a=a+1|0;if(!(vb(e,c)|0)){o=0;p=15;break}j=f[m>>2]|0;g=f[j>>2]|0;if(a>>>0>=(f[j+4>>2]|0)-g>>2>>>0){o=1;p=15;break}}if((p|0)==15){u=b;return o|0}}return 0}function af(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=f[a+12>>2]|0;e=a+68|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{kh(i,h-m|0,3220);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=a+72|0;a=c+68|0;c=f[o+96>>2]|0;o=0;while(1){h=o*3|0;if((h|0)==-1){q=0;r=12;break}i=f[d>>2]|0;g=f[i+(h<<2)>>2]|0;if((g|0)==-1){q=0;r=12;break}k=f[(f[m>>2]|0)+12>>2]|0;l=f[k+(g<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}g=f[a>>2]|0;f[g+(f[c+(o*12|0)>>2]<<2)>>2]=l;l=h+1|0;if((l|0)==-1){q=0;r=12;break}j=f[i+(l<<2)>>2]|0;if((j|0)==-1){q=0;r=12;break}l=f[k+(j<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}f[g+(f[c+(o*12|0)+4>>2]<<2)>>2]=l;l=h+2|0;if((l|0)==-1){q=0;r=12;break}h=f[i+(l<<2)>>2]|0;if((h|0)==-1){q=0;r=12;break}l=f[k+(h<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}f[g+(f[c+(o*12|0)+8>>2]<<2)>>2]=l;o=o+1|0;if(o>>>0>=e>>>0){q=1;r=12;break}}if((r|0)==12)return q|0;return 0}function bf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=u;u=u+16|0;d=c+12|0;e=c+8|0;g=c+4|0;h=c;if(!b){i=dn(76)|0;j=dn(12)|0;k=f[(f[a+4>>2]|0)+80>>2]|0;f[j+4>>2]=0;f[j>>2]=3584;f[j+8>>2]=k;f[h>>2]=j;ml(i,h,0);j=i;f[g>>2]=j;i=a+12|0;k=f[i>>2]|0;if(k>>>0<(f[a+16>>2]|0)>>>0){f[g>>2]=0;f[k>>2]=j;f[i>>2]=k+4;l=g}else{yg(a+8|0,g);l=g}g=f[l>>2]|0;f[l>>2]=0;if(g|0)Va[f[(f[g>>2]|0)+4>>2]&127](g);g=f[h>>2]|0;f[h>>2]=0;if(!g){u=c;return 1}Va[f[(f[g>>2]|0)+4>>2]&127](g);u=c;return 1}g=f[f[a+8>>2]>>2]|0;f[d>>2]=b;a=g+4|0;h=g+8|0;l=f[h>>2]|0;if((l|0)==(f[g+12>>2]|0))Ci(a,d);else{f[l>>2]=b;f[h>>2]=l+4}l=f[d>>2]|0;b=g+16|0;k=g+20|0;g=f[k>>2]|0;i=f[b>>2]|0;j=g-i>>2;m=i;if((l|0)<(j|0)){n=m;o=l}else{i=l+1|0;f[e>>2]=-1;p=g;if(i>>>0<=j>>>0)if(i>>>0>>0?(g=m+(i<<2)|0,(g|0)!=(p|0)):0){f[k>>2]=p+(~((p+-4-g|0)>>>2)<<2);q=l;r=m}else{q=l;r=m}else{kh(b,i-j|0,e);q=f[d>>2]|0;r=f[b>>2]|0}n=r;o=q}f[n+(o<<2)>>2]=((f[h>>2]|0)-(f[a>>2]|0)>>2)+-1;u=c;return 1}function cf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=a+8|0;e=f[d>>2]|0;g=f[a>>2]|0;h=g;do if(e-g>>3>>>0>=b>>>0){i=a+4|0;j=f[i>>2]|0;k=j-g>>3;l=k>>>0>>0;m=l?k:b;n=j;if(m|0){j=m;m=h;while(1){o=c;p=f[o+4>>2]|0;q=m;f[q>>2]=f[o>>2];f[q+4>>2]=p;j=j+-1|0;if(!j)break;else m=m+8|0}}if(!l){m=h+(b<<3)|0;if((m|0)==(n|0))return;else{r=i;s=n+(~((n+-8-m|0)>>>3)<<3)|0;break}}else{m=b-k|0;j=m;p=n;while(1){q=c;o=f[q+4>>2]|0;t=p;f[t>>2]=f[q>>2];f[t+4>>2]=o;j=j+-1|0;if(!j)break;else p=p+8|0}r=i;s=n+(m<<3)|0;break}}else{p=g;if(!g)u=e;else{j=a+4|0;k=f[j>>2]|0;if((k|0)!=(h|0))f[j>>2]=k+(~((k+-8-g|0)>>>3)<<3);br(p);f[d>>2]=0;f[j>>2]=0;f[a>>2]=0;u=0}if(b>>>0>536870911)mq(a);j=u>>2;p=u>>3>>>0<268435455?(j>>>0>>0?b:j):536870911;if(p>>>0>536870911)mq(a);j=dn(p<<3)|0;k=a+4|0;f[k>>2]=j;f[a>>2]=j;f[d>>2]=j+(p<<3);p=b;l=j;while(1){o=c;t=f[o+4>>2]|0;q=l;f[q>>2]=f[o>>2];f[q+4>>2]=t;p=p+-1|0;if(!p)break;else l=l+8|0}r=k;s=j+(b<<3)|0}while(0);f[r>>2]=s;return}function df(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=+$(n[b>>2]);g=+K(+e);h=+$(n[b+4>>2]);i=g+ +K(+h);g=+$(n[b+8>>2]);j=i+ +K(+g);b=j>1.0e-06;i=1.0/j;k=f[a+12>>2]|0;j=+(k|0);l=~~+J(+((b?i*e:1.0)*j+.5));m=~~+J(+((b?i*h:0.0)*j+.5));o=(l|0)>-1;p=k-(o?l:0-l|0)-((m|0)>-1?m:0-m|0)|0;l=(p|0)<0;q=(l?((m|0)>0?p:0-p|0):0)+m|0;m=l?0:p;p=(b?i*g:0.0)<0.0?0-m|0:m;do if(!o){if((q|0)<0)r=(p|0)>-1?p:0-p|0;else r=(f[a+8>>2]|0)-((p|0)>-1?p:0-p|0)|0;if((p|0)<0){s=(q|0)>-1?q:0-q|0;t=r;break}else{s=(f[a+8>>2]|0)-((q|0)>-1?q:0-q|0)|0;t=r;break}}else{s=k+p|0;t=k+q|0}while(0);q=(t|0)==0;p=(s|0)==0;r=f[a+8>>2]|0;if(!(s|t)){u=r;v=r;f[c>>2]=u;f[d>>2]=v;return}a=(r|0)==(s|0);if(q&a){u=s;v=s;f[c>>2]=u;f[d>>2]=v;return}o=(r|0)==(t|0);if(p&o){u=t;v=t;f[c>>2]=u;f[d>>2]=v;return}if(q&(k|0)<(s|0)){u=0;v=(k<<1)-s|0;f[c>>2]=u;f[d>>2]=v;return}if(o&(k|0)>(s|0)){u=t;v=(k<<1)-s|0;f[c>>2]=u;f[d>>2]=v;return}if(a&(k|0)>(t|0)){u=(k<<1)-t|0;v=s;f[c>>2]=u;f[d>>2]=v;return}if(!p){u=t;v=s;f[c>>2]=u;f[d>>2]=v;return}u=(k|0)<(t|0)?(k<<1)-t|0:t;v=0;f[c>>2]=u;f[d>>2]=v;return}function ef(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=a+4|0;d=b+4|0;f[c>>2]=f[d>>2];f[c+4>>2]=f[d+4>>2];f[c+8>>2]=f[d+8>>2];f[c+12>>2]=f[d+12>>2];f[c+16>>2]=f[d+16>>2];d=a+24|0;c=b+24|0;if((a|0)==(b|0))return a|0;e=b+28|0;g=f[e>>2]|0;if(!g)h=0;else{i=a+32|0;do if(g>>>0>f[i>>2]<<5>>>0){j=f[d>>2]|0;if(!j)k=g;else{br(j);f[d>>2]=0;f[i>>2]=0;f[a+28>>2]=0;k=f[e>>2]|0}if((k|0)<0)mq(d);else{j=((k+-1|0)>>>5)+1|0;l=dn(j<<2)|0;f[d>>2]=l;f[a+28>>2]=0;f[i>>2]=j;m=f[e>>2]|0;n=l;break}}else{m=g;n=f[d>>2]|0}while(0);Xl(n|0,f[c>>2]|0,((m+-1|0)>>>5<<2)+4|0)|0;h=f[e>>2]|0}f[a+28>>2]=h;h=a+36|0;e=b+36|0;m=b+40|0;b=f[m>>2]|0;if(!b)o=0;else{c=a+44|0;do if(b>>>0>f[c>>2]<<5>>>0){n=f[h>>2]|0;if(!n)p=b;else{br(n);f[h>>2]=0;f[c>>2]=0;f[a+40>>2]=0;p=f[m>>2]|0}if((p|0)<0)mq(h);else{n=((p+-1|0)>>>5)+1|0;d=dn(n<<2)|0;f[h>>2]=d;f[a+40>>2]=0;f[c>>2]=n;q=f[m>>2]|0;r=d;break}}else{q=b;r=f[h>>2]|0}while(0);Xl(r|0,f[e>>2]|0,((q+-1|0)>>>5<<2)+4|0)|0;o=f[m>>2]|0}f[a+40>>2]=o;return a|0}function ff(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],ye(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];ye(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;og(d);m=a+1068|0;Cm(m);k=a+1088|0;Cm(k);l=a+1108|0;Cm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];jb(a,i,h);Ke(d,e);mg(m,e);mg(k,e);mg(l,e);u=g;return 1}function gf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],ye(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];ye(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;og(d);m=a+1068|0;Cm(m);k=a+1088|0;Cm(k);l=a+1108|0;Cm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];mb(a,i,h);Ke(d,e);mg(m,e);mg(k,e);mg(l,e);u=g;return 1}function hf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;c=u;u=u+32|0;d=c;e=a+8|0;g=f[e>>2]|0;h=a+4|0;i=f[h>>2]|0;j=i;if(g-i>>2>>>0>=b>>>0){hj(i|0,0,b<<2|0)|0;f[h>>2]=i+(b<<2);u=c;return}k=f[a>>2]|0;l=i-k>>2;m=l+b|0;n=k;if(m>>>0>1073741823)mq(a);o=g-k|0;p=o>>1;q=o>>2>>>0<536870911?(p>>>0>>0?m:p):1073741823;f[d+12>>2]=0;f[d+16>>2]=a+8;do if(q)if(q>>>0>1073741823){p=ra(8)|0;Wo(p,14941);f[p>>2]=6944;va(p|0,1080,114)}else{r=dn(q<<2)|0;break}else r=0;while(0);f[d>>2]=r;p=r+(l<<2)|0;l=d+8|0;m=d+4|0;f[m>>2]=p;o=r+(q<<2)|0;q=d+12|0;f[q>>2]=o;r=p+(b<<2)|0;hj(p|0,0,b<<2|0)|0;f[l>>2]=r;if((j|0)==(n|0)){s=p;t=q;v=l;w=k;x=r;y=i;z=o;A=g}else{g=j;j=p;do{g=g+-4|0;p=f[g>>2]|0;f[g>>2]=0;f[j+-4>>2]=p;j=(f[m>>2]|0)+-4|0;f[m>>2]=j}while((g|0)!=(n|0));s=j;t=q;v=l;w=f[a>>2]|0;x=f[l>>2]|0;y=f[h>>2]|0;z=f[q>>2]|0;A=f[e>>2]|0}f[a>>2]=s;f[m>>2]=w;f[h>>2]=x;f[v>>2]=y;f[e>>2]=z;f[t>>2]=A;f[d>>2]=w;Wh(d);u=c;return}function jf(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=u;u=u+16|0;h=d;i=f[a+124>>2]|0;if(!i){u=d;return}j=i+-1|0;k=(j&i|0)==0;if(!k)if(i>>>0>g>>>0)l=g;else l=(g>>>0)%(i>>>0)|0;else l=j&g;m=f[(f[a+120>>2]|0)+(l<<2)>>2]|0;if(!m){u=d;return}n=f[m>>2]|0;if(!n){u=d;return}a:do if(k){m=n;while(1){o=f[m+4>>2]|0;p=(o|0)==(g|0);if(!(p|(o&j|0)==(l|0))){q=24;break}if(p?(f[m+8>>2]|0)==(g|0):0){r=m;break a}m=f[m>>2]|0;if(!m){q=24;break}}if((q|0)==24){u=d;return}}else{m=n;while(1){p=f[m+4>>2]|0;if((p|0)==(g|0)){if((f[m+8>>2]|0)==(g|0)){r=m;break a}}else{if(p>>>0>>0)s=p;else s=(p>>>0)%(i>>>0)|0;if((s|0)!=(l|0)){q=24;break}}m=f[m>>2]|0;if(!m){q=24;break}}if((q|0)==24){u=d;return}}while(0);q=f[r+12>>2]|0;if((q|0)==-1){u=d;return}f[h>>2]=q;f[h+4>>2]=c;b[h+8>>0]=e&1;e=a+112|0;c=f[e>>2]|0;if((c|0)==(f[a+116>>2]|0))ki(a+108|0,h);else{f[c>>2]=f[h>>2];f[c+4>>2]=f[h+4>>2];f[c+8>>2]=f[h+8>>2];f[e>>2]=(f[e>>2]|0)+12}u=d;return}function kf(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=d[b>>1]|0;e=d[b+2>>1]|0;g=d[b+4>>1]|0;h=d[b+6>>1]|0;b=((((c^318)&65535)+239^e&65535)+239^g&65535)+239^h&65535;i=f[a+4>>2]|0;if(!i){j=0;return j|0}k=i+-1|0;l=(k&i|0)==0;if(!l)if(b>>>0>>0)m=b;else m=(b>>>0)%(i>>>0)|0;else m=b&k;n=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!n){j=0;return j|0}a=f[n>>2]|0;if(!a){j=0;return j|0}if(l){l=a;while(1){n=f[l+4>>2]|0;o=(n|0)==(b|0);if(!(o|(n&k|0)==(m|0))){j=0;p=25;break}if((((o?(o=l+8|0,(d[o>>1]|0)==c<<16>>16):0)?(d[o+2>>1]|0)==e<<16>>16:0)?(d[l+12>>1]|0)==g<<16>>16:0)?(d[o+6>>1]|0)==h<<16>>16:0){j=l;p=25;break}l=f[l>>2]|0;if(!l){j=0;p=25;break}}if((p|0)==25)return j|0}else q=a;while(1){a=f[q+4>>2]|0;if((a|0)==(b|0)){l=q+8|0;if((((d[l>>1]|0)==c<<16>>16?(d[l+2>>1]|0)==e<<16>>16:0)?(d[q+12>>1]|0)==g<<16>>16:0)?(d[l+6>>1]|0)==h<<16>>16:0){j=q;p=25;break}}else{if(a>>>0>>0)r=a;else r=(a>>>0)%(i>>>0)|0;if((r|0)!=(m|0)){j=0;p=25;break}}q=f[q>>2]|0;if(!q){j=0;p=25;break}}if((p|0)==25)return j|0;return 0}function lf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],ye(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];ye(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;Cm(d);m=a+32|0;Cm(m);k=a+52|0;Cm(k);l=a+72|0;Cm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];hb(a,i,h);mg(d,e);mg(m,e);mg(k,e);mg(l,e);u=g;return 1}function mf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],ye(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];ye(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;lk(d);m=a+44|0;Cm(m);k=a+64|0;Cm(k);l=a+84|0;Cm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];nb(a,i,h);fd(d,e);mg(m,e);mg(k,e);mg(l,e);u=g;return 1}function nf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;a=u;u=u+16|0;e=a+4|0;g=a;h=a+8|0;i=d+11|0;j=b[i>>0]|0;k=j<<24>>24<0;if(k){l=f[d+4>>2]|0;if(l>>>0>255){m=0;u=a;return m|0}else n=l}else n=j&255;if(!n){b[h>>0]=0;n=c+16|0;l=f[n+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[n>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}m=1;u=a;return m|0}n=d+4|0;l=f[n>>2]|0;b[h>>0]=k?l:j&255;k=c+16|0;o=k;p=f[o>>2]|0;q=f[o+4>>2]|0;if((q|0)>0|(q|0)==0&p>>>0>0){r=j;s=q;t=p;v=l}else{f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0;h=k;r=b[i>>0]|0;s=f[h+4>>2]|0;t=f[h>>2]|0;v=f[n>>2]|0}n=r<<24>>24<0;h=n?f[d>>2]|0:d;if(!((s|0)>0|(s|0)==0&t>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+(n?v:r&255)|0)|0}m=1;u=a;return m|0}function of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=a+4|0;d=f[a>>2]|0;e=((f[c>>2]|0)-d|0)/24|0;g=e+1|0;if(g>>>0>178956970)mq(a);h=a+8|0;i=((f[h>>2]|0)-d|0)/24|0;d=i<<1;j=i>>>0<89478485?(d>>>0>>0?g:d):178956970;do if(j)if(j>>>0>178956970){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{k=dn(j*24|0)|0;break}else k=0;while(0);d=k+(e*24|0)|0;g=d;i=k+(j*24|0)|0;f[d>>2]=1180;f[k+(e*24|0)+4>>2]=f[b+4>>2];_j(k+(e*24|0)+8|0,b+8|0);f[k+(e*24|0)+20>>2]=f[b+20>>2];b=d+24|0;e=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(e|0)){l=g;m=e;n=e}else{j=k;k=g;g=d;do{f[g+-24>>2]=1180;f[g+-20>>2]=f[j+-20>>2];d=g+-16|0;o=j+-16|0;f[d>>2]=0;p=g+-12|0;f[p>>2]=0;f[g+-8>>2]=0;f[d>>2]=f[o>>2];d=j+-12|0;f[p>>2]=f[d>>2];p=j+-8|0;f[g+-8>>2]=f[p>>2];f[p>>2]=0;f[d>>2]=0;f[o>>2]=0;f[g+-4>>2]=f[j+-4>>2];j=j+-24|0;g=k+-24|0;k=g}while((j|0)!=(e|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=b;f[h>>2]=i;i=m;if((n|0)!=(i|0)){h=n;do{h=h+-24|0;Va[f[f[h>>2]>>2]&127](h)}while((h|0)!=(i|0))}if(!m)return;br(m);return}function pf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=b[c>>0]|0;e=b[c+1>>0]|0;g=b[c+2>>0]|0;h=b[c+3>>0]|0;c=(((d&255^318)+239^e&255)+239^g&255)+239^h&255;i=f[a+4>>2]|0;if(!i){j=0;return j|0}k=i+-1|0;l=(k&i|0)==0;if(!l)if(c>>>0>>0)m=c;else m=(c>>>0)%(i>>>0)|0;else m=c&k;n=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!n){j=0;return j|0}a=f[n>>2]|0;if(!a){j=0;return j|0}if(l){l=a;while(1){n=f[l+4>>2]|0;o=(n|0)==(c|0);if(!(o|(n&k|0)==(m|0))){j=0;p=25;break}if((((o?(o=l+8|0,(b[o>>0]|0)==d<<24>>24):0)?(b[o+1>>0]|0)==e<<24>>24:0)?(b[o+2>>0]|0)==g<<24>>24:0)?(b[o+3>>0]|0)==h<<24>>24:0){j=l;p=25;break}l=f[l>>2]|0;if(!l){j=0;p=25;break}}if((p|0)==25)return j|0}else q=a;while(1){a=f[q+4>>2]|0;if((a|0)==(c|0)){l=q+8|0;if((((b[l>>0]|0)==d<<24>>24?(b[l+1>>0]|0)==e<<24>>24:0)?(b[l+2>>0]|0)==g<<24>>24:0)?(b[l+3>>0]|0)==h<<24>>24:0){j=q;p=25;break}}else{if(a>>>0>>0)r=a;else r=(a>>>0)%(i>>>0)|0;if((r|0)!=(m|0)){j=0;p=25;break}}q=f[q>>2]|0;if(!q){j=0;p=25;break}}if((p|0)==25)return j|0;return 0}function qf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;d=u;u=u+32|0;h=d+24|0;i=d+16|0;j=d;k=d+8|0;l=a+40|0;f[a+44>>2]=g;g=a+36|0;m=f[g>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;if((p|0)<=0){u=d;return 1}q=(p>>>2)+-1|0;p=a+8|0;r=a+48|0;s=a+52|0;a=i+4|0;t=j+4|0;v=h+4|0;if(n-o>>2>>>0>q>>>0){w=q;x=o}else{y=m;mq(y)}while(1){f[k>>2]=f[x+(w<<2)>>2];f[h>>2]=f[k>>2];tb(l,h,b,w)|0;m=X(w,e)|0;o=b+(m<<2)|0;q=c+(m<<2)|0;m=f[o+4>>2]|0;n=f[r>>2]|0;z=f[s>>2]|0;f[i>>2]=f[o>>2];f[a>>2]=m;f[j>>2]=n;f[t>>2]=z;Dd(h,p,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[v>>2];w=w+-1|0;if((w|0)<=-1){A=3;break}q=f[g>>2]|0;x=f[q>>2]|0;if((f[q+4>>2]|0)-x>>2>>>0<=w>>>0){y=q;A=4;break}}if((A|0)==3){u=d;return 1}else if((A|0)==4)mq(y);return 0}function rf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=u;u=u+32|0;i=h;j=h+16|0;k=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)==1){l=Qa[f[(f[b>>2]|0)+52>>2]&127](b)|0;m=Ra[f[(f[b>>2]|0)+60>>2]&127](b,d)|0;if((l|0)==0|(m|0)==0){f[a>>2]=0;u=h;return}n=Ra[f[(f[b>>2]|0)+56>>2]&127](b,d)|0;if(!n){f[i>>2]=f[b+56>>2];f[i+4>>2]=l;f[i+12>>2]=m;f[i+8>>2]=m+12;Rd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}else{f[i>>2]=f[b+56>>2];f[i+4>>2]=n;f[i+12>>2]=m;f[i+8>>2]=m+12;Pd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}}while(0);f[a>>2]=0;u=h;return}function sf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;d=u;u=u+32|0;h=d+24|0;i=d+16|0;j=d;k=d+8|0;l=a+40|0;f[a+44>>2]=g;g=a+36|0;m=f[g>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;if((p|0)<=0){u=d;return 1}q=(p>>>2)+-1|0;p=a+8|0;r=a+48|0;s=a+52|0;a=i+4|0;t=j+4|0;v=h+4|0;if(n-o>>2>>>0>q>>>0){w=q;x=o}else{y=m;mq(y)}while(1){f[k>>2]=f[x+(w<<2)>>2];f[h>>2]=f[k>>2];sb(l,h,b,w)|0;m=X(w,e)|0;o=b+(m<<2)|0;q=c+(m<<2)|0;m=f[o+4>>2]|0;n=f[r>>2]|0;z=f[s>>2]|0;f[i>>2]=f[o>>2];f[a>>2]=m;f[j>>2]=n;f[t>>2]=z;Dd(h,p,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[v>>2];w=w+-1|0;if((w|0)<=-1){A=3;break}q=f[g>>2]|0;x=f[q>>2]|0;if((f[q+4>>2]|0)-x>>2>>>0<=w>>>0){y=q;A=4;break}}if((A|0)==3){u=d;return 1}else if((A|0)==4)mq(y);return 0}function tf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=f[b>>2]|0;b=f[c>>2]|0;e=b-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;k=b;if(e>>>0<=h-i>>2>>>0){l=a+4|0;m=(f[l>>2]|0)-i>>2;n=e>>>0>m>>>0;o=n?d+(m<<2)|0:b;b=o-d|0;m=b>>2;if(m|0)Xl(i|0,d|0,b|0)|0;b=j+(m<<2)|0;if(!n){n=f[l>>2]|0;if((n|0)==(b|0))return;f[l>>2]=n+(~((n+-4-b|0)>>>2)<<2);return}b=f[c>>2]|0;c=o;if((b|0)==(c|0))return;n=f[l>>2]|0;m=b+-4-o|0;o=c;c=n;while(1){f[c>>2]=f[o>>2];o=o+4|0;if((o|0)==(b|0))break;else c=c+4|0}f[l>>2]=n+((m>>>2)+1<<2);return}m=i;if(!i)p=h;else{h=a+4|0;n=f[h>>2]|0;if((n|0)!=(j|0))f[h>>2]=n+(~((n+-4-i|0)>>>2)<<2);br(m);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;p=0}if(e>>>0>1073741823)mq(a);h=p>>1;m=p>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(m>>>0>1073741823)mq(a);h=dn(m<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(m<<2);m=d;if((k|0)==(m|0))return;g=k+-4-d|0;d=m;m=h;while(1){f[m>>2]=f[d>>2];d=d+4|0;if((d|0)==(k|0))break;else m=m+4|0}f[e>>2]=h+((g>>>2)+1<<2);return}function uf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=u;u=u+112|0;g=e+100|0;h=e;i=dn(120)|0;j=f[c+8>>2]|0;f[i+4>>2]=0;f[i>>2]=3296;k=i+8|0;l=i+12|0;m=l+44|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[k>>2]=3320;l=i+56|0;m=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[i+96>>2]=0;f[i+100>>2]=0;f[i+104>>2]=0;f[i+108>>2]=j;f[i+112>>2]=d;k=i+116|0;f[k>>2]=0;n=i;o=f[c+12>>2]|0;p=h+4|0;l=p+4|0;m=l+40|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[h>>2]=3320;l=h+48|0;m=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[h+88>>2]=0;f[h+92>>2]=0;f[h+96>>2]=0;l=o;f[p>>2]=l;m=((f[l+4>>2]|0)-(f[o>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;Xg(h+24|0,m,g);m=f[p>>2]|0;p=(f[m+28>>2]|0)-(f[m+24>>2]|0)>>2;b[g>>0]=0;Xg(h+36|0,p,g);f[h+8>>2]=o;f[h+12>>2]=d;f[h+16>>2]=j;f[h+20>>2]=i;f[k>>2]=c+72;fh(i,h);f[a>>2]=n;Gi(h);u=e;return}function vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(((d-g|0)/12|0)>>>0>=b>>>0){hj(g|0,0,b*12|0)|0;f[e>>2]=h+(b*12|0);return}i=f[a>>2]|0;j=(g-i|0)/12|0;g=j+b|0;k=i;if(g>>>0>357913941)mq(a);l=(d-i|0)/12|0;d=l<<1;m=l>>>0<178956970?(d>>>0>>0?g:d):357913941;do if(m)if(m>>>0>357913941){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{n=dn(m*12|0)|0;break}else n=0;while(0);d=n+(j*12|0)|0;j=d;g=n+(m*12|0)|0;hj(d|0,0,b*12|0)|0;m=d+(b*12|0)|0;if((h|0)==(k|0)){o=j;p=i;q=h}else{i=h;h=j;j=d;do{d=j+-12|0;b=i;i=i+-12|0;f[d>>2]=0;n=j+-8|0;f[n>>2]=0;f[j+-4>>2]=0;f[d>>2]=f[i>>2];d=b+-8|0;f[n>>2]=f[d>>2];n=b+-4|0;f[j+-4>>2]=f[n>>2];f[n>>2]=0;f[d>>2]=0;f[i>>2]=0;j=h+-12|0;h=j}while((i|0)!=(k|0));o=h;p=f[a>>2]|0;q=f[e>>2]|0}f[a>>2]=o;f[e>>2]=m;f[c>>2]=g;g=p;if((q|0)!=(g|0)){c=q;do{q=c;c=c+-12|0;m=f[c>>2]|0;if(m|0){e=q+-8|0;q=f[e>>2]|0;if((q|0)!=(m|0))f[e>>2]=q+(~((q+-4-m|0)>>>2)<<2);br(m)}}while((c|0)!=(g|0))}if(!p)return;br(p);return}function wf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=f[a+12>>2]|0;e=a+68|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{kh(i,h-m|0,3220);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=a+72|0;a=c+68|0;c=f[o+96>>2]|0;o=f[d+28>>2]|0;d=0;while(1){h=d*3|0;i=f[o+(h<<2)>>2]|0;if((i|0)==-1){q=0;r=11;break}g=f[(f[m>>2]|0)+12>>2]|0;k=f[g+(i<<2)>>2]|0;if(k>>>0>=p>>>0){q=0;r=11;break}i=f[a>>2]|0;f[i+(f[c+(d*12|0)>>2]<<2)>>2]=k;k=f[o+(h+1<<2)>>2]|0;if((k|0)==-1){q=0;r=11;break}l=f[g+(k<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=11;break}f[i+(f[c+(d*12|0)+4>>2]<<2)>>2]=l;l=f[o+(h+2<<2)>>2]|0;if((l|0)==-1){q=0;r=11;break}h=f[g+(l<<2)>>2]|0;if(h>>>0>=p>>>0){q=0;r=11;break}f[i+(f[c+(d*12|0)+8>>2]<<2)>>2]=h;d=d+1|0;if(d>>>0>=e>>>0){q=1;r=11;break}}if((r|0)==11)return q|0;return 0}function xf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-4194304|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-4177920|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+4194304|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1077936128|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function yf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-2097152|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-2080768|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+6291456|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1075838976|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function zf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-1048576|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1032192|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+7340032|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1074790400|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Af(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Lm(j);yj(j,d,0,g&255,i,0,g<<1,0,0,0);i=uh(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+((X(d,g)|0)<<1)|0;r=n;s=f[r>>2]|0;t=on(s|0,f[r+4>>2]|0,p|0,0)|0;Rg((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;br(i)}br(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);br(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;br(v)}br(j)}k=w;u=a;return k|0}function Bf(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Lm(j);yj(j,d,0,g&255,i,0,g<<2,0,0,0);i=uh(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+((X(d,g)|0)<<2)|0;r=n;s=f[r>>2]|0;t=on(s|0,f[r+4>>2]|0,p|0,0)|0;Rg((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;br(i)}br(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);br(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;br(v)}br(j)}k=w;u=a;return k|0}function Cf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-262144|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-245760|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8126464|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1074003968|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Df(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-131072|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-114688|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8257536|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1073872896|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Ef(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-32768|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-16384|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8355840|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1073774592|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Ff(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=f[b>>2]|0;d=f[b+4>>2]|0;e=f[b+8>>2]|0;g=f[b+12>>2]|0;b=(((c^318)+239^d)+239^e)+239^g;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(b>>>0>>0)l=b;else l=(b>>>0)%(h>>>0)|0;else l=b&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(b|0);if(!(n|(m&j|0)==(l|0))){i=0;o=25;break}if((((n?(f[k+8>>2]|0)==(c|0):0)?(f[k+12>>2]|0)==(d|0):0)?(f[k+16>>2]|0)==(e|0):0)?(f[k+20>>2]|0)==(g|0):0){i=k;o=25;break}k=f[k>>2]|0;if(!k){i=0;o=25;break}}if((o|0)==25)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(b|0)){if((((f[p+8>>2]|0)==(c|0)?(f[p+12>>2]|0)==(d|0):0)?(f[p+16>>2]|0)==(e|0):0)?(f[p+20>>2]|0)==(g|0):0){i=p;o=25;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=25;break}}p=f[p>>2]|0;if(!p){i=0;o=25;break}}if((o|0)==25)return i|0;return 0}function Gf(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Lm(j);yj(j,d,0,g&255,i,0,g,0,0,0);i=uh(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+(X(d,g)|0)|0;r=n;s=f[r>>2]|0;t=on(s|0,f[r+4>>2]|0,p|0,0)|0;Rg((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;br(i)}br(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);br(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;br(v)}br(j)}k=w;u=a;return k|0}function Hf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=u;u=u+32|0;i=h;j=h+16|0;k=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)==1){l=Qa[f[(f[b>>2]|0)+52>>2]&127](b)|0;m=Ra[f[(f[b>>2]|0)+60>>2]&127](b,d)|0;if((l|0)==0|(m|0)==0){f[a>>2]=0;u=h;return}n=Ra[f[(f[b>>2]|0)+56>>2]&127](b,d)|0;if(!n){f[i>>2]=f[b+56>>2];f[i+4>>2]=l;f[i+12>>2]=m;f[i+8>>2]=m+12;Od(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}else{f[i>>2]=f[b+56>>2];f[i+4>>2]=n;f[i+12>>2]=m;f[i+8>>2]=m+12;Nd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}}while(0);f[a>>2]=0;u=h;return}function If(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=f[d>>2]|0;g=f[d+4>>2]|0;if((e|0)==(g|0)){h=0;i=a+12|0;j=a+8|0}else{d=f[c>>2]|0;c=a+8|0;k=a+12|0;a=0;l=e;while(1){e=f[l>>2]|0;m=f[d+(e<<2)>>2]|0;if(m>>>0>>0)n=a;else{o=f[c>>2]|0;p=(f[k>>2]|0)-o|0;q=o;if((p|0)>0){o=p>>>2;p=0;do{r=f[q+(p<<2)>>2]|0;s=f[r+68>>2]|0;if(!(b[r+84>>0]|0))t=f[s+(e<<2)>>2]|0;else t=e;f[s+(m<<2)>>2]=t;p=p+1|0}while((p|0)<(o|0))}n=m+1|0}l=l+4|0;if((l|0)==(g|0)){h=n;i=k;j=c;break}else a=n}}n=f[i>>2]|0;a=f[j>>2]|0;if((n-a|0)>0){u=0;v=a;w=n}else return;while(1){n=f[v+(u<<2)>>2]|0;b[n+84>>0]=0;a=n+68|0;c=n+72|0;n=f[c>>2]|0;k=f[a>>2]|0;g=n-k>>2;l=k;k=n;if(h>>>0<=g>>>0)if(h>>>0>>0?(n=l+(h<<2)|0,(n|0)!=(k|0)):0){f[c>>2]=k+(~((k+-4-n|0)>>>2)<<2);x=v;y=w}else{x=v;y=w}else{kh(a,h-g|0,5908);x=f[j>>2]|0;y=f[i>>2]|0}u=u+1|0;if((u|0)>=(y-x>>2|0))break;else{v=x;w=y}}return}function Jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=b;e=c-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;if(e>>>0<=h-i>>2>>>0){k=a+4|0;l=(f[k>>2]|0)-i>>2;m=e>>>0>l>>>0;n=b+(l<<2)|0;l=m?n:c;o=l;p=o-d|0;q=p>>2;if(q|0)Xl(i|0,b|0,p|0)|0;p=j+(q<<2)|0;if(!m){m=f[k>>2]|0;if((m|0)==(p|0))return;f[k>>2]=m+(~((m+-4-p|0)>>>2)<<2);return}if((l|0)==(c|0))return;l=f[k>>2]|0;p=((c+-4-o|0)>>>2)+1|0;o=n;n=l;while(1){f[n>>2]=f[o>>2];o=o+4|0;if((o|0)==(c|0))break;else n=n+4|0}f[k>>2]=l+(p<<2);return}p=i;if(!i)r=h;else{h=a+4|0;l=f[h>>2]|0;if((l|0)!=(j|0))f[h>>2]=l+(~((l+-4-i|0)>>>2)<<2);br(p);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;r=0}if(e>>>0>1073741823)mq(a);h=r>>1;p=r>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(p>>>0>1073741823)mq(a);h=dn(p<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(p<<2);if((b|0)==(c|0))return;p=((c+-4-d|0)>>>2)+1|0;d=b;b=h;while(1){f[b>>2]=f[d>>2];d=d+4|0;if((d|0)==(c|0))break;else b=b+4|0}f[e>>2]=h+(p<<2);return}function Kf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;c=u;u=u+16|0;d=c;e=a+76|0;g=f[e>>2]|0;h=a+80|0;i=f[h>>2]|0;if((i|0)!=(g|0))f[h>>2]=i+(~((i+-4-g|0)>>>2)<<2);f[e>>2]=0;f[h>>2]=0;f[a+84>>2]=0;if(g|0)br(g);g=a+64|0;h=f[g>>2]|0;e=a+68|0;if((f[e>>2]|0)!=(h|0))f[e>>2]=h;f[g>>2]=0;f[e>>2]=0;f[a+72>>2]=0;if(h|0)br(h);h=b+4|0;e=f[h>>2]|0;g=f[b>>2]|0;i=((e-g|0)/12|0)*3|0;j=a+4|0;k=f[j>>2]|0;l=f[a>>2]|0;m=k-l>>2;n=l;l=k;k=g;if(i>>>0<=m>>>0)if(i>>>0>>0?(o=n+(i<<2)|0,(o|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-o|0)>>>2)<<2);p=e;q=g;r=k}else{p=e;q=g;r=k}else{oi(a,i-m|0);m=f[b>>2]|0;p=f[h>>2]|0;q=m;r=m}if((p|0)!=(q|0)){q=f[a>>2]|0;m=(p-r|0)/12|0;p=0;do{h=p*3|0;f[q+(h<<2)>>2]=f[r+(p*12|0)>>2];f[q+(h+1<<2)>>2]=f[r+(p*12|0)+4>>2];f[q+(h+2<<2)>>2]=f[r+(p*12|0)+8>>2];p=p+1|0}while(p>>>0>>0)}f[d>>2]=-1;if(!(oc(a,d)|0)){s=0;u=c;return s|0}Gc(a)|0;fb(a,f[d>>2]|0)|0;s=1;u=c;return s|0}function Lf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-16384|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;b[m>>0]=j;b[m+1>>0]=j>>>8;n=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;o=j+8372224|0;b[m>>0]=o;b[m+1>>0]=o>>>8;b[m+2>>0]=o>>>16;n=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;o=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+-1073758208|0;b[o>>0]=m;b[o+1>>0]=m>>>8;b[o+2>>0]=m>>>16;b[o+3>>0]=m>>>24;n=(f[l>>2]|0)+4|0;break}else{n=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;n=(f[l>>2]|0)+1|0}while(0);k=((n|0)<0)<<31>>31;Cn(e);eh(n,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,n|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,n|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=b;e=c-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;if(e>>>0<=h-i>>2>>>0){k=a+4|0;l=(f[k>>2]|0)-i>>2;m=e>>>0>l>>>0;n=b+(l<<2)|0;l=m?n:c;o=l;p=o-d|0;q=p>>2;if(q|0)Xl(i|0,b|0,p|0)|0;p=j+(q<<2)|0;if(!m){m=f[k>>2]|0;if((m|0)==(p|0))return;f[k>>2]=m+(~((m+-4-p|0)>>>2)<<2);return}if((l|0)==(c|0))return;l=f[k>>2]|0;p=c+-4-o|0;o=n;n=l;while(1){f[n>>2]=f[o>>2];o=o+4|0;if((o|0)==(c|0))break;else n=n+4|0}f[k>>2]=l+((p>>>2)+1<<2);return}p=i;if(!i)r=h;else{h=a+4|0;l=f[h>>2]|0;if((l|0)!=(j|0))f[h>>2]=l+(~((l+-4-i|0)>>>2)<<2);br(p);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;r=0}if(e>>>0>1073741823)mq(a);h=r>>1;p=r>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(p>>>0>1073741823)mq(a);h=dn(p<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(p<<2);if((b|0)==(c|0))return;p=c+-4-d|0;d=b;b=h;while(1){f[b>>2]=f[d>>2];d=d+4|0;if((d|0)==(c|0))break;else b=b+4|0}f[e>>2]=h+((p>>>2)+1<<2);return}function Nf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;g=u;u=u+80|0;h=g;i=g+64|0;Al(h);j=f[(f[a+8>>2]|0)+56>>2]|0;k=X(Ll(5)|0,d)|0;yj(h,j,0,d&255,5,0,k,((k|0)<0)<<31>>31,0,0);k=dn(96)|0;nl(k,h);pj(k,c)|0;f[i>>2]=k;Wi(a,i);k=f[i>>2]|0;f[i>>2]=0;if(k|0){i=k+88|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){i=f[c+8>>2]|0;if(i|0){h=c+12|0;if((f[h>>2]|0)!=(i|0))f[h>>2]=i;br(i)}br(c)}c=f[k+68>>2]|0;if(c|0){i=k+72|0;h=f[i>>2]|0;if((h|0)!=(c|0))f[i>>2]=h+(~((h+-4-c|0)>>>2)<<2);br(c)}c=k+64|0;h=f[c>>2]|0;f[c>>2]=0;if(h|0){c=f[h>>2]|0;if(c|0){i=h+4|0;if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c)}br(h)}br(k)}if(!e){u=g;return}k=f[a+32>>2]|0;b[k+84>>0]=0;a=k+68|0;h=k+72|0;k=f[h>>2]|0;c=f[a>>2]|0;i=k-c>>2;d=k;if(i>>>0>>0){kh(a,e-i|0,1516);u=g;return}if(i>>>0<=e>>>0){u=g;return}i=c+(e<<2)|0;if((i|0)==(d|0)){u=g;return}f[h>>2]=d+(~((d+-4-i|0)>>>2)<<2);u=g;return}function Of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;c=u;u=u+16|0;d=c+4|0;e=c;g=a+4|0;h=f[g>>2]|0;i=a+8|0;j=f[i>>2]|0;if((j|0)==(h|0))k=h;else{l=j+(~((j+-4-h|0)>>>2)<<2)|0;f[i>>2]=l;k=l}l=a+16|0;h=f[l>>2]|0;j=a+20|0;m=f[j>>2]|0;n=h;if((m|0)!=(h|0))f[j>>2]=m+(~((m+-4-n|0)>>>2)<<2);m=f[b>>2]|0;h=f[b+4>>2]|0;if((m|0)==(h|0)){u=c;return}b=a+12|0;a=m;m=k;k=n;while(1){n=f[a>>2]|0;f[d>>2]=n;if((m|0)==(f[b>>2]|0)){Ci(g,d);o=f[l>>2]|0}else{f[m>>2]=n;f[i>>2]=m+4;o=k}n=f[d>>2]|0;p=f[j>>2]|0;q=p-o>>2;r=o;if((n|0)<(q|0)){s=r;t=n;v=o}else{w=n+1|0;f[e>>2]=-1;x=p;if(w>>>0<=q>>>0)if(w>>>0>>0?(p=r+(w<<2)|0,(p|0)!=(x|0)):0){f[j>>2]=x+(~((x+-4-p|0)>>>2)<<2);y=n;z=r;A=o}else{y=n;z=r;A=o}else{kh(l,w-q|0,e);q=f[l>>2]|0;y=f[d>>2]|0;z=q;A=q}s=z;t=y;v=A}m=f[i>>2]|0;f[s+(t<<2)>>2]=(m-(f[g>>2]|0)>>2)+-1;a=a+4|0;if((a|0)==(h|0))break;else k=v}u=c;return}function Pf(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=d[b>>1]|0;e=d[b+2>>1]|0;g=d[b+4>>1]|0;b=(((c^318)&65535)+239^e&65535)+239^g&65535;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(b>>>0>>0)l=b;else l=(b>>>0)%(h>>>0)|0;else l=b&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(b|0);if(!(n|(m&j|0)==(l|0))){i=0;o=23;break}if(((n?(n=k+8|0,(d[n>>1]|0)==c<<16>>16):0)?(d[n+2>>1]|0)==e<<16>>16:0)?(d[k+12>>1]|0)==g<<16>>16:0){i=k;o=23;break}k=f[k>>2]|0;if(!k){i=0;o=23;break}}if((o|0)==23)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(b|0)){k=p+8|0;if(((d[k>>1]|0)==c<<16>>16?(d[k+2>>1]|0)==e<<16>>16:0)?(d[p+12>>1]|0)==g<<16>>16:0){i=p;o=23;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=23;break}}p=f[p>>2]|0;if(!p){i=0;o=23;break}}if((o|0)==23)return i|0;return 0}function Qf(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=u;u=u+32|0;d=c;e=a+16|0;g=e;h=f[g>>2]|0;i=f[g+4>>2]|0;if(!((i|0)>0|(i|0)==0&h>>>0>0)){u=c;return}g=Tn(f[(f[a+12>>2]|0)+4>>2]|0,0,7,0)|0;j=Wn(g|0,I|0,3)|0;g=I;if(!(b[a+24>>0]|0)){k=a+4|0;l=k;m=k;n=h;o=i}else{k=f[a>>2]|0;p=a+4|0;q=k+((f[p>>2]|0)-k)|0;k=Tn(h|0,i|0,8,0)|0;i=q+(0-k)|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;b[d+24>>0]=0;eh(j,g,d)|0;k=d+4|0;q=(f[k>>2]|0)-(f[d>>2]|0)|0;Xl(i+q|0,i+8|0,j|0)|0;Rg(i|0,f[d>>2]|0,q|0)|0;i=e;h=Tn(f[i>>2]|0,f[i+4>>2]|0,8-q|0,0)|0;q=e;f[q>>2]=h;f[q+4>>2]=I;q=d+12|0;h=f[q>>2]|0;f[q>>2]=0;if(h|0)br(h);h=f[d>>2]|0;if(h|0){if((f[k>>2]|0)!=(h|0))f[k>>2]=h;br(h)}h=e;l=p;m=p;n=f[h>>2]|0;o=f[h+4>>2]|0}h=f[l>>2]|0;l=f[a>>2]|0;p=h-l|0;k=Vn(j|0,g|0,n|0,o|0)|0;o=Tn(k|0,I|0,p|0,0)|0;k=l;l=h;if(p>>>0>=o>>>0){if(p>>>0>o>>>0?(h=k+o|0,(h|0)!=(l|0)):0)f[m>>2]=h}else ri(a,o-p|0);p=e;f[p>>2]=0;f[p+4>>2]=0;u=c;return}function Rf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f[c>>2]=1;d=a+4|0;e=c+8|0;g=c+12|0;c=f[e>>2]|0;i=(f[g>>2]|0)-c|0;if(i>>>0<4294967292){Bk(e,i+4|0,0);j=f[e>>2]|0}else j=c;c=j+i|0;i=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[c>>0]=i;b[c+1>>0]=i>>8;b[c+2>>0]=i>>16;b[c+3>>0]=i>>24;i=a+8|0;c=a+12|0;d=f[i>>2]|0;if((f[c>>2]|0)!=(d|0)){j=0;k=d;do{d=k+(j<<2)|0;l=f[e>>2]|0;m=(f[g>>2]|0)-l|0;if(m>>>0<4294967292){Bk(e,m+4|0,0);n=f[e>>2]|0}else n=l;l=n+m|0;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[l>>0]=m;b[l+1>>0]=m>>8;b[l+2>>0]=m>>16;b[l+3>>0]=m>>24;j=j+1|0;k=f[i>>2]|0}while(j>>>0<(f[c>>2]|0)-k>>2>>>0)}k=a+20|0;a=f[e>>2]|0;c=(f[g>>2]|0)-a|0;if(c>>>0<4294967292){Bk(e,c+4|0,0);o=f[e>>2]|0;p=o+c|0;q=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;b[p>>0]=q;b[p+1>>0]=q>>8;b[p+2>>0]=q>>16;b[p+3>>0]=q>>24;return}else{o=a;p=o+c|0;q=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;b[p>>0]=q;b[p+1>>0]=q>>8;b[p+2>>0]=q>>16;b[p+3>>0]=q>>24;return}}function Sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+8|0;e=f[d>>2]|0;g=f[a>>2]|0;h=g;do if(e-g>>2>>>0>=b>>>0){i=a+4|0;j=f[i>>2]|0;k=j-g>>2;l=k>>>0>>0;m=l?k:b;n=j;if(m|0){j=m;m=h;while(1){f[m>>2]=f[c>>2];j=j+-1|0;if(!j)break;else m=m+4|0}}if(!l){m=h+(b<<2)|0;if((m|0)==(n|0))return;else{o=i;p=n+(~((n+-4-m|0)>>>2)<<2)|0;break}}else{m=b-k|0;j=m;q=n;while(1){f[q>>2]=f[c>>2];j=j+-1|0;if(!j)break;else q=q+4|0}o=i;p=n+(m<<2)|0;break}}else{q=g;if(!g)r=e;else{j=a+4|0;k=f[j>>2]|0;if((k|0)!=(h|0))f[j>>2]=k+(~((k+-4-g|0)>>>2)<<2);br(q);f[d>>2]=0;f[j>>2]=0;f[a>>2]=0;r=0}if(b>>>0>1073741823)mq(a);j=r>>1;q=r>>2>>>0<536870911?(j>>>0>>0?b:j):1073741823;if(q>>>0>1073741823)mq(a);j=dn(q<<2)|0;k=a+4|0;f[k>>2]=j;f[a>>2]=j;f[d>>2]=j+(q<<2);q=b;l=j;while(1){f[l>>2]=f[c>>2];q=q+-1|0;if(!q)break;else l=l+4|0}o=k;p=j+(b<<2)|0}while(0);f[o>>2]=p;return}function Tf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=Qg(a,b,c,d,g)|0;i=f[e>>2]|0;j=f[d>>2]|0;k=f[g>>2]|0;g=f[k>>2]|0;l=(f[k+4>>2]|0)-g>>3;if(l>>>0<=i>>>0)mq(k);m=g;if(l>>>0<=j>>>0)mq(k);if((f[m+(i<<3)>>2]|0)>>>0>=(f[m+(j<<3)>>2]|0)>>>0){n=h;return n|0}f[d>>2]=i;f[e>>2]=j;j=f[d>>2]|0;e=f[c>>2]|0;if(l>>>0<=j>>>0)mq(k);if(l>>>0<=e>>>0)mq(k);if((f[m+(j<<3)>>2]|0)>>>0>=(f[m+(e<<3)>>2]|0)>>>0){n=h+1|0;return n|0}f[c>>2]=j;f[d>>2]=e;e=f[c>>2]|0;d=f[b>>2]|0;if(l>>>0<=e>>>0)mq(k);if(l>>>0<=d>>>0)mq(k);if((f[m+(e<<3)>>2]|0)>>>0>=(f[m+(d<<3)>>2]|0)>>>0){n=h+2|0;return n|0}f[b>>2]=e;f[c>>2]=d;d=f[b>>2]|0;c=f[a>>2]|0;if(l>>>0<=d>>>0)mq(k);if(l>>>0<=c>>>0)mq(k);if((f[m+(d<<3)>>2]|0)>>>0>=(f[m+(c<<3)>>2]|0)>>>0){n=h+3|0;return n|0}f[a>>2]=d;f[b>>2]=c;n=h+4|0;return n|0}function Uf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=b[c>>0]|0;e=b[c+1>>0]|0;g=b[c+2>>0]|0;c=((d&255^318)+239^e&255)+239^g&255;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(c>>>0>>0)l=c;else l=(c>>>0)%(h>>>0)|0;else l=c&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(c|0);if(!(n|(m&j|0)==(l|0))){i=0;o=23;break}if(((n?(n=k+8|0,(b[n>>0]|0)==d<<24>>24):0)?(b[n+1>>0]|0)==e<<24>>24:0)?(b[n+2>>0]|0)==g<<24>>24:0){i=k;o=23;break}k=f[k>>2]|0;if(!k){i=0;o=23;break}}if((o|0)==23)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(c|0)){k=p+8|0;if(((b[k>>0]|0)==d<<24>>24?(b[k+1>>0]|0)==e<<24>>24:0)?(b[k+2>>0]|0)==g<<24>>24:0){i=p;o=23;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=23;break}}p=f[p>>2]|0;if(!p){i=0;o=23;break}}if((o|0)==23)return i|0;return 0}function Vf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=u;u=u+16|0;c=b;d=a+36|0;e=a+4|0;g=a+8|0;h=(f[g>>2]|0)-(f[e>>2]|0)>>2;i=a+40|0;j=f[i>>2]|0;k=f[d>>2]|0;l=j-k>>2;m=k;k=j;if(h>>>0<=l>>>0){if(h>>>0>>0?(j=m+(h<<2)|0,(j|0)!=(k|0)):0){m=k;do{k=m+-4|0;f[i>>2]=k;n=f[k>>2]|0;f[k>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);m=f[i>>2]|0}while((m|0)!=(j|0))}}else ng(d,h-l|0);if((f[g>>2]|0)==(f[e>>2]|0)){o=1;u=b;return o|0}l=a+52|0;h=a+48|0;j=0;while(1){Xa[f[(f[a>>2]|0)+56>>2]&15](c,a,j);m=(f[d>>2]|0)+(j<<2)|0;i=f[c>>2]|0;f[c>>2]=0;n=f[m>>2]|0;f[m>>2]=i;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);n=f[c>>2]|0;f[c>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);n=f[(f[d>>2]|0)+(j<<2)>>2]|0;if(!n){o=0;p=19;break}if(j>>>0<(f[l>>2]|0)>>>0?f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0:0)Pp(n);j=j+1|0;if(j>>>0>=(f[g>>2]|0)-(f[e>>2]|0)>>2>>>0){o=1;p=19;break}}if((p|0)==19){u=b;return o|0}return 0}function Wf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=u;u=u+16|0;e=d+4|0;g=d;Nh(f[c+12>>2]|0,b)|0;h=f[c+8>>2]|0;a:do if(h|0){i=b+16|0;j=b+4|0;k=h;while(1){l=k;if(!(nf(0,b,l+8|0)|0)){m=0;break}n=l+20|0;o=(f[l+24>>2]|0)-(f[n>>2]|0)|0;Nh(o,b)|0;l=f[n>>2]|0;n=i;p=f[n+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[n>>2]|0)>>>0>0)){f[g>>2]=f[j>>2];f[e>>2]=f[g>>2];ye(b,e,l,l+o|0)|0}k=f[k>>2]|0;if(!k)break a}u=d;return m|0}while(0);Nh(f[c+32>>2]|0,b)|0;e=f[c+28>>2]|0;if(!e){m=1;u=d;return m|0}else q=e;while(1){e=q;if(!(nf(0,b,e+8|0)|0)){m=0;r=10;break}Wf(a,b,f[e+20>>2]|0)|0;q=f[q>>2]|0;if(!q){m=1;r=10;break}}if((r|0)==10){u=d;return m|0}return 0}function Xf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+8|0;i=a+12|0;j=f[h>>2]|0;if((f[i>>2]|0)==(j|0)){k=dn(76)|0;pn(k,b);l=k;f[g>>2]=l;k=f[i>>2]|0;if(k>>>0<(f[a+16>>2]|0)>>>0){f[g>>2]=0;f[k>>2]=l;f[i>>2]=k+4;m=g}else{yg(h,g);m=g}g=f[m>>2]|0;f[m>>2]=0;if(!g){u=c;return 1}Va[f[(f[g>>2]|0)+4>>2]&127](g);u=c;return 1}g=f[j>>2]|0;f[d>>2]=b;j=g+4|0;m=g+8|0;h=f[m>>2]|0;if((h|0)==(f[g+12>>2]|0))Ci(j,d);else{f[h>>2]=b;f[m>>2]=h+4}h=f[d>>2]|0;b=g+16|0;k=g+20|0;g=f[k>>2]|0;i=f[b>>2]|0;l=g-i>>2;a=i;if((h|0)<(l|0)){n=a;o=h}else{i=h+1|0;f[e>>2]=-1;p=g;if(i>>>0<=l>>>0)if(i>>>0>>0?(g=a+(i<<2)|0,(g|0)!=(p|0)):0){f[k>>2]=p+(~((p+-4-g|0)>>>2)<<2);q=h;r=a}else{q=h;r=a}else{kh(b,i-l|0,e);q=f[d>>2]|0;r=f[b>>2]|0}n=r;o=q}f[n+(o<<2)>>2]=((f[m>>2]|0)-(f[j>>2]|0)>>2)+-1;u=c;return 1}function Yf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=c;e=b;g=d-e|0;h=g>>2;i=a+8|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(h>>>0>j-k>>2>>>0){m=k;if(!k)n=j;else{j=a+4|0;o=f[j>>2]|0;if((o|0)!=(l|0))f[j>>2]=o+(~((o+-4-k|0)>>>2)<<2);br(m);f[i>>2]=0;f[j>>2]=0;f[a>>2]=0;n=0}if(h>>>0>1073741823)mq(a);j=n>>1;m=n>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;if(m>>>0>1073741823)mq(a);j=dn(m<<2)|0;n=a+4|0;f[n>>2]=j;f[a>>2]=j;f[i>>2]=j+(m<<2);if((g|0)<=0)return;Rg(j|0,b|0,g|0)|0;f[n>>2]=j+(g>>>2<<2);return}g=a+4|0;a=f[g>>2]|0;j=a-k>>2;k=h>>>0>j>>>0;h=k?b+(j<<2)|0:c;c=a;j=a;if((h|0)==(b|0))p=l;else{a=h+-4-e|0;e=b;b=l;while(1){f[b>>2]=f[e>>2];e=e+4|0;if((e|0)==(h|0))break;else b=b+4|0}p=l+((a>>>2)+1<<2)|0}if(k){k=d-h|0;if((k|0)<=0)return;Rg(j|0,h|0,k|0)|0;f[g>>2]=(f[g>>2]|0)+(k>>>2<<2);return}else{if((p|0)==(c|0))return;f[g>>2]=c+(~((c+-4-p|0)>>>2)<<2);return}}function Zf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;g=u;u=u+96|0;h=g+40|0;i=g;Gm(h,d);we(i,c,d);th(h,i);sj(i+24|0,f[i+28>>2]|0);Dj(i+12|0,f[i+16>>2]|0);sj(i,f[i+4>>2]|0);Si(a,h,e);if(!(f[a>>2]|0)){e=a+4|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);f[c+40>>2]=f[h+40>>2];f[c+44>>2]=f[h+44>>2];f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}f[h>>2]=2968;sj(h+28|0,f[h+32>>2]|0);Dj(h+16|0,f[h+20>>2]|0);sj(h+4|0,f[h+8>>2]|0);u=g;return}function _f(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=f[b>>2]|0;d=f[b+4>>2]|0;e=f[b+8>>2]|0;b=((c^318)+239^d)+239^e;g=f[a+4>>2]|0;if(!g){h=0;return h|0}i=g+-1|0;j=(i&g|0)==0;if(!j)if(b>>>0>>0)k=b;else k=(b>>>0)%(g>>>0)|0;else k=b&i;l=f[(f[a>>2]|0)+(k<<2)>>2]|0;if(!l){h=0;return h|0}a=f[l>>2]|0;if(!a){h=0;return h|0}if(j){j=a;while(1){l=f[j+4>>2]|0;m=(l|0)==(b|0);if(!(m|(l&i|0)==(k|0))){h=0;n=23;break}if(((m?(f[j+8>>2]|0)==(c|0):0)?(f[j+12>>2]|0)==(d|0):0)?(f[j+16>>2]|0)==(e|0):0){h=j;n=23;break}j=f[j>>2]|0;if(!j){h=0;n=23;break}}if((n|0)==23)return h|0}else o=a;while(1){a=f[o+4>>2]|0;if((a|0)==(b|0)){if(((f[o+8>>2]|0)==(c|0)?(f[o+12>>2]|0)==(d|0):0)?(f[o+16>>2]|0)==(e|0):0){h=o;n=23;break}}else{if(a>>>0>>0)p=a;else p=(a>>>0)%(g>>>0)|0;if((p|0)!=(k|0)){h=0;n=23;break}}o=f[o>>2]|0;if(!o){h=0;n=23;break}}if((n|0)==23)return h|0;return 0}function $f(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=u;u=u+16|0;g=e;if(!(ih(a,c,d)|0)){h=0;u=e;return h|0}if((b[(f[a+8>>2]|0)+24>>0]|0)!=3){h=0;u=e;return h|0}i=f[c+48>>2]|0;c=dn(32)|0;f[g>>2]=c;f[g+8>>2]=-2147483616;f[g+4>>2]=17;j=c;k=12932;l=j+17|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[c+17>>0]=0;c=i+16|0;k=f[c>>2]|0;if(k){j=c;l=k;a:while(1){k=l;while(1){if((f[k+16>>2]|0)>=(d|0))break;m=f[k+4>>2]|0;if(!m){n=j;break a}else k=m}l=f[k>>2]|0;if(!l){n=k;break}else j=k}if(((n|0)!=(c|0)?(f[n+16>>2]|0)<=(d|0):0)?(d=n+20|0,(sh(d,g)|0)!=0):0)o=yk(d,g,-1)|0;else p=12}else p=12;if((p|0)==12)o=yk(i,g,-1)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if((o|0)<1){h=0;u=e;return h|0}tp(a+40|0,o);h=1;u=e;return h|0}function ag(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=c;g=d-e|0;h=a+8|0;i=f[h>>2]|0;j=f[a>>2]|0;k=j;if(g>>>0>(i-j|0)>>>0){if(!j)l=i;else{i=a+4|0;if((f[i>>2]|0)!=(k|0))f[i>>2]=k;br(k);f[h>>2]=0;f[i>>2]=0;f[a>>2]=0;l=0}if((g|0)<0)mq(a);i=l<<1;m=l>>>0<1073741823?(i>>>0>>0?g:i):2147483647;if((m|0)<0)mq(a);i=dn(m)|0;l=a+4|0;f[l>>2]=i;f[a>>2]=i;f[h>>2]=i+m;if((c|0)==(d|0))return;else{n=c;o=i}do{b[o>>0]=b[n>>0]|0;n=n+1|0;o=(f[l>>2]|0)+1|0;f[l>>2]=o}while((n|0)!=(d|0));return}n=a+4|0;a=(f[n>>2]|0)-j|0;j=g>>>0>a>>>0;g=c+a|0;a=j?g:d;if((a|0)==(c|0))p=k;else{o=c;c=k;while(1){b[c>>0]=b[o>>0]|0;o=o+1|0;if((o|0)==(a|0))break;else c=c+1|0}p=k+(a-e)|0}if(!j){if((f[n>>2]|0)==(p|0))return;f[n>>2]=p;return}if((a|0)==(d|0))return;a=g;g=f[n>>2]|0;do{b[g>>0]=b[a>>0]|0;a=a+1|0;g=(f[n>>2]|0)+1|0;f[n>>2]=g}while((a|0)!=(d|0));return}function bg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=c>>>1&1431655765|c<<1&-1431655766;c=d>>>2&858993459|d<<2&-858993460;d=c>>>4&252645135|c<<4&-252645136;c=d>>>8&16711935|d<<8&-16711936;d=32-b|0;e=(c>>>16|c<<16)>>>d;c=e-(e>>>1&1431655765)|0;g=(c>>>2&858993459)+(c&858993459)|0;c=(X((g>>>4)+g&252645135,16843009)|0)>>>24;g=b-c|0;h=f[a>>2]|0;i=h;j=Tn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;g=h;f[g>>2]=j;f[g+4>>2]=I;g=h+8|0;h=g;j=Tn(f[h>>2]|0,f[h+4>>2]|0,c|0,0)|0;c=g;f[c>>2]=j;f[c+4>>2]=I;c=a+28|0;j=f[c>>2]|0;g=32-j|0;h=a+24|0;do if((g|0)>=(b|0)){i=-1>>>d<>2]&~i|i&e<>2]=k;i=j+b|0;f[c>>2]=i;if((i|0)!=32)return;i=a+16|0;l=f[i>>2]|0;if((l|0)==(f[a+20>>2]|0)){Ci(a+12|0,h);m=0;n=0;break}else{f[l>>2]=k;f[i>>2]=l+4;m=0;n=0;break}}else{l=-1>>>j<>2]&~l|l&e<>2]=i;l=a+16|0;k=f[l>>2]|0;if((k|0)==(f[a+20>>2]|0))Ci(a+12|0,h);else{f[k>>2]=i;f[l>>2]=k+4}k=b-g|0;m=k;n=-1>>>(32-k|0)&e>>>g}while(0);f[h>>2]=n;f[c>>2]=m;return}function cg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=c&255;g=(d|0)!=0;a:do if(g&(a&3|0)!=0){h=c&255;i=a;j=d;while(1){if((b[i>>0]|0)==h<<24>>24){k=i;l=j;m=6;break a}n=i+1|0;o=j+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){i=n;j=o}else{q=n;r=o;s=p;m=5;break}}}else{q=a;r=d;s=g;m=5}while(0);if((m|0)==5)if(s){k=q;l=r;m=6}else{t=q;u=0}b:do if((m|0)==6){q=c&255;if((b[k>>0]|0)==q<<24>>24){t=k;u=l}else{r=X(e,16843009)|0;c:do if(l>>>0>3){s=k;g=l;while(1){d=f[s>>2]^r;if((d&-2139062144^-2139062144)&d+-16843009|0)break;d=s+4|0;a=g+-4|0;if(a>>>0>3){s=d;g=a}else{v=d;w=a;m=11;break c}}x=s;y=g}else{v=k;w=l;m=11}while(0);if((m|0)==11)if(!w){t=v;u=0;break}else{x=v;y=w}while(1){if((b[x>>0]|0)==q<<24>>24){t=x;u=y;break b}r=x+1|0;y=y+-1|0;if(!y){t=r;u=0;break}else x=r}}}while(0);return (u|0?t:0)|0}function dg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=e;do if((d|0)==(e|0)){h=a+8|0;i=f[h>>2]|0;j=a+12|0;k=f[j>>2]|0;l=k;if(i>>>0>>0){k=i;m=((l-k>>2)+1|0)/2|0;n=i+(m<<2)|0;o=k-d|0;k=o>>2;p=n+(0-k<<2)|0;if(!k){q=n;r=i}else{Xl(p|0,d|0,o|0)|0;q=p;r=f[h>>2]|0}f[c>>2]=q;f[h>>2]=r+(m<<2);s=q;break}m=l-g>>1;l=(m|0)==0?1:m;if(l>>>0>1073741823){m=ra(8)|0;Wo(m,14941);f[m>>2]=6944;va(m|0,1080,114)}m=dn(l<<2)|0;p=m;o=m+((l+3|0)>>>2<<2)|0;n=o;k=m+(l<<2)|0;if((d|0)==(i|0)){t=n;u=d}else{l=o;m=n;v=d;do{f[l>>2]=f[v>>2];l=m+4|0;m=l;v=v+4|0}while((v|0)!=(i|0));t=m;u=f[a>>2]|0}f[a>>2]=p;f[c>>2]=n;f[h>>2]=t;f[j>>2]=k;if(!u)s=o;else{br(u);s=f[c>>2]|0}}else s=d;while(0);f[s+-4>>2]=f[b>>2];f[c>>2]=(f[c>>2]|0)+-4;return}function eg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+4|0;if((f[i>>2]|0)==-1){j=0;u=d;return j|0}k=f[a+8>>2]|0;l=c+16|0;m=l;n=f[m>>2]|0;o=f[m+4>>2]|0;if(!((o|0)>0|(o|0)==0&n>>>0>0)){m=(f[a+12>>2]|0)-k|0;p=c+4|0;f[g>>2]=f[p>>2];f[e>>2]=f[g>>2];ye(c,e,k,k+m|0)|0;m=l;k=f[m>>2]|0;q=f[m+4>>2]|0;m=a+20|0;if((q|0)>0|(q|0)==0&k>>>0>0){r=q;s=k;t=g}else{f[g>>2]=f[p>>2];f[e>>2]=f[g>>2];ye(c,e,m,m+4|0)|0;m=l;r=f[m+4>>2]|0;s=f[m>>2]|0;t=g}}else{r=o;s=n;t=g}b[h>>0]=f[i>>2];if(!((r|0)>0|(r|0)==0&s>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}j=1;u=d;return j|0}function fg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;e=u;u=u+16|0;g=e+4|0;h=e;i=a+8|0;a=f[i>>2]|0;j=f[a+40>>2]|0;k=_q((j|0)>-1?j:-1)|0;l=c+4|0;m=f[l>>2]|0;n=f[c>>2]|0;if((m|0)==(n|0)){$q(k);u=e;return 1}o=d+16|0;p=d+4|0;q=k+j|0;j=0;r=n;n=a;s=a;a=m;while(1){m=f[r+(j<<2)>>2]|0;if(!(b[n+84>>0]|0))t=f[(f[n+68>>2]|0)+(m<<2)>>2]|0;else t=m;m=s+48|0;v=f[m>>2]|0;w=f[m+4>>2]|0;m=s+40|0;x=f[m>>2]|0;y=on(x|0,f[m+4>>2]|0,t|0,0)|0;m=Tn(y|0,I|0,v|0,w|0)|0;Rg(k|0,(f[f[s>>2]>>2]|0)+m|0,x|0)|0;x=o;m=f[x+4>>2]|0;if((m|0)>0|(m|0)==0&(f[x>>2]|0)>>>0>0){z=r;A=a}else{f[h>>2]=f[p>>2];f[g>>2]=f[h>>2];ye(d,g,k,q)|0;z=f[c>>2]|0;A=f[l>>2]|0}x=j+1|0;if(x>>>0>=A-z>>2>>>0)break;m=f[i>>2]|0;j=x;r=z;n=m;s=m;a=A}$q(k);u=e;return 1}function gg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=(f[b>>2]|0)*3|0;if((d|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}b=f[a+12>>2]|0;h=f[b+12>>2]|0;if((f[h+(d<<2)>>2]|0)==-1){e=0;g=d;f[c>>2]=g;return e|0}i=f[b>>2]|0;b=f[a+152>>2]|0;if((f[b+(f[i+(d<<2)>>2]<<2)>>2]|0)==-1){a=d+1|0;j=((a>>>0)%3|0|0)==0?d+-2|0:a;if((j|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}if((f[h+(j<<2)>>2]|0)==-1){e=0;g=j;f[c>>2]=g;return e|0}if((f[b+(f[i+(j<<2)>>2]<<2)>>2]|0)==-1){a=j+1|0;k=((a>>>0)%3|0|0)==0?j+-2|0:a;if((k|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}if((f[h+(k<<2)>>2]|0)==-1){e=0;g=k;f[c>>2]=g;return e|0}if((f[b+(f[i+(k<<2)>>2]<<2)>>2]|0)==-1){i=k+1|0;e=1;g=((i>>>0)%3|0|0)==0?k+-2|0:i;f[c>>2]=g;return e|0}else l=k}else l=j}else l=d;while(1){d=(((l>>>0)%3|0|0)==0?2:-1)+l|0;if((d|0)==-1)break;j=f[h+(d<<2)>>2]|0;if((j|0)==-1)break;d=j+(((j>>>0)%3|0|0)==0?2:-1)|0;if((d|0)==-1)break;else l=d}e=0;g=(((l>>>0)%3|0|0)==0?2:-1)+l|0;f[c>>2]=g;return e|0}function hg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=a+4|0;g=f[e>>2]|0;if(!g){f[c>>2]=e;h=e;return h|0}e=b[d+11>>0]|0;i=e<<24>>24<0;j=i?f[d+4>>2]|0:e&255;e=i?f[d>>2]|0:d;d=a+4|0;a=g;while(1){g=a+16|0;i=b[g+11>>0]|0;k=i<<24>>24<0;l=k?f[a+20>>2]|0:i&255;i=l>>>0>>0;m=i?l:j;if((m|0)!=0?(n=Pk(e,k?f[g>>2]|0:g,m)|0,(n|0)!=0):0)if((n|0)<0)o=8;else o=10;else if(j>>>0>>0)o=8;else o=10;if((o|0)==8){o=0;n=f[a>>2]|0;if(!n){o=9;break}else{p=a;q=n}}else if((o|0)==10){o=0;n=j>>>0>>0?j:l;if((n|0)!=0?(l=Pk(k?f[g>>2]|0:g,e,n)|0,(l|0)!=0):0){if((l|0)>=0){o=16;break}}else o=12;if((o|0)==12?(o=0,!i):0){o=16;break}r=a+4|0;i=f[r>>2]|0;if(!i){o=15;break}else{p=r;q=i}}d=p;a=q}if((o|0)==9){f[c>>2]=a;h=a;return h|0}else if((o|0)==15){f[c>>2]=a;h=r;return h|0}else if((o|0)==16){f[c>>2]=a;h=d;return h|0}return 0}function ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;d=u;u=u+32|0;e=d+24|0;g=d+16|0;h=d+8|0;i=d;j=a+4|0;k=f[j>>2]|0;l=f[b>>2]|0;m=f[b+4>>2]|0;b=f[c>>2]|0;n=f[c+4>>2]|0;c=b-l<<3;f[j>>2]=k-m+n+c;j=(f[a>>2]|0)+(k>>>5<<2)|0;a=k&31;k=j;if((m|0)!=(a|0)){f[e>>2]=l;f[e+4>>2]=m;f[g>>2]=b;f[g+4>>2]=n;f[h>>2]=k;f[h+4>>2]=a;ke(i,e,g,h);u=d;return}h=n-m+c|0;c=l;if((h|0)>0){if(!m){o=h;p=j;q=0;r=l;s=c}else{l=32-m|0;n=(h|0)<(l|0)?h:l;g=-1>>>(l-n|0)&-1<>2]=f[j>>2]&~g|f[c>>2]&g;g=n+m|0;l=c+4|0;o=h-n|0;p=j+(g>>>5<<2)|0;q=g&31;r=l;s=l}l=(o|0)/32|0;Xl(p|0,r|0,l<<2|0)|0;r=o-(l<<5)|0;o=p+(l<<2)|0;p=o;if((r|0)>0){g=-1>>>(32-r|0);f[o>>2]=f[o>>2]&~g|f[s+(l<<2)>>2]&g;t=r;v=p}else{t=q;v=p}}else{t=m;v=k}f[i>>2]=v;f[i+4>>2]=t;u=d;return}function jg(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=u;u=u+16|0;h=g;i=c+4|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;j=dn(16)|0;f[h>>2]=j;f[h+8>>2]=-2147483632;f[h+4>>2]=15;k=j;l=12916;m=k+15|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[j+15>>0]=0;j=yk(i,h,-1)|0;if((b[h+11>>0]|0)<0)br(f[h>>2]|0);switch(j|0){case -1:{if((Yh(i)|0)==10)n=6;else n=5;break}case 1:{n=5;break}default:n=6}if((n|0)==5){j=dn(68)|0;Xo(j);o=j}else if((n|0)==6){n=dn(64)|0;Gp(n);o=n}vo(o,d);Ad(a,o,i,e);if(f[a>>2]|0){p=f[o>>2]|0;q=p+4|0;r=f[q>>2]|0;Va[r&127](o);u=g;return}e=a+4|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);f[c+40>>2]=f[o+52>>2];f[c+44>>2]=f[o+60>>2];f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;p=f[o>>2]|0;q=p+4|0;r=f[q>>2]|0;Va[r&127](o);u=g;return}function kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;c=a+8|0;d=f[c>>2]|0;e=a+12|0;g=f[e>>2]|0;h=g;do if((d|0)==(g|0)){i=a+4|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(j>>>0>k>>>0){m=j;n=((m-l>>2)+1|0)/-2|0;o=j+(n<<2)|0;p=d-m|0;m=p>>2;if(!m)q=j;else{Xl(o|0,j|0,p|0)|0;q=f[i>>2]|0}p=o+(m<<2)|0;f[c>>2]=p;f[i>>2]=q+(n<<2);r=p;break}p=h-l>>1;l=(p|0)==0?1:p;if(l>>>0>1073741823){p=ra(8)|0;Wo(p,14941);f[p>>2]=6944;va(p|0,1080,114)}p=dn(l<<2)|0;n=p;m=p+(l>>>2<<2)|0;o=m;s=p+(l<<2)|0;if((j|0)==(d|0)){t=o;u=k}else{k=m;m=o;l=j;do{f[k>>2]=f[l>>2];k=m+4|0;m=k;l=l+4|0}while((l|0)!=(d|0));t=m;u=f[a>>2]|0}f[a>>2]=n;f[i>>2]=o;f[c>>2]=t;f[e>>2]=s;if(!u)r=t;else{br(u);r=f[c>>2]|0}}else r=d;while(0);f[r>>2]=f[b>>2];f[c>>2]=(f[c>>2]|0)+4;return}function lg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=a+12|0;h=f[g>>2]|0;$j(f[a+4>>2]|0,(f[h+56>>2]|0)-(f[h+52>>2]|0)>>2);h=a+76|0;a=f[h>>2]|0;if(!a){i=f[(f[g>>2]|0)+64>>2]|0;g=(f[i+4>>2]|0)-(f[i>>2]|0)>>2;i=(g>>>0)/3|0;if(g>>>0<=2){j=1;u=b;return j|0}g=0;while(1){f[d>>2]=g*3;f[c>>2]=f[d>>2];g=g+1|0;if(!(Tb(e,c)|0)){j=0;k=10;break}if((g|0)>=(i|0)){j=1;k=10;break}}if((k|0)==10){u=b;return j|0}}else{i=f[a>>2]|0;if((f[a+4>>2]|0)==(i|0)){j=1;u=b;return j|0}a=0;g=i;while(1){f[d>>2]=f[g+(a<<2)>>2];f[c>>2]=f[d>>2];a=a+1|0;if(!(Tb(e,c)|0)){j=0;k=10;break}i=f[h>>2]|0;g=f[i>>2]|0;if(a>>>0>=(f[i+4>>2]|0)-g>>2>>>0){j=1;k=10;break}}if((k|0)==10){u=b;return j|0}}return 0}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+12|0;i=a+4|0;j=f[i>>2]|0;if((j|0)==(f[a+8>>2]|0)){Ci(a,h);k=f[i>>2]|0}else{f[j>>2]=f[h>>2];l=j+4|0;f[i>>2]=l;k=l}l=f[a>>2]|0;f[g>>2]=k-l;k=b+16|0;j=k;m=f[j+4>>2]|0;if(!((m|0)>0|(m|0)==0&(f[j>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=f[a>>2]|0;m=f[g>>2]|0;g=k;k=f[g+4>>2]|0;if((k|0)>0|(k|0)==0&(f[g>>2]|0)>>>0>0){n=j;o=e}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,j,j+m|0)|0;n=f[a>>2]|0;o=e}}else{n=l;o=e}e=f[i>>2]|0;if((e|0)==(n|0)){f[h>>2]=0;p=a+16|0;f[p>>2]=0;u=c;return}f[i>>2]=e+(~((e+-4-n|0)>>>2)<<2);f[h>>2]=0;p=a+16|0;f[p>>2]=0;u=c;return}function ng(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(d-g>>2>>>0>=b>>>0){hj(g|0,0,b<<2|0)|0;f[e>>2]=g+(b<<2);return}i=f[a>>2]|0;j=g-i>>2;g=j+b|0;k=i;if(g>>>0>1073741823)mq(a);l=d-i|0;d=l>>1;m=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(m)if(m>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{n=dn(m<<2)|0;break}else n=0;while(0);d=n+(j<<2)|0;hj(d|0,0,b<<2|0)|0;b=d;j=n+(m<<2)|0;m=n+(g<<2)|0;if((h|0)==(k|0)){o=b;p=i;q=h}else{i=h;h=b;b=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[b+-4>>2]=d;b=h+-4|0;h=b}while((i|0)!=(k|0));o=h;p=f[a>>2]|0;q=f[e>>2]|0}f[a>>2]=o;f[e>>2]=m;f[c>>2]=j;j=p;if((q|0)!=(j|0)){c=q;do{c=c+-4|0;q=f[c>>2]|0;f[c>>2]=0;if(q|0)Va[f[(f[q>>2]|0)+4>>2]&127](q)}while((c|0)!=(j|0))}if(!p)return;br(p);return}function og(a){a=a|0;lk(a);lk(a+32|0);lk(a+64|0);lk(a+96|0);lk(a+128|0);lk(a+160|0);lk(a+192|0);lk(a+224|0);lk(a+256|0);lk(a+288|0);lk(a+320|0);lk(a+352|0);lk(a+384|0);lk(a+416|0);lk(a+448|0);lk(a+480|0);lk(a+512|0);lk(a+544|0);lk(a+576|0);lk(a+608|0);lk(a+640|0);lk(a+672|0);lk(a+704|0);lk(a+736|0);lk(a+768|0);lk(a+800|0);lk(a+832|0);lk(a+864|0);lk(a+896|0);lk(a+928|0);lk(a+960|0);lk(a+992|0);lk(a+1024|0);return}function pg(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=$(h);var i=0,j=0,k=0,l=0,m=0,n=0;i=u;u=u+16|0;j=i;k=i+4|0;f[j>>2]=c;c=a+4|0;a=dn(32)|0;f[k>>2]=a;f[k+8>>2]=-2147483616;f[k+4>>2]=17;l=a;m=12932;n=l+17|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[a+17>>0]=0;Nj(wd(c,j)|0,k,d);if((b[k+11>>0]|0)<0)br(f[k>>2]|0);d=dn(32)|0;f[k>>2]=d;f[k+8>>2]=-2147483616;f[k+4>>2]=19;l=d;m=13005;n=l+19|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[d+19>>0]=0;ci(wd(c,j)|0,k,g,e);if((b[k+11>>0]|0)<0)br(f[k>>2]|0);e=dn(32)|0;f[k>>2]=e;f[k+8>>2]=-2147483616;f[k+4>>2]=18;l=e;m=13025;n=l+18|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[e+18>>0]=0;Lj(wd(c,j)|0,k,h);if((b[k+11>>0]|0)>=0){u=i;return}br(f[k>>2]|0);u=i;return}function qg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=c;e=b;g=d-e|0;h=g>>2;i=a+8|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(h>>>0<=j-k>>2>>>0){m=a+4|0;n=(f[m>>2]|0)-k>>2;o=h>>>0>n>>>0;p=o?b+(n<<2)|0:c;c=p;n=c-e|0;e=n>>2;if(e|0)Xl(k|0,b|0,n|0)|0;n=l+(e<<2)|0;if(o){o=d-c|0;if((o|0)<=0)return;Rg(f[m>>2]|0,p|0,o|0)|0;f[m>>2]=(f[m>>2]|0)+(o>>>2<<2);return}else{o=f[m>>2]|0;if((o|0)==(n|0))return;f[m>>2]=o+(~((o+-4-n|0)>>>2)<<2);return}}n=k;if(!k)q=j;else{j=a+4|0;o=f[j>>2]|0;if((o|0)!=(l|0))f[j>>2]=o+(~((o+-4-k|0)>>>2)<<2);br(n);f[i>>2]=0;f[j>>2]=0;f[a>>2]=0;q=0}if(h>>>0>1073741823)mq(a);j=q>>1;n=q>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;if(n>>>0>1073741823)mq(a);j=dn(n<<2)|0;h=a+4|0;f[h>>2]=j;f[a>>2]=j;f[i>>2]=j+(n<<2);if((g|0)<=0)return;Rg(j|0,b|0,g|0)|0;f[h>>2]=j+(g>>>2<<2);return}function rg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0,v=0.0;e=u;u=u+16|0;g=e;h=c+1|0;f[g>>2]=0;i=g+4|0;f[i>>2]=0;f[g+8>>2]=0;do if(h)if(h>>>0>1073741823)mq(g);else{j=dn(h<<2)|0;f[g>>2]=j;k=j+(h<<2)|0;f[g+8>>2]=k;hj(j|0,0,(c<<2)+4|0)|0;f[i>>2]=k;l=j;m=k;n=j;break}else{l=0;m=0;n=0}while(0);if((b|0)>0){g=0;do{j=l+(f[a+(g<<2)>>2]<<2)|0;f[j>>2]=(f[j>>2]|0)+1;g=g+1|0}while((g|0)!=(b|0))}o=+(b|0);if((c|0)<0){p=0;q=0.0}else{c=0;r=0.0;b=0;while(1){g=f[l+(b<<2)>>2]|0;s=+(g|0);if((g|0)>0){t=c+1|0;v=r+ +Fg(s/o)*s}else{t=c;v=r}b=b+1|0;if((b|0)==(h|0)){p=t;q=v;break}else{c=t;r=v}}}if(d|0)f[d>>2]=p;v=-q;p=~~v>>>0;d=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;if(!l){I=d;u=e;return p|0}if((m|0)!=(l|0))f[i>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(n);I=d;u=e;return p|0}function sg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=a+12|0;h=f[g>>2]|0;$j(f[a+4>>2]|0,(f[h+28>>2]|0)-(f[h+24>>2]|0)>>2);h=a+76|0;a=f[h>>2]|0;if(!a){i=f[g>>2]|0;g=(f[i+4>>2]|0)-(f[i>>2]|0)>>2;i=(g>>>0)/3|0;if(g>>>0<=2){j=1;u=b;return j|0}g=0;while(1){f[d>>2]=g*3;f[c>>2]=f[d>>2];g=g+1|0;if(!(Wb(e,c)|0)){j=0;k=10;break}if((g|0)>=(i|0)){j=1;k=10;break}}if((k|0)==10){u=b;return j|0}}else{i=f[a>>2]|0;if((f[a+4>>2]|0)==(i|0)){j=1;u=b;return j|0}a=0;g=i;while(1){f[d>>2]=f[g+(a<<2)>>2];f[c>>2]=f[d>>2];a=a+1|0;if(!(Wb(e,c)|0)){j=0;k=10;break}i=f[h>>2]|0;g=f[i>>2]|0;if(a>>>0>=(f[i+4>>2]|0)-g>>2>>>0){j=1;k=10;break}}if((k|0)==10){u=b;return j|0}}return 0}function tg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e+4|0;h=e;i=dn(32)|0;f[a>>2]=i;f[a+4>>2]=c+4;c=a+8|0;b[c>>0]=0;f[i+16>>2]=f[d>>2];a=i+20|0;f[i+24>>2]=0;f[i+28>>2]=0;j=i+24|0;f[a>>2]=j;i=f[d+4>>2]|0;k=d+8|0;if((i|0)==(k|0)){b[c>>0]=1;u=e;return}d=j;j=i;while(1){i=j+16|0;f[h>>2]=d;f[g>>2]=f[h>>2];Wg(a,g,i,i)|0;i=f[j+4>>2]|0;if(!i){l=j+8|0;m=f[l>>2]|0;if((f[m>>2]|0)==(j|0))n=m;else{m=l;do{l=f[m>>2]|0;m=l+8|0;o=f[m>>2]|0}while((f[o>>2]|0)!=(l|0));n=o}}else{m=i;while(1){o=f[m>>2]|0;if(!o)break;else m=o}n=m}if((n|0)==(k|0))break;else j=n}b[c>>0]=1;u=e;return}function ug(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d;f[e>>2]=b;g=a+8|0;if(((f[a+12>>2]|0)-(f[g>>2]|0)>>2|0)<=(b|0))jh(g,b+1|0);h=f[(f[c>>2]|0)+56>>2]|0;do if((h|0)<5){i=a+20+(h*12|0)+4|0;j=f[i>>2]|0;if((j|0)==(f[a+20+(h*12|0)+8>>2]|0)){Ci(a+20+(h*12|0)|0,e);break}else{f[j>>2]=b;f[i>>2]=j+4;break}}while(0);b=f[c>>2]|0;h=f[e>>2]|0;f[b+60>>2]=h;e=(f[g>>2]|0)+(h<<2)|0;f[c>>2]=0;c=f[e>>2]|0;f[e>>2]=b;if(!c){u=d;return}b=c+88|0;e=f[b>>2]|0;f[b>>2]=0;if(e|0){b=f[e+8>>2]|0;if(b|0){h=e+12|0;if((f[h>>2]|0)!=(b|0))f[h>>2]=b;br(b)}br(e)}e=f[c+68>>2]|0;if(e|0){b=c+72|0;h=f[b>>2]|0;if((h|0)!=(e|0))f[b>>2]=h+(~((h+-4-e|0)>>>2)<<2);br(e)}e=c+64|0;h=f[e>>2]|0;f[e>>2]=0;if(h|0){e=f[h>>2]|0;if(e|0){b=h+4|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;br(e)}br(h)}br(c);u=d;return}function vg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;d=u;u=u+48|0;e=d+16|0;g=d;h=d+32|0;i=a+28|0;j=f[i>>2]|0;f[h>>2]=j;k=a+20|0;l=(f[k>>2]|0)-j|0;f[h+4>>2]=l;f[h+8>>2]=b;f[h+12>>2]=c;b=l+c|0;l=a+60|0;f[g>>2]=f[l>>2];f[g+4>>2]=h;f[g+8>>2]=2;j=ro(Aa(146,g|0)|0)|0;a:do if((b|0)!=(j|0)){g=2;m=b;n=h;o=j;while(1){if((o|0)<0)break;m=m-o|0;p=f[n+4>>2]|0;q=o>>>0>p>>>0;r=q?n+8|0:n;s=g+(q<<31>>31)|0;t=o-(q?p:0)|0;f[r>>2]=(f[r>>2]|0)+t;p=r+4|0;f[p>>2]=(f[p>>2]|0)-t;f[e>>2]=f[l>>2];f[e+4>>2]=r;f[e+8>>2]=s;o=ro(Aa(146,e|0)|0)|0;if((m|0)==(o|0)){v=3;break a}else{g=s;n=r}}f[a+16>>2]=0;f[i>>2]=0;f[k>>2]=0;f[a>>2]=f[a>>2]|32;if((g|0)==2)w=0;else w=c-(f[n+4>>2]|0)|0}else v=3;while(0);if((v|0)==3){v=f[a+44>>2]|0;f[a+16>>2]=v+(f[a+48>>2]|0);a=v;f[i>>2]=a;f[k>>2]=a;w=c}u=d;return w|0}function wg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;f[a>>2]=5880;b=f[a+68>>2]|0;if(b|0){c=a+72|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+56>>2]|0;if(b|0){d=a+60|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+44>>2]|0;if(b|0){c=a+48|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+32>>2]|0;if(b|0){d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+20>>2]|0;if(b|0){c=a+24|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}Sh(a+8|0);b=a+4|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;b=a+40|0;d=f[b>>2]|0;if(d|0){c=a+44|0;e=f[c>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-4|0;f[c>>2]=e;i=f[e>>2]|0;f[e>>2]=0;if(i|0){Qi(i);br(i)}h=f[c>>2]|0}while((h|0)!=(d|0));g=f[b>>2]|0}br(g)}Qi(a);br(a);return}function xg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a+12|0;d=f[a>>2]|0;e=a+8|0;g=f[e>>2]|0;h=(g|0)==-1;if(!(b[c>>0]|0)){do if(((!h?(i=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(i|0)!=-1):0)?(f[(f[d>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)==0:0)?(j=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(j|0)!=-1):0)if(!((j>>>0)%3|0)){k=j+2|0;break}else{k=j+-1|0;break}else k=-1;while(0);f[e>>2]=k;return}k=g+1|0;if(((!h?(h=((k>>>0)%3|0|0)==0?g+-2|0:k,(h|0)!=-1):0)?(f[(f[d>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)==0:0)?(k=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(h<<2)>>2]|0,h=k+1|0,(k|0)!=-1):0){g=((h>>>0)%3|0|0)==0?k+-2|0:h;f[e>>2]=g;if((g|0)!=-1){if((g|0)!=(f[a+4>>2]|0))return;f[e>>2]=-1;return}}else f[e>>2]=-1;g=f[a+4>>2]|0;do if((((g|0)!=-1?(a=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(a|0)!=-1):0)?(f[(f[d>>2]|0)+(a>>>5<<2)>>2]&1<<(a&31)|0)==0:0)?(h=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(a<<2)>>2]|0,(h|0)!=-1):0)if(!((h>>>0)%3|0)){l=h+2|0;break}else{l=h+-1|0;break}else l=-1;while(0);f[e>>2]=l;b[c>>0]=0;return}function yg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d>>2;g=e+1|0;if(g>>>0>1073741823)mq(a);h=a+8|0;i=(f[h>>2]|0)-d|0;d=i>>1;j=i>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(j)if(j>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{k=dn(j<<2)|0;break}else k=0;while(0);d=k+(e<<2)|0;e=d;g=k+(j<<2)|0;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;j=d+4|0;b=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(b|0)){l=e;m=b;n=b}else{i=k;k=e;e=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[e+-4>>2]=d;e=k+-4|0;k=e}while((i|0)!=(b|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=j;f[h>>2]=g;g=m;if((n|0)!=(g|0)){h=n;do{h=h+-4|0;n=f[h>>2]|0;f[h>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n)}while((h|0)!=(g|0))}if(!m)return;br(m);return}function zg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+4|0;a=f[d>>2]|0;do if(a|0){e=b[c+11>>0]|0;g=e<<24>>24<0;h=g?f[c+4>>2]|0:e&255;e=g?f[c>>2]|0:c;g=d;i=a;a:while(1){j=i;while(1){k=j+16|0;l=b[k+11>>0]|0;m=l<<24>>24<0;n=m?f[j+20>>2]|0:l&255;l=h>>>0>>0?h:n;if((l|0)!=0?(o=Pk(m?f[k>>2]|0:k,e,l)|0,(o|0)!=0):0){if((o|0)>=0)break}else p=6;if((p|0)==6?(p=0,n>>>0>=h>>>0):0)break;n=f[j+4>>2]|0;if(!n){q=g;break a}else j=n}i=f[j>>2]|0;if(!i){q=j;break}else g=j}if((q|0)!=(d|0)){g=q+16|0;i=b[g+11>>0]|0;n=i<<24>>24<0;o=n?f[q+20>>2]|0:i&255;i=o>>>0>>0?o:h;if(i|0?(l=Pk(e,n?f[g>>2]|0:g,i)|0,l|0):0){if((l|0)<0)break;else r=q;return r|0}if(h>>>0>=o>>>0){r=q;return r|0}}}while(0);r=d;return r|0}function Ag(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if(((e-h|0)/12|0)>>>0>=b>>>0){i=b;j=h;do{f[j>>2]=f[c>>2];f[j+4>>2]=f[c+4>>2];f[j+8>>2]=f[c+8>>2];j=(f[g>>2]|0)+12|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=(h-i|0)/12|0;h=j+b|0;if(h>>>0>357913941)mq(a);k=(e-i|0)/12|0;i=k<<1;e=k>>>0<178956970?(i>>>0>>0?h:i):357913941;do if(e)if(e>>>0>357913941){i=ra(8)|0;Wo(i,14941);f[i>>2]=6944;va(i|0,1080,114)}else{l=dn(e*12|0)|0;break}else l=0;while(0);i=l+(j*12|0)|0;j=l+(e*12|0)|0;e=b;b=i;l=i;do{f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];b=l+12|0;l=b;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;b=(f[g>>2]|0)-e|0;c=i+(((b|0)/-12|0)*12|0)|0;if((b|0)>0)Rg(c|0,e|0,b|0)|0;f[a>>2]=c;f[g>>2]=l;f[d>>2]=j;if(!e)return;br(e);return}function Bg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d>>2;g=e+1|0;if(g>>>0>1073741823)mq(a);h=a+8|0;i=(f[h>>2]|0)-d|0;d=i>>1;j=i>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(j)if(j>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{k=dn(j<<2)|0;break}else k=0;while(0);d=k+(e<<2)|0;e=d;g=k+(j<<2)|0;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;j=d+4|0;b=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(b|0)){l=e;m=b;n=b}else{i=k;k=e;e=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[e+-4>>2]=d;e=k+-4|0;k=e}while((i|0)!=(b|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=j;f[h>>2]=g;g=m;if((n|0)!=(g|0)){h=n;do{h=h+-4|0;n=f[h>>2]|0;f[h>>2]=0;if(n|0){Qi(n);br(n)}}while((h|0)!=(g|0))}if(!m)return;br(m);return}function Cg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=f[b>>2]|0;g=f[a>>2]|0;h=f[d>>2]|0;d=f[h>>2]|0;i=(f[h+4>>2]|0)-d>>3;if(i>>>0<=e>>>0)mq(h);j=d;if(i>>>0<=g>>>0)mq(h);d=f[j+(e<<3)>>2]|0;k=f[c>>2]|0;if(i>>>0<=k>>>0)mq(h);l=j+(g<<3)|0;m=(f[j+(k<<3)>>2]|0)>>>0>>0;if(d>>>0<(f[l>>2]|0)>>>0){if(m){f[a>>2]=k;f[c>>2]=g;n=1;return n|0}f[a>>2]=e;f[b>>2]=g;d=f[c>>2]|0;if(i>>>0<=d>>>0)mq(h);if((f[j+(d<<3)>>2]|0)>>>0>=(f[l>>2]|0)>>>0){n=1;return n|0}f[b>>2]=d;f[c>>2]=g;n=2;return n|0}if(!m){n=0;return n|0}f[b>>2]=k;f[c>>2]=e;e=f[b>>2]|0;c=f[a>>2]|0;if(i>>>0<=e>>>0)mq(h);if(i>>>0<=c>>>0)mq(h);if((f[j+(e<<3)>>2]|0)>>>0>=(f[j+(c<<3)>>2]|0)>>>0){n=1;return n|0}f[a>>2]=e;f[b>>2]=c;n=2;return n|0}function Dg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=u;u=u+96|0;g=e+40|0;h=e;Am(g,c);we(h,b,c);th(g,h);sj(h+24|0,f[h+28>>2]|0);Dj(h+12|0,f[h+16>>2]|0);sj(h,f[h+4>>2]|0);Si(a,g,d);f[g>>2]=2968;sj(g+28|0,f[g+32>>2]|0);Dj(g+16|0,f[g+20>>2]|0);sj(g+4|0,f[g+8>>2]|0);u=e;return}function Eg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a=u;u=u+16|0;e=a;if(!b){g=0;u=a;return g|0}h=b+96|0;i=b+100|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;b=f[i>>2]|0;j=f[h>>2]|0;k=(b-j|0)/12|0;l=j;j=b;if(k>>>0>=c>>>0){if(k>>>0>c>>>0?(b=l+(c*12|0)|0,(b|0)!=(j|0)):0)f[i>>2]=j+(~(((j+-12-b|0)>>>0)/12|0)*12|0);if(!c){g=1;u=a;return g|0}}else Ag(h,c-k|0,e);k=0;b=f[h>>2]|0;while(1){j=k*3|0;l=f[d+(j<<2)>>2]|0;m=f[d+(j+1<<2)>>2]|0;n=f[d+(j+2<<2)>>2]|0;j=((f[i>>2]|0)-b|0)/12|0;o=k;k=k+1|0;if(o>>>0>>0){p=b;q=b}else{f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ag(h,k-j|0,e);j=f[h>>2]|0;p=j;q=j}f[p+(o*12|0)>>2]=l;f[p+(o*12|0)+4>>2]=m;f[p+(o*12|0)+8>>2]=n;if((k|0)==(c|0)){g=1;break}else b=q}u=a;return g|0}function Fg(a){a=+a;var b=0,c=0,d=0,e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,t=0.0;p[s>>3]=a;b=f[s>>2]|0;c=f[s+4>>2]|0;d=(c|0)<0;do if(d|c>>>0<1048576){if((b|0)==0&(c&2147483647|0)==0){e=-1.0/(a*a);break}if(d){e=(a-a)/0.0;break}else{p[s>>3]=a*18014398509481984.0;g=f[s+4>>2]|0;h=-1077;i=g;j=f[s>>2]|0;k=g;l=9;break}}else if(c>>>0<=2146435071)if((b|0)==0&0==0&(c|0)==1072693248)e=0.0;else{h=-1023;i=c;j=b;k=c;l=9}else e=a;while(0);if((l|0)==9){l=i+614242|0;f[s>>2]=j;f[s+4>>2]=(l&1048575)+1072079006;a=+p[s>>3]+-1.0;m=a*a*.5;n=a/(a+2.0);o=n*n;q=o*o;p[s>>3]=a-m;j=f[s+4>>2]|0;f[s>>2]=0;f[s+4>>2]=j;r=+p[s>>3];t=a-r-m+n*(m+(q*(q*(q*.15313837699209373+.22222198432149784)+.3999999999940942)+o*(q*(q*(q*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));q=r*1.4426950407214463;o=+(h+(l>>>20)|0);m=q+o;e=m+(q+(o-m)+(t*1.4426950407214463+(t+r)*1.6751713164886512e-10))}return +e}function Gg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=u;u=u+16|0;e=d;g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=17;h=g;i=12804;j=h+17|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[g+17>>0]=0;g=c+16|0;i=f[g>>2]|0;if(i){h=g;j=i;a:while(1){i=j;while(1){if((f[i+16>>2]|0)>=(a|0))break;k=f[i+4>>2]|0;if(!k){l=h;break a}else i=k}j=f[i>>2]|0;if(!j){l=i;break}else h=i}if(((l|0)!=(g|0)?(f[l+16>>2]|0)<=(a|0):0)?(a=l+20|0,(sh(a,e)|0)!=0):0)m=a;else n=10}else n=10;if((n|0)==10)m=c;c=yk(m,e,-1)|0;if((b[e+11>>0]|0)>=0){o=(c|0)==-1;p=c>>>0>6;q=p?-2:c;r=o?-1:q;u=d;return r|0}br(f[e>>2]|0);o=(c|0)==-1;p=c>>>0>6;q=p?-2:c;r=o?-1:q;u=d;return r|0}function Hg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;g=f[c>>2]|0;f[c>>2]=0;f[e>>2]=g;ug(a,b,e);g=f[e>>2]|0;f[e>>2]=0;if(g|0){e=g+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){h=c+12|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;br(e)}br(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;h=f[e>>2]|0;if((h|0)!=(c|0))f[e>>2]=h+(~((h+-4-c|0)>>>2)<<2);br(c)}c=g+64|0;h=f[c>>2]|0;f[c>>2]=0;if(h|0){c=f[h>>2]|0;if(c|0){e=h+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;br(c)}br(h)}br(g)}g=a+84|0;h=a+88|0;a=f[h>>2]|0;c=f[g>>2]|0;e=a-c>>2;if((e|0)>(b|0)){u=d;return}i=b+1|0;b=a;if(i>>>0>e>>>0){nh(g,i-e|0);u=d;return}if(i>>>0>=e>>>0){u=d;return}e=c+(i<<2)|0;if((e|0)==(b|0)){u=d;return}f[h>>2]=b+(~((b+-4-e|0)>>>2)<<2);u=d;return}function Ig(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;g=a+4|0;f[g>>2]=c;f[a+8>>2]=f[c+56>>2];h=f[a+184>>2]|0;i=a+188|0;j=f[i>>2]|0;if((j|0)!=(h|0))f[i>>2]=j+(~((j+-4-h|0)>>>2)<<2);h=f[c+48>>2]|0;c=dn(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=14285;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(sh(h,e)|0)==0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);h=f[(f[g>>2]|0)+48>>2]|0;if(c){c=(Yh(h)|0)>5&1;b[a+352>>0]=c;u=d;return 1}c=dn(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=14285;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(Oj(h,e,0)|0)&1;b[a+352>>0]=c;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return 1}function Jg(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;c=a+108|0;d=(f[a+112>>2]|0)-(f[c>>2]|0)|0;e=(d|0)/12|0;g=a+4|0;Nh(e,f[(f[g>>2]|0)+44>>2]|0)|0;if(!d)return 1;d=0;a=0;while(1){i=f[c>>2]|0;j=i+(d*12|0)+4|0;Nh((f[j>>2]|0)-a|0,f[(f[g>>2]|0)+44>>2]|0)|0;Nh((f[j>>2]|0)-(f[i+(d*12|0)>>2]|0)|0,f[(f[g>>2]|0)+44>>2]|0)|0;d=d+1|0;if(d>>>0>=e>>>0)break;else a=f[j>>2]|0}li(f[(f[g>>2]|0)+44>>2]|0,e,0,0)|0;a=0;do{d=f[(f[g>>2]|0)+44>>2]|0;j=d+16|0;i=f[j+4>>2]|0;if((i|0)>0|(i|0)==0&(f[j>>2]|0)>>>0>0){j=f[d+12>>2]|0;d=j+4|0;i=f[d>>2]|0;k=b[(f[c>>2]|0)+(a*12|0)+8>>0]&1;l=i>>>3;m=i&7;i=(f[j>>2]|0)+l|0;b[i>>0]=(1<>0]|0);i=(f[j>>2]|0)+l|0;b[i>>0]=k<>0]|0);f[d>>2]=(f[d>>2]|0)+1}a=a+1|0}while(a>>>0>>0);Qf(f[(f[g>>2]|0)+44>>2]|0);return 1}function Kg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;g=a+4|0;f[g>>2]=c;f[a+8>>2]=f[c+56>>2];h=f[a+184>>2]|0;i=a+188|0;j=f[i>>2]|0;if((j|0)!=(h|0))f[i>>2]=j+(~((j+-4-h|0)>>>2)<<2);h=f[c+48>>2]|0;c=dn(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=14285;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(sh(h,e)|0)==0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);h=f[(f[g>>2]|0)+48>>2]|0;if(c){c=(Yh(h)|0)>5&1;b[a+288>>0]=c;u=d;return 1}c=dn(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=14285;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(Oj(h,e,0)|0)&1;b[a+288>>0]=c;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return 1}function Lg(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=u;u=u+32|0;h=g+16|0;i=g+8|0;j=g;k=d-e|0;d=a+8|0;if((k|0)>0){a=0-e|0;l=i+4|0;m=j+4|0;n=h+4|0;o=k;do{k=b+(o<<2)|0;p=k+(a<<2)|0;q=c+(o<<2)|0;r=f[k+4>>2]|0;s=f[p>>2]|0;t=f[p+4>>2]|0;f[i>>2]=f[k>>2];f[l>>2]=r;f[j>>2]=s;f[m>>2]=t;Dd(h,d,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[n>>2];o=o-e|0}while((o|0)>0)}o=e>>>0>1073741823?-1:e<<2;e=_q(o)|0;hj(e|0,0,o|0)|0;o=f[b+4>>2]|0;n=f[e>>2]|0;m=f[e+4>>2]|0;f[i>>2]=f[b>>2];f[i+4>>2]=o;f[j>>2]=n;f[j+4>>2]=m;Dd(h,d,i,j);f[c>>2]=f[h>>2];f[c+4>>2]=f[h+4>>2];$q(e);u=g;return 1}function Mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+32|0;d=c+12|0;e=c;g=f[b+100>>2]|0;h=f[b+96>>2]|0;b=g-h|0;i=(b|0)/12|0;f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;k=h;do if(b)if(i>>>0>357913941)mq(d);else{l=dn(b)|0;f[d>>2]=l;f[d+8>>2]=l+(i*12|0);hj(l|0,0,b|0)|0;f[j>>2]=l+b;m=l;break}else m=0;while(0);f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;if((g|0)!=(h|0)){h=e+4|0;g=e+8|0;b=0;do{l=k+(b*12|0)|0;f[e>>2]=f[l>>2];f[e+4>>2]=f[l+4>>2];f[e+8>>2]=f[l+8>>2];f[m+(b*12|0)>>2]=f[e>>2];f[m+(b*12|0)+4>>2]=f[h>>2];f[m+(b*12|0)+8>>2]=f[g>>2];b=b+1|0}while(b>>>0>>0)}Cj(a,d);a=f[d>>2]|0;if(!a){u=c;return}d=f[j>>2]|0;if((d|0)!=(a|0))f[j>>2]=d+(~(((d+-12-a|0)>>>0)/12|0)*12|0);br(a);u=c;return}function Ng(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;if(c>>>0>4294967279)mq(a);d=a+11|0;e=b[d>>0]|0;g=e<<24>>24<0;if(g){h=f[a+4>>2]|0;i=(f[a+8>>2]&2147483647)+-1|0}else{h=e&255;i=10}j=h>>>0>c>>>0?h:c;c=j>>>0<11;k=c?10:(j+16&-16)+-1|0;do if((k|0)!=(i|0)){do if(c){j=f[a>>2]|0;if(g){l=0;m=j;n=a;o=13}else{Lo(a,j,(e&255)+1|0)|0;br(j);o=16}}else{j=k+1|0;p=dn(j)|0;if(g){l=1;m=f[a>>2]|0;n=p;o=13;break}else{Lo(p,a,(e&255)+1|0)|0;q=p;r=j;s=a+4|0;o=15;break}}while(0);if((o|0)==13){j=a+4|0;Lo(n,m,(f[j>>2]|0)+1|0)|0;br(m);if(l){q=n;r=k+1|0;s=j;o=15}else o=16}if((o|0)==15){f[a+8>>2]=r|-2147483648;f[s>>2]=h;f[a>>2]=q;break}else if((o|0)==16){b[d>>0]=h;break}}while(0);return}function Og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=f[b>>2]|0;if((c|0)==-1){d=-1;return d|0}b=f[(f[a+24>>2]|0)+(c<<2)>>2]|0;if((b|0)==-1){d=0;return d|0}c=a+12|0;a=0;e=0;g=b;a:while(1){b:do if(e){h=a+1|0;i=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((i|0)==-1){d=h;j=15;break a}k=f[(f[c>>2]|0)+(i<<2)>>2]|0;if((k|0)==-1){d=h;j=15;break a}if(!((k>>>0)%3|0)){l=k+2|0;m=h;break}else{l=k+-1|0;m=h;break}}else{h=a;k=g;while(1){i=h+1|0;n=k+1|0;o=((n>>>0)%3|0|0)==0?k+-2|0:n;if((o|0)==-1){l=b;m=i;break b}n=f[(f[c>>2]|0)+(o<<2)>>2]|0;o=n+1|0;if((n|0)==-1){l=b;m=i;break b}k=((o>>>0)%3|0|0)==0?n+-2|0:o;if((k|0)==-1){l=b;m=i;break b}if((k|0)==(b|0)){d=i;j=15;break a}else h=i}}while(0);if((l|0)==-1){d=m;j=15;break}else{a=m;e=1;g=l}}if((j|0)==15)return d|0;return 0}function Pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+8|0;Cg(a,a+4|0,d,c)|0;e=a+12|0;if((e|0)==(b|0))return;g=f[c>>2]|0;c=f[g>>2]|0;h=(f[g+4>>2]|0)-c>>3;i=c;c=e;e=d;a:while(1){d=f[c>>2]|0;j=f[e>>2]|0;if(h>>>0<=d>>>0){k=5;break}if(h>>>0<=j>>>0){k=7;break}l=i+(d<<3)|0;if((f[l>>2]|0)>>>0<(f[i+(j<<3)>>2]|0)>>>0){m=e;n=c;o=j;while(1){f[n>>2]=o;if((m|0)==(a|0)){p=a;break}j=m+-4|0;o=f[j>>2]|0;if(h>>>0<=o>>>0){k=11;break a}if((f[l>>2]|0)>>>0>=(f[i+(o<<3)>>2]|0)>>>0){p=m;break}else{q=m;m=j;n=q}}f[p>>2]=d}n=c+4|0;if((n|0)==(b|0)){k=3;break}else{m=c;c=n;e=m}}if((k|0)==3)return;else if((k|0)==5)mq(g);else if((k|0)==7)mq(g);else if((k|0)==11)mq(g)}function Qg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=Cg(a,b,c,e)|0;h=f[d>>2]|0;i=f[c>>2]|0;j=f[e>>2]|0;e=f[j>>2]|0;k=(f[j+4>>2]|0)-e>>3;if(k>>>0<=h>>>0)mq(j);l=e;if(k>>>0<=i>>>0)mq(j);if((f[l+(h<<3)>>2]|0)>>>0>=(f[l+(i<<3)>>2]|0)>>>0){m=g;return m|0}f[c>>2]=h;f[d>>2]=i;i=f[c>>2]|0;d=f[b>>2]|0;if(k>>>0<=i>>>0)mq(j);if(k>>>0<=d>>>0)mq(j);if((f[l+(i<<3)>>2]|0)>>>0>=(f[l+(d<<3)>>2]|0)>>>0){m=g+1|0;return m|0}f[b>>2]=i;f[c>>2]=d;d=f[b>>2]|0;c=f[a>>2]|0;if(k>>>0<=d>>>0)mq(j);if(k>>>0<=c>>>0)mq(j);if((f[l+(d<<3)>>2]|0)>>>0>=(f[l+(c<<3)>>2]|0)>>>0){m=g+2|0;return m|0}f[a>>2]=d;f[b>>2]=c;m=g+3|0;return m|0}function Rg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return Da(a|0,c|0,d|0)|0;e=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return e|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}h=g&-4|0;d=h-64|0;while((a|0)<=(d|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(h|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{h=g-4|0;while((a|0)<(h|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return e|0}function Sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;c=u;u=u+16|0;d=c+4|0;e=c;f[a>>2]=1216;g=a+4|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;f[g+16>>2]=0;f[g+20>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;f[d>>2]=b;b=a+4|0;g=a+8|0;Ci(b,d);h=f[d>>2]|0;i=a+20|0;j=f[i>>2]|0;k=a+16|0;a=f[k>>2]|0;l=j-a>>2;m=a;if((h|0)<(l|0)){n=m;o=h;p=f[g>>2]|0;q=f[b>>2]|0;r=p-q|0;s=r>>2;t=s+-1|0;v=n+(o<<2)|0;f[v>>2]=t;u=c;return}a=h+1|0;f[e>>2]=-1;w=j;if(a>>>0<=l>>>0)if(a>>>0>>0?(j=m+(a<<2)|0,(j|0)!=(w|0)):0){f[i>>2]=w+(~((w+-4-j|0)>>>2)<<2);x=h;y=m}else{x=h;y=m}else{kh(k,a-l|0,e);x=f[d>>2]|0;y=f[k>>2]|0}n=y;o=x;p=f[g>>2]|0;q=f[b>>2]|0;r=p-q|0;s=r>>2;t=s+-1|0;v=n+(o<<2)|0;f[v>>2]=t;u=c;return}function Tg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=a+4|0;c=f[b>>2]|0;d=(f[c+12>>2]|0)-(f[c+8>>2]|0)|0;c=d>>2;a:do if((d|0)>0){e=0;while(1){if(!(Ra[f[(f[a>>2]|0)+36>>2]&127](a,e)|0)){g=0;break}e=e+1|0;h=f[b>>2]|0;i=(f[h+12>>2]|0)-(f[h+8>>2]|0)>>2;if((e|0)>=(i|0)){j=i;break a}}return g|0}else j=c;while(0);c=a+20|0;b=a+24|0;d=f[b>>2]|0;e=f[c>>2]|0;i=d-e>>2;h=e;e=d;if(j>>>0<=i>>>0){if(j>>>0>>0?(d=h+(j<<2)|0,(d|0)!=(e|0)):0)f[b>>2]=e+(~((e+-4-d|0)>>>2)<<2)}else oi(c,j-i|0);i=f[a+12>>2]|0;j=f[a+8>>2]|0;a=j;if((i|0)==(j|0)){g=1;return g|0}d=i-j>>2;j=0;do{i=f[a+(j<<2)>>2]|0;e=f[i+8>>2]|0;b=f[i+4>>2]|0;i=b;if((e|0)!=(b|0)?(h=f[c>>2]|0,k=e-b>>2,f[h+(f[i>>2]<<2)>>2]=j,k>>>0>1):0){b=1;do{f[h+(f[i+(b<<2)>>2]<<2)>>2]=j;b=b+1|0}while(b>>>0>>0)}j=j+1|0}while(j>>>0>>0);g=1;return g|0}function Ug(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=f[c+88>>2]|0;if(!d){e=0;return e|0}if((f[d>>2]|0)!=1){e=0;return e|0}g=d+8|0;d=f[g>>2]|0;f[a+4>>2]=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;i=a+8|0;j=c+24|0;c=b[j>>0]|0;k=c<<24>>24;l=a+12|0;m=f[l>>2]|0;n=f[i>>2]|0;o=m-n>>2;p=n;n=m;if(o>>>0>=k>>>0)if(o>>>0>k>>>0?(m=p+(k<<2)|0,(m|0)!=(n|0)):0){f[l>>2]=n+(~((n+-4-m|0)>>>2)<<2);q=c;r=d}else{q=c;r=d}else{oi(i,k-o|0);q=b[j>>0]|0;r=f[g>>2]|0}g=r+4|0;j=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;if(q<<24>>24>0){g=f[i>>2]|0;i=q<<24>>24;q=j;o=4;k=0;while(1){f[g+(k<<2)>>2]=q;o=o+4|0;k=k+1|0;d=r+o|0;c=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;if((k|0)>=(i|0)){s=c;break}else q=c}}else s=j;f[a+20>>2]=s;e=1;return e|0}function Vg(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;do if(!(qp(a,f[c+8>>2]|0,g)|0)){if(!(qp(a,f[c>>2]|0,g)|0)){h=f[a+8>>2]|0;Za[f[(f[h>>2]|0)+24>>2]&3](h,c,d,e,g);break}if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[c+32>>2]=e;i=c+44|0;if((f[i>>2]|0)==4)break;j=c+52|0;b[j>>0]=0;k=c+53|0;b[k>>0]=0;l=f[a+8>>2]|0;_a[f[(f[l>>2]|0)+20>>2]&3](l,c,d,d,1,g);if(b[k>>0]|0)if(!(b[j>>0]|0)){m=3;n=11}else o=3;else{m=4;n=11}if((n|0)==11){f[h>>2]=d;h=c+40|0;f[h>>2]=(f[h>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0){b[c+54>>0]=1;o=m}else o=m}f[i>>2]=o;break}if((e|0)==1)f[c+32>>2]=1}else Om(0,c,d,e);while(0);return}function Wg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e+12|0;h=e+8|0;i=e;f[i>>2]=f[b>>2];f[g>>2]=f[i>>2];i=zd(a,g,h,e+4|0,c)|0;c=f[i>>2]|0;if(c|0){j=c;u=e;return j|0}c=dn(40)|0;dj(c+16|0,d);dj(c+28|0,d+12|0);d=f[h>>2]|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=d;f[i>>2]=c;d=f[f[a>>2]>>2]|0;if(!d)k=c;else{f[a>>2]=d;k=f[i>>2]|0}Ae(f[a+4>>2]|0,k);k=a+8|0;f[k>>2]=(f[k>>2]|0)+1;j=c;u=e;return j|0}function Xg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e;h=a+4|0;f[h>>2]=0;if(!c){u=e;return}i=a+8|0;j=f[i>>2]|0;k=j<<5;if(k>>>0>>0){f[g>>2]=0;l=g+4|0;f[l>>2]=0;m=g+8|0;f[m>>2]=0;if((c|0)<0)mq(a);n=j<<6;j=c+31&-32;hi(g,k>>>0<1073741823?(n>>>0>>0?j:n):2147483647);n=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=n;g=f[h>>2]|0;f[h>>2]=c;f[l>>2]=g;g=f[i>>2]|0;f[i>>2]=f[m>>2];f[m>>2]=g;if(n|0)br(n);o=a}else{f[h>>2]=c;o=a}a=f[o>>2]|0;o=a;h=a;a=c>>>5;n=a<<2;if(!(b[d>>0]|0)){hj(h|0,0,n|0)|0;d=c&31;g=o+(a<<2)|0;if(!d){u=e;return}f[g>>2]=f[g>>2]&~(-1>>>(32-d|0));u=e;return}else{hj(h|0,-1,n|0)|0;n=c&31;c=o+(a<<2)|0;if(!n){u=e;return}f[c>>2]=f[c>>2]|-1>>>(32-n|0);u=e;return}}function Yg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){n=a+88|0;fd(n,b);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;n=a+88|0;fd(n,b);u=c;return 1}function Zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){n=a+108|0;fd(n,b);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;n=a+108|0;fd(n,b);u=c;return 1}function _g(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=a+32|0;d=f[a+64>>2]|0;e=(Qa[f[(f[d>>2]|0)+40>>2]&127](d)|0)+56|0;d=f[e>>2]|0;li(c,(((f[d+100>>2]|0)-(f[d+96>>2]|0)|0)/12|0)*3|0,0,1)|0;d=a+68|0;e=f[d>>2]|0;g=(f[a+72>>2]|0)-e|0;if((g|0)<=0){Qf(c);return}i=a+48|0;j=a+44|0;a=(g>>>2)+-1|0;g=e;while(1){e=f[g+(a<<2)>>2]|0;k=f[3124+(e<<2)>>2]|0;l=i;m=f[l+4>>2]|0;if((m|0)>0|(m|0)==0&(f[l>>2]|0)>>>0>0?(l=f[j>>2]|0,171>>>e&1|0):0){m=l+4|0;n=0;o=f[m>>2]|0;do{p=o>>>3;q=o&7;r=(f[l>>2]|0)+p|0;b[r>>0]=(1<>0]|0);r=(f[l>>2]|0)+p|0;b[r>>0]=(e>>>n&1)<>0]|0);o=(f[m>>2]|0)+1|0;f[m>>2]=o;n=n+1|0}while((n|0)!=(k|0))}k=a+-1|0;if((k|0)<=-1)break;a=k;g=f[d>>2]|0}Qf(c);return}function $g(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+48|0;h=g;i=g+32|0;if(!c){j=0;u=g;return j|0}Cn(h);do if((Tl(c,0)|0)!=-1){if(d){if(!(Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0)){k=0;break}Va[f[(f[c>>2]|0)+20>>2]&127](c)}Dg(i,a,c,h);l=(f[i>>2]|0)==0;m=i+4|0;if((b[m+11>>0]|0)<0)br(f[m>>2]|0);if(l){l=f[h>>2]|0;m=h+4|0;ag(e,l,l+((f[m>>2]|0)-l)|0);k=(f[m>>2]|0)-(f[h>>2]|0)|0}else k=0}else k=0;while(0);e=h+12|0;i=f[e>>2]|0;f[e>>2]=0;if(i|0)br(i);i=f[h>>2]|0;if(i|0){e=h+4|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;br(i)}j=k;u=g;return j|0}function ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=u;u=u+16|0;d=c;e=f[(f[a>>2]|0)+8>>2]|0;g=a+8|0;h=a+12|0;i=(f[h>>2]|0)-(f[g>>2]|0)>>2;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;Xa[e&15](a,i,d);i=f[d>>2]|0;f[d>>2]=0;if(!i){k=f[h>>2]|0;l=f[g>>2]|0;m=k-l|0;n=m>>2;o=n+-1|0;u=c;return o|0}d=i+88|0;a=f[d>>2]|0;f[d>>2]=0;if(a|0){d=f[a+8>>2]|0;if(d|0){e=a+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;br(d)}br(a)}a=f[i+68>>2]|0;if(a|0){d=i+72|0;e=f[d>>2]|0;if((e|0)!=(a|0))f[d>>2]=e+(~((e+-4-a|0)>>>2)<<2);br(a)}a=i+64|0;e=f[a>>2]|0;f[a>>2]=0;if(e|0){a=f[e>>2]|0;if(a|0){d=e+4|0;if((f[d>>2]|0)!=(a|0))f[d>>2]=a;br(a)}br(e)}br(i);k=f[h>>2]|0;l=f[g>>2]|0;m=k-l|0;n=m>>2;o=n+-1|0;u=c;return o|0}function bh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(b[a+352>>0]|0)return 1;c=a+8|0;d=f[c>>2]|0;e=(f[d+12>>2]|0)-(f[d+8>>2]|0)|0;d=e>>2;g=a+172|0;si(g,d+-1|0);if(!((d|0)!=1&(e|0)>0))return 1;e=a+12|0;a=0;h=0;while(1){i=f[(f[(f[c>>2]|0)+8>>2]|0)+(a<<2)>>2]|0;if(!(f[i+56>>2]|0))j=h;else{k=f[g>>2]|0;f[k+(h*136|0)>>2]=a;l=f[k+(h*136|0)+104>>2]|0;m=k+(h*136|0)+108|0;n=f[m>>2]|0;if((n|0)!=(l|0))f[m>>2]=n+(~((n+-4-l|0)>>>2)<<2);l=f[e>>2]|0;$j(k+(h*136|0)+104|0,(f[l+4>>2]|0)-(f[l>>2]|0)>>2);l=f[g>>2]|0;f[l+(h*136|0)+128>>2]=0;zc(l+(h*136|0)+4|0,f[c>>2]|0,f[e>>2]|0,i)|0;j=h+1|0}a=a+1|0;if((a|0)>=(d|0))break;else h=j}return 1}function ch(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(b[a+288>>0]|0)return 1;c=a+8|0;d=f[c>>2]|0;e=(f[d+12>>2]|0)-(f[d+8>>2]|0)|0;d=e>>2;g=a+172|0;si(g,d+-1|0);if(!((d|0)!=1&(e|0)>0))return 1;e=a+12|0;a=0;h=0;while(1){i=f[(f[(f[c>>2]|0)+8>>2]|0)+(a<<2)>>2]|0;if(!(f[i+56>>2]|0))j=h;else{k=f[g>>2]|0;f[k+(h*136|0)>>2]=a;l=f[k+(h*136|0)+104>>2]|0;m=k+(h*136|0)+108|0;n=f[m>>2]|0;if((n|0)!=(l|0))f[m>>2]=n+(~((n+-4-l|0)>>>2)<<2);l=f[e>>2]|0;$j(k+(h*136|0)+104|0,(f[l+4>>2]|0)-(f[l>>2]|0)>>2);l=f[g>>2]|0;f[l+(h*136|0)+128>>2]=0;zc(l+(h*136|0)+4|0,f[c>>2]|0,f[e>>2]|0,i)|0;j=h+1|0}a=a+1|0;if((a|0)>=(d|0))break;else h=j}return 1}function dh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;if(d-g>>3>>>0>=b>>>0){h=b;i=g;do{j=i;f[j>>2]=0;f[j+4>>2]=0;i=(f[e>>2]|0)+8|0;f[e>>2]=i;h=h+-1|0}while((h|0)!=0);return}h=f[a>>2]|0;i=g-h>>3;g=i+b|0;if(g>>>0>536870911)mq(a);j=d-h|0;h=j>>2;d=j>>3>>>0<268435455?(h>>>0>>0?g:h):536870911;do if(d)if(d>>>0>536870911){h=ra(8)|0;Wo(h,14941);f[h>>2]=6944;va(h|0,1080,114)}else{k=dn(d<<3)|0;break}else k=0;while(0);h=k+(i<<3)|0;i=k+(d<<3)|0;d=b;b=h;k=h;do{g=b;f[g>>2]=0;f[g+4>>2]=0;b=k+8|0;k=b;d=d+-1|0}while((d|0)!=0);d=f[a>>2]|0;b=(f[e>>2]|0)-d|0;g=h+(0-(b>>3)<<3)|0;if((b|0)>0)Rg(g|0,d|0,b|0)|0;f[a>>2]=g;f[e>>2]=k;f[c>>2]=i;if(!d)return;br(d);return}function eh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=u;u=u+16|0;g=e+4|0;h=e;i=e+8|0;j=a&255;b[i>>0]=j&127;do if(c>>>0>0|(c|0)==0&a>>>0>127){b[i>>0]=j|-128;k=d+16|0;l=f[k+4>>2]|0;if((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0){m=0;break}else{f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,i,i+1|0)|0;k=Wn(a|0,c|0,7)|0;m=eh(k,I,d)|0;break}}else{k=d+16|0;l=f[k+4>>2]|0;if((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0){m=0;break}f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,i,i+1|0)|0;n=1;u=e;return n|0}while(0);n=m;u=e;return n|0}function fh(a,b){a=a|0;b=b|0;var c=0;c=a+8|0;ef(c,b)|0;if((c|0)==(b|0)){f[a+92>>2]=f[b+84>>2];return}else{Yf(a+56|0,f[b+48>>2]|0,f[b+52>>2]|0);Yf(a+68|0,f[b+60>>2]|0,f[b+64>>2]|0);Yf(a+80|0,f[b+72>>2]|0,f[b+76>>2]|0);f[a+92>>2]=f[b+84>>2];qg(a+96|0,f[b+88>>2]|0,f[b+92>>2]|0);return}}function gh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;g=f[(f[(f[d+4>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;if((b|0)==-1)h=Ki(c,d)|0;else h=b;if((h|0)==-2)i=0;else{do if((Qa[f[(f[d>>2]|0)+8>>2]&127](d)|0)==1){Hf(a,d,h,c,e,514);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);c=dn(44)|0;f[c>>2]=1528;f[c+4>>2]=g;g=c+8|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[g+16>>2]=f[e+16>>2];f[g+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);f[c>>2]=1584;i=c}f[a>>2]=i;return}function hh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=u;u=u+224|0;g=e+120|0;h=e+80|0;i=e;j=e+136|0;k=h;l=k+40|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(l|0));f[g>>2]=f[d>>2];if((qb(0,c,g,i,h)|0)<0)m=-1;else{if((f[a+76>>2]|0)>-1)n=gr(a)|0;else n=0;d=f[a>>2]|0;k=d&32;if((b[a+74>>0]|0)<1)f[a>>2]=d&-33;d=a+48|0;if(!(f[d>>2]|0)){l=a+44|0;o=f[l>>2]|0;f[l>>2]=j;p=a+28|0;f[p>>2]=j;q=a+20|0;f[q>>2]=j;f[d>>2]=80;r=a+16|0;f[r>>2]=j+80;j=qb(a,c,g,i,h)|0;if(!o)s=j;else{Sa[f[a+36>>2]&31](a,0,0)|0;t=(f[q>>2]|0)==0?-1:j;f[l>>2]=o;f[d>>2]=0;f[r>>2]=0;f[p>>2]=0;f[q>>2]=0;s=t}}else s=qb(a,c,g,i,h)|0;h=f[a>>2]|0;f[a>>2]=h|k;if(n|0)fr(a);m=(h&32|0)==0?s:-1}u=e;return m|0}function ih(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;if(!(fn(a,b,c)|0)){g=0;u=d;return g|0}if((Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0)<<24>>24==1?((f[(f[a+8>>2]|0)+28>>2]|0)+-1|0)>>>0>=6:0){g=0;u=d;return g|0}h=Gg(c,f[b+48>>2]|0)|0;Xa[f[(f[a>>2]|0)+48>>2]&15](e,a,h);h=a+36|0;b=f[e>>2]|0;f[e>>2]=0;c=f[h>>2]|0;f[h>>2]=b;if(!c){f[e>>2]=0;i=b}else{Va[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0;f[e>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);i=f[h>>2]|0}if(!i){g=1;u=d;return g|0}if(Ra[f[(f[a>>2]|0)+36>>2]&127](a,i)|0){g=1;u=d;return g|0}i=f[h>>2]|0;f[h>>2]=0;if(!i){g=1;u=d;return g|0}Va[f[(f[i>>2]|0)+4>>2]&127](i);g=1;u=d;return g|0}function jh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e>>2;h=d;if(g>>>0>>0){hf(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+(b<<2)|0;if((g|0)==(h|0))return;else i=h;do{h=i+-4|0;f[c>>2]=h;b=f[h>>2]|0;f[h>>2]=0;if(b|0){h=b+88|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){h=f[e+8>>2]|0;if(h|0){a=e+12|0;if((f[a>>2]|0)!=(h|0))f[a>>2]=h;br(h)}br(e)}e=f[b+68>>2]|0;if(e|0){h=b+72|0;a=f[h>>2]|0;if((a|0)!=(e|0))f[h>>2]=a+(~((a+-4-e|0)>>>2)<<2);br(e)}e=b+64|0;a=f[e>>2]|0;f[e>>2]=0;if(a|0){e=f[a>>2]|0;if(e|0){h=a+4|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;br(e)}br(a)}br(b)}i=f[c>>2]|0}while((i|0)!=(g|0));return}function kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;i=h;if(e-h>>2>>>0>=b>>>0){j=b;k=i;while(1){f[k>>2]=f[c>>2];j=j+-1|0;if(!j)break;else k=k+4|0}f[g>>2]=i+(b<<2);return}i=f[a>>2]|0;k=h-i|0;h=k>>2;j=h+b|0;if(j>>>0>1073741823)mq(a);l=e-i|0;e=l>>1;m=l>>2>>>0<536870911?(e>>>0>>0?j:e):1073741823;do if(m)if(m>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}else{e=dn(m<<2)|0;n=e;o=e;break}else{n=0;o=0}while(0);e=n+(h<<2)|0;h=n+(m<<2)|0;m=b;j=e;while(1){f[j>>2]=f[c>>2];m=m+-1|0;if(!m)break;else j=j+4|0}if((k|0)>0)Rg(o|0,i|0,k|0)|0;f[a>>2]=n;f[g>>2]=e+(b<<2);f[d>>2]=h;if(!i)return;br(i);return}function lh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=(f[a>>2]|0)+1794895138|0;g=rp(f[a+8>>2]|0,e)|0;h=rp(f[a+12>>2]|0,e)|0;i=rp(f[a+16>>2]|0,e)|0;a:do if((g>>>0>>2>>>0?(j=c-(g<<2)|0,h>>>0>>0&i>>>0>>0):0)?((i|h)&3|0)==0:0){j=h>>>2;k=i>>>2;l=0;m=g;while(1){n=m>>>1;o=l+n|0;p=o<<1;q=p+j|0;r=rp(f[a+(q<<2)>>2]|0,e)|0;s=rp(f[a+(q+1<<2)>>2]|0,e)|0;if(!(s>>>0>>0&r>>>0<(c-s|0)>>>0)){t=0;break a}if(b[a+(s+r)>>0]|0){t=0;break a}r=bl(d,a+s|0)|0;if(!r)break;s=(r|0)<0;if((m|0)==1){t=0;break a}else{l=s?l:o;m=s?n:m-n|0}}m=p+k|0;l=rp(f[a+(m<<2)>>2]|0,e)|0;j=rp(f[a+(m+1<<2)>>2]|0,e)|0;if(j>>>0>>0&l>>>0<(c-j|0)>>>0)t=(b[a+(j+l)>>0]|0)==0?a+j|0:0;else t=0}else t=0;while(0);return t|0}function mh(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=u;u=u+64|0;i=h;j=f[a>>2]|0;k=a+(f[j+-8>>2]|0)|0;l=f[j+-4>>2]|0;f[i>>2]=e;f[i+4>>2]=a;f[i+8>>2]=c;f[i+12>>2]=g;g=i+16|0;c=i+20|0;a=i+24|0;j=i+28|0;m=i+32|0;n=i+40|0;o=g;p=o+36|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(p|0));d[g+36>>1]=0;b[g+38>>0]=0;a:do if(qp(l,e,0)|0){f[i+48>>2]=1;_a[f[(f[l>>2]|0)+20>>2]&3](l,i,k,k,1,0);q=(f[a>>2]|0)==1?k:0}else{Za[f[(f[l>>2]|0)+24>>2]&3](l,i,k,1,0);switch(f[i+36>>2]|0){case 0:{q=(f[n>>2]|0)==1&(f[j>>2]|0)==1&(f[m>>2]|0)==1?f[c>>2]|0:0;break a;break}case 1:break;default:{q=0;break a}}if((f[a>>2]|0)!=1?!((f[n>>2]|0)==0&(f[j>>2]|0)==1&(f[m>>2]|0)==1):0){q=0;break}q=f[g>>2]|0}while(0);u=h;return q|0}function nh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(d-g>>2>>>0>=b>>>0){i=b;j=h;while(1){f[j>>2]=1;i=i+-1|0;if(!i)break;else j=j+4|0}f[e>>2]=h+(b<<2);return}h=f[a>>2]|0;j=g-h|0;g=j>>2;i=g+b|0;if(i>>>0>1073741823)mq(a);k=d-h|0;d=k>>1;l=k>>2>>>0<536870911?(d>>>0>>0?i:d):1073741823;do if(l)if(l>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{d=dn(l<<2)|0;m=d;n=d;break}else{m=0;n=0}while(0);d=m+(g<<2)|0;g=m+(l<<2)|0;l=b;i=d;while(1){f[i>>2]=1;l=l+-1|0;if(!l)break;else i=i+4|0}if((j|0)>0)Rg(n|0,h|0,j|0)|0;f[a>>2]=m;f[e>>2]=d+(b<<2);f[c>>2]=g;if(!h)return;br(h);return}function oh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;if(!c){g=0;u=d;return g|0}h=a+84|0;i=f[h>>2]|0;j=a+88|0;k=f[j>>2]|0;if((k|0)!=(i|0))f[j>>2]=k+(~((k+-4-i|0)>>>2)<<2);f[h>>2]=0;f[j>>2]=0;f[a+92>>2]=0;if(i|0)br(i);i=a+72|0;j=f[i>>2]|0;h=a+76|0;if((f[h>>2]|0)!=(j|0))f[h>>2]=j;f[i>>2]=0;f[h>>2]=0;f[a+80>>2]=0;if(j|0)br(j);j=c+4|0;h=(f[j>>2]|0)-(f[c>>2]|0)>>2;b[e>>0]=0;Xg(a,h,e);h=c+24|0;i=c+28|0;k=(f[i>>2]|0)-(f[h>>2]|0)>>2;b[e>>0]=0;Xg(a+12|0,k,e);Sf(a+28|0,(f[j>>2]|0)-(f[c>>2]|0)>>2,5868);$j(a+52|0,(f[i>>2]|0)-(f[h>>2]|0)>>2);$j(a+40|0,(f[i>>2]|0)-(f[h>>2]|0)>>2);f[a+64>>2]=c;b[a+24>>0]=1;g=1;u=d;return g|0}function ph(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a+12|0;d=f[a>>2]|0;e=a+8|0;g=f[e>>2]|0;h=(g|0)==-1;if(!(b[c>>0]|0)){do if((!h?(i=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(i|0)!=-1):0)?(j=f[(f[d+12>>2]|0)+(i<<2)>>2]|0,(j|0)!=-1):0)if(!((j>>>0)%3|0)){k=j+2|0;break}else{k=j+-1|0;break}else k=-1;while(0);f[e>>2]=k;return}k=g+1|0;if((!h?(h=((k>>>0)%3|0|0)==0?g+-2|0:k,(h|0)!=-1):0)?(k=f[(f[d+12>>2]|0)+(h<<2)>>2]|0,h=k+1|0,(k|0)!=-1):0){g=((h>>>0)%3|0|0)==0?k+-2|0:h;f[e>>2]=g;if((g|0)!=-1){if((g|0)!=(f[a+4>>2]|0))return;f[e>>2]=-1;return}}else f[e>>2]=-1;g=f[a+4>>2]|0;do if(((g|0)!=-1?(a=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(a|0)!=-1):0)?(h=f[(f[d+12>>2]|0)+(a<<2)>>2]|0,(h|0)!=-1):0)if(!((h>>>0)%3|0)){l=h+2|0;break}else{l=h+-1|0;break}else l=-1;while(0);f[e>>2]=l;b[c>>0]=0;return}function qh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Id(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+20>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Id(a,e);return}function rh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+48|0;g=e;h=e+32|0;i=a+4|0;j=f[i>>2]|0;if(!j){k=0;u=e;return k|0}do if(c)if(Qa[f[(f[j>>2]|0)+16>>2]&127](j)|0){l=f[i>>2]|0;Va[f[(f[l>>2]|0)+20>>2]&127](l);break}else{k=0;u=e;return k|0}while(0);Cn(g);Si(h,f[a>>2]|0,g);a=(f[h>>2]|0)==0;i=h+4|0;if((b[i+11>>0]|0)<0)br(f[i>>2]|0);if(a){a=f[g>>2]|0;i=g+4|0;ag(d,a,a+((f[i>>2]|0)-a)|0);m=(f[i>>2]|0)-(f[g>>2]|0)|0}else m=0;i=g+12|0;a=f[i>>2]|0;f[i>>2]=0;if(a|0)br(a);a=f[g>>2]|0;if(a|0){i=g+4|0;if((f[i>>2]|0)!=(a|0))f[i>>2]=a;br(a)}k=m;u=e;return k|0}function sh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=f[a+4>>2]|0;if(!d){e=0;return e|0}a=b[c+11>>0]|0;g=a<<24>>24<0;h=g?f[c+4>>2]|0:a&255;a=g?f[c>>2]|0:c;c=d;while(1){d=c+16|0;g=b[d+11>>0]|0;i=g<<24>>24<0;j=i?f[c+20>>2]|0:g&255;g=j>>>0>>0;k=g?j:h;if((k|0)!=0?(l=Pk(a,i?f[d>>2]|0:d,k)|0,(l|0)!=0):0)if((l|0)<0)m=7;else m=8;else if(h>>>0>>0)m=7;else m=8;if((m|0)==7){m=0;n=c}else if((m|0)==8){m=0;l=h>>>0>>0?h:j;if((l|0)!=0?(j=Pk(i?f[d>>2]|0:d,a,l)|0,(j|0)!=0):0){if((j|0)>=0){e=1;m=14;break}}else m=10;if((m|0)==10?(m=0,!g):0){e=1;m=14;break}n=c+4|0}c=f[n>>2]|0;if(!c){e=0;m=14;break}}if((m|0)==14)return e|0;return 0}function th(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=u;u=u+16|0;d=c+12|0;e=c+8|0;g=c+4|0;h=c;i=a+4|0;j=(i|0)==(b|0);if(!j){f[g>>2]=f[b>>2];f[h>>2]=b+4;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Hc(i,e,d)}if(!j){f[g>>2]=f[b+12>>2];f[h>>2]=b+16;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Ac(a+16|0,e,d)}if(j){u=c;return}f[g>>2]=f[b+24>>2];f[h>>2]=b+28;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Hc(a+28|0,e,d);u=c;return}function uh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=u;u=u+16|0;g=e+4|0;h=e;di(g,a,b,c,d);d=f[g>>2]|0;if(!d){i=-1;f[g>>2]=0;u=e;return i|0}f[g>>2]=0;f[h>>2]=d;d=ah(a,h)|0;a=f[h>>2]|0;f[h>>2]=0;if(!a){i=d;f[g>>2]=0;u=e;return i|0}h=a+88|0;c=f[h>>2]|0;f[h>>2]=0;if(c|0){h=f[c+8>>2]|0;if(h|0){b=c+12|0;if((f[b>>2]|0)!=(h|0))f[b>>2]=h;br(h)}br(c)}c=f[a+68>>2]|0;if(c|0){h=a+72|0;b=f[h>>2]|0;if((b|0)!=(c|0))f[h>>2]=b+(~((b+-4-c|0)>>>2)<<2);br(c)}c=a+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){h=b+4|0;if((f[h>>2]|0)!=(c|0))f[h>>2]=c;br(c)}br(b)}br(a);i=d;f[g>>2]=0;u=e;return i|0}function vh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=u;u=u+16|0;g=e+4|0;h=e;i=f[a+8>>2]|0;j=i+24|0;k=b[j>>0]|0;l=c+4|0;Nf(a,(f[l>>2]|0)-(f[c>>2]|0)>>2,k,d);d=f[a+32>>2]|0;a=(f[f[d>>2]>>2]|0)+(f[d+48>>2]|0)|0;d=f[c>>2]|0;c=f[l>>2]|0;if((d|0)==(c|0)){m=1;u=e;return m|0}l=i+84|0;n=i+68|0;o=0;p=d;while(1){d=f[p>>2]|0;if(!(b[l>>0]|0))q=f[(f[n>>2]|0)+(d<<2)>>2]|0;else q=d;f[h>>2]=q;d=b[j>>0]|0;f[g>>2]=f[h>>2];if(!(Pb(i,g,d,a+(o<<2)|0)|0)){m=0;r=7;break}p=p+4|0;if((p|0)==(c|0)){m=1;r=7;break}else o=o+k|0}if((r|0)==7){u=e;return m|0}return 0}function wh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;f[a>>2]=1392;b=a+72|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);c=f[a+60>>2]|0;if(c|0){b=a+64|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);br(c)}c=f[a+48>>2]|0;if(c|0)br(c);c=a+36|0;d=f[c>>2]|0;if(d|0){b=a+40|0;e=f[b>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-4|0;f[b>>2]=e;i=f[e>>2]|0;f[e>>2]=0;if(i|0)Va[f[(f[i>>2]|0)+4>>2]&127](i);h=f[b>>2]|0}while((h|0)!=(d|0));g=f[c>>2]|0}br(g)}f[a>>2]=1216;g=f[a+16>>2]|0;if(g|0){c=a+20|0;d=f[c>>2]|0;if((d|0)!=(g|0))f[c>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g)}g=f[a+4>>2]|0;if(!g)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(g|0))f[d>>2]=a+(~((a+-4-g|0)>>>2)<<2);br(g);return}function xh(a){a=a|0;tj(a+992|0);tj(a+960|0);tj(a+928|0);tj(a+896|0);tj(a+864|0);tj(a+832|0);tj(a+800|0);tj(a+768|0);tj(a+736|0);tj(a+704|0);tj(a+672|0);tj(a+640|0);tj(a+608|0);tj(a+576|0);tj(a+544|0);tj(a+512|0);tj(a+480|0);tj(a+448|0);tj(a+416|0);tj(a+384|0);tj(a+352|0);tj(a+320|0);tj(a+288|0);tj(a+256|0);tj(a+224|0);tj(a+192|0);tj(a+160|0);tj(a+128|0);tj(a+96|0);tj(a+64|0);tj(a+32|0);tj(a);return}function yh(a){a=a|0;rn(a);rn(a+32|0);rn(a+64|0);rn(a+96|0);rn(a+128|0);rn(a+160|0);rn(a+192|0);rn(a+224|0);rn(a+256|0);rn(a+288|0);rn(a+320|0);rn(a+352|0);rn(a+384|0);rn(a+416|0);rn(a+448|0);rn(a+480|0);rn(a+512|0);rn(a+544|0);rn(a+576|0);rn(a+608|0);rn(a+640|0);rn(a+672|0);rn(a+704|0);rn(a+736|0);rn(a+768|0);rn(a+800|0);rn(a+832|0);rn(a+864|0);rn(a+896|0);rn(a+928|0);rn(a+960|0);rn(a+992|0);return}function zh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;a=u;u=u+16|0;e=a;if((c|0)<0|((b|0)==0|(d|0)==0)){g=0;u=a;return g|0}h=f[b+8>>2]|0;if(((f[b+12>>2]|0)-h>>2|0)<=(c|0)){g=0;u=a;return g|0}i=b+4|0;if(!(f[i>>2]|0)){j=dn(52)|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;n[j+16>>2]=$(1.0);k=j+20|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;n[j+36>>2]=$(1.0);f[j+40>>2]=0;f[j+44>>2]=0;f[j+48>>2]=0;f[b+4>>2]=j}j=f[(f[h+(c<<2)>>2]|0)+60>>2]|0;c=dn(44)|0;Ub(c,d);f[c+40>>2]=j;j=f[i>>2]|0;f[e>>2]=c;gk(j,e)|0;j=f[e>>2]|0;f[e>>2]=0;if(!j){g=1;u=a;return g|0}Qi(j);br(j);g=1;u=a;return g|0}function Ah(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f[a>>2]=d;e=a+24|0;g=a+28|0;h=f[g>>2]|0;i=f[e>>2]|0;j=h-i>>2;k=i;i=h;if(j>>>0>=d>>>0){if(j>>>0>d>>>0?(h=k+(d<<2)|0,(h|0)!=(i|0)):0)f[g>>2]=i+(~((i+-4-h|0)>>>2)<<2)}else oi(e,d-j|0);if(!c)return;j=f[b>>2]|0;if((c|0)>1){d=j;e=j;h=1;while(1){i=f[b+(h<<2)>>2]|0;g=(i|0)<(e|0);k=g?i:e;l=g?d:(i|0)>(d|0)?i:d;h=h+1|0;if((h|0)==(c|0)){m=l;n=k;break}else{d=l;e=k}}}else{m=j;n=j}f[a+4>>2]=n;f[a+8>>2]=m;j=Vn(m|0,((m|0)<0)<<31>>31|0,n|0,((n|0)<0)<<31>>31|0)|0;n=I;if(!(n>>>0<0|(n|0)==0&j>>>0<2147483647))return;n=j+1|0;f[a+12>>2]=n;j=(n|0)/2|0;m=a+16|0;f[m>>2]=j;f[a+20>>2]=0-j;if(n&1|0)return;f[m>>2]=j+-1;return}function Bh(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;c=u;u=u+64|0;j=c;k=i?6:5;Al(j);i=f[h+56>>2]|0;h=X(Ll(k)|0,e)|0;yj(j,i,0,e&255,k,0,h,((h|0)<0)<<31>>31,0,0);h=dn(96)|0;nl(h,j);f[a>>2]=h;pj(h,d)|0;d=h+84|0;if(!g){b[d>>0]=1;a=f[h+68>>2]|0;j=h+72|0;k=f[j>>2]|0;if((k|0)==(a|0)){u=c;return}f[j>>2]=k+(~((k+-4-a|0)>>>2)<<2);u=c;return}b[d>>0]=0;d=h+68|0;a=h+72|0;h=f[a>>2]|0;k=f[d>>2]|0;j=h-k>>2;e=h;if(j>>>0>>0){kh(d,g-j|0,1200);u=c;return}if(j>>>0<=g>>>0){u=c;return}j=k+(g<<2)|0;if((j|0)==(e|0)){u=c;return}f[a>>2]=e+(~((e+-4-j|0)>>>2)<<2);u=c;return}function Ch(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){jd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;jd(a,e);return}function Dh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){nd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;nd(a,e);return}function Eh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){ud(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;ud(a,e);return}function Fh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Ed(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Ed(a,e);return}function Gh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){ld(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;ld(a,e);return}function Hh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){qd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;qd(a,e);return}function Ih(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){yd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;yd(a,e);return}function Jh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){kd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;kd(a,e);return}function Kh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){od(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;od(a,e);return}function Lh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){vd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;vd(a,e);return}function Mh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Fd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Fd(a,e);return}function Nh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;b[h>>0]=a&127;do if(a>>>0>127){b[h>>0]=a|128;i=c+16|0;j=f[i+4>>2]|0;if((j|0)>0|(j|0)==0&(f[i>>2]|0)>>>0>0){k=0;break}else{f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0;k=Nh(a>>>7,c)|0;break}}else{i=c+16|0;j=f[i+4>>2]|0;if((j|0)>0|(j|0)==0&(f[i>>2]|0)>>>0>0){k=0;break}f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0;l=1;u=d;return l|0}while(0);l=k;u=d;return l|0}function Oh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;Be(e,a+40|0,f[a+8>>2]|0,b,c);Wi(a,e);a=f[e>>2]|0;f[e>>2]=0;if(!a){u=d;return 1}e=a+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){b=c+12|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;br(e)}br(c)}c=f[a+68>>2]|0;if(c|0){e=a+72|0;b=f[e>>2]|0;if((b|0)!=(c|0))f[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);br(c)}c=a+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){e=b+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;br(c)}br(b)}br(a);u=d;return 1}function Ph(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){rd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;rd(a,e);return}function Qh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;e=u;u=u+48|0;g=e;h=e+32|0;if(!c){i=0;u=e;return i|0}Cn(g);if((Tl(c,0)|0)!=-1?Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0:0){Va[f[(f[c>>2]|0)+20>>2]&127](c);Zf(h,a,c,g);c=(f[h>>2]|0)==0;a=h+4|0;if((b[a+11>>0]|0)<0)br(f[a>>2]|0);if(c){c=f[g>>2]|0;a=g+4|0;ag(d,c,c+((f[a>>2]|0)-c)|0);j=(f[a>>2]|0)-(f[g>>2]|0)|0}else j=0}else j=0;a=g+12|0;c=f[a>>2]|0;f[a>>2]=0;if(c|0)br(c);c=f[g>>2]|0;if(c|0){a=g+4|0;if((f[a>>2]|0)!=(c|0))f[a>>2]=c;br(c)}i=j;u=e;return i|0}function Rh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;se(e,a+40|0,f[a+8>>2]|0,b,c);Wi(a,e);a=f[e>>2]|0;f[e>>2]=0;if(!a){u=d;return 1}e=a+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){b=c+12|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;br(e)}br(c)}c=f[a+68>>2]|0;if(c|0){e=a+72|0;b=f[e>>2]|0;if((b|0)!=(c|0))f[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);br(c)}c=a+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){e=b+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;br(c)}br(b)}br(a);u=d;return 1}function Sh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d;do{d=g+-4|0;f[c>>2]=d;h=f[d>>2]|0;f[d>>2]=0;if(h|0){d=h+88|0;i=f[d>>2]|0;f[d>>2]=0;if(i|0){d=f[i+8>>2]|0;if(d|0){j=i+12|0;if((f[j>>2]|0)!=(d|0))f[j>>2]=d;br(d)}br(i)}i=f[h+68>>2]|0;if(i|0){d=h+72|0;j=f[d>>2]|0;if((j|0)!=(i|0))f[d>>2]=j+(~((j+-4-i|0)>>>2)<<2);br(i)}i=h+64|0;j=f[i>>2]|0;f[i>>2]=0;if(j|0){i=f[j>>2]|0;if(i|0){d=j+4|0;if((f[d>>2]|0)!=(i|0))f[d>>2]=i;br(i)}br(j)}br(h)}g=f[c>>2]|0}while((g|0)!=(b|0));e=f[a>>2]|0}br(e);return}function Th(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=(d|0)<0;do if(!b){if(e){g=0;return g|0}h=a+4|0;i=f[h>>2]|0;j=f[a>>2]|0;k=i-j|0;if(k>>>0>>0){ri(a,c-k|0);break}if(k>>>0>c>>>0?(k=j+c|0,(k|0)!=(i|0)):0)f[h>>2]=k}else{if(e){g=0;return g|0}k=a+4|0;h=f[k>>2]|0;i=f[a>>2]|0;j=h-i|0;do if(0<(d|0)|0==(d|0)&j>>>0>>0){if(j>>>0>>0){ri(a,c-j|0);break}if(j>>>0>c>>>0?(l=i+c|0,(l|0)!=(h|0)):0){f[k>>2]=l;m=15}else m=15}else m=15;while(0);if((m|0)==15?(c|0)==0:0)break;Xl(f[a>>2]|0,b|0,c|0)|0}while(0);c=a+24|0;a=c;b=Tn(f[a>>2]|0,f[a+4>>2]|0,1,0)|0;a=c;f[a>>2]=b;f[a+4>>2]=I;g=1;return g|0}function Uh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;if(!(ve(a,c)|0)){i=0;u=d;return i|0}j=a+36|0;k=a+40|0;a=f[j>>2]|0;if((f[k>>2]|0)==(a|0)){i=1;u=d;return i|0}l=c+16|0;m=c+4|0;n=h+1|0;o=0;p=a;do{a=f[p+(o<<2)>>2]|0;q=Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0;b[h>>0]=q;q=l;a=f[q+4>>2]|0;if(!((a|0)>0|(a|0)==0&(f[q>>2]|0)>>>0>0)){f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,n)|0}o=o+1|0;p=f[j>>2]|0}while(o>>>0<(f[k>>2]|0)-p>>2>>>0);i=1;u=d;return i|0}function Vh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=u;u=u+16|0;d=c;wp(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;e=a+24|0;wp(e);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;a=dn(32)|0;f[d>>2]=a;f[d+8>>2]=-2147483616;f[d+4>>2]=20;g=a;h=13101;i=g+20|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[a+20>>0]=0;Mj(e,d,1);if((b[d+11>>0]|0)<0)br(f[d>>2]|0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;a=dn(32)|0;f[d>>2]=a;f[d+8>>2]=-2147483616;f[d+4>>2]=22;g=a;h=13122;i=g+22|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[a+22>>0]=0;Mj(e,d,1);if((b[d+11>>0]|0)>=0){u=c;return}br(f[d>>2]|0);u=c;return}function Wh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=f[a+4>>2]|0;c=a+8|0;d=f[c>>2]|0;if((d|0)!=(b|0)){e=d;do{d=e+-4|0;f[c>>2]=d;g=f[d>>2]|0;f[d>>2]=0;if(g|0){d=g+88|0;h=f[d>>2]|0;f[d>>2]=0;if(h|0){d=f[h+8>>2]|0;if(d|0){i=h+12|0;if((f[i>>2]|0)!=(d|0))f[i>>2]=d;br(d)}br(h)}h=f[g+68>>2]|0;if(h|0){d=g+72|0;i=f[d>>2]|0;if((i|0)!=(h|0))f[d>>2]=i+(~((i+-4-h|0)>>>2)<<2);br(h)}h=g+64|0;i=f[h>>2]|0;f[h>>2]=0;if(i|0){h=f[i>>2]|0;if(h|0){d=i+4|0;if((f[d>>2]|0)!=(h|0))f[d>>2]=h;br(h)}br(i)}br(g)}e=f[c>>2]|0}while((e|0)!=(b|0))}b=f[a>>2]|0;if(!b)return;br(b);return}function Xh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;u=c;return 1}function Yh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c;e=dn(16)|0;f[d>>2]=e;f[d+8>>2]=-2147483632;f[d+4>>2]=14;g=e;h=12975;i=g+14|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[e+14>>0]=0;e=yk(a,d,-1)|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);j=dn(16)|0;f[d>>2]=j;f[d+8>>2]=-2147483632;f[d+4>>2]=14;g=j;h=12990;i=g+14|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[j+14>>0]=0;j=yk(a,d,-1)|0;if((b[d+11>>0]|0)>=0){k=(e|0)<(j|0);l=k?j:e;m=(l|0)==-1;n=m?5:l;u=c;return n|0}br(f[d>>2]|0);k=(e|0)<(j|0);l=k?j:e;m=(l|0)==-1;n=m?5:l;u=c;return n|0}function Zh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;u=c;return 1}function _h(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=dn(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;c=a+8|0;b[c>>0]=0;h=g+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;h=g+20|0;i=e+12|0;f[h>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;g=e+16|0;e=f[g>>2]|0;j=f[i>>2]|0;k=e-j|0;if(!k){l=j;m=e;n=0}else{ri(h,k);l=f[i>>2]|0;m=f[g>>2]|0;n=f[h>>2]|0}Rg(n|0,l|0,m-l|0)|0;b[c>>0]=1;c=f[a>>2]|0;f[c+4>>2]=d;f[c>>2]=0;return}function $h(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;b=a+32|0;fd(a,b);c=a+80|0;d=f[c>>2]|0;if((d|0?(e=a+84|0,(f[e>>2]|0)>0):0)?(fd(d,b),(f[e>>2]|0)>1):0){d=1;do{fd((f[c>>2]|0)+(d<<5)|0,b);d=d+1|0}while((d|0)<(f[e>>2]|0))}e=a+136|0;d=a+140|0;a=f[e>>2]|0;if((f[d>>2]|0)==(a|0))return;c=0;g=a;while(1){a=g;Nh((f[a+(c*12|0)+4>>2]|0)-(f[a+(c*12|0)>>2]|0)>>2,b)|0;a=f[e>>2]|0;h=f[a+(c*12|0)>>2]|0;i=(f[a+(c*12|0)+4>>2]|0)-h>>2;if(!i)j=a;else{Dc(h,i,1,0,b)|0;j=f[e>>2]|0}c=c+1|0;if(c>>>0>=(((f[d>>2]|0)-j|0)/12|0)>>>0)break;else g=j}return}function ai(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=d+16|0;g=f[e>>2]|0;if(!g)if(!(pl(d)|0)){h=f[e>>2]|0;i=5}else j=0;else{h=g;i=5}a:do if((i|0)==5){g=d+20|0;e=f[g>>2]|0;k=e;if((h-e|0)>>>0>>0){j=Sa[f[d+36>>2]&31](d,a,c)|0;break}b:do if((b[d+75>>0]|0)>-1){e=c;while(1){if(!e){l=0;m=a;n=c;o=k;break b}p=e+-1|0;if((b[a+p>>0]|0)==10)break;else e=p}p=Sa[f[d+36>>2]&31](d,a,e)|0;if(p>>>0>>0){j=p;break a}l=e;m=a+e|0;n=c-e|0;o=f[g>>2]|0}else{l=0;m=a;n=c;o=k}while(0);Rg(o|0,m|0,n|0)|0;f[g>>2]=(f[g>>2]|0)+n;j=l+n|0}while(0);return j|0}function bi(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+12|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d+28>>2]|0;if(c|0){e=c;do{c=e;e=f[e>>2]|0;bi(c+8|0);br(c)}while((e|0)!=0)}e=d+20|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0)br(c);c=f[d+8>>2]|0;if(c|0){e=c;do{c=e;e=f[e>>2]|0;g=c+8|0;h=f[c+20>>2]|0;if(h|0){i=c+24|0;if((f[i>>2]|0)!=(h|0))f[i>>2]=h;br(h)}if((b[g+11>>0]|0)<0)br(f[g>>2]|0);br(c)}while((e|0)!=0)}e=f[d>>2]|0;f[d>>2]=0;if(e|0)br(e);br(d)}if((b[a+11>>0]|0)>=0)return;br(f[a>>2]|0);return}function ci(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0;g=u;u=u+32|0;h=g+12|0;i=g;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;if((e|0)>0){j=i+11|0;k=i+4|0;l=0;do{if((l|0)>0)vn(h,12890)|0;cl(i,$(n[d+(l<<2)>>2]));m=b[j>>0]|0;o=m<<24>>24<0;$i(h,o?f[i>>2]|0:i,o?f[k>>2]|0:m&255)|0;if((b[j>>0]|0)<0)br(f[i>>2]|0);l=l+1|0}while((l|0)<(e|0))}Ql(mi(a,c)|0,h)|0;if((b[h+11>>0]|0)>=0){u=g;return}br(f[h>>2]|0);u=g;return}function di(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((f[d+56>>2]|0)==-1){h=0;f[a>>2]=h;return}i=dn(96)|0;nl(i,d);d=i;do if(!e){j=f[c+80>>2]|0;b[i+84>>0]=0;k=i+68|0;l=i+72|0;m=f[l>>2]|0;n=f[k>>2]|0;o=m-n>>2;p=m;if(j>>>0>o>>>0){kh(k,j-o|0,5908);break}if(j>>>0>>0?(o=n+(j<<2)|0,(o|0)!=(p|0)):0)f[l>>2]=p+(~((p+-4-o|0)>>>2)<<2)}else{b[i+84>>0]=1;o=f[i+68>>2]|0;p=i+72|0;l=f[p>>2]|0;if((l|0)!=(o|0))f[p>>2]=l+(~((l+-4-o|0)>>>2)<<2);f[i+80>>2]=f[c+80>>2]}while(0);if(!g){h=d;f[a>>2]=h;return}pj(i,g)|0;h=d;f[a>>2]=h;return}function ei(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d|0;g=e>>3;h=g+1|0;if(h>>>0>536870911)mq(a);i=a+8|0;j=(f[i>>2]|0)-d|0;k=j>>2;l=j>>3>>>0<268435455?(k>>>0>>0?h:k):536870911;do if(l)if(l>>>0>536870911){k=ra(8)|0;Wo(k,14941);f[k>>2]=6944;va(k|0,1080,114)}else{k=dn(l<<3)|0;m=k;n=k;break}else{m=0;n=0}while(0);k=m+(g<<3)|0;g=b;b=f[g+4>>2]|0;h=k;f[h>>2]=f[g>>2];f[h+4>>2]=b;if((e|0)>0)Rg(n|0,d|0,e|0)|0;f[a>>2]=m;f[c>>2]=k+8;f[i>>2]=m+(l<<3);if(!d)return;br(d);return}function fi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c;if((Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)<=0){e=1;u=c;return e|0}g=a+4|0;h=a+20|0;i=a+24|0;j=a+16|0;a=0;while(1){k=f[(f[g>>2]|0)+4>>2]|0;l=Tl(k,Ra[f[(f[b>>2]|0)+24>>2]&127](b,a)|0)|0;f[d>>2]=l;if((l|0)==-1)break;k=f[h>>2]|0;if((k|0)==(f[i>>2]|0))Ci(j,d);else{f[k>>2]=l;f[h>>2]=k+4}al(f[g>>2]|0,f[d>>2]|0)|0;a=a+1|0;if((a|0)>=(Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)){e=1;m=9;break}}if((m|0)==9){u=c;return e|0}e=0;u=c;return e|0}function gi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;f[a>>2]=1276;Sh(a+60|0);b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=a+36|0;d=f[b>>2]|0;if(d|0){c=a+40|0;e=f[c>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-24|0;f[c>>2]=e;Va[f[f[e>>2]>>2]&127](e);h=f[c>>2]|0}while((h|0)!=(d|0));g=f[b>>2]|0}br(g)}f[a>>2]=1216;g=f[a+16>>2]|0;if(g|0){b=a+20|0;d=f[b>>2]|0;if((d|0)!=(g|0))f[b>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g)}g=f[a+4>>2]|0;if(!g)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(g|0))f[d>>2]=a+(~((a+-4-g|0)>>>2)<<2);br(g);return}function hi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=u;u=u+32|0;d=c+16|0;e=c+8|0;g=c;h=a+8|0;if(f[h>>2]<<5>>>0>=b>>>0){u=c;return}f[d>>2]=0;i=d+4|0;f[i>>2]=0;j=d+8|0;f[j>>2]=0;if((b|0)<0)mq(d);k=((b+-1|0)>>>5)+1|0;b=dn(k<<2)|0;f[d>>2]=b;f[i>>2]=0;f[j>>2]=k;k=f[a>>2]|0;f[e>>2]=k;f[e+4>>2]=0;b=a+4|0;l=f[b>>2]|0;f[g>>2]=k+(l>>>5<<2);f[g+4>>2]=l&31;ig(d,e,g);g=f[a>>2]|0;f[a>>2]=f[d>>2];f[d>>2]=g;d=f[b>>2]|0;f[b>>2]=f[i>>2];f[i>>2]=d;d=f[h>>2]|0;f[h>>2]=f[j>>2];f[j>>2]=d;if(g|0)br(g);u=c;return}function ii(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=a+136|0;c=f[b>>2]|0;if(c|0){d=a+140|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);br(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}br(g)}g=f[a+104>>2]|0;if(g|0){b=a+108|0;j=f[b>>2]|0;if((j|0)!=(g|0))f[b>>2]=j+(~((j+-4-g|0)>>>2)<<2);br(g)}g=f[a+92>>2]|0;if(!g){jj(a);return}j=a+96|0;b=f[j>>2]|0;if((b|0)!=(g|0))f[j>>2]=b+(~((b+-4-g|0)>>>2)<<2);br(g);jj(a);return}function ji(a){a=a|0;var c=0,d=0,e=0,g=0;f[a>>2]=3340;c=a+72|0;d=a+136|0;e=a+4|0;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));e=c;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));n[d>>2]=$(1.0);d=a+140|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[a+164>>2]=-1;d=a+168|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[d+24>>2]=0;rn(a+200|0);Cn(a+232|0);d=a+316|0;e=a+264|0;g=e+52|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[d>>2]=-1;f[a+320>>2]=-1;f[a+324>>2]=0;f[a+328>>2]=2;f[a+332>>2]=7;f[a+336>>2]=0;f[a+340>>2]=0;f[a+344>>2]=0;b[a+352>>0]=0;return}function ki(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d|0;g=(e|0)/12|0;h=g+1|0;if(h>>>0>357913941)mq(a);i=a+8|0;j=((f[i>>2]|0)-d|0)/12|0;k=j<<1;l=j>>>0<178956970?(k>>>0>>0?h:k):357913941;do if(l)if(l>>>0>357913941){k=ra(8)|0;Wo(k,14941);f[k>>2]=6944;va(k|0,1080,114)}else{m=dn(l*12|0)|0;break}else m=0;while(0);k=m+(g*12|0)|0;f[k>>2]=f[b>>2];f[k+4>>2]=f[b+4>>2];f[k+8>>2]=f[b+8>>2];b=k+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Rg(b|0,d|0,e|0)|0;f[a>>2]=b;f[c>>2]=k+12;f[i>>2]=m+(l*12|0);if(!d)return;br(d);return}function li(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=a+16|0;h=g;i=f[h+4>>2]|0;if((d|0)<0|(d|0)==0&c>>>0<1|((i|0)>0|(i|0)==0&(f[h>>2]|0)>>>0>0)){j=0;return j|0}b[a+24>>0]=e&1;h=Tn(c|0,d|0,7,0)|0;d=zk(h|0,I|0,8,0)|0;h=I;c=g;f[c>>2]=d;f[c+4>>2]=h;c=a+4|0;g=f[c>>2]|0;i=f[a>>2]|0;k=g-i|0;l=Tn(k|0,0,8,0)|0;m=e?l:k;l=Tn(m|0,(e?I:0)|0,d|0,h|0)|0;h=i;i=g;if(k>>>0>=l>>>0)if(k>>>0>l>>>0?(g=h+l|0,(g|0)!=(i|0)):0){f[c>>2]=g;n=h}else n=h;else{ri(a,l-k|0);n=f[a>>2]|0}k=dn(8)|0;f[k>>2]=n+m;f[k+4>>2]=0;m=a+12|0;a=f[m>>2]|0;f[m>>2]=k;if(!a){j=1;return j|0}br(a);j=1;return j|0}function mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=u;u=u+16|0;d=c;e=hg(a,d,b)|0;g=f[e>>2]|0;if(g|0){h=g;i=h+28|0;u=c;return i|0}g=dn(40)|0;dj(g+16|0,b);b=g+28|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;b=f[d>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=b;f[e>>2]=g;b=f[f[a>>2]>>2]|0;if(!b)j=g;else{f[a>>2]=b;j=f[e>>2]|0}Ae(f[a+4>>2]|0,j);j=a+8|0;f[j>>2]=(f[j>>2]|0)+1;h=g;i=h+28|0;u=c;return i|0}function ni(a,c,d,e,g,h,i,j){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=u;u=u+16|0;l=k;if((-18-c|0)>>>0>>0)mq(a);if((b[a+11>>0]|0)<0)m=f[a>>2]|0;else m=a;if(c>>>0<2147483623){n=d+c|0;d=c<<1;o=n>>>0>>0?d:n;p=o>>>0<11?11:o+16&-16}else p=-17;o=dn(p)|0;if(g|0)Lo(o,m,g)|0;if(i|0)Lo(o+g|0,j,i)|0;j=e-h|0;e=j-g|0;if(e|0)Lo(o+g+i|0,m+g+h|0,e)|0;if((c|0)!=10)br(m);f[a>>2]=o;f[a+8>>2]=p|-2147483648;p=j+i|0;f[a+4>>2]=p;b[l>>0]=0;Hp(o+p|0,l);u=k;return}function oi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;if(d-g>>2>>>0>=b>>>0){hj(g|0,0,b<<2|0)|0;f[e>>2]=g+(b<<2);return}h=f[a>>2]|0;i=g-h|0;g=i>>2;j=g+b|0;if(j>>>0>1073741823)mq(a);k=d-h|0;d=k>>1;l=k>>2>>>0<536870911?(d>>>0>>0?j:d):1073741823;do if(l)if(l>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{d=dn(l<<2)|0;m=d;n=d;break}else{m=0;n=0}while(0);d=m+(g<<2)|0;hj(d|0,0,b<<2|0)|0;if((i|0)>0)Rg(n|0,h|0,i|0)|0;f[a>>2]=m;f[e>>2]=d+(b<<2);f[c>>2]=m+(l<<2);if(!h)return;br(h);return}function pi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=dn(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;c=a+8|0;b[c>>0]=0;dj(g+8|0,e);h=g+20|0;i=e+12|0;f[h>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;g=e+16|0;e=f[g>>2]|0;j=f[i>>2]|0;k=e-j|0;if(!k){l=j;m=e;n=0}else{ri(h,k);l=f[i>>2]|0;m=f[g>>2]|0;n=f[h>>2]|0}Rg(n|0,l|0,m-l|0)|0;b[c>>0]=1;c=f[a>>2]|0;f[c+4>>2]=d;f[c>>2]=0;return}function qi(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e;h=c+11|0;i=b[h>>0]|0;if(i<<24>>24<0)j=f[c+4>>2]|0;else j=i&255;k=+d;l=j;j=i;while(1){if(j<<24>>24<0)m=f[c>>2]|0;else m=c;p[g>>3]=k;n=wn(m,l+1|0,17468,g)|0;if((n|0)>-1)if(n>>>0>l>>>0)o=n;else break;else o=l<<1|1;wj(c,o,0);l=o;j=b[h>>0]|0}wj(c,n,0);f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];a=0;while(1){if((a|0)==3)break;f[c+(a<<2)>>2]=0;a=a+1|0}u=e;return}function ri(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if((e-h|0)>>>0>=c>>>0){i=c;j=h;do{b[j>>0]=0;j=(f[g>>2]|0)+1|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=h-i|0;h=j+c|0;if((h|0)<0)mq(a);k=e-i|0;i=k<<1;e=k>>>0<1073741823?(i>>>0>>0?h:i):2147483647;if(!e)l=0;else l=dn(e)|0;i=l+j|0;j=l+e|0;e=c;c=i;l=i;do{b[l>>0]=0;l=c+1|0;c=l;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;l=(f[g>>2]|0)-e|0;h=i+(0-l)|0;if((l|0)>0)Rg(h|0,e|0,l|0)|0;f[a>>2]=h;f[g>>2]=c;f[d>>2]=j;if(!e)return;br(e);return}function si(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=(d-e|0)/136|0;h=d;if(g>>>0>>0){te(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+(b*136|0)|0;if((g|0)==(h|0))return;else i=h;do{f[c>>2]=i+-136;h=f[i+-20>>2]|0;if(h|0){b=i+-16|0;e=f[b>>2]|0;if((e|0)!=(h|0))f[b>>2]=e+(~((e+-4-h|0)>>>2)<<2);br(h)}h=f[i+-32>>2]|0;if(h|0){e=i+-28|0;b=f[e>>2]|0;if((b|0)!=(h|0))f[e>>2]=b+(~((b+-4-h|0)>>>2)<<2);br(h)}yi(i+-132|0);i=f[c>>2]|0}while((i|0)!=(g|0));return}function ti(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Hd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Hd(a,e);return}function ui(a){a=a|0;var b=0,c=0,d=0;b=f[a+76>>2]|0;if(b|0){c=a+80|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+64>>2]|0;if(b|0){d=a+68|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;br(b)}b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+24>>2]|0;if(b|0){c=a+28|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function vi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=u;u=u+16|0;g=e;h=c+11|0;i=b[h>>0]|0;if(i<<24>>24<0)j=f[c+4>>2]|0;else j=i&255;k=j;j=i;while(1){if(j<<24>>24<0)l=f[c>>2]|0;else l=c;f[g>>2]=d;m=wn(l,k+1|0,17465,g)|0;if((m|0)>-1)if(m>>>0>k>>>0)n=m;else break;else n=k<<1|1;wj(c,n,0);k=n;j=b[h>>0]|0}wj(c,m,0);f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];a=0;while(1){if((a|0)==3)break;f[c+(a<<2)>>2]=0;a=a+1|0}u=e;return}function wi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=a+8|0;c=f[b>>2]|0;if((c|0)<0){d=0;return d|0}e=a+4|0;a=f[e>>2]|0;g=a+4|0;h=f[g>>2]|0;i=f[a>>2]|0;j=h-i>>2;k=i;i=h;if(c>>>0<=j>>>0)if(c>>>0>>0?(h=k+(c<<2)|0,(h|0)!=(i|0)):0){f[g>>2]=i+(~((i+-4-h|0)>>>2)<<2);l=c}else l=c;else{oi(a,c-j|0);l=f[b>>2]|0}if((l|0)<=0){d=1;return d|0}b=f[e>>2]|0;e=f[b>>2]|0;j=(f[b+4>>2]|0)-e>>2;c=e;e=0;while(1){if(j>>>0<=e>>>0){m=10;break}f[c+(e<<2)>>2]=e;e=e+1|0;if((e|0)>=(l|0)){d=1;m=12;break}}if((m|0)==10)mq(b);else if((m|0)==12)return d|0;return 0}function xi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d;g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=30;h=g;i=14791;j=h+30|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[g+30>>0]=0;g=a+4|0;Mj(g,e,c);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);a=dn(32)|0;f[e>>2]=a;f[e+8>>2]=-2147483616;f[e+4>>2]=29;h=a;i=14510;j=h+29|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[a+29>>0]=0;Mj(g,e,c);if((b[e+11>>0]|0)>=0){u=d;return}br(f[e>>2]|0);u=d;return}function yi(a){a=a|0;var b=0,c=0,d=0;b=f[a+84>>2]|0;if(b|0){c=a+88|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+72>>2]|0;if(b|0){d=a+76|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;br(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+28>>2]|0;if(b|0){d=a+32|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+12>>2]|0;if(b|0)br(b);b=f[a>>2]|0;if(!b)return;br(b);return}function zi(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=1336;b=a+32|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=c+88|0;d=f[b>>2]|0;f[b>>2]=0;if(d|0){b=f[d+8>>2]|0;if(b|0){e=d+12|0;if((f[e>>2]|0)!=(b|0))f[e>>2]=b;br(b)}br(d)}d=f[c+68>>2]|0;if(d|0){b=c+72|0;e=f[b>>2]|0;if((e|0)!=(d|0))f[b>>2]=e+(~((e+-4-d|0)>>>2)<<2);br(d)}d=c+64|0;e=f[d>>2]|0;f[d>>2]=0;if(e|0){d=f[e>>2]|0;if(d|0){b=e+4|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;br(d)}br(e)}br(c)}c=f[a+16>>2]|0;if(!c)return;e=a+20|0;a=f[e>>2]|0;if((a|0)!=(c|0))f[e>>2]=a+(~((a+-4-c|0)>>>2)<<2);br(c);return}function Ai(){var a=0,b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;a=u;u=u+48|0;b=a+32|0;c=a+24|0;d=a+16|0;e=a;g=a+36|0;a=mn()|0;if(a|0?(h=f[a>>2]|0,h|0):0){a=h+48|0;i=f[a>>2]|0;j=f[a+4>>2]|0;if(!((i&-256|0)==1126902528&(j|0)==1129074247)){f[c>>2]=17607;Dn(17557,c)}if((i|0)==1126902529&(j|0)==1129074247)k=f[h+44>>2]|0;else k=h+80|0;f[g>>2]=k;k=f[h>>2]|0;h=f[k+4>>2]|0;if(Sa[f[(f[250]|0)+16>>2]&31](1e3,k,g)|0){k=f[g>>2]|0;g=Qa[f[(f[k>>2]|0)+8>>2]&127](k)|0;f[e>>2]=17607;f[e+4>>2]=h;f[e+8>>2]=g;Dn(17471,e)}else{f[d>>2]=17607;f[d+4>>2]=h;Dn(17516,d)}}Dn(17595,b)}function Bi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;do if(a){if(c>>>0<128){b[a>>0]=c;e=1;break}d=(Yq()|0)+188|0;if(!(f[f[d>>2]>>2]|0))if((c&-128|0)==57216){b[a>>0]=c;e=1;break}else{d=ir()|0;f[d>>2]=84;e=-1;break}if(c>>>0<2048){b[a>>0]=c>>>6|192;b[a+1>>0]=c&63|128;e=2;break}if(c>>>0<55296|(c&-8192|0)==57344){b[a>>0]=c>>>12|224;b[a+1>>0]=c>>>6&63|128;b[a+2>>0]=c&63|128;e=3;break}if((c+-65536|0)>>>0<1048576){b[a>>0]=c>>>18|240;b[a+1>>0]=c>>>12&63|128;b[a+2>>0]=c>>>6&63|128;b[a+3>>0]=c&63|128;e=4;break}else{d=ir()|0;f[d>>2]=84;e=-1;break}}else e=1;while(0);return e|0}function Ci(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d|0;g=e>>2;h=g+1|0;if(h>>>0>1073741823)mq(a);i=a+8|0;j=(f[i>>2]|0)-d|0;k=j>>1;l=j>>2>>>0<536870911?(k>>>0>>0?h:k):1073741823;do if(l)if(l>>>0>1073741823){k=ra(8)|0;Wo(k,14941);f[k>>2]=6944;va(k|0,1080,114)}else{k=dn(l<<2)|0;m=k;n=k;break}else{m=0;n=0}while(0);k=m+(g<<2)|0;f[k>>2]=f[b>>2];if((e|0)>0)Rg(n|0,d|0,e|0)|0;f[a>>2]=m;f[c>>2]=k+4;f[i>>2]=m+(l<<2);if(!d)return;br(d);return}function Di(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=a+104|0;d=f[c>>2]|0;if((d|0)!=0?(f[a+108>>2]|0)>=(d|0):0)e=4;else{d=Qm(a)|0;if((d|0)>=0){g=f[c>>2]|0;c=a+8|0;if(g){i=f[c>>2]|0;j=f[a+4>>2]|0;k=g-(f[a+108>>2]|0)|0;g=i;if((i-j|0)<(k|0)){l=g;m=g}else{l=j+(k+-1)|0;m=g}}else{g=f[c>>2]|0;l=g;m=g}f[a+100>>2]=l;l=a+4|0;if(!m)n=f[l>>2]|0;else{g=f[l>>2]|0;l=a+108|0;f[l>>2]=m+1-g+(f[l>>2]|0);n=g}g=n+-1|0;if((d|0)==(h[g>>0]|0|0))o=d;else{b[g>>0]=d;o=d}}else e=4}if((e|0)==4){f[a+100>>2]=0;o=-1}return o|0}function Ei(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;f[a>>2]=1528;f[a+4>>2]=b;b=a+8|0;f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];f[b+12>>2]=f[c+12>>2];f[b+16>>2]=f[c+16>>2];f[b+20>>2]=f[c+20>>2];_j(a+32|0,c+24|0);f[a>>2]=2144;c=a+44|0;f[c>>2]=f[d>>2];f[c+4>>2]=f[d+4>>2];f[c+8>>2]=f[d+8>>2];f[c+12>>2]=f[d+12>>2];f[a>>2]=2200;d=a+112|0;c=a+60|0;b=c+52|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(b|0));Sm(d);f[a+152>>2]=0;f[a+156>>2]=0;f[a+160>>2]=0;return}function Fi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=dn(16)|0;f[g>>2]=h;f[g+8>>2]=-2147483632;f[g+4>>2]=14;i=h;j=12975;k=i+14|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[h+14>>0]=0;Nj(a,g,c);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);c=dn(16)|0;f[g>>2]=c;f[g+8>>2]=-2147483632;f[g+4>>2]=14;i=c;j=12990;k=i+14|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[c+14>>0]=0;Nj(a,g,d);if((b[g+11>>0]|0)>=0){u=e;return}br(f[g>>2]|0);u=e;return}function Gi(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3320;b=f[a+88>>2]|0;if(b|0){c=a+92|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+72>>2]|0;if(b|0){d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+60>>2]|0;if(b|0){c=a+64|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Hi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;f[a>>2]=1528;f[a+4>>2]=b;b=a+8|0;f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];f[b+12>>2]=f[c+12>>2];f[b+16>>2]=f[c+16>>2];f[b+20>>2]=f[c+20>>2];_j(a+32|0,c+24|0);f[a>>2]=1836;c=a+44|0;f[c>>2]=f[d>>2];f[c+4>>2]=f[d+4>>2];f[c+8>>2]=f[d+8>>2];f[c+12>>2]=f[d+12>>2];f[a>>2]=1892;d=a+112|0;c=a+60|0;b=c+52|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(b|0));Sm(d);f[a+152>>2]=0;f[a+156>>2]=0;f[a+160>>2]=0;return}function Ii(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2200;b=f[a+152>>2]|0;if(b|0){c=a+156|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+112>>2]|0;if(b|0){d=a+116|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+96>>2]|0;if(b|0)br(b);b=f[a+84>>2]|0;if(b|0)br(b);b=f[a+72>>2]|0;if(b|0)br(b);b=f[a+60>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Ji(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;g=f[(f[c+4>>2]|0)+4>>2]|0;if(!g){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=d;return}if(!(rj(d+12|0,f[c+44>>2]|0,g)|0)){g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=26;c=g;h=14822;i=c+26|0;do{b[c>>0]=b[h>>0]|0;c=c+1|0;h=h+1|0}while((c|0)<(i|0));b[g+26>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}else{f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}u=d;return}function Ki(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=b+48|0;if((Yh(f[c>>2]|0)|0)>9){d=0;return d|0}if((Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)!=1){d=0;return d|0}e=b+4|0;b=(f[(f[(f[e>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)+56|0;a=f[b>>2]|0;do if((a|0)==3)if((Yh(f[c>>2]|0)|0)<4){d=5;return d|0}else{g=f[b>>2]|0;break}else g=a;while(0);a=Yh(f[c>>2]|0)|0;if((g|0)==1){d=(a|0)<4?6:0;return d|0}if((a|0)>7){d=0;return d|0}if((Yh(f[c>>2]|0)|0)>1){d=1;return d|0}else return ((f[(f[e>>2]|0)+80>>2]|0)>>>0<40?1:4)|0;return 0}function Li(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1892;b=f[a+152>>2]|0;if(b|0){c=a+156|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+112>>2]|0;if(b|0){d=a+116|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+96>>2]|0;if(b|0)br(b);b=f[a+84>>2]|0;if(b|0)br(b);b=f[a+72>>2]|0;if(b|0)br(b);b=f[a+60>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Mi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=u;u=u+128|0;h=g+124|0;i=g;j=i;k=6284;l=j+124|0;do{f[j>>2]=f[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(l|0));if((c+-1|0)>>>0>2147483646)if(!c){m=h;n=1;o=4}else{h=ir()|0;f[h>>2]=75;p=-1}else{m=a;n=c;o=4}if((o|0)==4){o=-2-m|0;c=n>>>0>o>>>0?o:n;f[i+48>>2]=c;n=i+20|0;f[n>>2]=m;f[i+44>>2]=m;o=m+c|0;m=i+16|0;f[m>>2]=o;f[i+28>>2]=o;o=hh(i,d,e)|0;if(!c)p=o;else{c=f[n>>2]|0;b[c+(((c|0)==(f[m>>2]|0))<<31>>31)>>0]=0;p=o}}u=g;return p|0}function Ni(a){a=a|0;var c=0,d=0,e=0,g=0;f[a>>2]=3080;c=a+72|0;d=a+136|0;e=a+4|0;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));e=c;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));n[d>>2]=$(1.0);d=a+140|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[a+164>>2]=-1;d=a+168|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[d+24>>2]=0;rn(a+200|0);Cn(a+232|0);d=a+264|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;b[d+24>>0]=0;return}function Oi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=u;u=u+16|0;g=a;if(!c){h=0;u=a;return h|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;i=vj(d)|0;if(i>>>0>4294967279)mq(g);if(i>>>0<11){b[g+11>>0]=i;if(!i)j=g;else{k=g;l=7}}else{m=i+16&-16;n=dn(m)|0;f[g>>2]=n;f[g+8>>2]=m|-2147483648;f[g+4>>2]=i;k=n;l=7}if((l|0)==7){Rg(k|0,d|0,i|0)|0;j=k}b[j+i>>0]=0;Ol(c,g,e);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);h=1;u=a;return h|0}function Pi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=u;u=u+16|0;g=a;if(!c){h=0;u=a;return h|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;i=vj(d)|0;if(i>>>0>4294967279)mq(g);if(i>>>0<11){b[g+11>>0]=i;if(!i)j=g;else{k=g;l=7}}else{m=i+16&-16;n=dn(m)|0;f[g>>2]=n;f[g+8>>2]=m|-2147483648;f[g+4>>2]=i;k=n;l=7}if((l|0)==7){Rg(k|0,d|0,i|0)|0;j=k}b[j+i>>0]=0;Pl(c,g,e);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);h=1;u=a;return h|0}function Qi(a){a=a|0;var c=0,d=0,e=0,g=0,h=0;c=f[a+28>>2]|0;if(c|0){d=c;do{c=d;d=f[d>>2]|0;e=c+8|0;g=c+20|0;h=f[g>>2]|0;f[g>>2]=0;if(h|0){Qi(h);br(h)}if((b[e+11>>0]|0)<0)br(f[e>>2]|0);br(c)}while((d|0)!=0)}d=a+20|0;c=f[d>>2]|0;f[d>>2]=0;if(c|0)br(c);c=f[a+8>>2]|0;if(c|0){d=c;do{c=d;d=f[d>>2]|0;e=c+8|0;h=f[c+20>>2]|0;if(h|0){g=c+24|0;if((f[g>>2]|0)!=(h|0))f[g>>2]=h;br(h)}if((b[e+11>>0]|0)<0)br(f[e>>2]|0);br(c)}while((d|0)!=0)}d=f[a>>2]|0;f[a>>2]=0;if(!d)return;br(d);return}function Ri(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;Wa[f[(f[c>>2]|0)+64>>2]&15](a,c);if(f[a>>2]|0){u=d;return}g=a+4|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);g=f[c+48>>2]|0;h=dn(32)|0;f[e>>2]=h;f[e+8>>2]=-2147483616;f[e+4>>2]=29;i=h;j=14510;k=i+29|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[h+29>>0]=0;h=Oj(g,e,0)|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);if(h)Va[f[(f[c>>2]|0)+68>>2]&127](c);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=d;return}function Si(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;e=u;u=u+16|0;g=e;h=f[c+48>>2]|0;if(!h){i=dn(32)|0;f[g>>2]=i;f[g+8>>2]=-2147483616;f[g+4>>2]=23;j=i;k=14670;l=j+23|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[i+23>>0]=0;f[a>>2]=-1;dj(a+4|0,g);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);u=e;return}g=f[c+52>>2]|0;if(!g){Ic(a,c,h,d);u=e;return}else{jg(a,c,g,d);u=e;return}}function Ti(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;lk(a);b=a+84|0;c=f[b>>2]|0;if((c|0)<=0)return;d=c<<5;e=_q(c>>>0>134217727|d>>>0>4294967291?-1:d+4|0)|0;f[e>>2]=c;d=e+4|0;e=d+(c<<5)|0;c=d;do{rn(c);c=c+32|0}while((c|0)!=(e|0));e=a+80|0;a=f[e>>2]|0;f[e>>2]=d;if(a|0){d=a+-4|0;c=f[d>>2]|0;if(c|0){g=a+(c<<5)|0;do{g=g+-32|0;tj(g)}while((g|0)!=(a|0))}$q(d)}if((f[b>>2]|0)>0)h=0;else return;do{lk((f[e>>2]|0)+(h<<5)|0);h=h+1|0}while((h|0)<(f[b>>2]|0));return}function Ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(!b){d=0;return d|0}if(f[b+4>>2]|0){d=0;return d|0}a=dn(52)|0;Ub(a,c);f[a+40>>2]=0;f[a+44>>2]=0;f[a+48>>2]=0;c=b+4|0;b=f[c>>2]|0;f[c>>2]=a;if(!b){d=1;return d|0}a=b+40|0;c=f[a>>2]|0;if(c|0){e=b+44|0;g=f[e>>2]|0;if((g|0)==(c|0))h=c;else{i=g;do{g=i+-4|0;f[e>>2]=g;j=f[g>>2]|0;f[g>>2]=0;if(j|0){Qi(j);br(j)}i=f[e>>2]|0}while((i|0)!=(c|0));h=f[a>>2]|0}br(h)}Qi(b);br(b);d=1;return d|0}function Vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=f[a>>2]|0;if(b){b=c+8|0;d=b;e=Tn(f[d>>2]|0,f[d+4>>2]|0,1,0)|0;d=b;f[d>>2]=e;f[d+4>>2]=I;d=a+28|0;e=f[d>>2]|0;b=a+24|0;f[b>>2]=f[b>>2]|1<>2]|0,f[e+4>>2]|0,1,0)|0;e=c;f[e>>2]=d;f[e+4>>2]=I;e=a+28|0;g=e;h=f[e>>2]|0}e=h+1|0;f[g>>2]=e;if((e|0)!=32)return;e=a+24|0;h=a+16|0;d=f[h>>2]|0;if((d|0)==(f[a+20>>2]|0))Ci(a+12|0,e);else{f[d>>2]=f[e>>2];f[h>>2]=d+4}f[g>>2]=0;f[e>>2]=0;return}function Wi(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+32|0;a=f[b>>2]|0;f[b>>2]=0;b=f[c>>2]|0;f[c>>2]=a;if(!b)return;a=b+88|0;c=f[a>>2]|0;f[a>>2]=0;if(c|0){a=f[c+8>>2]|0;if(a|0){d=c+12|0;if((f[d>>2]|0)!=(a|0))f[d>>2]=a;br(a)}br(c)}c=f[b+68>>2]|0;if(c|0){a=b+72|0;d=f[a>>2]|0;if((d|0)!=(c|0))f[a>>2]=d+(~((d+-4-c|0)>>>2)<<2);br(c)}c=b+64|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d>>2]|0;if(c|0){a=d+4|0;if((f[a>>2]|0)!=(c|0))f[a>>2]=c;br(c)}br(d)}br(b);return}function Xi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;if(c|0){h=a+11|0;i=b[h>>0]|0;if(i<<24>>24<0){j=f[a+4>>2]|0;k=(f[a+8>>2]&2147483647)+-1|0}else{j=i&255;k=10}if((k-j|0)>>>0>>0){lj(a,k,c-k+j|0,j,j,0,0);l=b[h>>0]|0}else l=i;if(l<<24>>24<0)m=f[a>>2]|0;else m=a;On(m+j|0,c,d)|0;d=j+c|0;if((b[h>>0]|0)<0)f[a+4>>2]=d;else b[h>>0]=d;b[g>>0]=0;Hp(m+d|0,g)}u=e;return a|0}function Yi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+48|0;e=d+4|0;g=d;h=f[b+12>>2]|0;i=f[b+4>>2]|0;b=e;j=b+36|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));gh(g,c,h,i,e);i=f[e+24>>2]|0;if(!i){k=f[g>>2]|0;f[a>>2]=k;u=d;return}h=e+28|0;e=f[h>>2]|0;if((e|0)!=(i|0))f[h>>2]=e+(~((e+-4-i|0)>>>2)<<2);br(i);k=f[g>>2]|0;f[a>>2]=k;u=d;return}function Zi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j)k=(f[a+8>>2]&2147483647)+-1|0;else k=10;do if(k>>>0>=d>>>0){if(j)l=f[a>>2]|0;else l=a;Jo(l,c,d)|0;b[g>>0]=0;Hp(l+d|0,g);if((b[h>>0]|0)<0){f[a+4>>2]=d;break}else{b[h>>0]=d;break}}else{if(j)m=f[a+4>>2]|0;else m=i&255;ni(a,k,d-k|0,m,0,m,d,c)}while(0);u=e;return a|0}function _i(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d;do{f[c>>2]=g+-136;d=f[g+-20>>2]|0;if(d|0){h=g+-16|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);br(d)}d=f[g+-32>>2]|0;if(d|0){i=g+-28|0;h=f[i>>2]|0;if((h|0)!=(d|0))f[i>>2]=h+(~((h+-4-d|0)>>>2)<<2);br(d)}yi(g+-132|0);g=f[c>>2]|0}while((g|0)!=(b|0));e=f[a>>2]|0}br(e);return}function $i(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j){k=f[a+4>>2]|0;l=(f[a+8>>2]&2147483647)+-1|0}else{k=i&255;l=10}if((l-k|0)>>>0>=d>>>0){if(d|0){if(j)m=f[a>>2]|0;else m=a;Lo(m+k|0,c,d)|0;j=k+d|0;if((b[h>>0]|0)<0)f[a+4>>2]=j;else b[h>>0]=j;b[g>>0]=0;Hp(m+j|0,g)}}else ni(a,l,d-l+k|0,k,k,0,d,c);u=e;return a|0}function aj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;f[a>>2]=3608;b=f[a+32>>2]|0;if(b|0){c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=a+8|0;c=f[b>>2]|0;if(!c)return;d=a+12|0;a=f[d>>2]|0;if((a|0)==(c|0))e=c;else{g=a;do{a=g+-4|0;f[d>>2]=a;h=f[a>>2]|0;f[a>>2]=0;if(h|0)Va[f[(f[h>>2]|0)+4>>2]&127](h);g=f[d>>2]|0}while((g|0)!=(c|0));e=f[b>>2]|0}br(e);return}function bj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;if((Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)<=0){d=1;return d|0}a=0;while(1){e=f[(f[c>>2]|0)+4>>2]|0;g=Tl(e,Ra[f[(f[b>>2]|0)+24>>2]&127](b,a)|0)|0;if((g|0)==-1){d=0;h=6;break}e=f[(f[b>>2]|0)+28>>2]|0;i=$k(f[c>>2]|0,g)|0;a=a+1|0;if(!(Ra[e&127](b,i)|0)){d=0;h=6;break}if((a|0)>=(Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)){d=1;h=6;break}}if((h|0)==6)return d|0;return 0}function cj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(!(lo(a,b,c)|0)){d=0;return d|0}if(!(Qa[f[(f[a>>2]|0)+52>>2]&127](a)|0)){d=0;return d|0}c=a+4|0;e=a+8|0;g=f[c>>2]|0;if((f[e>>2]|0)==(g|0)){d=1;return d|0}h=a+36|0;a=0;i=g;while(1){g=f[(f[h>>2]|0)+(a<<2)>>2]|0;if(!(Sa[f[(f[g>>2]|0)+8>>2]&31](g,b,f[i+(a<<2)>>2]|0)|0)){d=0;j=7;break}a=a+1|0;i=f[c>>2]|0;if(a>>>0>=(f[e>>2]|0)-i>>2>>>0){d=1;j=7;break}}if((j|0)==7)return d|0;return 0}function dj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;if((b[c+11>>0]|0)<0){g=f[c>>2]|0;h=f[c+4>>2]|0;if(h>>>0>4294967279)mq(a);if(h>>>0<11){b[a+11>>0]=h;i=a}else{j=h+16&-16;k=dn(j)|0;f[a>>2]=k;f[a+8>>2]=j|-2147483648;f[a+4>>2]=h;i=k}Lo(i,g,h)|0;b[e>>0]=0;Hp(i+h|0,e)}else{f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2]}u=d;return}function ej(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[(f[b+4>>2]|0)+80>>2];h=f[b+44>>2]|0;b=h+16|0;i=f[b+4>>2]|0;if((i|0)>0|(i|0)==0&(f[b>>2]|0)>>>0>0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=c;return}f[e>>2]=f[h+4>>2];f[d>>2]=f[e>>2];ye(h,d,g,g+4|0)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=c;return}function fj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0;b[c+53>>0]=1;do if((f[c+4>>2]|0)==(e|0)){b[c+52>>0]=1;a=c+16|0;h=f[a>>2]|0;if(!h){f[a>>2]=d;f[c+24>>2]=g;f[c+36>>2]=1;if(!((g|0)==1?(f[c+48>>2]|0)==1:0))break;b[c+54>>0]=1;break}if((h|0)!=(d|0)){h=c+36|0;f[h>>2]=(f[h>>2]|0)+1;b[c+54>>0]=1;break}h=c+24|0;a=f[h>>2]|0;if((a|0)==2){f[h>>2]=g;i=g}else i=a;if((i|0)==1?(f[c+48>>2]|0)==1:0)b[c+54>>0]=1}while(0);return}function gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=a+36|0;d=a+40|0;e=f[c>>2]|0;if((f[d>>2]|0)!=(e|0)){g=0;h=e;do{eg(h+(g*24|0)|0,b)|0;g=g+1|0;h=f[c>>2]|0}while(g>>>0<(((f[d>>2]|0)-h|0)/24|0)>>>0)}h=a+48|0;d=a+52|0;a=f[h>>2]|0;if((f[d>>2]|0)==(a|0))return 1;else{i=0;j=a}do{a=f[j+(i<<2)>>2]|0;Nh(a<<1^a>>31,b)|0;i=i+1|0;j=f[h>>2]|0}while(i>>>0<(f[d>>2]|0)-j>>2>>>0);return 1}function hj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}g=e&-4|0;h=g-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(h|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(g|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(e|0)){b[a>>0]=c;a=a+1|0}return e-d|0}function ij(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;do if(!(qp(a,f[c+8>>2]|0,g)|0)){if(qp(a,f[c>>2]|0,g)|0){if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[c+32>>2]=e;f[h>>2]=d;h=c+40|0;f[h>>2]=(f[h>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[c+32>>2]=1}}else Om(0,c,d,e);while(0);return}function jj(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+80|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=c+-4|0;d=f[b>>2]|0;if(d|0){e=c+(d<<5)|0;do{e=e+-32|0;tj(e)}while((e|0)!=(c|0))}$q(b)}b=f[a+68>>2]|0;if(b|0){c=a+72|0;e=f[c>>2]|0;if((e|0)!=(b|0))f[c>>2]=e+(~((e+-4-b|0)>>>2)<<2);br(b)}b=a+44|0;e=f[b>>2]|0;f[b>>2]=0;if(e|0)br(e);e=f[a+32>>2]|0;if(!e){tj(a);return}b=a+36|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;br(e);tj(a);return}function kj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2684;b=f[a+136>>2]|0;if(b|0){c=a+140|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+76>>2]|0;if(b|0)br(b);b=f[a+64>>2]|0;if(b|0)br(b);b=f[a+52>>2]|0;if(b|0)br(b);b=f[a+40>>2]|0;if(!b)return;br(b);return}function lj(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;if((-17-c|0)>>>0>>0)mq(a);if((b[a+11>>0]|0)<0)j=f[a>>2]|0;else j=a;if(c>>>0<2147483623){k=d+c|0;d=c<<1;l=k>>>0>>0?d:k;m=l>>>0<11?11:l+16&-16}else m=-17;l=dn(m)|0;if(g|0)Lo(l,j,g)|0;k=e-h-g|0;if(k|0)Lo(l+g+i|0,j+g+h|0,k)|0;if((c|0)!=10)br(j);f[a>>2]=l;f[a+8>>2]=m|-2147483648;return}function mj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2432;b=f[a+136>>2]|0;if(b|0){c=a+140|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+76>>2]|0;if(b|0)br(b);b=f[a+64>>2]|0;if(b|0)br(b);b=f[a+52>>2]|0;if(b|0)br(b);b=f[a+40>>2]|0;if(!b)return;br(b);return}function nj(a,b){a=a|0;b=b|0;if(!b)return;else{nj(a,f[b>>2]|0);nj(a,f[b+4>>2]|0);sj(b+20|0,f[b+24>>2]|0);br(b);return}}function oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;If(a,b,c);c=f[a+100>>2]|0;d=f[a+96>>2]|0;a=d;if((c|0)==(d|0))return;e=f[b>>2]|0;b=(c-d|0)/12|0;d=0;do{c=a+(d*12|0)|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];c=a+(d*12|0)+4|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];c=a+(d*12|0)+8|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];d=d+1|0}while(d>>>0>>0);return}function pj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=a+64|0;if((f[d>>2]|0)==0?(e=dn(32)|0,tn(e),g=f[d>>2]|0,f[d>>2]=e,g|0):0){e=f[g>>2]|0;if(e|0){h=g+4|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;br(e)}br(g)}g=Ll(f[a+28>>2]|0)|0;e=X(g,b[a+24>>0]|0)|0;g=((e|0)<0)<<31>>31;h=f[d>>2]|0;i=on(e|0,g|0,c|0,0)|0;if(!(Th(h,0,i,I)|0)){j=0;return j|0}Ak(a,f[d>>2]|0,e,g,0,0);f[a+80>>2]=c;j=1;return j|0}function qj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+64|0;e=d;if(!(qp(a,b,0)|0))if((b|0)!=0?(g=mh(b,1024,1008,0)|0,(g|0)!=0):0){b=e+4|0;h=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(h|0));f[e>>2]=g;f[e+8>>2]=a;f[e+12>>2]=-1;f[e+48>>2]=1;Ya[f[(f[g>>2]|0)+28>>2]&7](g,e,f[c>>2]|0,1);if((f[e+24>>2]|0)==1){f[c>>2]=f[e+16>>2];i=1}else i=0;j=i}else j=0;else j=1;u=d;return j|0}function rj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;if(!c){d=0;return d|0}e=c+40|0;g=c+44|0;Nh((f[g>>2]|0)-(f[e>>2]|0)>>2,b)|0;h=f[e>>2]|0;e=f[g>>2]|0;if((h|0)!=(e|0)){g=h;do{h=f[g>>2]|0;if(h|0){Nh(f[h+40>>2]|0,b)|0;Wf(a,b,h)|0}g=g+4|0}while((g|0)!=(e|0))}Wf(a,b,c)|0;d=1;return d|0}function sj(a,c){a=a|0;c=c|0;var d=0;if(!c)return;sj(a,f[c>>2]|0);sj(a,f[c+4>>2]|0);a=c+16|0;d=c+28|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);if((b[a+11>>0]|0)<0)br(f[a>>2]|0);br(c);return}function tj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=u;u=u+16|0;c=b;d=c;f[d>>2]=0;f[d+4>>2]=0;cf(a,2,c);c=f[a+12>>2]|0;d=a+16|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e+(~((e+-4-c|0)>>>2)<<2)|0;f[d>>2]=h;g=h}f[a+24>>2]=0;f[a+28>>2]=0;if(c|0){if((g|0)!=(c|0))f[d>>2]=g+(~((g+-4-c|0)>>>2)<<2);br(c)}c=f[a>>2]|0;if(!c){u=b;return}g=a+4|0;a=f[g>>2]|0;if((a|0)!=(c|0))f[g>>2]=a+(~((a+-8-c|0)>>>3)<<3);br(c);u=b;return} +function $a(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;b=u;u=u+16|0;c=b;do if(a>>>0<245){d=a>>>0<11?16:a+11&-8;e=d>>>3;g=f[4512]|0;h=g>>>e;if(h&3|0){i=(h&1^1)+e|0;j=18088+(i<<1<<2)|0;k=j+8|0;l=f[k>>2]|0;m=l+8|0;n=f[m>>2]|0;if((n|0)==(j|0))f[4512]=g&~(1<>2]=j;f[k>>2]=n}n=i<<3;f[l+4>>2]=n|3;i=l+n+4|0;f[i>>2]=f[i>>2]|1;o=m;u=b;return o|0}m=f[4514]|0;if(d>>>0>m>>>0){if(h|0){i=2<>>12&16;e=i>>>n;i=e>>>5&8;h=e>>>i;e=h>>>2&4;l=h>>>e;h=l>>>1&2;k=l>>>h;l=k>>>1&1;j=(i|n|e|h|l)+(k>>>l)|0;l=18088+(j<<1<<2)|0;k=l+8|0;h=f[k>>2]|0;e=h+8|0;n=f[e>>2]|0;if((n|0)==(l|0)){i=g&~(1<>2]=l;f[k>>2]=n;p=g}n=j<<3;j=n-d|0;f[h+4>>2]=d|3;k=h+d|0;f[k+4>>2]=j|1;f[h+n>>2]=j;if(m|0){n=f[4517]|0;h=m>>>3;l=18088+(h<<1<<2)|0;i=1<>2]|0;r=i}f[r>>2]=n;f[q+12>>2]=n;f[n+8>>2]=q;f[n+12>>2]=l}f[4514]=j;f[4517]=k;o=e;u=b;return o|0}e=f[4513]|0;if(e){k=(e&0-e)+-1|0;j=k>>>12&16;l=k>>>j;k=l>>>5&8;n=l>>>k;l=n>>>2&4;i=n>>>l;n=i>>>1&2;h=i>>>n;i=h>>>1&1;s=f[18352+((k|j|l|n|i)+(h>>>i)<<2)>>2]|0;i=(f[s+4>>2]&-8)-d|0;h=f[s+16+(((f[s+16>>2]|0)==0&1)<<2)>>2]|0;if(!h){t=s;v=i}else{n=s;s=i;i=h;while(1){h=(f[i+4>>2]&-8)-d|0;l=h>>>0>>0;j=l?h:s;h=l?i:n;i=f[i+16+(((f[i+16>>2]|0)==0&1)<<2)>>2]|0;if(!i){t=h;v=j;break}else{n=h;s=j}}}s=t+d|0;if(s>>>0>t>>>0){n=f[t+24>>2]|0;i=f[t+12>>2]|0;do if((i|0)==(t|0)){j=t+20|0;h=f[j>>2]|0;if(!h){l=t+16|0;k=f[l>>2]|0;if(!k){w=0;break}else{x=k;y=l}}else{x=h;y=j}while(1){j=x+20|0;h=f[j>>2]|0;if(h|0){x=h;y=j;continue}j=x+16|0;h=f[j>>2]|0;if(!h)break;else{x=h;y=j}}f[y>>2]=0;w=x}else{j=f[t+8>>2]|0;f[j+12>>2]=i;f[i+8>>2]=j;w=i}while(0);do if(n|0){i=f[t+28>>2]|0;j=18352+(i<<2)|0;if((t|0)==(f[j>>2]|0)){f[j>>2]=w;if(!w){f[4513]=e&~(1<>2]|0)!=(t|0)&1)<<2)>>2]=w;if(!w)break}f[w+24>>2]=n;i=f[t+16>>2]|0;if(i|0){f[w+16>>2]=i;f[i+24>>2]=w}i=f[t+20>>2]|0;if(i|0){f[w+20>>2]=i;f[i+24>>2]=w}}while(0);if(v>>>0<16){n=v+d|0;f[t+4>>2]=n|3;e=t+n+4|0;f[e>>2]=f[e>>2]|1}else{f[t+4>>2]=d|3;f[s+4>>2]=v|1;f[s+v>>2]=v;if(m|0){e=f[4517]|0;n=m>>>3;i=18088+(n<<1<<2)|0;j=1<>2]|0;A=j}f[A>>2]=e;f[z+12>>2]=e;f[e+8>>2]=z;f[e+12>>2]=i}f[4514]=v;f[4517]=s}o=t+8|0;u=b;return o|0}else B=d}else B=d}else B=d}else if(a>>>0<=4294967231){i=a+11|0;e=i&-8;j=f[4513]|0;if(j){n=0-e|0;h=i>>>8;if(h)if(e>>>0>16777215)C=31;else{i=(h+1048320|0)>>>16&8;l=h<>>16&4;k=l<>>16&2;D=14-(h|i|l)+(k<>>15)|0;C=e>>>(D+7|0)&1|D<<1}else C=0;D=f[18352+(C<<2)>>2]|0;a:do if(!D){E=0;F=0;G=n;H=57}else{l=0;k=n;i=D;h=e<<((C|0)==31?0:25-(C>>>1)|0);I=0;while(1){J=(f[i+4>>2]&-8)-e|0;if(J>>>0>>0)if(!J){K=0;L=i;M=i;H=61;break a}else{N=i;O=J}else{N=l;O=k}J=f[i+20>>2]|0;i=f[i+16+(h>>>31<<2)>>2]|0;P=(J|0)==0|(J|0)==(i|0)?I:J;J=(i|0)==0;if(J){E=P;F=N;G=O;H=57;break}else{l=N;k=O;h=h<<((J^1)&1);I=P}}}while(0);if((H|0)==57){if((E|0)==0&(F|0)==0){D=2<>>12&16;d=D>>>n;D=d>>>5&8;s=d>>>D;d=s>>>2&4;g=s>>>d;s=g>>>1&2;m=g>>>s;g=m>>>1&1;Q=0;R=f[18352+((D|n|d|s|g)+(m>>>g)<<2)>>2]|0}else{Q=F;R=E}if(!R){S=Q;T=G}else{K=G;L=R;M=Q;H=61}}if((H|0)==61)while(1){H=0;g=(f[L+4>>2]&-8)-e|0;m=g>>>0>>0;s=m?g:K;g=m?L:M;L=f[L+16+(((f[L+16>>2]|0)==0&1)<<2)>>2]|0;if(!L){S=g;T=s;break}else{K=s;M=g;H=61}}if((S|0)!=0?T>>>0<((f[4514]|0)-e|0)>>>0:0){g=S+e|0;if(g>>>0<=S>>>0){o=0;u=b;return o|0}s=f[S+24>>2]|0;m=f[S+12>>2]|0;do if((m|0)==(S|0)){d=S+20|0;n=f[d>>2]|0;if(!n){D=S+16|0;I=f[D>>2]|0;if(!I){U=0;break}else{V=I;W=D}}else{V=n;W=d}while(1){d=V+20|0;n=f[d>>2]|0;if(n|0){V=n;W=d;continue}d=V+16|0;n=f[d>>2]|0;if(!n)break;else{V=n;W=d}}f[W>>2]=0;U=V}else{d=f[S+8>>2]|0;f[d+12>>2]=m;f[m+8>>2]=d;U=m}while(0);do if(s){m=f[S+28>>2]|0;d=18352+(m<<2)|0;if((S|0)==(f[d>>2]|0)){f[d>>2]=U;if(!U){d=j&~(1<>2]|0)!=(S|0)&1)<<2)>>2]=U;if(!U){X=j;break}}f[U+24>>2]=s;d=f[S+16>>2]|0;if(d|0){f[U+16>>2]=d;f[d+24>>2]=U}d=f[S+20>>2]|0;if(d){f[U+20>>2]=d;f[d+24>>2]=U;X=j}else X=j}else X=j;while(0);do if(T>>>0>=16){f[S+4>>2]=e|3;f[g+4>>2]=T|1;f[g+T>>2]=T;j=T>>>3;if(T>>>0<256){s=18088+(j<<1<<2)|0;d=f[4512]|0;m=1<>2]|0;Z=m}f[Z>>2]=g;f[Y+12>>2]=g;f[g+8>>2]=Y;f[g+12>>2]=s;break}s=T>>>8;if(s)if(T>>>0>16777215)_=31;else{m=(s+1048320|0)>>>16&8;d=s<>>16&4;j=d<>>16&2;n=14-(s|m|d)+(j<>>15)|0;_=T>>>(n+7|0)&1|n<<1}else _=0;n=18352+(_<<2)|0;f[g+28>>2]=_;d=g+16|0;f[d+4>>2]=0;f[d>>2]=0;d=1<<_;if(!(X&d)){f[4513]=X|d;f[n>>2]=g;f[g+24>>2]=n;f[g+12>>2]=g;f[g+8>>2]=g;break}d=T<<((_|0)==31?0:25-(_>>>1)|0);j=f[n>>2]|0;while(1){if((f[j+4>>2]&-8|0)==(T|0)){H=97;break}$=j+16+(d>>>31<<2)|0;n=f[$>>2]|0;if(!n){H=96;break}else{d=d<<1;j=n}}if((H|0)==96){f[$>>2]=g;f[g+24>>2]=j;f[g+12>>2]=g;f[g+8>>2]=g;break}else if((H|0)==97){d=j+8|0;n=f[d>>2]|0;f[n+12>>2]=g;f[d>>2]=g;f[g+8>>2]=n;f[g+12>>2]=j;f[g+24>>2]=0;break}}else{n=T+e|0;f[S+4>>2]=n|3;d=S+n+4|0;f[d>>2]=f[d>>2]|1}while(0);o=S+8|0;u=b;return o|0}else B=e}else B=e}else B=-1;while(0);S=f[4514]|0;if(S>>>0>=B>>>0){T=S-B|0;$=f[4517]|0;if(T>>>0>15){_=$+B|0;f[4517]=_;f[4514]=T;f[_+4>>2]=T|1;f[$+S>>2]=T;f[$+4>>2]=B|3}else{f[4514]=0;f[4517]=0;f[$+4>>2]=S|3;T=$+S+4|0;f[T>>2]=f[T>>2]|1}o=$+8|0;u=b;return o|0}$=f[4515]|0;if($>>>0>B>>>0){T=$-B|0;f[4515]=T;S=f[4518]|0;_=S+B|0;f[4518]=_;f[_+4>>2]=T|1;f[S+4>>2]=B|3;o=S+8|0;u=b;return o|0}if(!(f[4630]|0)){f[4632]=4096;f[4631]=4096;f[4633]=-1;f[4634]=-1;f[4635]=0;f[4623]=0;f[4630]=c&-16^1431655768;aa=4096}else aa=f[4632]|0;c=B+48|0;S=B+47|0;T=aa+S|0;_=0-aa|0;aa=T&_;if(aa>>>0<=B>>>0){o=0;u=b;return o|0}X=f[4622]|0;if(X|0?(Y=f[4620]|0,Z=Y+aa|0,Z>>>0<=Y>>>0|Z>>>0>X>>>0):0){o=0;u=b;return o|0}b:do if(!(f[4623]&4)){X=f[4518]|0;c:do if(X){Z=18496;while(1){Y=f[Z>>2]|0;if(Y>>>0<=X>>>0?(ba=Z+4|0,(Y+(f[ba>>2]|0)|0)>>>0>X>>>0):0)break;Y=f[Z+8>>2]|0;if(!Y){H=118;break c}else Z=Y}j=T-$&_;if(j>>>0<2147483647){Y=Fl(j|0)|0;if((Y|0)==((f[Z>>2]|0)+(f[ba>>2]|0)|0))if((Y|0)==(-1|0))ca=j;else{da=j;ea=Y;H=135;break b}else{fa=Y;ga=j;H=126}}else ca=0}else H=118;while(0);do if((H|0)==118){X=Fl(0)|0;if((X|0)!=(-1|0)?(e=X,j=f[4631]|0,Y=j+-1|0,U=((Y&e|0)==0?0:(Y+e&0-j)-e|0)+aa|0,e=f[4620]|0,j=U+e|0,U>>>0>B>>>0&U>>>0<2147483647):0){Y=f[4622]|0;if(Y|0?j>>>0<=e>>>0|j>>>0>Y>>>0:0){ca=0;break}Y=Fl(U|0)|0;if((Y|0)==(X|0)){da=U;ea=X;H=135;break b}else{fa=Y;ga=U;H=126}}else ca=0}while(0);do if((H|0)==126){U=0-ga|0;if(!(c>>>0>ga>>>0&(ga>>>0<2147483647&(fa|0)!=(-1|0))))if((fa|0)==(-1|0)){ca=0;break}else{da=ga;ea=fa;H=135;break b}Y=f[4632]|0;X=S-ga+Y&0-Y;if(X>>>0>=2147483647){da=ga;ea=fa;H=135;break b}if((Fl(X|0)|0)==(-1|0)){Fl(U|0)|0;ca=0;break}else{da=X+ga|0;ea=fa;H=135;break b}}while(0);f[4623]=f[4623]|4;ha=ca;H=133}else{ha=0;H=133}while(0);if(((H|0)==133?aa>>>0<2147483647:0)?(ca=Fl(aa|0)|0,aa=Fl(0)|0,fa=aa-ca|0,ga=fa>>>0>(B+40|0)>>>0,!((ca|0)==(-1|0)|ga^1|ca>>>0>>0&((ca|0)!=(-1|0)&(aa|0)!=(-1|0))^1)):0){da=ga?fa:ha;ea=ca;H=135}if((H|0)==135){ca=(f[4620]|0)+da|0;f[4620]=ca;if(ca>>>0>(f[4621]|0)>>>0)f[4621]=ca;ca=f[4518]|0;do if(ca){ha=18496;while(1){ia=f[ha>>2]|0;ja=ha+4|0;ka=f[ja>>2]|0;if((ea|0)==(ia+ka|0)){H=143;break}fa=f[ha+8>>2]|0;if(!fa)break;else ha=fa}if(((H|0)==143?(f[ha+12>>2]&8|0)==0:0)?ea>>>0>ca>>>0&ia>>>0<=ca>>>0:0){f[ja>>2]=ka+da;fa=(f[4515]|0)+da|0;ga=ca+8|0;aa=(ga&7|0)==0?0:0-ga&7;ga=ca+aa|0;S=fa-aa|0;f[4518]=ga;f[4515]=S;f[ga+4>>2]=S|1;f[ca+fa+4>>2]=40;f[4519]=f[4634];break}if(ea>>>0<(f[4516]|0)>>>0)f[4516]=ea;fa=ea+da|0;S=18496;while(1){if((f[S>>2]|0)==(fa|0)){H=151;break}ga=f[S+8>>2]|0;if(!ga){la=18496;break}else S=ga}if((H|0)==151)if(!(f[S+12>>2]&8)){f[S>>2]=ea;ha=S+4|0;f[ha>>2]=(f[ha>>2]|0)+da;ha=ea+8|0;ga=ea+((ha&7|0)==0?0:0-ha&7)|0;ha=fa+8|0;aa=fa+((ha&7|0)==0?0:0-ha&7)|0;ha=ga+B|0;c=aa-ga-B|0;f[ga+4>>2]=B|3;do if((ca|0)!=(aa|0)){if((f[4517]|0)==(aa|0)){ba=(f[4514]|0)+c|0;f[4514]=ba;f[4517]=ha;f[ha+4>>2]=ba|1;f[ha+ba>>2]=ba;break}ba=f[aa+4>>2]|0;if((ba&3|0)==1){_=ba&-8;$=ba>>>3;d:do if(ba>>>0<256){T=f[aa+8>>2]|0;X=f[aa+12>>2]|0;if((X|0)==(T|0)){f[4512]=f[4512]&~(1<<$);break}else{f[T+12>>2]=X;f[X+8>>2]=T;break}}else{T=f[aa+24>>2]|0;X=f[aa+12>>2]|0;do if((X|0)==(aa|0)){U=aa+16|0;Y=U+4|0;j=f[Y>>2]|0;if(!j){e=f[U>>2]|0;if(!e){ma=0;break}else{na=e;oa=U}}else{na=j;oa=Y}while(1){Y=na+20|0;j=f[Y>>2]|0;if(j|0){na=j;oa=Y;continue}Y=na+16|0;j=f[Y>>2]|0;if(!j)break;else{na=j;oa=Y}}f[oa>>2]=0;ma=na}else{Y=f[aa+8>>2]|0;f[Y+12>>2]=X;f[X+8>>2]=Y;ma=X}while(0);if(!T)break;X=f[aa+28>>2]|0;Y=18352+(X<<2)|0;do if((f[Y>>2]|0)!=(aa|0)){f[T+16+(((f[T+16>>2]|0)!=(aa|0)&1)<<2)>>2]=ma;if(!ma)break d}else{f[Y>>2]=ma;if(ma|0)break;f[4513]=f[4513]&~(1<>2]=T;X=aa+16|0;Y=f[X>>2]|0;if(Y|0){f[ma+16>>2]=Y;f[Y+24>>2]=ma}Y=f[X+4>>2]|0;if(!Y)break;f[ma+20>>2]=Y;f[Y+24>>2]=ma}while(0);pa=aa+_|0;qa=_+c|0}else{pa=aa;qa=c}$=pa+4|0;f[$>>2]=f[$>>2]&-2;f[ha+4>>2]=qa|1;f[ha+qa>>2]=qa;$=qa>>>3;if(qa>>>0<256){ba=18088+($<<1<<2)|0;Z=f[4512]|0;Y=1<<$;if(!(Z&Y)){f[4512]=Z|Y;ra=ba;sa=ba+8|0}else{Y=ba+8|0;ra=f[Y>>2]|0;sa=Y}f[sa>>2]=ha;f[ra+12>>2]=ha;f[ha+8>>2]=ra;f[ha+12>>2]=ba;break}ba=qa>>>8;do if(!ba)ta=0;else{if(qa>>>0>16777215){ta=31;break}Y=(ba+1048320|0)>>>16&8;Z=ba<>>16&4;X=Z<<$;Z=(X+245760|0)>>>16&2;j=14-($|Y|Z)+(X<>>15)|0;ta=qa>>>(j+7|0)&1|j<<1}while(0);ba=18352+(ta<<2)|0;f[ha+28>>2]=ta;_=ha+16|0;f[_+4>>2]=0;f[_>>2]=0;_=f[4513]|0;j=1<>2]=ha;f[ha+24>>2]=ba;f[ha+12>>2]=ha;f[ha+8>>2]=ha;break}j=qa<<((ta|0)==31?0:25-(ta>>>1)|0);_=f[ba>>2]|0;while(1){if((f[_+4>>2]&-8|0)==(qa|0)){H=192;break}ua=_+16+(j>>>31<<2)|0;ba=f[ua>>2]|0;if(!ba){H=191;break}else{j=j<<1;_=ba}}if((H|0)==191){f[ua>>2]=ha;f[ha+24>>2]=_;f[ha+12>>2]=ha;f[ha+8>>2]=ha;break}else if((H|0)==192){j=_+8|0;ba=f[j>>2]|0;f[ba+12>>2]=ha;f[j>>2]=ha;f[ha+8>>2]=ba;f[ha+12>>2]=_;f[ha+24>>2]=0;break}}else{ba=(f[4515]|0)+c|0;f[4515]=ba;f[4518]=ha;f[ha+4>>2]=ba|1}while(0);o=ga+8|0;u=b;return o|0}else la=18496;while(1){ha=f[la>>2]|0;if(ha>>>0<=ca>>>0?(va=ha+(f[la+4>>2]|0)|0,va>>>0>ca>>>0):0)break;la=f[la+8>>2]|0}ga=va+-47|0;ha=ga+8|0;c=ga+((ha&7|0)==0?0:0-ha&7)|0;ha=ca+16|0;ga=c>>>0>>0?ca:c;c=ga+8|0;aa=da+-40|0;fa=ea+8|0;S=(fa&7|0)==0?0:0-fa&7;fa=ea+S|0;ba=aa-S|0;f[4518]=fa;f[4515]=ba;f[fa+4>>2]=ba|1;f[ea+aa+4>>2]=40;f[4519]=f[4634];aa=ga+4|0;f[aa>>2]=27;f[c>>2]=f[4624];f[c+4>>2]=f[4625];f[c+8>>2]=f[4626];f[c+12>>2]=f[4627];f[4624]=ea;f[4625]=da;f[4627]=0;f[4626]=c;c=ga+24|0;do{ba=c;c=c+4|0;f[c>>2]=7}while((ba+8|0)>>>0>>0);if((ga|0)!=(ca|0)){c=ga-ca|0;f[aa>>2]=f[aa>>2]&-2;f[ca+4>>2]=c|1;f[ga>>2]=c;ba=c>>>3;if(c>>>0<256){fa=18088+(ba<<1<<2)|0;S=f[4512]|0;j=1<>2]|0;xa=j}f[xa>>2]=ca;f[wa+12>>2]=ca;f[ca+8>>2]=wa;f[ca+12>>2]=fa;break}fa=c>>>8;if(fa)if(c>>>0>16777215)ya=31;else{j=(fa+1048320|0)>>>16&8;S=fa<>>16&4;ba=S<>>16&2;Z=14-(fa|j|S)+(ba<>>15)|0;ya=c>>>(Z+7|0)&1|Z<<1}else ya=0;Z=18352+(ya<<2)|0;f[ca+28>>2]=ya;f[ca+20>>2]=0;f[ha>>2]=0;S=f[4513]|0;ba=1<>2]=ca;f[ca+24>>2]=Z;f[ca+12>>2]=ca;f[ca+8>>2]=ca;break}ba=c<<((ya|0)==31?0:25-(ya>>>1)|0);S=f[Z>>2]|0;while(1){if((f[S+4>>2]&-8|0)==(c|0)){H=213;break}za=S+16+(ba>>>31<<2)|0;Z=f[za>>2]|0;if(!Z){H=212;break}else{ba=ba<<1;S=Z}}if((H|0)==212){f[za>>2]=ca;f[ca+24>>2]=S;f[ca+12>>2]=ca;f[ca+8>>2]=ca;break}else if((H|0)==213){ba=S+8|0;c=f[ba>>2]|0;f[c+12>>2]=ca;f[ba>>2]=ca;f[ca+8>>2]=c;f[ca+12>>2]=S;f[ca+24>>2]=0;break}}}else{c=f[4516]|0;if((c|0)==0|ea>>>0>>0)f[4516]=ea;f[4624]=ea;f[4625]=da;f[4627]=0;f[4521]=f[4630];f[4520]=-1;f[4525]=18088;f[4524]=18088;f[4527]=18096;f[4526]=18096;f[4529]=18104;f[4528]=18104;f[4531]=18112;f[4530]=18112;f[4533]=18120;f[4532]=18120;f[4535]=18128;f[4534]=18128;f[4537]=18136;f[4536]=18136;f[4539]=18144;f[4538]=18144;f[4541]=18152;f[4540]=18152;f[4543]=18160;f[4542]=18160;f[4545]=18168;f[4544]=18168;f[4547]=18176;f[4546]=18176;f[4549]=18184;f[4548]=18184;f[4551]=18192;f[4550]=18192;f[4553]=18200;f[4552]=18200;f[4555]=18208;f[4554]=18208;f[4557]=18216;f[4556]=18216;f[4559]=18224;f[4558]=18224;f[4561]=18232;f[4560]=18232;f[4563]=18240;f[4562]=18240;f[4565]=18248;f[4564]=18248;f[4567]=18256;f[4566]=18256;f[4569]=18264;f[4568]=18264;f[4571]=18272;f[4570]=18272;f[4573]=18280;f[4572]=18280;f[4575]=18288;f[4574]=18288;f[4577]=18296;f[4576]=18296;f[4579]=18304;f[4578]=18304;f[4581]=18312;f[4580]=18312;f[4583]=18320;f[4582]=18320;f[4585]=18328;f[4584]=18328;f[4587]=18336;f[4586]=18336;c=da+-40|0;ba=ea+8|0;ha=(ba&7|0)==0?0:0-ba&7;ba=ea+ha|0;ga=c-ha|0;f[4518]=ba;f[4515]=ga;f[ba+4>>2]=ga|1;f[ea+c+4>>2]=40;f[4519]=f[4634]}while(0);ea=f[4515]|0;if(ea>>>0>B>>>0){da=ea-B|0;f[4515]=da;ea=f[4518]|0;ca=ea+B|0;f[4518]=ca;f[ca+4>>2]=da|1;f[ea+4>>2]=B|3;o=ea+8|0;u=b;return o|0}}ea=ir()|0;f[ea>>2]=12;o=0;u=b;return o|0}function ab(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0.0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0;i=u;u=u+240|0;j=i+104|0;k=i+224|0;l=i+176|0;m=i+160|0;n=i+228|0;o=i+72|0;p=i+40|0;q=i+132|0;r=i;s=i+172|0;t=i+156|0;v=i+152|0;w=i+148|0;x=i+144|0;y=i+128|0;z=a+8|0;Ah(z,c,e,g);e=f[a+48>>2]|0;A=f[a+52>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{oi(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else oi(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)mq(m);else{D=g<<2;B=dn(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;hj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+152|0;D=a+156|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else oi(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=dn(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;hj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+56|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>>2;R=e+64|0;S=e+28|0;T=(g|0)>0;U=r+4|0;V=r+8|0;Z=r+12|0;_=a+152|0;$=a+112|0;aa=r+16|0;ba=r+28|0;ca=a+16|0;da=a+32|0;ea=a+12|0;fa=a+28|0;ga=a+20|0;ha=a+24|0;ia=r+28|0;ja=r+16|0;ka=r+20|0;la=r+32|0;ma=n+1|0;na=g<<2;oa=(g|0)==1;pa=Q+-1|0;if(F-D>>2>>>0>pa>>>0){qa=Q;ra=pa;sa=D;ta=M;ua=P;va=O;wa=M;xa=N;ya=M;za=N}else{Aa=G;mq(Aa)}b:while(1){pa=f[sa+(ra<<2)>>2]|0;Q=(((pa>>>0)%3|0|0)==0?2:-1)+pa|0;Ba=Q>>>5;Ca=1<<(Q&31);Da=(pa|0)==-1|(Q|0)==-1;Ea=1;Fa=0;Ga=pa;c:while(1){Ha=Ea^1;Ia=Fa;Ja=Ga;while(1){if((Ja|0)==-1){Ka=Ia;break c}La=f[l+(Ia*12|0)>>2]|0;if(((f[(f[e>>2]|0)+(Ja>>>5<<2)>>2]&1<<(Ja&31)|0)==0?(Ma=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ja<<2)>>2]|0,(Ma|0)!=-1):0)?(Na=f[S>>2]|0,Oa=f[A>>2]|0,Pa=f[Oa+(f[Na+(Ma<<2)>>2]<<2)>>2]|0,Qa=Ma+1|0,Ra=f[Oa+(f[Na+((((Qa>>>0)%3|0|0)==0?Ma+-2|0:Qa)<<2)>>2]<<2)>>2]|0,Qa=f[Oa+(f[Na+((((Ma>>>0)%3|0|0)==0?2:-1)+Ma<<2)>>2]<<2)>>2]|0,(Pa|0)<(ra|0)&(Ra|0)<(ra|0)&(Qa|0)<(ra|0)):0){Ma=X(Pa,g)|0;Pa=X(Ra,g)|0;Ra=X(Qa,g)|0;if(T){Qa=0;do{f[La+(Qa<<2)>>2]=(f[c+(Qa+Ra<<2)>>2]|0)+(f[c+(Qa+Pa<<2)>>2]|0)-(f[c+(Qa+Ma<<2)>>2]|0);Qa=Qa+1|0}while((Qa|0)!=(g|0))}Qa=Ia+1|0;if((Qa|0)==4){Ka=4;break c}else Sa=Qa}else Sa=Ia;do if(Ea){Qa=Ja+1|0;Ma=((Qa>>>0)%3|0|0)==0?Ja+-2|0:Qa;if(((Ma|0)!=-1?(f[(f[e>>2]|0)+(Ma>>>5<<2)>>2]&1<<(Ma&31)|0)==0:0)?(Qa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ma<<2)>>2]|0,Ma=Qa+1|0,(Qa|0)!=-1):0)Ta=((Ma>>>0)%3|0|0)==0?Qa+-2|0:Ma;else Ta=-1}else{Ma=(((Ja>>>0)%3|0|0)==0?2:-1)+Ja|0;if(((Ma|0)!=-1?(f[(f[e>>2]|0)+(Ma>>>5<<2)>>2]&1<<(Ma&31)|0)==0:0)?(Qa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ma<<2)>>2]|0,(Qa|0)!=-1):0)if(!((Qa>>>0)%3|0)){Ta=Qa+2|0;break}else{Ta=Qa+-1|0;break}else Ta=-1}while(0);if((Ta|0)==(pa|0)){Ka=Sa;break c}if((Ta|0)!=-1|Ha){Ia=Sa;Ja=Ta}else break}if(Da){Ea=0;Fa=Sa;Ga=-1;continue}if(f[(f[e>>2]|0)+(Ba<<2)>>2]&Ca|0){Ea=0;Fa=Sa;Ga=-1;continue}Ja=f[(f[(f[R>>2]|0)+12>>2]|0)+(Q<<2)>>2]|0;if((Ja|0)==-1){Ea=0;Fa=Sa;Ga=-1;continue}if(!((Ja>>>0)%3|0)){Ea=0;Fa=Sa;Ga=Ja+2|0;continue}else{Ea=0;Fa=Sa;Ga=Ja+-1|0;continue}}Ga=X(ra,g)|0;f[r>>2]=0;f[U>>2]=0;b[V>>0]=0;f[Z>>2]=0;f[Z+4>>2]=0;f[Z+8>>2]=0;f[Z+12>>2]=0;f[Z+16>>2]=0;f[Z+20>>2]=0;f[Z+24>>2]=0;Fa=c+((X(qa+-2|0,g)|0)<<2)|0;Ea=c+(Ga<<2)|0;Q=f[_>>2]|0;if(T){Ca=0;Ba=0;while(1){Da=(f[Fa+(Ca<<2)>>2]|0)-(f[Ea+(Ca<<2)>>2]|0)|0;pa=((Da|0)>-1?Da:0-Da|0)+Ba|0;f[ta+(Ca<<2)>>2]=Da;f[Q+(Ca<<2)>>2]=Da<<1^Da>>31;Ca=Ca+1|0;if((Ca|0)==(g|0)){Ua=pa;break}else Ba=pa}}else Ua=0;ho(j,$,Q,g);Ba=Tk(j)|0;Ca=I;pa=om(j)|0;Da=Tn(pa|0,I|0,Ba|0,Ca|0)|0;Ca=I;Ba=(Ka|0)>0;if(Ba){pa=Ka+-1|0;Ja=p+(pa<<3)|0;Ia=Ja;Ha=Tn(f[Ia>>2]|0,f[Ia+4>>2]|0,Ka|0,((Ka|0)<0)<<31>>31|0)|0;Ia=I;Qa=Ja;f[Qa>>2]=Ha;f[Qa+4>>2]=Ia;Va=+W(+(+jm(Ha,f[o+(pa<<3)>>2]|0)*(+(Ha>>>0)+4294967296.0*+(Ia|0))));Ia=Tn(Da|0,Ca|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;Wa=Ia}else Wa=Da;Da=r;f[Da>>2]=Wa;f[Da+4>>2]=Ua;b[V>>0]=0;f[Z>>2]=0;Mf(aa,Fa,Fa+(g<<2)|0);f[s>>2]=ua;f[t>>2]=va;f[k>>2]=f[s>>2];f[j>>2]=f[t>>2];tf(ba,k,j);if((Ka|0)<1){Xa=za;Ya=ya;Za=xa;_a=wa;$a=va;ab=ua;bb=ua}else{Da=n+Ka|0;Ia=f[q>>2]|0;Ca=Ka+-1|0;Ha=o+(Ca<<3)|0;pa=p+(Ca<<3)|0;Ca=Ia;Qa=f[H>>2]|0;Ja=Da+-1|0;Ma=(Ja|0)==(n|0);Pa=Da+-2|0;Ra=ma>>>0>>0;La=~Ka;Na=Ka+2+((La|0)>-2?La:-2)|0;La=Qa;Oa=Ja>>>0>n>>>0;cb=0;db=1;while(1){cb=cb+1|0;hj(n|0,1,Na|0)|0;hj(n|0,0,cb|0)|0;d:while(1){if(T){hj(f[m>>2]|0,0,na|0)|0;eb=f[m>>2]|0;fb=0;gb=0;while(1){if(!(b[n+fb>>0]|0)){hb=f[l+(fb*12|0)>>2]|0;ib=0;do{jb=eb+(ib<<2)|0;f[jb>>2]=(f[jb>>2]|0)+(f[hb+(ib<<2)>>2]|0);ib=ib+1|0}while((ib|0)!=(g|0));kb=(1<>0]|0))mb=(1<>2]|0;do if(T){f[fb>>2]=(f[fb>>2]|0)/(db|0)|0;if(!oa){gb=1;do{eb=fb+(gb<<2)|0;f[eb>>2]=(f[eb>>2]|0)/(db|0)|0;gb=gb+1|0}while((gb|0)!=(g|0));gb=f[_>>2]|0;if(T)nb=gb;else{ob=0;pb=gb;break}}else nb=f[_>>2]|0;gb=0;eb=0;while(1){ib=(f[fb+(gb<<2)>>2]|0)-(f[Ea+(gb<<2)>>2]|0)|0;hb=((ib|0)>-1?ib:0-ib|0)+eb|0;f[Ia+(gb<<2)>>2]=ib;f[nb+(gb<<2)>>2]=ib<<1^ib>>31;gb=gb+1|0;if((gb|0)==(g|0)){ob=hb;pb=nb;break}else eb=hb}}else{ob=0;pb=f[_>>2]|0}while(0);ho(j,$,pb,g);fb=Tk(j)|0;eb=I;gb=om(j)|0;hb=Tn(gb|0,I|0,fb|0,eb|0)|0;eb=I;if(Ba){fb=Ha;gb=Tn(f[fb>>2]|0,f[fb+4>>2]|0,db|0,0)|0;fb=pa;ib=f[fb>>2]|0;jb=f[fb+4>>2]|0;Va=+W(+(+jm(ib,gb)*(+(ib>>>0)+4294967296.0*+(jb|0))));jb=Tn(hb|0,eb|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;qb=jb}else qb=hb;hb=f[r>>2]|0;if(!((qb|0)>=(hb|0)?!((qb|0)<=(hb|0)?(ob|0)<(f[U>>2]|0):0):0)){hb=r;f[hb>>2]=qb;f[hb+4>>2]=ob;b[V>>0]=lb;f[Z>>2]=db;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[k>>2]=f[v>>2];f[j>>2]=f[w>>2];tf(aa,k,j);f[x>>2]=Ca;f[y>>2]=Qa;f[k>>2]=f[x>>2];f[j>>2]=f[y>>2];tf(ba,k,j)}if(Ma)break;rb=b[Ja>>0]|0;hb=-1;jb=rb;while(1){eb=hb+-1|0;sb=Da+eb|0;ib=jb;jb=b[sb>>0]|0;if((jb&255)<(ib&255))break;if((sb|0)==(n|0)){tb=86;break d}else hb=eb}eb=Da+hb|0;if((jb&255)<(rb&255)){ub=Ja;vb=rb}else{ib=Da;gb=Ja;while(1){fb=gb+-1|0;if((jb&255)<(h[ib+-2>>0]|0)){ub=fb;vb=1;break}else{wb=gb;gb=fb;ib=wb}}}b[sb>>0]=vb;b[ub>>0]=jb;if((hb|0)<-1){xb=eb;yb=Ja}else continue;while(1){ib=b[xb>>0]|0;b[xb>>0]=b[yb>>0]|0;b[yb>>0]=ib;ib=xb+1|0;gb=yb+-1|0;if(ib>>>0>>0){xb=ib;yb=gb}else continue d}}if(((tb|0)==86?(tb=0,Oa):0)?(eb=b[n>>0]|0,b[n>>0]=rb,b[Ja>>0]=eb,Ra):0){eb=Pa;hb=ma;do{jb=b[hb>>0]|0;b[hb>>0]=b[eb>>0]|0;b[eb>>0]=jb;hb=hb+1|0;eb=eb+-1|0}while(hb>>>0>>0)}if((db|0)>=(Ka|0)){Xa=La;Ya=Ia;Za=La;_a=Ia;$a=Qa;ab=Ca;bb=Ia;break}else db=db+1|0}}if(Ba){db=f[Z>>2]|0;Ia=o+(Ka+-1<<3)|0;Ca=Ia;Qa=Tn(f[Ca>>2]|0,f[Ca+4>>2]|0,db|0,((db|0)<0)<<31>>31|0)|0;db=Ia;f[db>>2]=Qa;f[db+4>>2]=I}if(T){db=f[ba>>2]|0;Qa=f[C>>2]|0;Ia=0;do{Ca=f[db+(Ia<<2)>>2]|0;f[Qa+(Ia<<2)>>2]=Ca<<1^Ca>>31;Ia=Ia+1|0}while((Ia|0)!=(g|0));zb=Qa}else zb=f[C>>2]|0;go(j,$,zb,g);if(Ba){Qa=Ka+-1|0;Ab=a+60+(Qa*12|0)|0;Ia=a+60+(Qa*12|0)+4|0;db=a+60+(Qa*12|0)+8|0;Qa=0;do{Ca=f[Ia>>2]|0;La=f[db>>2]|0;Pa=(Ca|0)==(La<<5|0);if(!(1<>0])){if(Pa){if((Ca+1|0)<0){tb=114;break b}Ra=La<<6;Ja=Ca+32&-32;hi(Ab,Ca>>>0<1073741823?(Ra>>>0>>0?Ja:Ra):2147483647);Bb=f[Ia>>2]|0}else Bb=Ca;f[Ia>>2]=Bb+1;Ra=(f[Ab>>2]|0)+(Bb>>>5<<2)|0;f[Ra>>2]=f[Ra>>2]|1<<(Bb&31)}else{if(Pa){if((Ca+1|0)<0){tb=119;break b}Pa=La<<6;La=Ca+32&-32;hi(Ab,Ca>>>0<1073741823?(Pa>>>0>>0?La:Pa):2147483647);Cb=f[Ia>>2]|0}else Cb=Ca;f[Ia>>2]=Cb+1;Ca=(f[Ab>>2]|0)+(Cb>>>5<<2)|0;f[Ca>>2]=f[Ca>>2]&~(1<<(Cb&31))}Qa=Qa+1|0}while((Qa|0)<(Ka|0))}Qa=d+(Ga<<2)|0;Ia=f[z>>2]|0;if((Ia|0)>0){db=0;Ba=f[aa>>2]|0;Ca=Ia;while(1){if((Ca|0)>0){Ia=0;do{Pa=f[Ba+(Ia<<2)>>2]|0;La=f[ca>>2]|0;if((Pa|0)>(La|0)){Ra=f[da>>2]|0;f[Ra+(Ia<<2)>>2]=La;Db=Ra}else{Ra=f[ea>>2]|0;La=f[da>>2]|0;f[La+(Ia<<2)>>2]=(Pa|0)<(Ra|0)?Ra:Pa;Db=La}Ia=Ia+1|0}while((Ia|0)<(f[z>>2]|0));Eb=Db}else Eb=f[da>>2]|0;Ia=(f[Ea+(db<<2)>>2]|0)-(f[Eb+(db<<2)>>2]|0)|0;La=Qa+(db<<2)|0;f[La>>2]=Ia;do if((Ia|0)<(f[fa>>2]|0)){Fb=(f[ga>>2]|0)+Ia|0;tb=109}else{if((Ia|0)<=(f[ha>>2]|0))break;Fb=Ia-(f[ga>>2]|0)|0;tb=109}while(0);if((tb|0)==109){tb=0;f[La>>2]=Fb}db=db+1|0;Ca=f[z>>2]|0;if((db|0)>=(Ca|0))break;else Ba=Eb}}Ba=f[ia>>2]|0;if(Ba|0){Ca=f[la>>2]|0;if((Ca|0)!=(Ba|0))f[la>>2]=Ca+(~((Ca+-4-Ba|0)>>>2)<<2);br(Ba)}Ba=f[ja>>2]|0;if(Ba|0){Ca=f[ka>>2]|0;if((Ca|0)!=(Ba|0))f[ka>>2]=Ca+(~((Ca+-4-Ba|0)>>>2)<<2);br(Ba)}if((qa|0)<=2){Gb=_a;Hb=Za;break a}Ba=f[B>>2]|0;sa=f[Ba>>2]|0;Ca=ra+-1|0;if((f[Ba+4>>2]|0)-sa>>2>>>0<=Ca>>>0){Aa=Ba;tb=18;break}else{Ba=ra;ra=Ca;ta=bb;ua=ab;va=$a;wa=_a;xa=Za;ya=Ya;za=Xa;qa=Ba}}if((tb|0)==18)mq(Aa);else if((tb|0)==114)mq(Ab);else if((tb|0)==119)mq(Ab)}else{Gb=M;Hb=N}while(0);N=f[l>>2]|0;if((g|0)>0?(f[N>>2]=0,(g|0)!=1):0){M=1;do{f[N+(M<<2)>>2]=0;M=M+1|0}while((M|0)!=(g|0))}g=f[z>>2]|0;if((g|0)>0){M=a+16|0;Ab=a+32|0;Aa=a+12|0;qa=a+28|0;Xa=a+20|0;za=a+24|0;a=0;Ya=N;N=g;while(1){if((N|0)>0){g=0;do{ya=f[Ya+(g<<2)>>2]|0;Za=f[M>>2]|0;if((ya|0)>(Za|0)){xa=f[Ab>>2]|0;f[xa+(g<<2)>>2]=Za;Ib=xa}else{xa=f[Aa>>2]|0;Za=f[Ab>>2]|0;f[Za+(g<<2)>>2]=(ya|0)<(xa|0)?xa:ya;Ib=Za}g=g+1|0}while((g|0)<(f[z>>2]|0));Jb=Ib}else Jb=f[Ab>>2]|0;g=(f[c+(a<<2)>>2]|0)-(f[Jb+(a<<2)>>2]|0)|0;Za=d+(a<<2)|0;f[Za>>2]=g;if((g|0)>=(f[qa>>2]|0)){if((g|0)>(f[za>>2]|0)){Kb=g-(f[Xa>>2]|0)|0;tb=145}}else{Kb=(f[Xa>>2]|0)+g|0;tb=145}if((tb|0)==145){tb=0;f[Za>>2]=Kb}a=a+1|0;N=f[z>>2]|0;if((a|0)>=(N|0))break;else Ya=Jb}}if(Gb|0){if((Hb|0)!=(Gb|0))f[H>>2]=Hb+(~((Hb+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[m>>2]|0;if(Gb|0){m=f[E>>2]|0;if((m|0)!=(Gb|0))f[E>>2]=m+(~((m+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[l+36>>2]|0;if(Gb|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Gb|0))f[m>>2]=E+(~((E+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[l+24>>2]|0;if(Gb|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Gb|0))f[E>>2]=m+(~((m+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[l+12>>2]|0;if(Gb|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Gb|0))f[m>>2]=E+(~((E+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[l>>2]|0;if(!Gb){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Gb|0))f[E>>2]=l+(~((l+-4-Gb|0)>>>2)<<2);br(Gb);u=i;return 1}function bb(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0.0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0;i=u;u=u+240|0;j=i+104|0;k=i+224|0;l=i+176|0;m=i+160|0;n=i+228|0;o=i+72|0;p=i+40|0;q=i+132|0;r=i;s=i+172|0;t=i+156|0;v=i+152|0;w=i+148|0;x=i+144|0;y=i+128|0;z=a+8|0;Ah(z,c,e,g);e=f[a+48>>2]|0;A=f[a+52>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{oi(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else oi(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)mq(m);else{D=g<<2;B=dn(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;hj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+152|0;D=a+156|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else oi(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=dn(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;hj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+56|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>>2;R=e+12|0;S=(g|0)>0;T=r+4|0;U=r+8|0;V=r+12|0;Z=a+152|0;_=a+112|0;$=r+16|0;aa=r+28|0;ba=a+16|0;ca=a+32|0;da=a+12|0;ea=a+28|0;fa=a+20|0;ga=a+24|0;ha=r+28|0;ia=r+16|0;ja=r+20|0;ka=r+32|0;la=n+1|0;ma=g<<2;na=(g|0)==1;oa=Q+-1|0;if(F-D>>2>>>0>oa>>>0){pa=Q;qa=oa;ra=D;sa=M;ta=P;ua=O;va=M;wa=N;xa=M;ya=N}else{za=G;mq(za)}b:while(1){oa=f[ra+(qa<<2)>>2]|0;Q=(((oa>>>0)%3|0|0)==0?2:-1)+oa|0;Aa=(oa|0)==-1|(Q|0)==-1;Ba=1;Ca=0;Da=oa;c:while(1){Ea=Ba^1;Fa=Ca;Ga=Da;while(1){if((Ga|0)==-1){Ha=Fa;break c}Ia=f[l+(Fa*12|0)>>2]|0;Ja=f[R>>2]|0;Ka=f[Ja+(Ga<<2)>>2]|0;if((Ka|0)!=-1){La=f[e>>2]|0;Ma=f[A>>2]|0;Na=f[Ma+(f[La+(Ka<<2)>>2]<<2)>>2]|0;Oa=Ka+1|0;Pa=((Oa>>>0)%3|0|0)==0?Ka+-2|0:Oa;if((Pa|0)==-1)Qa=-1;else Qa=f[La+(Pa<<2)>>2]|0;Pa=f[Ma+(Qa<<2)>>2]|0;Oa=(((Ka>>>0)%3|0|0)==0?2:-1)+Ka|0;if((Oa|0)==-1)Ra=-1;else Ra=f[La+(Oa<<2)>>2]|0;Oa=f[Ma+(Ra<<2)>>2]|0;if((Na|0)<(qa|0)&(Pa|0)<(qa|0)&(Oa|0)<(qa|0)){Ma=X(Na,g)|0;Na=X(Pa,g)|0;Pa=X(Oa,g)|0;if(S){Oa=0;do{f[Ia+(Oa<<2)>>2]=(f[c+(Oa+Pa<<2)>>2]|0)+(f[c+(Oa+Na<<2)>>2]|0)-(f[c+(Oa+Ma<<2)>>2]|0);Oa=Oa+1|0}while((Oa|0)!=(g|0))}Oa=Fa+1|0;if((Oa|0)==4){Ha=4;break c}else Sa=Oa}else Sa=Fa}else Sa=Fa;do if(Ba){Oa=Ga+1|0;Ma=((Oa>>>0)%3|0|0)==0?Ga+-2|0:Oa;if((Ma|0)!=-1?(Oa=f[Ja+(Ma<<2)>>2]|0,Ma=Oa+1|0,(Oa|0)!=-1):0)Ta=((Ma>>>0)%3|0|0)==0?Oa+-2|0:Ma;else Ta=-1}else{Ma=(((Ga>>>0)%3|0|0)==0?2:-1)+Ga|0;if((Ma|0)!=-1?(Oa=f[Ja+(Ma<<2)>>2]|0,(Oa|0)!=-1):0)if(!((Oa>>>0)%3|0)){Ta=Oa+2|0;break}else{Ta=Oa+-1|0;break}else Ta=-1}while(0);if((Ta|0)==(oa|0)){Ha=Sa;break c}if((Ta|0)!=-1|Ea){Fa=Sa;Ga=Ta}else break}if(Aa){Ba=0;Ca=Sa;Da=-1;continue}Ga=f[Ja+(Q<<2)>>2]|0;if((Ga|0)==-1){Ba=0;Ca=Sa;Da=-1;continue}if(!((Ga>>>0)%3|0)){Ba=0;Ca=Sa;Da=Ga+2|0;continue}else{Ba=0;Ca=Sa;Da=Ga+-1|0;continue}}Da=X(qa,g)|0;f[r>>2]=0;f[T>>2]=0;b[U>>0]=0;f[V>>2]=0;f[V+4>>2]=0;f[V+8>>2]=0;f[V+12>>2]=0;f[V+16>>2]=0;f[V+20>>2]=0;f[V+24>>2]=0;Ca=c+((X(pa+-2|0,g)|0)<<2)|0;Ba=c+(Da<<2)|0;Q=f[Z>>2]|0;if(S){Aa=0;oa=0;while(1){Ga=(f[Ca+(Aa<<2)>>2]|0)-(f[Ba+(Aa<<2)>>2]|0)|0;Fa=((Ga|0)>-1?Ga:0-Ga|0)+oa|0;f[sa+(Aa<<2)>>2]=Ga;f[Q+(Aa<<2)>>2]=Ga<<1^Ga>>31;Aa=Aa+1|0;if((Aa|0)==(g|0)){Ua=Fa;break}else oa=Fa}}else Ua=0;ho(j,_,Q,g);oa=Tk(j)|0;Aa=I;Fa=om(j)|0;Ga=Tn(Fa|0,I|0,oa|0,Aa|0)|0;Aa=I;oa=(Ha|0)>0;if(oa){Fa=Ha+-1|0;Ea=p+(Fa<<3)|0;Oa=Ea;Ma=Tn(f[Oa>>2]|0,f[Oa+4>>2]|0,Ha|0,((Ha|0)<0)<<31>>31|0)|0;Oa=I;Na=Ea;f[Na>>2]=Ma;f[Na+4>>2]=Oa;Va=+W(+(+jm(Ma,f[o+(Fa<<3)>>2]|0)*(+(Ma>>>0)+4294967296.0*+(Oa|0))));Oa=Tn(Ga|0,Aa|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;Wa=Oa}else Wa=Ga;Ga=r;f[Ga>>2]=Wa;f[Ga+4>>2]=Ua;b[U>>0]=0;f[V>>2]=0;Mf($,Ca,Ca+(g<<2)|0);f[s>>2]=ta;f[t>>2]=ua;f[k>>2]=f[s>>2];f[j>>2]=f[t>>2];tf(aa,k,j);if((Ha|0)<1){Xa=ya;Ya=xa;Za=wa;_a=va;$a=ua;ab=ta;bb=ta}else{Ga=n+Ha|0;Oa=f[q>>2]|0;Aa=Ha+-1|0;Ma=o+(Aa<<3)|0;Fa=p+(Aa<<3)|0;Aa=Oa;Na=f[H>>2]|0;Ea=Ga+-1|0;Pa=(Ea|0)==(n|0);Ia=Ga+-2|0;La=la>>>0>>0;Ka=~Ha;cb=Ha+2+((Ka|0)>-2?Ka:-2)|0;Ka=Na;db=Ea>>>0>n>>>0;eb=0;fb=1;while(1){eb=eb+1|0;hj(n|0,1,cb|0)|0;hj(n|0,0,eb|0)|0;d:while(1){if(S){hj(f[m>>2]|0,0,ma|0)|0;gb=f[m>>2]|0;hb=0;ib=0;while(1){if(!(b[n+hb>>0]|0)){jb=f[l+(hb*12|0)>>2]|0;kb=0;do{lb=gb+(kb<<2)|0;f[lb>>2]=(f[lb>>2]|0)+(f[jb+(kb<<2)>>2]|0);kb=kb+1|0}while((kb|0)!=(g|0));mb=(1<>0]|0))ob=(1<>2]|0;do if(S){f[hb>>2]=(f[hb>>2]|0)/(fb|0)|0;if(!na){ib=1;do{gb=hb+(ib<<2)|0;f[gb>>2]=(f[gb>>2]|0)/(fb|0)|0;ib=ib+1|0}while((ib|0)!=(g|0));ib=f[Z>>2]|0;if(S)pb=ib;else{qb=0;rb=ib;break}}else pb=f[Z>>2]|0;ib=0;gb=0;while(1){kb=(f[hb+(ib<<2)>>2]|0)-(f[Ba+(ib<<2)>>2]|0)|0;jb=((kb|0)>-1?kb:0-kb|0)+gb|0;f[Oa+(ib<<2)>>2]=kb;f[pb+(ib<<2)>>2]=kb<<1^kb>>31;ib=ib+1|0;if((ib|0)==(g|0)){qb=jb;rb=pb;break}else gb=jb}}else{qb=0;rb=f[Z>>2]|0}while(0);ho(j,_,rb,g);hb=Tk(j)|0;gb=I;ib=om(j)|0;jb=Tn(ib|0,I|0,hb|0,gb|0)|0;gb=I;if(oa){hb=Ma;ib=Tn(f[hb>>2]|0,f[hb+4>>2]|0,fb|0,0)|0;hb=Fa;kb=f[hb>>2]|0;lb=f[hb+4>>2]|0;Va=+W(+(+jm(kb,ib)*(+(kb>>>0)+4294967296.0*+(lb|0))));lb=Tn(jb|0,gb|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;sb=lb}else sb=jb;jb=f[r>>2]|0;if(!((sb|0)>=(jb|0)?!((sb|0)<=(jb|0)?(qb|0)<(f[T>>2]|0):0):0)){jb=r;f[jb>>2]=sb;f[jb+4>>2]=qb;b[U>>0]=nb;f[V>>2]=fb;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[k>>2]=f[v>>2];f[j>>2]=f[w>>2];tf($,k,j);f[x>>2]=Aa;f[y>>2]=Na;f[k>>2]=f[x>>2];f[j>>2]=f[y>>2];tf(aa,k,j)}if(Pa)break;tb=b[Ea>>0]|0;jb=-1;lb=tb;while(1){gb=jb+-1|0;ub=Ga+gb|0;kb=lb;lb=b[ub>>0]|0;if((lb&255)<(kb&255))break;if((ub|0)==(n|0)){vb=86;break d}else jb=gb}gb=Ga+jb|0;if((lb&255)<(tb&255)){wb=Ea;xb=tb}else{kb=Ga;ib=Ea;while(1){hb=ib+-1|0;if((lb&255)<(h[kb+-2>>0]|0)){wb=hb;xb=1;break}else{yb=ib;ib=hb;kb=yb}}}b[ub>>0]=xb;b[wb>>0]=lb;if((jb|0)<-1){zb=gb;Ab=Ea}else continue;while(1){kb=b[zb>>0]|0;b[zb>>0]=b[Ab>>0]|0;b[Ab>>0]=kb;kb=zb+1|0;ib=Ab+-1|0;if(kb>>>0>>0){zb=kb;Ab=ib}else continue d}}if(((vb|0)==86?(vb=0,db):0)?(gb=b[n>>0]|0,b[n>>0]=tb,b[Ea>>0]=gb,La):0){gb=Ia;jb=la;do{lb=b[jb>>0]|0;b[jb>>0]=b[gb>>0]|0;b[gb>>0]=lb;jb=jb+1|0;gb=gb+-1|0}while(jb>>>0>>0)}if((fb|0)>=(Ha|0)){Xa=Ka;Ya=Oa;Za=Ka;_a=Oa;$a=Na;ab=Aa;bb=Oa;break}else fb=fb+1|0}}if(oa){fb=f[V>>2]|0;Oa=o+(Ha+-1<<3)|0;Aa=Oa;Na=Tn(f[Aa>>2]|0,f[Aa+4>>2]|0,fb|0,((fb|0)<0)<<31>>31|0)|0;fb=Oa;f[fb>>2]=Na;f[fb+4>>2]=I}if(S){fb=f[aa>>2]|0;Na=f[C>>2]|0;Oa=0;do{Aa=f[fb+(Oa<<2)>>2]|0;f[Na+(Oa<<2)>>2]=Aa<<1^Aa>>31;Oa=Oa+1|0}while((Oa|0)!=(g|0));Bb=Na}else Bb=f[C>>2]|0;go(j,_,Bb,g);if(oa){Na=Ha+-1|0;Cb=a+60+(Na*12|0)|0;Oa=a+60+(Na*12|0)+4|0;fb=a+60+(Na*12|0)+8|0;Na=0;do{Aa=f[Oa>>2]|0;Ka=f[fb>>2]|0;Ia=(Aa|0)==(Ka<<5|0);if(!(1<>0])){if(Ia){if((Aa+1|0)<0){vb=114;break b}La=Ka<<6;Ea=Aa+32&-32;hi(Cb,Aa>>>0<1073741823?(La>>>0>>0?Ea:La):2147483647);Db=f[Oa>>2]|0}else Db=Aa;f[Oa>>2]=Db+1;La=(f[Cb>>2]|0)+(Db>>>5<<2)|0;f[La>>2]=f[La>>2]|1<<(Db&31)}else{if(Ia){if((Aa+1|0)<0){vb=119;break b}Ia=Ka<<6;Ka=Aa+32&-32;hi(Cb,Aa>>>0<1073741823?(Ia>>>0>>0?Ka:Ia):2147483647);Eb=f[Oa>>2]|0}else Eb=Aa;f[Oa>>2]=Eb+1;Aa=(f[Cb>>2]|0)+(Eb>>>5<<2)|0;f[Aa>>2]=f[Aa>>2]&~(1<<(Eb&31))}Na=Na+1|0}while((Na|0)<(Ha|0))}Na=d+(Da<<2)|0;Oa=f[z>>2]|0;if((Oa|0)>0){fb=0;oa=f[$>>2]|0;Aa=Oa;while(1){if((Aa|0)>0){Oa=0;do{Ia=f[oa+(Oa<<2)>>2]|0;Ka=f[ba>>2]|0;if((Ia|0)>(Ka|0)){La=f[ca>>2]|0;f[La+(Oa<<2)>>2]=Ka;Fb=La}else{La=f[da>>2]|0;Ka=f[ca>>2]|0;f[Ka+(Oa<<2)>>2]=(Ia|0)<(La|0)?La:Ia;Fb=Ka}Oa=Oa+1|0}while((Oa|0)<(f[z>>2]|0));Gb=Fb}else Gb=f[ca>>2]|0;Oa=(f[Ba+(fb<<2)>>2]|0)-(f[Gb+(fb<<2)>>2]|0)|0;Ka=Na+(fb<<2)|0;f[Ka>>2]=Oa;do if((Oa|0)<(f[ea>>2]|0)){Hb=(f[fa>>2]|0)+Oa|0;vb=109}else{if((Oa|0)<=(f[ga>>2]|0))break;Hb=Oa-(f[fa>>2]|0)|0;vb=109}while(0);if((vb|0)==109){vb=0;f[Ka>>2]=Hb}fb=fb+1|0;Aa=f[z>>2]|0;if((fb|0)>=(Aa|0))break;else oa=Gb}}oa=f[ha>>2]|0;if(oa|0){Aa=f[ka>>2]|0;if((Aa|0)!=(oa|0))f[ka>>2]=Aa+(~((Aa+-4-oa|0)>>>2)<<2);br(oa)}oa=f[ia>>2]|0;if(oa|0){Aa=f[ja>>2]|0;if((Aa|0)!=(oa|0))f[ja>>2]=Aa+(~((Aa+-4-oa|0)>>>2)<<2);br(oa)}if((pa|0)<=2){Ib=_a;Jb=Za;break a}oa=f[B>>2]|0;ra=f[oa>>2]|0;Aa=qa+-1|0;if((f[oa+4>>2]|0)-ra>>2>>>0<=Aa>>>0){za=oa;vb=18;break}else{oa=qa;qa=Aa;sa=bb;ta=ab;ua=$a;va=_a;wa=Za;xa=Ya;ya=Xa;pa=oa}}if((vb|0)==18)mq(za);else if((vb|0)==114)mq(Cb);else if((vb|0)==119)mq(Cb)}else{Ib=M;Jb=N}while(0);N=f[l>>2]|0;if((g|0)>0?(f[N>>2]=0,(g|0)!=1):0){M=1;do{f[N+(M<<2)>>2]=0;M=M+1|0}while((M|0)!=(g|0))}g=f[z>>2]|0;if((g|0)>0){M=a+16|0;Cb=a+32|0;za=a+12|0;pa=a+28|0;Xa=a+20|0;ya=a+24|0;a=0;Ya=N;N=g;while(1){if((N|0)>0){g=0;do{xa=f[Ya+(g<<2)>>2]|0;Za=f[M>>2]|0;if((xa|0)>(Za|0)){wa=f[Cb>>2]|0;f[wa+(g<<2)>>2]=Za;Kb=wa}else{wa=f[za>>2]|0;Za=f[Cb>>2]|0;f[Za+(g<<2)>>2]=(xa|0)<(wa|0)?wa:xa;Kb=Za}g=g+1|0}while((g|0)<(f[z>>2]|0));Lb=Kb}else Lb=f[Cb>>2]|0;g=(f[c+(a<<2)>>2]|0)-(f[Lb+(a<<2)>>2]|0)|0;Za=d+(a<<2)|0;f[Za>>2]=g;if((g|0)>=(f[pa>>2]|0)){if((g|0)>(f[ya>>2]|0)){Mb=g-(f[Xa>>2]|0)|0;vb=145}}else{Mb=(f[Xa>>2]|0)+g|0;vb=145}if((vb|0)==145){vb=0;f[Za>>2]=Mb}a=a+1|0;N=f[z>>2]|0;if((a|0)>=(N|0))break;else Ya=Lb}}if(Ib|0){if((Jb|0)!=(Ib|0))f[H>>2]=Jb+(~((Jb+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[m>>2]|0;if(Ib|0){m=f[E>>2]|0;if((m|0)!=(Ib|0))f[E>>2]=m+(~((m+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[l+36>>2]|0;if(Ib|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Ib|0))f[m>>2]=E+(~((E+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[l+24>>2]|0;if(Ib|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Ib|0))f[E>>2]=m+(~((m+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[l+12>>2]|0;if(Ib|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Ib|0))f[m>>2]=E+(~((E+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[l>>2]|0;if(!Ib){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Ib|0))f[E>>2]=l+(~((l+-4-Ib|0)>>>2)<<2);br(Ib);u=i;return 1}function cb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;b=u;u=u+16|0;c=b;d=b+8|0;e=b+4|0;f[d>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;h=g*210|0;f[e>>2]=a-h;i=0;j=g;g=(zl(6640,6832,e,c)|0)-6640>>2;k=h;a:while(1){l=(f[6640+(g<<2)>>2]|0)+k|0;h=5;while(1){if(h>>>0>=47){m=211;n=i;o=8;break}p=f[6448+(h<<2)>>2]|0;q=(l>>>0)/(p>>>0)|0;if(q>>>0

>>0){o=106;break a}if((l|0)==(X(q,p)|0)){r=i;break}else h=h+1|0}b:do if((o|0)==8){c:while(1){o=0;h=(l>>>0)/(m>>>0)|0;do if(h>>>0>=m>>>0)if((l|0)!=(X(h,m)|0)){p=m+10|0;q=(l>>>0)/(p>>>0)|0;if(q>>>0>=p>>>0)if((l|0)!=(X(q,p)|0)){q=m+12|0;s=(l>>>0)/(q>>>0)|0;if(s>>>0>=q>>>0)if((l|0)!=(X(s,q)|0)){s=m+16|0;t=(l>>>0)/(s>>>0)|0;if(t>>>0>=s>>>0)if((l|0)!=(X(t,s)|0)){t=m+18|0;v=(l>>>0)/(t>>>0)|0;if(v>>>0>=t>>>0)if((l|0)!=(X(v,t)|0)){v=m+22|0;w=(l>>>0)/(v>>>0)|0;if(w>>>0>=v>>>0)if((l|0)!=(X(w,v)|0)){w=m+28|0;x=(l>>>0)/(w>>>0)|0;if(x>>>0>=w>>>0)if((l|0)==(X(x,w)|0)){y=w;z=9;A=n}else{x=m+30|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+36|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+40|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+42|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+46|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+52|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+58|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+60|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+66|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+70|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+72|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+78|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+82|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+88|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+96|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+100|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+102|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+106|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+108|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+112|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+120|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+126|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+130|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+136|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+138|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+142|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+148|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+150|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+156|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+162|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+166|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+168|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+172|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+178|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+180|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+186|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+190|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+192|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+196|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+198|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+208|0;B=(l>>>0)/(x>>>0)|0;C=B>>>0>>0;D=(l|0)==(X(B,x)|0);y=C|D?x:m+210|0;z=C?1:D?9:0;A=C?l:n}else{y=w;z=1;A=l}}else{y=v;z=9;A=n}else{y=v;z=1;A=l}}else{y=t;z=9;A=n}else{y=t;z=1;A=l}}else{y=s;z=9;A=n}else{y=s;z=1;A=l}}else{y=q;z=9;A=n}else{y=q;z=1;A=l}}else{y=p;z=9;A=n}else{y=p;z=1;A=l}}else{y=m;z=9;A=n}else{y=m;z=1;A=l}while(0);switch(z&15){case 9:{r=A;break b;break}case 0:{m=y;n=A;o=8;break}default:break c}}if(!z)r=A;else{o=107;break a}}while(0);h=g+1|0;p=(h|0)==48;q=j+(p&1)|0;i=r;j=q;g=p?0:h;k=q*210|0}if((o|0)==106){f[d>>2]=l;E=l;break}else if((o|0)==107){f[d>>2]=l;E=A;break}}else{k=zl(6448,6640,d,c)|0;E=f[k>>2]|0}while(0);u=b;return E|0}function db(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0;i=u;u=u+256|0;e=i+104|0;j=i+240|0;k=i+224|0;l=i+160|0;m=i+140|0;n=i+248|0;o=i+72|0;p=i+40|0;q=i+128|0;r=i;s=i+232|0;t=i+220|0;v=i+216|0;w=i+212|0;x=i+208|0;y=i+152|0;z=f[a+28>>2]|0;A=f[a+32>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{oi(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else oi(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)mq(m);else{D=g<<2;B=dn(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;hj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+136|0;D=a+140|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else oi(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=dn(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;hj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+36|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>>2;R=z+64|0;S=z+28|0;T=(g|0)>0;U=r+4|0;V=r+8|0;Z=r+12|0;_=a+136|0;$=a+96|0;aa=r+16|0;ba=r+28|0;ca=a+8|0;da=j+4|0;ea=k+4|0;fa=e+4|0;ga=r+28|0;ha=r+16|0;ia=r+20|0;ja=r+32|0;ka=n+1|0;la=g<<2;ma=(g|0)==1;na=Q+-1|0;if(F-D>>2>>>0>na>>>0){oa=Q;pa=na;qa=D;ra=M;sa=P;ta=O;ua=M;va=N;wa=M;xa=N}else{ya=G;mq(ya)}b:while(1){na=f[qa+(pa<<2)>>2]|0;Q=(((na>>>0)%3|0|0)==0?2:-1)+na|0;za=Q>>>5;Aa=1<<(Q&31);Ba=(na|0)==-1|(Q|0)==-1;Ca=1;Da=0;Ea=na;c:while(1){Fa=Ca^1;Ga=Da;Ha=Ea;while(1){if((Ha|0)==-1){Ia=Ga;break c}Ja=f[l+(Ga*12|0)>>2]|0;if(((f[(f[z>>2]|0)+(Ha>>>5<<2)>>2]&1<<(Ha&31)|0)==0?(Ka=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ha<<2)>>2]|0,(Ka|0)!=-1):0)?(La=f[S>>2]|0,Ma=f[A>>2]|0,Na=f[Ma+(f[La+(Ka<<2)>>2]<<2)>>2]|0,Oa=Ka+1|0,Pa=f[Ma+(f[La+((((Oa>>>0)%3|0|0)==0?Ka+-2|0:Oa)<<2)>>2]<<2)>>2]|0,Oa=f[Ma+(f[La+((((Ka>>>0)%3|0|0)==0?2:-1)+Ka<<2)>>2]<<2)>>2]|0,(Na|0)<(pa|0)&(Pa|0)<(pa|0)&(Oa|0)<(pa|0)):0){Ka=X(Na,g)|0;Na=X(Pa,g)|0;Pa=X(Oa,g)|0;if(T){Oa=0;do{f[Ja+(Oa<<2)>>2]=(f[c+(Oa+Pa<<2)>>2]|0)+(f[c+(Oa+Na<<2)>>2]|0)-(f[c+(Oa+Ka<<2)>>2]|0);Oa=Oa+1|0}while((Oa|0)!=(g|0))}Oa=Ga+1|0;if((Oa|0)==4){Ia=4;break c}else Qa=Oa}else Qa=Ga;do if(Ca){Oa=Ha+1|0;Ka=((Oa>>>0)%3|0|0)==0?Ha+-2|0:Oa;if(((Ka|0)!=-1?(f[(f[z>>2]|0)+(Ka>>>5<<2)>>2]&1<<(Ka&31)|0)==0:0)?(Oa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ka<<2)>>2]|0,Ka=Oa+1|0,(Oa|0)!=-1):0)Ra=((Ka>>>0)%3|0|0)==0?Oa+-2|0:Ka;else Ra=-1}else{Ka=(((Ha>>>0)%3|0|0)==0?2:-1)+Ha|0;if(((Ka|0)!=-1?(f[(f[z>>2]|0)+(Ka>>>5<<2)>>2]&1<<(Ka&31)|0)==0:0)?(Oa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ka<<2)>>2]|0,(Oa|0)!=-1):0)if(!((Oa>>>0)%3|0)){Ra=Oa+2|0;break}else{Ra=Oa+-1|0;break}else Ra=-1}while(0);if((Ra|0)==(na|0)){Ia=Qa;break c}if((Ra|0)!=-1|Fa){Ga=Qa;Ha=Ra}else break}if(Ba){Ca=0;Da=Qa;Ea=-1;continue}if(f[(f[z>>2]|0)+(za<<2)>>2]&Aa|0){Ca=0;Da=Qa;Ea=-1;continue}Ha=f[(f[(f[R>>2]|0)+12>>2]|0)+(Q<<2)>>2]|0;if((Ha|0)==-1){Ca=0;Da=Qa;Ea=-1;continue}if(!((Ha>>>0)%3|0)){Ca=0;Da=Qa;Ea=Ha+2|0;continue}else{Ca=0;Da=Qa;Ea=Ha+-1|0;continue}}Ea=X(pa,g)|0;f[r>>2]=0;f[U>>2]=0;b[V>>0]=0;f[Z>>2]=0;f[Z+4>>2]=0;f[Z+8>>2]=0;f[Z+12>>2]=0;f[Z+16>>2]=0;f[Z+20>>2]=0;f[Z+24>>2]=0;Da=c+((X(oa+-2|0,g)|0)<<2)|0;Ca=c+(Ea<<2)|0;Q=f[_>>2]|0;if(T){Aa=0;za=0;while(1){Ba=(f[Da+(Aa<<2)>>2]|0)-(f[Ca+(Aa<<2)>>2]|0)|0;na=((Ba|0)>-1?Ba:0-Ba|0)+za|0;f[ra+(Aa<<2)>>2]=Ba;f[Q+(Aa<<2)>>2]=Ba<<1^Ba>>31;Aa=Aa+1|0;if((Aa|0)==(g|0)){Sa=na;break}else za=na}}else Sa=0;ho(e,$,Q,g);za=Tk(e)|0;Aa=I;na=om(e)|0;Ba=Tn(na|0,I|0,za|0,Aa|0)|0;Aa=I;za=(Ia|0)>0;if(za){na=Ia+-1|0;Ha=p+(na<<3)|0;Ga=Ha;Fa=Tn(f[Ga>>2]|0,f[Ga+4>>2]|0,Ia|0,((Ia|0)<0)<<31>>31|0)|0;Ga=I;Oa=Ha;f[Oa>>2]=Fa;f[Oa+4>>2]=Ga;Ta=+W(+(+jm(Fa,f[o+(na<<3)>>2]|0)*(+(Fa>>>0)+4294967296.0*+(Ga|0))));Ga=Tn(Ba|0,Aa|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;Ua=Ga}else Ua=Ba;Ba=r;f[Ba>>2]=Ua;f[Ba+4>>2]=Sa;b[V>>0]=0;f[Z>>2]=0;Mf(aa,Da,Da+(g<<2)|0);f[s>>2]=sa;f[t>>2]=ta;f[j>>2]=f[s>>2];f[e>>2]=f[t>>2];tf(ba,j,e);if((Ia|0)<1){Va=xa;Wa=wa;Xa=va;Ya=ua;Za=ta;_a=sa;$a=sa}else{Ba=n+Ia|0;Ga=f[q>>2]|0;Aa=Ia+-1|0;Fa=o+(Aa<<3)|0;na=p+(Aa<<3)|0;Aa=Ga;Oa=f[H>>2]|0;Ha=Ba+-1|0;Ka=(Ha|0)==(n|0);Na=Ba+-2|0;Pa=ka>>>0>>0;Ja=~Ia;La=Ia+2+((Ja|0)>-2?Ja:-2)|0;Ja=Oa;Ma=Ha>>>0>n>>>0;ab=0;bb=1;while(1){ab=ab+1|0;hj(n|0,1,La|0)|0;hj(n|0,0,ab|0)|0;d:while(1){if(T){hj(f[m>>2]|0,0,la|0)|0;cb=f[m>>2]|0;db=0;eb=0;while(1){if(!(b[n+db>>0]|0)){fb=f[l+(db*12|0)>>2]|0;gb=0;do{hb=cb+(gb<<2)|0;f[hb>>2]=(f[hb>>2]|0)+(f[fb+(gb<<2)>>2]|0);gb=gb+1|0}while((gb|0)!=(g|0));ib=(1<>0]|0))kb=(1<>2]|0;do if(T){f[db>>2]=(f[db>>2]|0)/(bb|0)|0;if(!ma){eb=1;do{cb=db+(eb<<2)|0;f[cb>>2]=(f[cb>>2]|0)/(bb|0)|0;eb=eb+1|0}while((eb|0)!=(g|0));eb=f[_>>2]|0;if(T)lb=eb;else{mb=0;nb=eb;break}}else lb=f[_>>2]|0;eb=0;cb=0;while(1){gb=(f[db+(eb<<2)>>2]|0)-(f[Ca+(eb<<2)>>2]|0)|0;fb=((gb|0)>-1?gb:0-gb|0)+cb|0;f[Ga+(eb<<2)>>2]=gb;f[lb+(eb<<2)>>2]=gb<<1^gb>>31;eb=eb+1|0;if((eb|0)==(g|0)){mb=fb;nb=lb;break}else cb=fb}}else{mb=0;nb=f[_>>2]|0}while(0);ho(e,$,nb,g);db=Tk(e)|0;cb=I;eb=om(e)|0;fb=Tn(eb|0,I|0,db|0,cb|0)|0;cb=I;if(za){db=Fa;eb=Tn(f[db>>2]|0,f[db+4>>2]|0,bb|0,0)|0;db=na;gb=f[db>>2]|0;hb=f[db+4>>2]|0;Ta=+W(+(+jm(gb,eb)*(+(gb>>>0)+4294967296.0*+(hb|0))));hb=Tn(fb|0,cb|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;ob=hb}else ob=fb;fb=f[r>>2]|0;if(!((ob|0)>=(fb|0)?!((ob|0)<=(fb|0)?(mb|0)<(f[U>>2]|0):0):0)){fb=r;f[fb>>2]=ob;f[fb+4>>2]=mb;b[V>>0]=jb;f[Z>>2]=bb;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[j>>2]=f[v>>2];f[e>>2]=f[w>>2];tf(aa,j,e);f[x>>2]=Aa;f[y>>2]=Oa;f[j>>2]=f[x>>2];f[e>>2]=f[y>>2];tf(ba,j,e)}if(Ka)break;pb=b[Ha>>0]|0;fb=-1;hb=pb;while(1){cb=fb+-1|0;qb=Ba+cb|0;gb=hb;hb=b[qb>>0]|0;if((hb&255)<(gb&255))break;if((qb|0)==(n|0)){rb=86;break d}else fb=cb}cb=Ba+fb|0;if((hb&255)<(pb&255)){sb=Ha;tb=pb}else{gb=Ba;eb=Ha;while(1){db=eb+-1|0;if((hb&255)<(h[gb+-2>>0]|0)){sb=db;tb=1;break}else{ub=eb;eb=db;gb=ub}}}b[qb>>0]=tb;b[sb>>0]=hb;if((fb|0)<-1){vb=cb;wb=Ha}else continue;while(1){gb=b[vb>>0]|0;b[vb>>0]=b[wb>>0]|0;b[wb>>0]=gb;gb=vb+1|0;eb=wb+-1|0;if(gb>>>0>>0){vb=gb;wb=eb}else continue d}}if(((rb|0)==86?(rb=0,Ma):0)?(cb=b[n>>0]|0,b[n>>0]=pb,b[Ha>>0]=cb,Pa):0){cb=Na;fb=ka;do{hb=b[fb>>0]|0;b[fb>>0]=b[cb>>0]|0;b[cb>>0]=hb;fb=fb+1|0;cb=cb+-1|0}while(fb>>>0>>0)}if((bb|0)>=(Ia|0)){Va=Ja;Wa=Ga;Xa=Ja;Ya=Ga;Za=Oa;_a=Aa;$a=Ga;break}else bb=bb+1|0}}if(za){bb=f[Z>>2]|0;Ga=o+(Ia+-1<<3)|0;Aa=Ga;Oa=Tn(f[Aa>>2]|0,f[Aa+4>>2]|0,bb|0,((bb|0)<0)<<31>>31|0)|0;bb=Ga;f[bb>>2]=Oa;f[bb+4>>2]=I}if(T){bb=f[ba>>2]|0;Oa=f[C>>2]|0;Ga=0;do{Aa=f[bb+(Ga<<2)>>2]|0;f[Oa+(Ga<<2)>>2]=Aa<<1^Aa>>31;Ga=Ga+1|0}while((Ga|0)!=(g|0));xb=Oa}else xb=f[C>>2]|0;go(e,$,xb,g);if(za){Oa=Ia+-1|0;yb=a+40+(Oa*12|0)|0;Ga=a+40+(Oa*12|0)+4|0;bb=a+40+(Oa*12|0)+8|0;Oa=0;do{Aa=f[Ga>>2]|0;Ja=f[bb>>2]|0;Na=(Aa|0)==(Ja<<5|0);if(!(1<>0])){if(Na){if((Aa+1|0)<0){rb=101;break b}Pa=Ja<<6;Ha=Aa+32&-32;hi(yb,Aa>>>0<1073741823?(Pa>>>0>>0?Ha:Pa):2147483647);zb=f[Ga>>2]|0}else zb=Aa;f[Ga>>2]=zb+1;Pa=(f[yb>>2]|0)+(zb>>>5<<2)|0;f[Pa>>2]=f[Pa>>2]|1<<(zb&31)}else{if(Na){if((Aa+1|0)<0){rb=106;break b}Na=Ja<<6;Ja=Aa+32&-32;hi(yb,Aa>>>0<1073741823?(Na>>>0>>0?Ja:Na):2147483647);Ab=f[Ga>>2]|0}else Ab=Aa;f[Ga>>2]=Ab+1;Aa=(f[yb>>2]|0)+(Ab>>>5<<2)|0;f[Aa>>2]=f[Aa>>2]&~(1<<(Ab&31))}Oa=Oa+1|0}while((Oa|0)<(Ia|0))}Oa=f[aa>>2]|0;Ga=d+(Ea<<2)|0;bb=f[Ca+4>>2]|0;za=f[Oa>>2]|0;Aa=f[Oa+4>>2]|0;f[j>>2]=f[Ca>>2];f[da>>2]=bb;f[k>>2]=za;f[ea>>2]=Aa;Dd(e,ca,j,k);f[Ga>>2]=f[e>>2];f[Ga+4>>2]=f[fa>>2];Ga=f[ga>>2]|0;if(Ga|0){Aa=f[ja>>2]|0;if((Aa|0)!=(Ga|0))f[ja>>2]=Aa+(~((Aa+-4-Ga|0)>>>2)<<2);br(Ga)}Ga=f[ha>>2]|0;if(Ga|0){Aa=f[ia>>2]|0;if((Aa|0)!=(Ga|0))f[ia>>2]=Aa+(~((Aa+-4-Ga|0)>>>2)<<2);br(Ga)}if((oa|0)<=2){Bb=Ya;Cb=Xa;break a}Ga=f[B>>2]|0;qa=f[Ga>>2]|0;Aa=pa+-1|0;if((f[Ga+4>>2]|0)-qa>>2>>>0<=Aa>>>0){ya=Ga;rb=18;break}else{Ga=pa;pa=Aa;ra=$a;sa=_a;ta=Za;ua=Ya;va=Xa;wa=Wa;xa=Va;oa=Ga}}if((rb|0)==18)mq(ya);else if((rb|0)==101)mq(yb);else if((rb|0)==106)mq(yb)}else{Bb=M;Cb=N}while(0);if((g|0)>0)hj(f[l>>2]|0,0,g<<2|0)|0;g=f[l>>2]|0;N=f[c+4>>2]|0;M=f[g>>2]|0;yb=f[g+4>>2]|0;f[j>>2]=f[c>>2];f[j+4>>2]=N;f[k>>2]=M;f[k+4>>2]=yb;Dd(e,a+8|0,j,k);f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];if(Bb|0){if((Cb|0)!=(Bb|0))f[H>>2]=Cb+(~((Cb+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[m>>2]|0;if(Bb|0){m=f[E>>2]|0;if((m|0)!=(Bb|0))f[E>>2]=m+(~((m+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[l+36>>2]|0;if(Bb|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Bb|0))f[m>>2]=E+(~((E+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[l+24>>2]|0;if(Bb|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Bb|0))f[E>>2]=m+(~((m+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[l+12>>2]|0;if(Bb|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Bb|0))f[m>>2]=E+(~((E+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[l>>2]|0;if(!Bb){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Bb|0))f[E>>2]=l+(~((l+-4-Bb|0)>>>2)<<2);br(Bb);u=i;return 1}function eb(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0;i=u;u=u+256|0;e=i+104|0;j=i+240|0;k=i+224|0;l=i+160|0;m=i+140|0;n=i+248|0;o=i+72|0;p=i+40|0;q=i+128|0;r=i;s=i+232|0;t=i+220|0;v=i+216|0;w=i+212|0;x=i+208|0;y=i+152|0;z=f[a+28>>2]|0;A=f[a+32>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{oi(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else oi(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)mq(m);else{D=g<<2;B=dn(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;hj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+136|0;D=a+140|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else oi(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=dn(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;hj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+36|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>>2;R=z+12|0;S=(g|0)>0;T=r+4|0;U=r+8|0;V=r+12|0;Z=a+136|0;_=a+96|0;$=r+16|0;aa=r+28|0;ba=a+8|0;ca=j+4|0;da=k+4|0;ea=e+4|0;fa=r+28|0;ga=r+16|0;ha=r+20|0;ia=r+32|0;ja=n+1|0;ka=g<<2;la=(g|0)==1;ma=Q+-1|0;if(F-D>>2>>>0>ma>>>0){na=Q;oa=ma;pa=M;qa=P;ra=O;sa=M;ta=N;ua=M;va=N;wa=D}else{xa=G;mq(xa)}b:while(1){ma=f[wa+(oa<<2)>>2]|0;Q=(((ma>>>0)%3|0|0)==0?2:-1)+ma|0;ya=(ma|0)==-1|(Q|0)==-1;za=1;Aa=0;Ba=ma;c:while(1){Ca=za^1;Da=Aa;Ea=Ba;while(1){if((Ea|0)==-1){Fa=Da;break c}Ga=f[l+(Da*12|0)>>2]|0;Ha=f[R>>2]|0;Ia=f[Ha+(Ea<<2)>>2]|0;if((Ia|0)!=-1){Ja=f[z>>2]|0;Ka=f[A>>2]|0;La=f[Ka+(f[Ja+(Ia<<2)>>2]<<2)>>2]|0;Ma=Ia+1|0;Na=((Ma>>>0)%3|0|0)==0?Ia+-2|0:Ma;if((Na|0)==-1)Oa=-1;else Oa=f[Ja+(Na<<2)>>2]|0;Na=f[Ka+(Oa<<2)>>2]|0;Ma=(((Ia>>>0)%3|0|0)==0?2:-1)+Ia|0;if((Ma|0)==-1)Pa=-1;else Pa=f[Ja+(Ma<<2)>>2]|0;Ma=f[Ka+(Pa<<2)>>2]|0;if((La|0)<(oa|0)&(Na|0)<(oa|0)&(Ma|0)<(oa|0)){Ka=X(La,g)|0;La=X(Na,g)|0;Na=X(Ma,g)|0;if(S){Ma=0;do{f[Ga+(Ma<<2)>>2]=(f[c+(Ma+Na<<2)>>2]|0)+(f[c+(Ma+La<<2)>>2]|0)-(f[c+(Ma+Ka<<2)>>2]|0);Ma=Ma+1|0}while((Ma|0)!=(g|0))}Ma=Da+1|0;if((Ma|0)==4){Fa=4;break c}else Qa=Ma}else Qa=Da}else Qa=Da;do if(za){Ma=Ea+1|0;Ka=((Ma>>>0)%3|0|0)==0?Ea+-2|0:Ma;if((Ka|0)!=-1?(Ma=f[Ha+(Ka<<2)>>2]|0,Ka=Ma+1|0,(Ma|0)!=-1):0)Ra=((Ka>>>0)%3|0|0)==0?Ma+-2|0:Ka;else Ra=-1}else{Ka=(((Ea>>>0)%3|0|0)==0?2:-1)+Ea|0;if((Ka|0)!=-1?(Ma=f[Ha+(Ka<<2)>>2]|0,(Ma|0)!=-1):0)if(!((Ma>>>0)%3|0)){Ra=Ma+2|0;break}else{Ra=Ma+-1|0;break}else Ra=-1}while(0);if((Ra|0)==(ma|0)){Fa=Qa;break c}if((Ra|0)!=-1|Ca){Da=Qa;Ea=Ra}else break}if(ya){za=0;Aa=Qa;Ba=-1;continue}Ea=f[Ha+(Q<<2)>>2]|0;if((Ea|0)==-1){za=0;Aa=Qa;Ba=-1;continue}if(!((Ea>>>0)%3|0)){za=0;Aa=Qa;Ba=Ea+2|0;continue}else{za=0;Aa=Qa;Ba=Ea+-1|0;continue}}Ba=X(oa,g)|0;f[r>>2]=0;f[T>>2]=0;b[U>>0]=0;f[V>>2]=0;f[V+4>>2]=0;f[V+8>>2]=0;f[V+12>>2]=0;f[V+16>>2]=0;f[V+20>>2]=0;f[V+24>>2]=0;Aa=c+((X(na+-2|0,g)|0)<<2)|0;za=c+(Ba<<2)|0;Q=f[Z>>2]|0;if(S){ya=0;ma=0;while(1){Ea=(f[Aa+(ya<<2)>>2]|0)-(f[za+(ya<<2)>>2]|0)|0;Da=((Ea|0)>-1?Ea:0-Ea|0)+ma|0;f[pa+(ya<<2)>>2]=Ea;f[Q+(ya<<2)>>2]=Ea<<1^Ea>>31;ya=ya+1|0;if((ya|0)==(g|0)){Sa=Da;break}else ma=Da}}else Sa=0;ho(e,_,Q,g);ma=Tk(e)|0;ya=I;Da=om(e)|0;Ea=Tn(Da|0,I|0,ma|0,ya|0)|0;ya=I;ma=(Fa|0)>0;if(ma){Da=Fa+-1|0;Ca=p+(Da<<3)|0;Ma=Ca;Ka=Tn(f[Ma>>2]|0,f[Ma+4>>2]|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;Ma=I;La=Ca;f[La>>2]=Ka;f[La+4>>2]=Ma;Ta=+W(+(+jm(Ka,f[o+(Da<<3)>>2]|0)*(+(Ka>>>0)+4294967296.0*+(Ma|0))));Ma=Tn(Ea|0,ya|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;Ua=Ma}else Ua=Ea;Ea=r;f[Ea>>2]=Ua;f[Ea+4>>2]=Sa;b[U>>0]=0;f[V>>2]=0;Mf($,Aa,Aa+(g<<2)|0);f[s>>2]=qa;f[t>>2]=ra;f[j>>2]=f[s>>2];f[e>>2]=f[t>>2];tf(aa,j,e);if((Fa|0)<1){Va=va;Wa=ua;Xa=ta;Ya=sa;Za=ra;_a=qa;$a=qa}else{Ea=n+Fa|0;Ma=f[q>>2]|0;ya=Fa+-1|0;Ka=o+(ya<<3)|0;Da=p+(ya<<3)|0;ya=Ma;La=f[H>>2]|0;Ca=Ea+-1|0;Na=(Ca|0)==(n|0);Ga=Ea+-2|0;Ja=ja>>>0>>0;Ia=~Fa;ab=Fa+2+((Ia|0)>-2?Ia:-2)|0;Ia=La;bb=Ca>>>0>n>>>0;cb=0;db=1;while(1){cb=cb+1|0;hj(n|0,1,ab|0)|0;hj(n|0,0,cb|0)|0;d:while(1){if(S){hj(f[m>>2]|0,0,ka|0)|0;eb=f[m>>2]|0;fb=0;gb=0;while(1){if(!(b[n+fb>>0]|0)){hb=f[l+(fb*12|0)>>2]|0;ib=0;do{jb=eb+(ib<<2)|0;f[jb>>2]=(f[jb>>2]|0)+(f[hb+(ib<<2)>>2]|0);ib=ib+1|0}while((ib|0)!=(g|0));kb=(1<>0]|0))mb=(1<>2]|0;do if(S){f[fb>>2]=(f[fb>>2]|0)/(db|0)|0;if(!la){gb=1;do{eb=fb+(gb<<2)|0;f[eb>>2]=(f[eb>>2]|0)/(db|0)|0;gb=gb+1|0}while((gb|0)!=(g|0));gb=f[Z>>2]|0;if(S)nb=gb;else{ob=0;pb=gb;break}}else nb=f[Z>>2]|0;gb=0;eb=0;while(1){ib=(f[fb+(gb<<2)>>2]|0)-(f[za+(gb<<2)>>2]|0)|0;hb=((ib|0)>-1?ib:0-ib|0)+eb|0;f[Ma+(gb<<2)>>2]=ib;f[nb+(gb<<2)>>2]=ib<<1^ib>>31;gb=gb+1|0;if((gb|0)==(g|0)){ob=hb;pb=nb;break}else eb=hb}}else{ob=0;pb=f[Z>>2]|0}while(0);ho(e,_,pb,g);fb=Tk(e)|0;eb=I;gb=om(e)|0;hb=Tn(gb|0,I|0,fb|0,eb|0)|0;eb=I;if(ma){fb=Ka;gb=Tn(f[fb>>2]|0,f[fb+4>>2]|0,db|0,0)|0;fb=Da;ib=f[fb>>2]|0;jb=f[fb+4>>2]|0;Ta=+W(+(+jm(ib,gb)*(+(ib>>>0)+4294967296.0*+(jb|0))));jb=Tn(hb|0,eb|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;qb=jb}else qb=hb;hb=f[r>>2]|0;if(!((qb|0)>=(hb|0)?!((qb|0)<=(hb|0)?(ob|0)<(f[T>>2]|0):0):0)){hb=r;f[hb>>2]=qb;f[hb+4>>2]=ob;b[U>>0]=lb;f[V>>2]=db;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[j>>2]=f[v>>2];f[e>>2]=f[w>>2];tf($,j,e);f[x>>2]=ya;f[y>>2]=La;f[j>>2]=f[x>>2];f[e>>2]=f[y>>2];tf(aa,j,e)}if(Na)break;rb=b[Ca>>0]|0;hb=-1;jb=rb;while(1){eb=hb+-1|0;sb=Ea+eb|0;ib=jb;jb=b[sb>>0]|0;if((jb&255)<(ib&255))break;if((sb|0)==(n|0)){tb=86;break d}else hb=eb}eb=Ea+hb|0;if((jb&255)<(rb&255)){ub=Ca;vb=rb}else{ib=Ea;gb=Ca;while(1){fb=gb+-1|0;if((jb&255)<(h[ib+-2>>0]|0)){ub=fb;vb=1;break}else{wb=gb;gb=fb;ib=wb}}}b[sb>>0]=vb;b[ub>>0]=jb;if((hb|0)<-1){xb=eb;yb=Ca}else continue;while(1){ib=b[xb>>0]|0;b[xb>>0]=b[yb>>0]|0;b[yb>>0]=ib;ib=xb+1|0;gb=yb+-1|0;if(ib>>>0>>0){xb=ib;yb=gb}else continue d}}if(((tb|0)==86?(tb=0,bb):0)?(eb=b[n>>0]|0,b[n>>0]=rb,b[Ca>>0]=eb,Ja):0){eb=Ga;hb=ja;do{jb=b[hb>>0]|0;b[hb>>0]=b[eb>>0]|0;b[eb>>0]=jb;hb=hb+1|0;eb=eb+-1|0}while(hb>>>0>>0)}if((db|0)>=(Fa|0)){Va=Ia;Wa=Ma;Xa=Ia;Ya=Ma;Za=La;_a=ya;$a=Ma;break}else db=db+1|0}}if(ma){db=f[V>>2]|0;Ma=o+(Fa+-1<<3)|0;ya=Ma;La=Tn(f[ya>>2]|0,f[ya+4>>2]|0,db|0,((db|0)<0)<<31>>31|0)|0;db=Ma;f[db>>2]=La;f[db+4>>2]=I}if(S){db=f[aa>>2]|0;La=f[C>>2]|0;Ma=0;do{ya=f[db+(Ma<<2)>>2]|0;f[La+(Ma<<2)>>2]=ya<<1^ya>>31;Ma=Ma+1|0}while((Ma|0)!=(g|0));zb=La}else zb=f[C>>2]|0;go(e,_,zb,g);if(ma){La=Fa+-1|0;Ab=a+40+(La*12|0)|0;Ma=a+40+(La*12|0)+4|0;db=a+40+(La*12|0)+8|0;La=0;do{ya=f[Ma>>2]|0;Ia=f[db>>2]|0;Ga=(ya|0)==(Ia<<5|0);if(!(1<>0])){if(Ga){if((ya+1|0)<0){tb=101;break b}Ja=Ia<<6;Ca=ya+32&-32;hi(Ab,ya>>>0<1073741823?(Ja>>>0>>0?Ca:Ja):2147483647);Bb=f[Ma>>2]|0}else Bb=ya;f[Ma>>2]=Bb+1;Ja=(f[Ab>>2]|0)+(Bb>>>5<<2)|0;f[Ja>>2]=f[Ja>>2]|1<<(Bb&31)}else{if(Ga){if((ya+1|0)<0){tb=106;break b}Ga=Ia<<6;Ia=ya+32&-32;hi(Ab,ya>>>0<1073741823?(Ga>>>0>>0?Ia:Ga):2147483647);Cb=f[Ma>>2]|0}else Cb=ya;f[Ma>>2]=Cb+1;ya=(f[Ab>>2]|0)+(Cb>>>5<<2)|0;f[ya>>2]=f[ya>>2]&~(1<<(Cb&31))}La=La+1|0}while((La|0)<(Fa|0))}La=f[$>>2]|0;Ma=d+(Ba<<2)|0;db=f[za+4>>2]|0;ma=f[La>>2]|0;ya=f[La+4>>2]|0;f[j>>2]=f[za>>2];f[ca>>2]=db;f[k>>2]=ma;f[da>>2]=ya;Dd(e,ba,j,k);f[Ma>>2]=f[e>>2];f[Ma+4>>2]=f[ea>>2];Ma=f[fa>>2]|0;if(Ma|0){ya=f[ia>>2]|0;if((ya|0)!=(Ma|0))f[ia>>2]=ya+(~((ya+-4-Ma|0)>>>2)<<2);br(Ma)}Ma=f[ga>>2]|0;if(Ma|0){ya=f[ha>>2]|0;if((ya|0)!=(Ma|0))f[ha>>2]=ya+(~((ya+-4-Ma|0)>>>2)<<2);br(Ma)}if((na|0)<=2){Db=Ya;Eb=Xa;break a}Ma=f[B>>2]|0;wa=f[Ma>>2]|0;ya=oa+-1|0;if((f[Ma+4>>2]|0)-wa>>2>>>0<=ya>>>0){xa=Ma;tb=18;break}else{Ma=oa;oa=ya;pa=$a;qa=_a;ra=Za;sa=Ya;ta=Xa;ua=Wa;va=Va;na=Ma}}if((tb|0)==18)mq(xa);else if((tb|0)==101)mq(Ab);else if((tb|0)==106)mq(Ab)}else{Db=M;Eb=N}while(0);if((g|0)>0)hj(f[l>>2]|0,0,g<<2|0)|0;g=f[l>>2]|0;N=f[c+4>>2]|0;M=f[g>>2]|0;Ab=f[g+4>>2]|0;f[j>>2]=f[c>>2];f[j+4>>2]=N;f[k>>2]=M;f[k+4>>2]=Ab;Dd(e,a+8|0,j,k);f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];if(Db|0){if((Eb|0)!=(Db|0))f[H>>2]=Eb+(~((Eb+-4-Db|0)>>>2)<<2);br(Db)}Db=f[m>>2]|0;if(Db|0){m=f[E>>2]|0;if((m|0)!=(Db|0))f[E>>2]=m+(~((m+-4-Db|0)>>>2)<<2);br(Db)}Db=f[l+36>>2]|0;if(Db|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Db|0))f[m>>2]=E+(~((E+-4-Db|0)>>>2)<<2);br(Db)}Db=f[l+24>>2]|0;if(Db|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Db|0))f[E>>2]=m+(~((m+-4-Db|0)>>>2)<<2);br(Db)}Db=f[l+12>>2]|0;if(Db|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Db|0))f[m>>2]=E+(~((E+-4-Db|0)>>>2)<<2);br(Db)}Db=f[l>>2]|0;if(!Db){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Db|0))f[E>>2]=l+(~((l+-4-Db|0)>>>2)<<2);br(Db);u=i;return 1}function fb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0;c=u;u=u+32|0;d=c+16|0;e=c+4|0;g=c;f[a+36>>2]=b;h=a+24|0;i=a+28|0;j=f[i>>2]|0;k=f[h>>2]|0;l=j-k>>2;m=k;k=j;if(l>>>0>=b>>>0){if(l>>>0>b>>>0?(j=m+(b<<2)|0,(j|0)!=(k|0)):0)f[i>>2]=k+(~((k+-4-j|0)>>>2)<<2)}else kh(h,b-l|0,5828);f[d>>2]=0;l=d+4|0;f[l>>2]=0;j=d+8|0;f[j>>2]=0;if(b){if((b|0)<0)mq(d);k=((b+-1|0)>>>5)+1|0;m=dn(k<<2)|0;f[d>>2]=m;f[j>>2]=k;f[l>>2]=b;k=b>>>5;hj(m|0,0,k<<2|0)|0;n=b&31;o=m+(k<<2)|0;k=m;if(!n){p=b;q=k;r=m}else{f[o>>2]=f[o>>2]&~(-1>>>(32-n|0));p=b;q=k;r=m}}else{p=0;q=0;r=0}m=a+4|0;k=f[a>>2]|0;n=(f[m>>2]|0)-k|0;o=n>>2;f[e>>2]=0;s=e+4|0;f[s>>2]=0;t=e+8|0;f[t>>2]=0;do if(o){if((n|0)<0)mq(e);v=((o+-1|0)>>>5)+1|0;w=dn(v<<2)|0;f[e>>2]=w;f[t>>2]=v;f[s>>2]=o;v=o>>>5;hj(w|0,0,v<<2|0)|0;x=o&31;y=w+(v<<2)|0;if(x|0)f[y>>2]=f[y>>2]&~(-1>>>(32-x|0));if(o>>>0>2){x=a+12|0;y=a+32|0;v=a+52|0;w=a+56|0;z=a+48|0;A=b;B=k;C=0;D=q;E=r;a:while(1){F=B;G=C*3|0;if((G|0)!=-1){H=f[F+(G<<2)>>2]|0;I=G+1|0;J=((I>>>0)%3|0|0)==0?G+-2|0:I;if((J|0)==-1)K=-1;else K=f[F+(J<<2)>>2]|0;J=(((G>>>0)%3|0|0)==0?2:-1)+G|0;if((J|0)==-1)L=-1;else L=f[F+(J<<2)>>2]|0;if((H|0)!=(K|0)?!((H|0)==(L|0)|(K|0)==(L|0)):0){H=0;J=A;F=E;I=D;while(1){M=H+G|0;if(!(f[(f[e>>2]|0)+(M>>>5<<2)>>2]&1<<(M&31))){N=f[(f[a>>2]|0)+(M<<2)>>2]|0;f[g>>2]=N;if(!(f[F+(N>>>5<<2)>>2]&1<<(N&31))){O=0;P=J;Q=N}else{N=f[i>>2]|0;if((N|0)==(f[y>>2]|0))Ci(h,5828);else{f[N>>2]=-1;f[i>>2]=N+4}N=f[v>>2]|0;if((N|0)==(f[w>>2]|0))Ci(z,g);else{f[N>>2]=f[g>>2];f[v>>2]=N+4}N=f[l>>2]|0;R=f[j>>2]|0;if((N|0)==(R<<5|0)){if((N+1|0)<0){S=50;break a}T=R<<6;R=N+32&-32;hi(d,N>>>0<1073741823?(T>>>0>>0?R:T):2147483647);U=f[l>>2]|0}else U=N;f[l>>2]=U+1;N=(f[d>>2]|0)+(U>>>5<<2)|0;f[N>>2]=f[N>>2]&~(1<<(U&31));f[g>>2]=J;O=1;P=J+1|0;Q=J}N=f[d>>2]|0;T=N+(Q>>>5<<2)|0;f[T>>2]=f[T>>2]|1<<(Q&31);T=N;b:do if(O){R=M;while(1){if((R|0)==-1){S=64;break b}V=(f[e>>2]|0)+(R>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(R&31);V=f[g>>2]|0;f[(f[h>>2]|0)+(V<<2)>>2]=R;f[(f[a>>2]|0)+(R<<2)>>2]=V;V=R+1|0;W=((V>>>0)%3|0|0)==0?R+-2|0:V;do if((W|0)==-1)X=-1;else{V=f[(f[x>>2]|0)+(W<<2)>>2]|0;Y=V+1|0;if((V|0)==-1){X=-1;break}X=((Y>>>0)%3|0|0)==0?V+-2|0:Y}while(0);if((X|0)==(M|0))break;else R=X}}else{R=M;while(1){if((R|0)==-1){S=64;break b}W=(f[e>>2]|0)+(R>>>5<<2)|0;f[W>>2]=f[W>>2]|1<<(R&31);f[(f[h>>2]|0)+(f[g>>2]<<2)>>2]=R;W=R+1|0;Y=((W>>>0)%3|0|0)==0?R+-2|0:W;do if((Y|0)==-1)Z=-1;else{W=f[(f[x>>2]|0)+(Y<<2)>>2]|0;V=W+1|0;if((W|0)==-1){Z=-1;break}Z=((V>>>0)%3|0|0)==0?W+-2|0:V}while(0);if((Z|0)==(M|0))break;else R=Z}}while(0);c:do if((S|0)==64){S=0;if((M|0)==-1)break;R=(((M>>>0)%3|0|0)==0?2:-1)+M|0;if((R|0)==-1)break;Y=f[(f[x>>2]|0)+(R<<2)>>2]|0;if((Y|0)==-1)break;R=Y+(((Y>>>0)%3|0|0)==0?2:-1)|0;if((R|0)==-1)break;if(!O){Y=R;while(1){V=(f[e>>2]|0)+(Y>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(Y&31);V=(((Y>>>0)%3|0|0)==0?2:-1)+Y|0;if((V|0)==-1)break c;W=f[(f[x>>2]|0)+(V<<2)>>2]|0;if((W|0)==-1)break c;Y=W+(((W>>>0)%3|0|0)==0?2:-1)|0;if((Y|0)==-1)break c}}Y=f[a>>2]|0;W=R;do{V=(f[e>>2]|0)+(W>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(W&31);f[Y+(W<<2)>>2]=f[g>>2];V=(((W>>>0)%3|0|0)==0?2:-1)+W|0;if((V|0)==-1)break c;_=f[(f[x>>2]|0)+(V<<2)>>2]|0;if((_|0)==-1)break c;W=_+(((_>>>0)%3|0|0)==0?2:-1)|0}while((W|0)!=-1)}while(0);$=P;aa=T;ba=N}else{$=J;aa=I;ba=F}if((H|0)<2){H=H+1|0;J=$;F=ba;I=aa}else{ca=$;da=aa;ea=ba;break}}}else{ca=A;da=D;ea=E}}else{ca=A;da=D;ea=E}C=C+1|0;B=f[a>>2]|0;if(C>>>0>=(((f[m>>2]|0)-B>>2>>>0)/3|0)>>>0){S=18;break}else{A=ca;D=da;E=ea}}if((S|0)==18){fa=da;ga=f[l>>2]|0;break}else if((S|0)==50)mq(d)}else{fa=q;ga=p}}else{fa=q;ga=p}while(0);p=a+44|0;f[p>>2]=0;a=fa;fa=ga>>>5;q=a+(fa<<2)|0;S=ga&31;ga=(fa|0)!=0;d:do if(fa|S|0)if(!S){l=a;da=0;ea=ga;while(1){e:do if(ea){if(!(f[l>>2]&1)){ca=da+1|0;f[p>>2]=ca;ha=ca}else ha=da;if(!(f[l>>2]&2)){ca=ha+1|0;f[p>>2]=ca;ia=ca}else ia=ha;if(!(f[l>>2]&4)){ca=ia+1|0;f[p>>2]=ca;ja=ca}else ja=ia;if(!(f[l>>2]&8)){ca=ja+1|0;f[p>>2]=ca;ka=ca}else ka=ja;if(!(f[l>>2]&16)){ca=ka+1|0;f[p>>2]=ca;la=ca}else la=ka;if(!(f[l>>2]&32)){ca=la+1|0;f[p>>2]=ca;ma=ca}else ma=la;if(!(f[l>>2]&64)){ca=ma+1|0;f[p>>2]=ca;na=ca}else na=ma;if(!(f[l>>2]&128)){ca=na+1|0;f[p>>2]=ca;oa=ca}else oa=na;if(!(f[l>>2]&256)){ca=oa+1|0;f[p>>2]=ca;pa=ca}else pa=oa;if(!(f[l>>2]&512)){ca=pa+1|0;f[p>>2]=ca;qa=ca}else qa=pa;if(!(f[l>>2]&1024)){ca=qa+1|0;f[p>>2]=ca;ra=ca}else ra=qa;if(!(f[l>>2]&2048)){ca=ra+1|0;f[p>>2]=ca;sa=ca}else sa=ra;if(!(f[l>>2]&4096)){ca=sa+1|0;f[p>>2]=ca;ta=ca}else ta=sa;if(!(f[l>>2]&8192)){ca=ta+1|0;f[p>>2]=ca;ua=ca}else ua=ta;if(!(f[l>>2]&16384)){ca=ua+1|0;f[p>>2]=ca;va=ca}else va=ua;if(!(f[l>>2]&32768)){ca=va+1|0;f[p>>2]=ca;wa=ca}else wa=va;if(!(f[l>>2]&65536)){ca=wa+1|0;f[p>>2]=ca;xa=ca}else xa=wa;if(!(f[l>>2]&131072)){ca=xa+1|0;f[p>>2]=ca;ya=ca}else ya=xa;if(!(f[l>>2]&262144)){ca=ya+1|0;f[p>>2]=ca;za=ca}else za=ya;if(!(f[l>>2]&524288)){ca=za+1|0;f[p>>2]=ca;Aa=ca}else Aa=za;if(!(f[l>>2]&1048576)){ca=Aa+1|0;f[p>>2]=ca;Ba=ca}else Ba=Aa;if(!(f[l>>2]&2097152)){ca=Ba+1|0;f[p>>2]=ca;Ca=ca}else Ca=Ba;if(!(f[l>>2]&4194304)){ca=Ca+1|0;f[p>>2]=ca;Da=ca}else Da=Ca;if(!(f[l>>2]&8388608)){ca=Da+1|0;f[p>>2]=ca;Ea=ca}else Ea=Da;if(!(f[l>>2]&16777216)){ca=Ea+1|0;f[p>>2]=ca;Fa=ca}else Fa=Ea;if(!(f[l>>2]&33554432)){ca=Fa+1|0;f[p>>2]=ca;Ga=ca}else Ga=Fa;if(!(f[l>>2]&67108864)){ca=Ga+1|0;f[p>>2]=ca;Ha=ca}else Ha=Ga;if(!(f[l>>2]&134217728)){ca=Ha+1|0;f[p>>2]=ca;Ia=ca}else Ia=Ha;if(!(f[l>>2]&268435456)){ca=Ia+1|0;f[p>>2]=ca;Ja=ca}else Ja=Ia;if(!(f[l>>2]&536870912)){ca=Ja+1|0;f[p>>2]=ca;Ka=ca}else Ka=Ja;if(!(f[l>>2]&1073741824)){ca=Ka+1|0;f[p>>2]=ca;La=ca}else La=Ka;if((f[l>>2]|0)<=-1){Ma=La;break}ca=La+1|0;f[p>>2]=ca;Ma=ca}else{ca=0;m=da;while(1){if(!(f[l>>2]&1<>2]=ba;Na=ba}else Na=m;if((ca|0)==31){Ma=Na;break e}ca=ca+1|0;if(!ca)break d;else m=Na}}while(0);l=l+4|0;if((q|0)==(l|0))break;else{da=Ma;ea=1}}}else{if(ga){ea=0;da=a;l=0;while(1){if(!(f[da>>2]&1)){m=l+1|0;f[p>>2]=m;Oa=m;Pa=m}else{Oa=l;Pa=ea}if(!(f[da>>2]&2)){m=Oa+1|0;f[p>>2]=m;Qa=m;Ra=m}else{Qa=Oa;Ra=Pa}if(!(f[da>>2]&4)){m=Qa+1|0;f[p>>2]=m;Sa=m;Ta=m}else{Sa=Qa;Ta=Ra}if(!(f[da>>2]&8)){m=Sa+1|0;f[p>>2]=m;Ua=m;Va=m}else{Ua=Sa;Va=Ta}if(!(f[da>>2]&16)){m=Ua+1|0;f[p>>2]=m;Wa=m;Xa=m}else{Wa=Ua;Xa=Va}if(!(f[da>>2]&32)){m=Wa+1|0;f[p>>2]=m;Ya=m;Za=m}else{Ya=Wa;Za=Xa}if(!(f[da>>2]&64)){m=Ya+1|0;f[p>>2]=m;_a=m;$a=m}else{_a=Ya;$a=Za}if(!(f[da>>2]&128)){m=_a+1|0;f[p>>2]=m;ab=m;bb=m}else{ab=_a;bb=$a}if(!(f[da>>2]&256)){m=ab+1|0;f[p>>2]=m;cb=m;db=m}else{cb=ab;db=bb}if(!(f[da>>2]&512)){m=cb+1|0;f[p>>2]=m;eb=m;fb=m}else{eb=cb;fb=db}if(!(f[da>>2]&1024)){m=eb+1|0;f[p>>2]=m;gb=m;hb=m}else{gb=eb;hb=fb}if(!(f[da>>2]&2048)){m=gb+1|0;f[p>>2]=m;ib=m;jb=m}else{ib=gb;jb=hb}if(!(f[da>>2]&4096)){m=ib+1|0;f[p>>2]=m;kb=m;lb=m}else{kb=ib;lb=jb}if(!(f[da>>2]&8192)){m=kb+1|0;f[p>>2]=m;mb=m;nb=m}else{mb=kb;nb=lb}if(!(f[da>>2]&16384)){m=mb+1|0;f[p>>2]=m;ob=m;pb=m}else{ob=mb;pb=nb}if(!(f[da>>2]&32768)){m=ob+1|0;f[p>>2]=m;qb=m;rb=m}else{qb=ob;rb=pb}if(!(f[da>>2]&65536)){m=qb+1|0;f[p>>2]=m;sb=m;tb=m}else{sb=qb;tb=rb}if(!(f[da>>2]&131072)){m=sb+1|0;f[p>>2]=m;ub=m;vb=m}else{ub=sb;vb=tb}if(!(f[da>>2]&262144)){m=ub+1|0;f[p>>2]=m;wb=m;xb=m}else{wb=ub;xb=vb}if(!(f[da>>2]&524288)){m=wb+1|0;f[p>>2]=m;yb=m;zb=m}else{yb=wb;zb=xb}if(!(f[da>>2]&1048576)){m=yb+1|0;f[p>>2]=m;Ab=m;Bb=m}else{Ab=yb;Bb=zb}if(!(f[da>>2]&2097152)){m=Ab+1|0;f[p>>2]=m;Cb=m;Db=m}else{Cb=Ab;Db=Bb}if(!(f[da>>2]&4194304)){m=Cb+1|0;f[p>>2]=m;Eb=m;Fb=m}else{Eb=Cb;Fb=Db}if(!(f[da>>2]&8388608)){m=Eb+1|0;f[p>>2]=m;Gb=m;Hb=m}else{Gb=Eb;Hb=Fb}if(!(f[da>>2]&16777216)){m=Gb+1|0;f[p>>2]=m;Ib=m;Jb=m}else{Ib=Gb;Jb=Hb}if(!(f[da>>2]&33554432)){m=Ib+1|0;f[p>>2]=m;Kb=m;Lb=m}else{Kb=Ib;Lb=Jb}if(!(f[da>>2]&67108864)){m=Kb+1|0;f[p>>2]=m;Mb=m;Nb=m}else{Mb=Kb;Nb=Lb}if(!(f[da>>2]&134217728)){m=Mb+1|0;f[p>>2]=m;Ob=m;Pb=m}else{Ob=Mb;Pb=Nb}if(!(f[da>>2]&268435456)){m=Ob+1|0;f[p>>2]=m;Qb=m;Rb=m}else{Qb=Ob;Rb=Pb}if(!(f[da>>2]&536870912)){m=Qb+1|0;f[p>>2]=m;Sb=m;Tb=m}else{Sb=Qb;Tb=Rb}if(!(f[da>>2]&1073741824)){m=Sb+1|0;f[p>>2]=m;Ub=m;Vb=m}else{Ub=Sb;Vb=Tb}if((f[da>>2]|0)>-1){m=Ub+1|0;f[p>>2]=m;Wb=m;Xb=m}else{Wb=Ub;Xb=Vb}m=da+4|0;if((q|0)==(m|0)){Yb=m;Zb=Xb;break}else{ea=Xb;da=m;l=Wb}}}else{Yb=a;Zb=0}l=0;da=Zb;while(1){if(!(f[Yb>>2]&1<>2]=ea;_b=ea}else _b=da;l=l+1|0;if((l|0)==(S|0))break;else da=_b}}while(0);_b=f[e>>2]|0;if(_b|0)br(_b);_b=f[d>>2]|0;if(!_b){u=c;return 1}br(_b);u=c;return 1}function gb(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=Oa,La=0,Ma=0,Na=0,Pa=0,Qa=Oa,Ra=0,Sa=0,Ta=0,Ua=0,Va=0;c=u;u=u+80|0;d=c+60|0;e=c+48|0;g=c+24|0;h=c+12|0;i=c;j=a+28|0;k=f[j>>2]|0;l=f[k+4>>2]|0;m=f[l+80>>2]|0;o=a+4|0;p=a+8|0;q=f[p>>2]|0;r=f[o>>2]|0;s=(q|0)==(r|0);t=r;if(s){f[a+72>>2]=0;v=1;u=c;return v|0}w=f[l+8>>2]|0;x=q-r>>2;r=0;q=0;do{r=r+(b[(f[w+(f[t+(q<<2)>>2]<<2)>>2]|0)+24>>0]|0)|0;q=q+1|0}while(q>>>0>>0);f[a+72>>2]=r;if(s){v=1;u=c;return v|0}s=g+4|0;r=g+8|0;x=d+8|0;q=d+4|0;w=d+11|0;y=g+12|0;z=d+8|0;A=d+4|0;B=d+11|0;C=h+4|0;D=h+8|0;E=i+8|0;F=i+4|0;G=d+11|0;H=d+4|0;I=i+11|0;J=d+8|0;K=d+4|0;L=d+11|0;M=d+11|0;N=d+4|0;O=h+8|0;P=a+40|0;Q=a+44|0;R=a+36|0;S=a+64|0;T=a+68|0;U=a+60|0;V=g+8|0;W=g+20|0;X=e+8|0;Y=e+4|0;Z=e+11|0;_=g+4|0;aa=g+8|0;ba=h+4|0;ca=h+8|0;da=h+8|0;ea=a+52|0;fa=a+56|0;ga=a+48|0;a=g+8|0;ha=0;ia=t;t=l;l=k;a:while(1){k=f[ia+(ha<<2)>>2]|0;ja=f[(f[t+8>>2]|0)+(k<<2)>>2]|0;switch(f[ja+28>>2]|0){case 9:{f[g>>2]=1180;f[s>>2]=-1;f[r>>2]=0;f[r+4>>2]=0;f[r+8>>2]=0;f[r+12>>2]=0;ka=f[l+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;la=dn(32)|0;f[d>>2]=la;f[x>>2]=-2147483616;f[q>>2]=17;ma=la;na=12932;oa=ma+17|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[la+17>>0]=0;pa=ka+16|0;qa=f[pa>>2]|0;if(qa){ra=pa;sa=qa;b:while(1){qa=sa;while(1){if((f[qa+16>>2]|0)>=(k|0))break;ta=f[qa+4>>2]|0;if(!ta){ua=ra;break b}else qa=ta}sa=f[qa>>2]|0;if(!sa){ua=qa;break}else ra=qa}if(((ua|0)!=(pa|0)?(k|0)>=(f[ua+16>>2]|0):0)?(ra=ua+20|0,(sh(ra,d)|0)!=0):0)va=yk(ra,d,-1)|0;else wa=17}else wa=17;if((wa|0)==17){wa=0;va=yk(ka,d,-1)|0}if((b[w>>0]|0)<0)br(f[d>>2]|0);if((va|0)<1)xa=1;else{ra=f[(f[j>>2]|0)+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;sa=dn(32)|0;f[d>>2]=sa;f[z>>2]=-2147483616;f[A>>2]=19;ma=sa;na=13005;oa=ma+19|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[sa+19>>0]=0;ka=ra+16|0;pa=f[ka>>2]|0;if(pa){la=ka;ta=pa;c:while(1){pa=ta;while(1){if((f[pa+16>>2]|0)>=(k|0))break;ya=f[pa+4>>2]|0;if(!ya){za=la;break c}else pa=ya}ta=f[pa>>2]|0;if(!ta){za=pa;break}else la=pa}if((za|0)!=(ka|0)?(k|0)>=(f[za+16>>2]|0):0)Aa=za+20|0;else wa=29}else wa=29;if((wa|0)==29){wa=0;Aa=ra}if(!(sh(Aa,d)|0))Ba=0;else{la=f[(f[j>>2]|0)+48>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;ta=dn(32)|0;f[e>>2]=ta;f[X>>2]=-2147483616;f[Y>>2]=18;ma=ta;na=13025;oa=ma+18|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ta+18>>0]=0;ra=la+16|0;ka=f[ra>>2]|0;if(ka){sa=ra;qa=ka;d:while(1){ka=qa;while(1){if((f[ka+16>>2]|0)>=(k|0))break;ya=f[ka+4>>2]|0;if(!ya){Ca=sa;break d}else ka=ya}qa=f[ka>>2]|0;if(!qa){Ca=ka;break}else sa=ka}if((Ca|0)!=(ra|0)?(k|0)>=(f[Ca+16>>2]|0):0)Da=Ca+20|0;else wa=39}else wa=39;if((wa|0)==39){wa=0;Da=la}sa=(sh(Da,e)|0)!=0;if((b[Z>>0]|0)<0)br(f[e>>2]|0);Ba=sa}if((b[B>>0]|0)<0)br(f[d>>2]|0);if(Ba){sa=ja+24|0;qa=b[sa>>0]|0;ta=qa<<24>>24;f[h>>2]=0;f[C>>2]=0;f[D>>2]=0;if(!(qa<<24>>24))Ea=0;else{if(qa<<24>>24<0){wa=48;break a}qa=ta<<2;pa=dn(qa)|0;f[h>>2]=pa;ya=pa+(ta<<2)|0;f[O>>2]=ya;hj(pa|0,0,qa|0)|0;f[C>>2]=ya;Ea=pa}pa=f[(f[j>>2]|0)+48>>2]|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;ya=dn(32)|0;f[i>>2]=ya;f[E>>2]=-2147483616;f[F>>2]=19;ma=ya;na=13005;oa=ma+19|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ya+19>>0]=0;la=b[sa>>0]|0;ra=la<<24>>24;qa=pa+16|0;ta=f[qa>>2]|0;if(ta){Fa=qa;Ga=ta;e:while(1){ta=Ga;while(1){if((f[ta+16>>2]|0)>=(k|0))break;Ha=f[ta+4>>2]|0;if(!Ha){Ia=Fa;break e}else ta=Ha}Ga=f[ta>>2]|0;if(!Ga){Ia=ta;break}else Fa=ta}if(((Ia|0)!=(qa|0)?(k|0)>=(f[Ia+16>>2]|0):0)?(Fa=Ia+20|0,(sh(Fa,i)|0)!=0):0){Ga=zg(Fa,i)|0;if((Ga|0)!=(Ia+24|0)){dj(d,Ga+28|0);Ga=b[M>>0]|0;Fa=Ga<<24>>24<0;if(!((Fa?f[N>>2]|0:Ga&255)|0))Ja=Ga;else{if(la<<24>>24>0){ya=Fa?f[d>>2]|0:d;Fa=0;do{Ka=$(pq(ya,e));ka=ya;ya=f[e>>2]|0;if((ka|0)==(ya|0))break;n[Ea+(Fa<<2)>>2]=Ka;Fa=Fa+1|0}while((Fa|0)<(ra|0));La=b[M>>0]|0}else La=Ga;Ja=La}if(Ja<<24>>24<0)br(f[d>>2]|0)}}else wa=69}else wa=69;if((wa|0)==69?(wa=0,Fa=zg(pa,i)|0,(Fa|0)!=(pa+4|0)):0){dj(d,Fa+28|0);Fa=b[G>>0]|0;ya=Fa<<24>>24<0;if(!((ya?f[H>>2]|0:Fa&255)|0))Ma=Fa;else{if(la<<24>>24>0){qa=ya?f[d>>2]|0:d;ya=0;do{Ka=$(pq(qa,e));ka=qa;qa=f[e>>2]|0;if((ka|0)==(qa|0))break;n[Ea+(ya<<2)>>2]=Ka;ya=ya+1|0}while((ya|0)<(ra|0));Na=b[G>>0]|0}else Na=Fa;Ma=Na}if(Ma<<24>>24<0)br(f[d>>2]|0)}if((b[I>>0]|0)<0)br(f[i>>2]|0);ra=f[(f[j>>2]|0)+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;ya=dn(32)|0;f[d>>2]=ya;f[J>>2]=-2147483616;f[K>>2]=18;ma=ya;na=13025;oa=ma+18|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ya+18>>0]=0;na=ra+16|0;ma=f[na>>2]|0;do if(ma){oa=na;Fa=ma;f:while(1){qa=Fa;while(1){if((f[qa+16>>2]|0)>=(k|0))break;la=f[qa+4>>2]|0;if(!la){Pa=oa;break f}else qa=la}Fa=f[qa>>2]|0;if(!Fa){Pa=qa;break}else oa=qa}if((Pa|0)!=(na|0)?(k|0)>=(f[Pa+16>>2]|0):0){oa=Pa+20|0;if(!(sh(oa,d)|0)){wa=91;break}Qa=$(kk(oa,d,$(1.0)))}else wa=91}else wa=91;while(0);if((wa|0)==91){wa=0;Qa=$(kk(ra,d,$(1.0)))}if((b[L>>0]|0)<0)br(f[d>>2]|0);wl(g,va,f[h>>2]|0,b[sa>>0]|0,Qa);k=f[h>>2]|0;if(k|0){na=f[C>>2]|0;if((na|0)!=(k|0))f[C>>2]=na+(~((na+-4-k|0)>>>2)<<2);br(k)}}else Kd(g,ja,va)|0;k=f[P>>2]|0;if((k|0)==(f[Q>>2]|0))of(R,g);else{f[k>>2]=1180;f[k+4>>2]=f[s>>2];Ra=k+8|0;f[Ra>>2]=0;na=k+12|0;f[na>>2]=0;f[k+16>>2]=0;ma=(f[y>>2]|0)-(f[V>>2]|0)|0;ya=ma>>2;if(ya|0){if(ya>>>0>1073741823){wa=103;break a}oa=dn(ma)|0;f[na>>2]=oa;f[Ra>>2]=oa;f[k+16>>2]=oa+(ya<<2);ya=f[V>>2]|0;ma=(f[y>>2]|0)-ya|0;if((ma|0)>0){Rg(oa|0,ya|0,ma|0)|0;f[na>>2]=oa+(ma>>>2<<2)}}f[k+20>>2]=f[W>>2];f[P>>2]=(f[P>>2]|0)+24}Re(d,g,ja,m);k=f[S>>2]|0;if(k>>>0<(f[T>>2]|0)>>>0){ma=f[d>>2]|0;f[d>>2]=0;f[k>>2]=ma;f[S>>2]=k+4}else Me(U,d);k=f[d>>2]|0;f[d>>2]=0;if(k|0){ma=k+88|0;oa=f[ma>>2]|0;f[ma>>2]=0;if(oa|0){ma=f[oa+8>>2]|0;if(ma|0){na=oa+12|0;if((f[na>>2]|0)!=(ma|0))f[na>>2]=ma;br(ma)}br(oa)}oa=f[k+68>>2]|0;if(oa|0){ma=k+72|0;na=f[ma>>2]|0;if((na|0)!=(oa|0))f[ma>>2]=na+(~((na+-4-oa|0)>>>2)<<2);br(oa)}oa=k+64|0;na=f[oa>>2]|0;f[oa>>2]=0;if(na|0){oa=f[na>>2]|0;if(oa|0){ma=na+4|0;if((f[ma>>2]|0)!=(oa|0))f[ma>>2]=oa;br(oa)}br(na)}br(k)}xa=0}f[g>>2]=1180;k=f[r>>2]|0;if(k|0){na=f[y>>2]|0;if((na|0)!=(k|0))f[y>>2]=na+(~((na+-4-k|0)>>>2)<<2);br(k)}if(xa|0){v=0;wa=169;break a}break}case 1:case 3:case 5:{k=ja+24|0;na=b[k>>0]|0;oa=na<<24>>24;f[g>>2]=0;f[_>>2]=0;f[aa>>2]=0;if(!(na<<24>>24))Sa=0;else{if(na<<24>>24<0){wa=137;break a}na=dn(oa<<2)|0;f[_>>2]=na;f[g>>2]=na;ma=na+(oa<<2)|0;f[a>>2]=ma;ya=oa;oa=na;while(1){f[oa>>2]=2147483647;ya=ya+-1|0;if(!ya)break;else oa=oa+4|0}f[_>>2]=ma;Sa=b[k>>0]|0}oa=Sa<<24>>24;f[h>>2]=0;f[ba>>2]=0;f[ca>>2]=0;if(!(Sa<<24>>24))Ta=0;else{if(Sa<<24>>24<0){wa=144;break a}ya=oa<<2;sa=dn(ya)|0;f[h>>2]=sa;ra=sa+(oa<<2)|0;f[da>>2]=ra;hj(sa|0,0,ya|0)|0;f[ba>>2]=ra;Ta=sa}sa=ja+80|0;ra=b[k>>0]|0;g:do if(!(f[sa>>2]|0))Ua=ra;else{ya=0;oa=ra;na=Ta;while(1){f[e>>2]=ya;f[d>>2]=f[e>>2];Pb(ja,d,oa,na)|0;Fa=b[k>>0]|0;if(Fa<<24>>24>0){ta=f[g>>2]|0;la=f[h>>2]|0;pa=Fa<<24>>24;Ga=0;do{ka=ta+(Ga<<2)|0;Ha=f[la+(Ga<<2)>>2]|0;if((f[ka>>2]|0)>(Ha|0))f[ka>>2]=Ha;Ga=Ga+1|0}while((Ga|0)<(pa|0))}pa=ya+1|0;if(pa>>>0>=(f[sa>>2]|0)>>>0){Ua=Fa;break g}ya=pa;oa=Fa;na=f[h>>2]|0}}while(0);if(Ua<<24>>24>0){sa=0;ja=Ua;while(1){ra=(f[g>>2]|0)+(sa<<2)|0;ma=f[ea>>2]|0;if((ma|0)==(f[fa>>2]|0)){Ci(ga,ra);Va=b[k>>0]|0}else{f[ma>>2]=f[ra>>2];f[ea>>2]=ma+4;Va=ja}sa=sa+1|0;if((sa|0)>=(Va<<24>>24|0))break;else ja=Va}}ja=f[h>>2]|0;if(ja|0){sa=f[ba>>2]|0;if((sa|0)!=(ja|0))f[ba>>2]=sa+(~((sa+-4-ja|0)>>>2)<<2);br(ja)}ja=f[g>>2]|0;if(ja|0){sa=f[_>>2]|0;if((sa|0)!=(ja|0))f[_>>2]=sa+(~((sa+-4-ja|0)>>>2)<<2);br(ja)}break}default:{}}ja=ha+1|0;sa=f[o>>2]|0;if(ja>>>0>=(f[p>>2]|0)-sa>>2>>>0){v=1;wa=169;break}k=f[j>>2]|0;ha=ja;ia=sa;t=f[k+4>>2]|0;l=k}if((wa|0)==48)mq(h);else if((wa|0)==103)mq(Ra);else if((wa|0)==137)mq(g);else if((wa|0)==144)mq(h);else if((wa|0)==169){u=c;return v|0}return 0}function hb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)mq(e);else{j=h<<2;k=dn(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;hj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+128|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);br(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)mq(e);else{r=s<<2;o=dn(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;hj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+140|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);br(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Jc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+116|0;y=a+48|0;h=a+44|0;j=a+36|0;m=a+40|0;n=a+32|0;A=b+8|0;B=c+8|0;C=a+28|0;D=a+24|0;E=a+16|0;F=a+20|0;G=a+12|0;H=a+88|0;I=a+84|0;J=a+76|0;K=a+80|0;L=a+72|0;M=i+4|0;N=i+24|0;O=i+24|0;P=p+24|0;Q=z;while(1){z=f[v>>2]|0;R=Q+-1|0;S=R+z|0;T=f[t>>2]|0;U=f[T+(((S>>>0)/113|0)<<2)>>2]|0;V=(S>>>0)%113|0;S=f[U+(V*36|0)>>2]|0;W=f[U+(V*36|0)+12>>2]|0;Y=f[U+(V*36|0)+24>>2]|0;Z=f[U+(V*36|0)+32>>2]|0;f[l>>2]=R;R=f[o>>2]|0;V=R-T>>2;if((1-Q-z+((V|0)==0?0:(V*113|0)+-1|0)|0)>>>0>225){br(f[R+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=S;f[c>>2]=W;R=f[k>>2]|0;V=((f[g>>2]|0)+-1|0)==(Y|0)?0:Y+1|0;Y=(f[s>>2]|0)+(Z*12|0)|0;z=W-S|0;T=(f[a>>2]|0)-(f[(f[Y>>2]|0)+(V<<2)>>2]|0)|0;a:do if(T){if(z>>>0<3){U=f[w>>2]|0;f[U>>2]=V;$=f[g>>2]|0;if($>>>0>1){aa=1;ba=$;ca=V;while(1){ca=(ca|0)==(ba+-1|0)?0:ca+1|0;f[U+(aa<<2)>>2]=ca;aa=aa+1|0;da=f[g>>2]|0;if(aa>>>0>=da>>>0){ea=da;break}else ba=da}}else ea=$;if(!z){fa=99;break}else{ga=0;ha=ea}while(1){ba=(f[N>>2]|0)+((X(f[M>>2]|0,S+ga|0)|0)<<2)|0;if(!ha)ia=0;else{aa=0;do{ca=f[(f[w>>2]|0)+(aa<<2)>>2]|0;U=(f[a>>2]|0)-(f[(f[Y>>2]|0)+(ca<<2)>>2]|0)|0;do if(U|0){da=f[y>>2]|0;ja=32-da|0;ka=32-U|0;la=f[ba+(ca<<2)>>2]<(ja|0)){ma=la>>>ka;ka=U-ja|0;f[y>>2]=ka;ja=f[h>>2]|ma>>>ka;f[h>>2]=ja;ka=f[j>>2]|0;if((ka|0)==(f[m>>2]|0))Ci(n,h);else{f[ka>>2]=ja;f[j>>2]=ka+4}f[h>>2]=ma<<32-(f[y>>2]|0);break}ma=f[h>>2]|la>>>da;f[h>>2]=ma;la=da+U|0;f[y>>2]=la;if((la|0)!=32)break;la=f[j>>2]|0;if((la|0)==(f[m>>2]|0))Ci(n,h);else{f[la>>2]=ma;f[j>>2]=la+4}f[h>>2]=0;f[y>>2]=0}while(0);aa=aa+1|0;U=f[g>>2]|0}while(aa>>>0>>0);ia=U}ga=ga+1|0;if(ga>>>0>=z>>>0){fa=99;break a}else ha=ia}}$=Z+1|0;qg(R+($*12|0)|0,f[R+(Z*12|0)>>2]|0,f[R+(Z*12|0)+4>>2]|0);aa=(f[(f[k>>2]|0)+($*12|0)>>2]|0)+(V<<2)|0;ba=(f[aa>>2]|0)+(1<>2]=ba;aa=f[A>>2]|0;U=f[B>>2]|0;b:do if((W|0)==(S|0))na=S;else{ca=f[O>>2]|0;if(!aa){if((f[ca+(V<<2)>>2]|0)>>>0>>0){na=W;break}else{oa=W;pa=S}while(1){la=oa;do{la=la+-1|0;if((pa|0)==(la|0)){na=pa;break b}ma=(f[P>>2]|0)+((X(la,U)|0)<<2)+(V<<2)|0}while((f[ma>>2]|0)>>>0>=ba>>>0);pa=pa+1|0;if((pa|0)==(la|0)){na=la;break b}else oa=la}}else{qa=W;ra=S}while(1){ma=ra;while(1){sa=ca+((X(ma,aa)|0)<<2)|0;if((f[sa+(V<<2)>>2]|0)>>>0>=ba>>>0){ta=qa;break}da=ma+1|0;if((da|0)==(qa|0)){na=qa;break b}else ma=da}while(1){ta=ta+-1|0;if((ma|0)==(ta|0)){na=ma;break b}ua=(f[P>>2]|0)+((X(ta,U)|0)<<2)|0;if((f[ua+(V<<2)>>2]|0)>>>0>>0){va=0;break}}do{la=sa+(va<<2)|0;da=ua+(va<<2)|0;ka=f[la>>2]|0;f[la>>2]=f[da>>2];f[da>>2]=ka;va=va+1|0}while((va|0)!=(aa|0));ra=ma+1|0;if((ra|0)==(ta|0)){na=ta;break}else qa=ta}}while(0);ba=(_(z|0)|0)^31;U=na-S|0;ca=W-na|0;ka=U>>>0>>0;if((U|0)!=(ca|0)){da=f[H>>2]|0;if(ka)f[I>>2]=f[I>>2]|1<<31-da;la=da+1|0;f[H>>2]=la;if((la|0)==32){la=f[J>>2]|0;if((la|0)==(f[K>>2]|0))Ci(L,I);else{f[la>>2]=f[I>>2];f[J>>2]=la+4}f[H>>2]=0;f[I>>2]=0}}la=z>>>1;do if(ka){da=f[C>>2]|0;ja=32-da|0;wa=32-ba|0;xa=la-U<(ja|0)){ya=xa>>>wa;wa=ba-ja|0;f[C>>2]=wa;ja=f[D>>2]|ya>>>wa;f[D>>2]=ja;wa=f[E>>2]|0;if((wa|0)==(f[F>>2]|0))Ci(G,D);else{f[wa>>2]=ja;f[E>>2]=wa+4}f[D>>2]=ya<<32-(f[C>>2]|0);break}ya=f[D>>2]|xa>>>da;f[D>>2]=ya;xa=da+ba|0;f[C>>2]=xa;if((xa|0)==32){xa=f[E>>2]|0;if((xa|0)==(f[F>>2]|0))Ci(G,D);else{f[xa>>2]=ya;f[E>>2]=xa+4}f[D>>2]=0;f[C>>2]=0}}else{xa=f[C>>2]|0;ya=32-xa|0;da=32-ba|0;wa=la-ca<(ya|0)){ja=wa>>>da;da=ba-ya|0;f[C>>2]=da;ya=f[D>>2]|ja>>>da;f[D>>2]=ya;da=f[E>>2]|0;if((da|0)==(f[F>>2]|0))Ci(G,D);else{f[da>>2]=ya;f[E>>2]=da+4}f[D>>2]=ja<<32-(f[C>>2]|0);break}ja=f[D>>2]|wa>>>xa;f[D>>2]=ja;wa=xa+ba|0;f[C>>2]=wa;if((wa|0)==32){wa=f[E>>2]|0;if((wa|0)==(f[F>>2]|0))Ci(G,D);else{f[wa>>2]=ja;f[E>>2]=wa+4}f[D>>2]=0;f[C>>2]=0}}while(0);ba=f[s>>2]|0;la=f[ba+(Z*12|0)>>2]|0;ka=la+(V<<2)|0;f[ka>>2]=(f[ka>>2]|0)+1;qg(ba+($*12|0)|0,la,f[ba+(Z*12|0)+4>>2]|0);if((na|0)!=(S|0)){ba=f[o>>2]|0;la=f[t>>2]|0;ka=ba-la>>2;wa=f[v>>2]|0;ja=f[l>>2]|0;if((((ka|0)==0?0:(ka*113|0)+-1|0)|0)==(ja+wa|0)){Jc(e);za=f[v>>2]|0;Aa=f[l>>2]|0;Ba=f[o>>2]|0;Ca=f[t>>2]|0}else{za=wa;Aa=ja;Ba=ba;Ca=la}la=Aa+za|0;if((Ba|0)==(Ca|0))Da=0;else Da=(f[Ca+(((la>>>0)/113|0)<<2)>>2]|0)+(((la>>>0)%113|0)*36|0)|0;f[Da>>2]=S;la=Da+4|0;f[la>>2]=r;f[la+4>>2]=x;f[Da+12>>2]=na;f[Da+16>>2]=i;f[Da+20>>2]=aa;f[Da+24>>2]=V;f[Da+28>>2]=U;f[Da+32>>2]=Z;f[l>>2]=(f[l>>2]|0)+1}if((W|0)!=(na|0)){la=f[o>>2]|0;ba=f[t>>2]|0;ja=la-ba>>2;wa=f[v>>2]|0;ka=f[l>>2]|0;if((((ja|0)==0?0:(ja*113|0)+-1|0)|0)==(ka+wa|0)){Jc(e);Ea=f[v>>2]|0;Fa=f[l>>2]|0;Ga=f[o>>2]|0;Ha=f[t>>2]|0}else{Ea=wa;Fa=ka;Ga=la;Ha=ba}ba=Fa+Ea|0;if((Ga|0)==(Ha|0))Ia=0;else Ia=(f[Ha+(((ba>>>0)/113|0)<<2)>>2]|0)+(((ba>>>0)%113|0)*36|0)|0;f[Ia>>2]=na;f[Ia+4>>2]=i;f[Ia+8>>2]=aa;f[Ia+12>>2]=W;ba=Ia+16|0;f[ba>>2]=p;f[ba+4>>2]=q;f[Ia+24>>2]=V;f[Ia+28>>2]=ca;f[Ia+32>>2]=$;ba=(f[l>>2]|0)+1|0;f[l>>2]=ba;Ja=ba}else fa=99}else fa=99;while(0);if((fa|0)==99){fa=0;Ja=f[l>>2]|0}if(!Ja)break;else Q=Ja}}Ja=f[t>>2]|0;Q=f[v>>2]|0;Ia=Ja+(((Q>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ja;if((q|0)==(Ja|0)){Ka=0;La=0}else{na=(f[Ia>>2]|0)+(((Q>>>0)%113|0)*36|0)|0;Ka=na;La=na}na=Ia;Ia=La;c:while(1){La=Ia;do{Q=La;if((Ka|0)==(Q|0))break c;La=Q+36|0}while((La-(f[na>>2]|0)|0)!=4068);La=na+4|0;na=La;Ia=f[La>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ja;do{br(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Ma=f[o>>2]|0;Na=Ma-i>>2}while(Na>>>0>2);Oa=Na;Pa=i;Qa=Ma}else{Oa=l;Pa=Ja;Qa=q}switch(Oa|0){case 1:{Ra=56;fa=113;break}case 2:{Ra=113;fa=113;break}default:{}}if((fa|0)==113)f[v>>2]=Ra;if((Pa|0)!=(Qa|0)){Ra=Pa;do{br(f[Ra>>2]|0);Ra=Ra+4|0}while((Ra|0)!=(Qa|0));Qa=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Qa|0))f[o>>2]=t+(~((t+-4-Qa|0)>>>2)<<2)}Qa=f[e>>2]|0;if(!Qa){u=d;return}br(Qa);u=d;return}function ib(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;d=u;u=u+80|0;e=d+56|0;g=d+52|0;h=d+48|0;i=d+68|0;j=d;k=d+44|0;l=d+40|0;m=d+36|0;n=d+32|0;o=d+28|0;p=d+24|0;q=d+20|0;r=d+16|0;s=d+12|0;if(!(b[c+288>>0]|0)){Ne(e,f[c+8>>2]|0);t=c+12|0;v=f[e>>2]|0;f[e>>2]=0;w=f[t>>2]|0;f[t>>2]=v;if(w){ui(w);br(w);w=f[e>>2]|0;f[e>>2]=0;if(w|0){ui(w);br(w)}}else f[e>>2]=0}else{Mg(e,f[c+8>>2]|0);w=c+12|0;v=f[e>>2]|0;f[e>>2]=0;t=f[w>>2]|0;f[w>>2]=v;if(t){ui(t);br(t);t=f[e>>2]|0;f[e>>2]=0;if(t|0){ui(t);br(t)}}else f[e>>2]=0}t=c+12|0;v=f[t>>2]|0;if(v|0?(((f[v+4>>2]|0)-(f[v>>2]|0)>>2>>>0)/3|0|0)!=(f[v+40>>2]|0):0){w=c+200|0;f[c+264>>2]=c;x=c+4|0;Nh(((f[v+28>>2]|0)-(f[v+24>>2]|0)>>2)-(f[v+44>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;v=f[t>>2]|0;Nh((((f[v+4>>2]|0)-(f[v>>2]|0)>>2>>>0)/3|0)-(f[v+40>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;v=c+28|0;y=c+8|0;z=f[y>>2]|0;A=((f[z+100>>2]|0)-(f[z+96>>2]|0)|0)/12|0;b[e>>0]=0;Xg(v,A,e);A=f[t>>2]|0;z=(f[A+28>>2]|0)-(f[A+24>>2]|0)>>2;f[e>>2]=-1;Sf(c+52|0,z,e);z=c+40|0;A=f[z>>2]|0;B=c+44|0;C=f[B>>2]|0;if((C|0)!=(A|0))f[B>>2]=C+(~((C+-4-A|0)>>>2)<<2);A=f[t>>2]|0;C=(f[A+4>>2]|0)-(f[A>>2]|0)>>2;$j(z,C-((C>>>0)%3|0)|0);C=c+84|0;z=f[t>>2]|0;A=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2;b[e>>0]=0;Xg(C,A,e);A=c+96|0;z=f[A>>2]|0;B=c+100|0;D=f[B>>2]|0;if((D|0)!=(z|0))f[B>>2]=D+(~((D+-4-z|0)>>>2)<<2);f[c+164>>2]=-1;z=c+168|0;f[z>>2]=0;D=f[c+108>>2]|0;E=c+112|0;F=f[E>>2]|0;if((F|0)!=(D|0))f[E>>2]=F+(~(((F+-12-D|0)>>>0)/12|0)*12|0);D=c+132|0;if(f[D>>2]|0){F=c+128|0;E=f[F>>2]|0;if(E|0){G=E;do{E=G;G=f[G>>2]|0;br(E)}while((G|0)!=0)}f[F>>2]=0;F=f[c+124>>2]|0;if(F|0){G=c+120|0;E=0;do{f[(f[G>>2]|0)+(E<<2)>>2]=0;E=E+1|0}while((E|0)!=(F|0))}f[D>>2]=0}f[c+144>>2]=0;D=f[t>>2]|0;F=(f[D+28>>2]|0)-(f[D+24>>2]|0)>>2;f[e>>2]=-1;Sf(c+152|0,F,e);F=c+72|0;D=f[F>>2]|0;E=c+76|0;G=f[E>>2]|0;if((G|0)!=(D|0))f[E>>2]=G+(~((G+-4-D|0)>>>2)<<2);D=f[t>>2]|0;$j(F,((f[D+4>>2]|0)-(f[D>>2]|0)>>2>>>0)/3|0);f[c+64>>2]=0;if(!(oe(c)|0)){D=dn(32)|0;f[e>>2]=D;f[e+8>>2]=-2147483616;f[e+4>>2]=29;H=D;I=13227;J=H+29|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[D+29>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}if(!(ch(c)|0)){D=dn(48)|0;f[e>>2]=D;f[e+8>>2]=-2147483600;f[e+4>>2]=36;H=D;I=13257;J=H+36|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[D+36>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}D=c+172|0;G=c+176|0;K=(((f[G>>2]|0)-(f[D>>2]|0)|0)/136|0)&255;b[i>>0]=K;L=f[(f[x>>2]|0)+44>>2]|0;M=L+16|0;N=f[M+4>>2]|0;if((N|0)>0|(N|0)==0&(f[M>>2]|0)>>>0>0)O=K;else{f[g>>2]=f[L+4>>2];f[e>>2]=f[g>>2];ye(L,e,i,i+1|0)|0;O=b[i>>0]|0}i=c+284|0;f[i>>2]=O&255;O=f[t>>2]|0;L=(f[O+4>>2]|0)-(f[O>>2]|0)|0;O=L>>2;Ti(w);f[j>>2]=0;K=j+4|0;f[K>>2]=0;f[j+8>>2]=0;a:do if((L|0)>0){M=c+104|0;N=j+8|0;P=0;b:while(1){Q=(P>>>0)/3|0;R=Q>>>5;S=1<<(Q&31);if((f[(f[v>>2]|0)+(R<<2)>>2]&S|0)==0?(T=f[t>>2]|0,f[k>>2]=Q,f[e>>2]=f[k>>2],!(Rj(T,e)|0)):0){f[g>>2]=0;f[l>>2]=Q;f[e>>2]=f[l>>2];Q=gg(c,e,g)|0;Vi(w,Q);T=f[g>>2]|0;U=(T|0)==-1;do if(Q){do if(U){V=-1;W=-1;X=-1}else{Y=f[f[t>>2]>>2]|0;Z=f[Y+(T<<2)>>2]|0;_=T+1|0;$=((_>>>0)%3|0|0)==0?T+-2|0:_;if(($|0)==-1)aa=-1;else aa=f[Y+($<<2)>>2]|0;$=(((T>>>0)%3|0|0)==0?2:-1)+T|0;if(($|0)==-1){V=-1;W=aa;X=Z;break}V=f[Y+($<<2)>>2]|0;W=aa;X=Z}while(0);Z=f[C>>2]|0;$=Z+(X>>>5<<2)|0;f[$>>2]=f[$>>2]|1<<(X&31);$=Z+(W>>>5<<2)|0;f[$>>2]=f[$>>2]|1<<(W&31);$=Z+(V>>>5<<2)|0;f[$>>2]=f[$>>2]|1<<(V&31);f[e>>2]=1;$=f[B>>2]|0;if($>>>0<(f[M>>2]|0)>>>0){f[$>>2]=1;f[B>>2]=$+4}else Ci(A,e);$=(f[v>>2]|0)+(R<<2)|0;f[$>>2]=f[$>>2]|S;$=T+1|0;if(U)ba=-1;else ba=(($>>>0)%3|0|0)==0?T+-2|0:$;f[e>>2]=ba;Z=f[K>>2]|0;if(Z>>>0<(f[N>>2]|0)>>>0){f[Z>>2]=ba;f[K>>2]=Z+4}else Ci(j,e);if(U)break;Z=(($>>>0)%3|0|0)==0?T+-2|0:$;if((Z|0)==-1)break;$=f[(f[(f[t>>2]|0)+12>>2]|0)+(Z<<2)>>2]|0;Z=($|0)==-1;Y=Z?-1:($>>>0)/3|0;if(Z)break;if(f[(f[v>>2]|0)+(Y>>>5<<2)>>2]&1<<(Y&31)|0)break;f[m>>2]=$;f[e>>2]=f[m>>2];if(!(hc(c,e)|0)){ca=65;break b}}else{$=T+1|0;if(U)da=-1;else da=(($>>>0)%3|0|0)==0?T+-2|0:$;f[n>>2]=da;f[e>>2]=f[n>>2];Ce(c,e,1)|0;f[o>>2]=f[g>>2];f[e>>2]=f[o>>2];if(!(hc(c,e)|0)){ca=71;break b}}while(0)}P=P+1|0;if((P|0)>=(O|0)){ca=77;break a}}if((ca|0)==65){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;P=dn(48)|0;f[e>>2]=P;f[e+8>>2]=-2147483600;f[e+4>>2]=32;H=P;I=13294;J=H+32|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[P+32>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}else if((ca|0)==71){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;N=dn(48)|0;f[e>>2]=N;f[e+8>>2]=-2147483600;f[e+4>>2]=32;H=N;I=13294;J=H+32|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[N+32>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}}else ca=77;while(0);do if((ca|0)==77){O=f[F>>2]|0;o=f[E>>2]|0;n=o;if((O|0)!=(o|0)?(da=o+-4|0,O>>>0>>0):0){o=O;O=da;do{da=f[o>>2]|0;f[o>>2]=f[O>>2];f[O>>2]=da;o=o+4|0;O=O+-4|0}while(o>>>0>>0)}f[p>>2]=n;f[q>>2]=f[j>>2];f[r>>2]=f[K>>2];f[h>>2]=f[p>>2];f[g>>2]=f[q>>2];f[e>>2]=f[r>>2];Md(F,h,g,e)|0;if((f[G>>2]|0)!=(f[D>>2]|0)?(O=f[y>>2]|0,o=((f[O+100>>2]|0)-(f[O+96>>2]|0)|0)/12|0,b[e>>0]=0,Xg(v,o,e),o=f[F>>2]|0,O=f[E>>2]|0,(o|0)!=(O|0)):0){N=o;do{f[s>>2]=f[N>>2];f[e>>2]=f[s>>2];ue(c,e)|0;N=N+4|0}while((N|0)!=(O|0))}_g(w);O=c+232|0;fd(w,O);N=c+280|0;n=f[N>>2]|0;if((n|0?(f[i>>2]|0)>0:0)?(fd(n,O),(f[i>>2]|0)>1):0){n=1;do{fd((f[N>>2]|0)+(n<<5)|0,O);n=n+1|0}while((n|0)<(f[i>>2]|0))}Nh((f[c+272>>2]|0)-(f[c+268>>2]|0)>>2,f[(f[x>>2]|0)+44>>2]|0)|0;Nh(f[z>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;if(Jg(c)|0){n=f[(f[x>>2]|0)+44>>2]|0;N=f[O>>2]|0;o=n+16|0;da=f[o+4>>2]|0;if(!((da|0)>0|(da|0)==0&(f[o>>2]|0)>>>0>0)){o=(f[c+236>>2]|0)-N|0;f[g>>2]=f[n+4>>2];f[e>>2]=f[g>>2];ye(n,e,N,N+o|0)|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;break}else{f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;o=dn(32)|0;f[e>>2]=o;f[e+8>>2]=-2147483616;f[e+4>>2]=28;H=o;I=13327;J=H+28|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[o+28>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);break}}while(0);g=f[j>>2]|0;if(g|0){j=f[K>>2]|0;if((j|0)!=(g|0))f[K>>2]=j+(~((j+-4-g|0)>>>2)<<2);br(g)}u=d;return}g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=29;H=g;I=13197;J=H+29|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[g+29>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}function jb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0;d=u;u=u+48|0;e=d+36|0;g=d+24|0;h=d;i=a+8|0;j=f[i>>2]|0;f[e>>2]=0;k=e+4|0;f[k>>2]=0;f[e+8>>2]=0;do if(j)if(j>>>0>1073741823)mq(e);else{l=j<<2;m=dn(l)|0;f[e>>2]=m;n=m+(j<<2)|0;f[e+8>>2]=n;hj(m|0,0,l|0)|0;f[k>>2]=n;o=n;p=m;break}else{o=0;p=0}while(0);m=a+1164|0;n=f[m>>2]|0;l=f[n>>2]|0;q=n+4|0;if(!l){r=n+8|0;s=p;t=o;v=j}else{j=f[q>>2]|0;if((j|0)!=(l|0))f[q>>2]=j+(~((j+-4-l|0)>>>2)<<2);br(l);l=n+8|0;f[l>>2]=0;f[q>>2]=0;f[n>>2]=0;r=l;s=f[e>>2]|0;t=f[k>>2]|0;v=f[i>>2]|0}f[n>>2]=s;f[q>>2]=t;f[r>>2]=f[e+8>>2];f[e>>2]=0;r=e+4|0;f[r>>2]=0;f[e+8>>2]=0;do if(v)if(v>>>0>1073741823)mq(e);else{t=v<<2;q=dn(t)|0;f[e>>2]=q;s=q+(v<<2)|0;f[e+8>>2]=s;hj(q|0,0,t|0)|0;f[r>>2]=s;w=s;x=q;break}else{w=0;x=0}while(0);v=a+1176|0;q=f[v>>2]|0;s=f[q>>2]|0;t=q+4|0;if(!s){y=q+8|0;z=x;A=w}else{w=f[t>>2]|0;if((w|0)!=(s|0))f[t>>2]=w+(~((w+-4-s|0)>>>2)<<2);br(s);s=q+8|0;f[s>>2]=0;f[t>>2]=0;f[q>>2]=0;y=s;z=f[e>>2]|0;A=f[r>>2]|0}f[q>>2]=z;f[t>>2]=A;f[y>>2]=f[e+8>>2];y=f[b>>2]|0;A=b+4|0;t=f[A>>2]|0;z=f[A+4>>2]|0;A=f[c>>2]|0;q=c+4|0;r=f[q>>2]|0;s=f[q+4>>2]|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;f[h+16>>2]=0;f[h+20>>2]=0;q=h+8|0;w=h+4|0;x=h+16|0;n=h+20|0;k=t;Jc(h);l=f[w>>2]|0;j=(f[n>>2]|0)+(f[x>>2]|0)|0;if((f[q>>2]|0)==(l|0))B=0;else B=(f[l+(((j>>>0)/113|0)<<2)>>2]|0)+(((j>>>0)%113|0)*36|0)|0;f[B>>2]=y;j=B+4|0;f[j>>2]=t;f[j+4>>2]=z;f[B+12>>2]=A;j=B+16|0;f[j>>2]=r;f[j+4>>2]=s;f[B+24>>2]=0;f[B+28>>2]=A-y;f[B+32>>2]=0;B=(f[n>>2]|0)+1|0;f[n>>2]=B;if(B|0){y=a+1152|0;A=a+1084|0;j=a+1080|0;l=a+1072|0;o=a+1076|0;p=a+1068|0;C=b+8|0;D=c+8|0;E=a+1124|0;F=a+1120|0;G=a+1112|0;H=a+1116|0;I=a+1108|0;J=k+4|0;K=k+24|0;L=k+24|0;M=r+24|0;N=B;while(1){B=f[x>>2]|0;O=N+-1|0;P=O+B|0;Q=f[w>>2]|0;R=f[Q+(((P>>>0)/113|0)<<2)>>2]|0;S=(P>>>0)%113|0;P=f[R+(S*36|0)>>2]|0;T=f[R+(S*36|0)+12>>2]|0;U=f[R+(S*36|0)+24>>2]|0;V=f[R+(S*36|0)+32>>2]|0;f[n>>2]=O;O=f[q>>2]|0;S=O-Q>>2;if((1-N-B+((S|0)==0?0:(S*113|0)+-1|0)|0)>>>0>225){br(f[O+-4>>2]|0);f[q>>2]=(f[q>>2]|0)+-4}f[b>>2]=P;f[c>>2]=T;O=f[m>>2]|0;S=O+(V*12|0)|0;B=(f[v>>2]|0)+(V*12|0)|0;f[g>>2]=f[b>>2];f[g+4>>2]=f[b+4>>2];f[g+8>>2]=f[b+8>>2];f[e>>2]=f[c>>2];f[e+4>>2]=f[c+4>>2];f[e+8>>2]=f[c+8>>2];Q=Gd(a,g,e,S,B,U)|0;U=T-P|0;R=(f[a>>2]|0)-(f[(f[B>>2]|0)+(Q<<2)>>2]|0)|0;a:do if(R){if(U>>>0<3){W=f[y>>2]|0;f[W>>2]=Q;Y=f[i>>2]|0;if(Y>>>0>1){Z=1;$=Y;aa=Q;while(1){aa=(aa|0)==($+-1|0)?0:aa+1|0;f[W+(Z<<2)>>2]=aa;Z=Z+1|0;ba=f[i>>2]|0;if(Z>>>0>=ba>>>0){ca=ba;break}else $=ba}}else ca=Y;if(!U){da=87;break}else{ea=0;fa=ca}while(1){$=(f[K>>2]|0)+((X(f[J>>2]|0,P+ea|0)|0)<<2)|0;if(!fa)ga=0;else{Z=0;do{aa=f[(f[y>>2]|0)+(Z<<2)>>2]|0;W=(f[a>>2]|0)-(f[(f[B>>2]|0)+(aa<<2)>>2]|0)|0;do if(W|0){ba=f[A>>2]|0;ha=32-ba|0;ia=32-W|0;ja=f[$+(aa<<2)>>2]<(ha|0)){ka=ja>>>ia;ia=W-ha|0;f[A>>2]=ia;ha=f[j>>2]|ka>>>ia;f[j>>2]=ha;ia=f[l>>2]|0;if((ia|0)==(f[o>>2]|0))Ci(p,j);else{f[ia>>2]=ha;f[l>>2]=ia+4}f[j>>2]=ka<<32-(f[A>>2]|0);break}ka=f[j>>2]|ja>>>ba;f[j>>2]=ka;ja=ba+W|0;f[A>>2]=ja;if((ja|0)!=32)break;ja=f[l>>2]|0;if((ja|0)==(f[o>>2]|0))Ci(p,j);else{f[ja>>2]=ka;f[l>>2]=ja+4}f[j>>2]=0;f[A>>2]=0}while(0);Z=Z+1|0;W=f[i>>2]|0}while(Z>>>0>>0);ga=W}ea=ea+1|0;if(ea>>>0>=U>>>0){da=87;break a}else fa=ga}}Y=V+1|0;Z=f[m>>2]|0;$=Z+(Y*12|0)|0;if(($|0)==(S|0))la=Z;else{qg($,f[S>>2]|0,f[O+(V*12|0)+4>>2]|0);la=f[m>>2]|0}$=(f[la+(Y*12|0)>>2]|0)+(Q<<2)|0;Z=(f[$>>2]|0)+(1<>2]=Z;$=f[C>>2]|0;W=f[D>>2]|0;b:do if((T|0)==(P|0))ma=P;else{aa=f[L>>2]|0;if(!$){if((f[aa+(Q<<2)>>2]|0)>>>0>>0){ma=T;break}else{na=T;oa=P}while(1){ja=na;do{ja=ja+-1|0;if((oa|0)==(ja|0)){ma=oa;break b}ka=(f[M>>2]|0)+((X(ja,W)|0)<<2)+(Q<<2)|0}while((f[ka>>2]|0)>>>0>=Z>>>0);oa=oa+1|0;if((oa|0)==(ja|0)){ma=ja;break b}else na=ja}}else{pa=T;qa=P}while(1){ka=qa;while(1){ra=aa+((X(ka,$)|0)<<2)|0;if((f[ra+(Q<<2)>>2]|0)>>>0>=Z>>>0){sa=pa;break}ba=ka+1|0;if((ba|0)==(pa|0)){ma=pa;break b}else ka=ba}while(1){sa=sa+-1|0;if((ka|0)==(sa|0)){ma=ka;break b}ta=(f[M>>2]|0)+((X(sa,W)|0)<<2)|0;if((f[ta+(Q<<2)>>2]|0)>>>0>>0){ua=0;break}}do{ja=ra+(ua<<2)|0;ba=ta+(ua<<2)|0;ia=f[ja>>2]|0;f[ja>>2]=f[ba>>2];f[ba>>2]=ia;ua=ua+1|0}while((ua|0)!=($|0));qa=ka+1|0;if((qa|0)==(sa|0)){ma=sa;break}else pa=sa}}while(0);Z=(_(U|0)|0)^31;W=ma-P|0;aa=T-ma|0;ia=W>>>0>>0;if((W|0)!=(aa|0)){ba=f[E>>2]|0;if(ia)f[F>>2]=f[F>>2]|1<<31-ba;ja=ba+1|0;f[E>>2]=ja;if((ja|0)==32){ja=f[G>>2]|0;if((ja|0)==(f[H>>2]|0))Ci(I,F);else{f[ja>>2]=f[F>>2];f[G>>2]=ja+4}f[E>>2]=0;f[F>>2]=0}}ja=U>>>1;if(ia){ia=ja-W|0;if(Z|0){ba=0;ha=1<>>1}}}else{ha=ja-aa|0;if(Z|0){ba=0;ia=1<>>1}}}ia=f[v>>2]|0;Z=f[ia+(V*12|0)>>2]|0;ba=Z+(Q<<2)|0;f[ba>>2]=(f[ba>>2]|0)+1;qg(ia+(Y*12|0)|0,Z,f[ia+(V*12|0)+4>>2]|0);if((ma|0)!=(P|0)){ia=f[q>>2]|0;Z=f[w>>2]|0;ba=ia-Z>>2;ha=f[x>>2]|0;ja=f[n>>2]|0;if((((ba|0)==0?0:(ba*113|0)+-1|0)|0)==(ja+ha|0)){Jc(h);va=f[x>>2]|0;wa=f[n>>2]|0;xa=f[q>>2]|0;ya=f[w>>2]|0}else{va=ha;wa=ja;xa=ia;ya=Z}Z=wa+va|0;if((xa|0)==(ya|0))za=0;else za=(f[ya+(((Z>>>0)/113|0)<<2)>>2]|0)+(((Z>>>0)%113|0)*36|0)|0;f[za>>2]=P;Z=za+4|0;f[Z>>2]=t;f[Z+4>>2]=z;f[za+12>>2]=ma;f[za+16>>2]=k;f[za+20>>2]=$;f[za+24>>2]=Q;f[za+28>>2]=W;f[za+32>>2]=V;f[n>>2]=(f[n>>2]|0)+1}if((T|0)!=(ma|0)){Z=f[q>>2]|0;ia=f[w>>2]|0;ja=Z-ia>>2;ha=f[x>>2]|0;ba=f[n>>2]|0;if((((ja|0)==0?0:(ja*113|0)+-1|0)|0)==(ba+ha|0)){Jc(h);Aa=f[x>>2]|0;Ba=f[n>>2]|0;Ca=f[q>>2]|0;Da=f[w>>2]|0}else{Aa=ha;Ba=ba;Ca=Z;Da=ia}ia=Ba+Aa|0;if((Ca|0)==(Da|0))Ea=0;else Ea=(f[Da+(((ia>>>0)/113|0)<<2)>>2]|0)+(((ia>>>0)%113|0)*36|0)|0;f[Ea>>2]=ma;f[Ea+4>>2]=k;f[Ea+8>>2]=$;f[Ea+12>>2]=T;ia=Ea+16|0;f[ia>>2]=r;f[ia+4>>2]=s;f[Ea+24>>2]=Q;f[Ea+28>>2]=aa;f[Ea+32>>2]=Y;ia=(f[n>>2]|0)+1|0;f[n>>2]=ia;Fa=ia}else da=87}else da=87;while(0);if((da|0)==87){da=0;Fa=f[n>>2]|0}if(!Fa)break;else N=Fa}}Fa=f[w>>2]|0;N=f[x>>2]|0;Ea=Fa+(((N>>>0)/113|0)<<2)|0;s=f[q>>2]|0;r=s;k=Fa;if((s|0)==(Fa|0)){Ga=0;Ha=0}else{ma=(f[Ea>>2]|0)+(((N>>>0)%113|0)*36|0)|0;Ga=ma;Ha=ma}ma=Ea;Ea=Ha;c:while(1){Ha=Ea;do{N=Ha;if((Ga|0)==(N|0))break c;Ha=N+36|0}while((Ha-(f[ma>>2]|0)|0)!=4068);Ha=ma+4|0;ma=Ha;Ea=f[Ha>>2]|0}f[n>>2]=0;n=r-k>>2;if(n>>>0>2){k=Fa;do{br(f[k>>2]|0);k=(f[w>>2]|0)+4|0;f[w>>2]=k;Ia=f[q>>2]|0;Ja=Ia-k>>2}while(Ja>>>0>2);Ka=Ja;La=k;Ma=Ia}else{Ka=n;La=Fa;Ma=s}switch(Ka|0){case 1:{Na=56;da=101;break}case 2:{Na=113;da=101;break}default:{}}if((da|0)==101)f[x>>2]=Na;if((La|0)!=(Ma|0)){Na=La;do{br(f[Na>>2]|0);Na=Na+4|0}while((Na|0)!=(Ma|0));Ma=f[w>>2]|0;w=f[q>>2]|0;if((w|0)!=(Ma|0))f[q>>2]=w+(~((w+-4-Ma|0)>>>2)<<2)}Ma=f[h>>2]|0;if(!Ma){u=d;return}br(Ma);u=d;return}function kb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;d=u;u=u+1424|0;e=d+1408|0;g=d+1396|0;h=d+1420|0;i=d+1200|0;j=d+12|0;k=d;l=d+1384|0;m=d+1372|0;n=d+1360|0;o=d+1348|0;p=d+1336|0;q=d+1324|0;r=d+1312|0;s=d+1300|0;t=d+1288|0;v=d+1276|0;w=d+1264|0;x=d+1252|0;y=d+1240|0;z=d+1228|0;A=a+28|0;B=10-(Yh(f[(f[A>>2]|0)+48>>2]|0)|0)|0;C=(B|0)<6?B:6;b[h>>0]=C;if((C&255|0)==6?(f[a+72>>2]|0)>15:0)b[h>>0]=5;C=c+16|0;B=f[C+4>>2]|0;if(!((B|0)>0|(B|0)==0&(f[C>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}C=f[A>>2]|0;B=f[(f[C+4>>2]|0)+80>>2]|0;D=a+72|0;E=f[D>>2]|0;f[i>>2]=B;F=i+4|0;f[F>>2]=E;f[i+8>>2]=E<<2;G=i+12|0;H=X(E,B)|0;f[G>>2]=0;J=i+16|0;f[J>>2]=0;f[i+20>>2]=0;do if(H)if(H>>>0>1073741823)mq(G);else{K=H<<2;L=dn(K)|0;f[G>>2]=L;M=L+(H<<2)|0;f[i+20>>2]=M;hj(L|0,0,K|0)|0;f[J>>2]=M;N=L;break}else N=0;while(0);H=i+24|0;f[H>>2]=N;G=a+4|0;L=a+8|0;M=f[G>>2]|0;a:do if((f[L>>2]|0)!=(M|0)){K=j+4|0;O=j+8|0;P=j+8|0;Q=(B|0)==0;R=j+4|0;S=j+8|0;T=k+4|0;U=k+8|0;V=k+8|0;W=a+48|0;Y=j+8|0;Z=a+60|0;$=0;aa=0;ba=0;ca=0;da=M;ea=C;b:while(1){fa=f[(f[(f[ea+4>>2]|0)+8>>2]|0)+(f[da+(ca<<2)>>2]<<2)>>2]|0;switch(f[fa+28>>2]|0){case 1:case 3:case 5:case 2:case 4:case 6:{ga=fa;ha=aa;break}case 9:{ga=f[(f[Z>>2]|0)+(aa<<2)>>2]|0;ha=aa+1|0;break}default:{ia=0;break a}}if(!ga){ia=0;break a}c:do switch(f[ga+28>>2]|0){case 6:{if(Q){ja=ba;ka=ga+24|0;break c}fa=ga+84|0;la=ga+68|0;ma=ga+48|0;na=ga+40|0;oa=ga+24|0;pa=0;do{if(!(b[fa>>0]|0))qa=f[(f[la>>2]|0)+(pa<<2)>>2]|0;else qa=pa;ra=ma;sa=f[ra>>2]|0;ta=f[ra+4>>2]|0;ra=na;ua=on(f[ra>>2]|0,f[ra+4>>2]|0,qa|0,0)|0;ra=Tn(ua|0,I|0,sa|0,ta|0)|0;Rg((f[H>>2]|0)+((X(f[F>>2]|0,pa)|0)<<2)+($<<2)|0,(f[f[ga>>2]>>2]|0)+ra|0,b[oa>>0]<<2|0)|0;pa=pa+1|0}while((pa|0)!=(B|0));ja=ba;ka=oa;break}case 1:case 3:case 5:{oa=ga+24|0;pa=b[oa>>0]|0;na=pa<<24>>24;f[j>>2]=0;f[R>>2]=0;f[S>>2]=0;if(!(pa<<24>>24))va=0;else{if(pa<<24>>24<0){wa=24;break b}pa=na<<2;ma=dn(pa)|0;f[j>>2]=ma;la=ma+(na<<2)|0;f[Y>>2]=la;hj(ma|0,0,pa|0)|0;f[R>>2]=la;va=b[oa>>0]|0}la=va<<24>>24;f[k>>2]=0;f[T>>2]=0;f[U>>2]=0;if(!(va<<24>>24)){xa=0;ya=0}else{if(va<<24>>24<0){wa=30;break b}pa=la<<2;ma=dn(pa)|0;f[k>>2]=ma;na=ma+(la<<2)|0;f[V>>2]=na;hj(ma|0,0,pa|0)|0;f[T>>2]=na;xa=ma;ya=ma}if(Q){za=ya;Aa=xa}else{ma=ga+84|0;na=ga+68|0;pa=0;do{if(!(b[ma>>0]|0))Ba=f[(f[na>>2]|0)+(pa<<2)>>2]|0;else Ba=pa;la=f[j>>2]|0;f[g>>2]=Ba;fa=b[oa>>0]|0;f[e>>2]=f[g>>2];Pb(ga,e,fa,la)|0;la=b[oa>>0]|0;fa=la<<24>>24;if(la<<24>>24>0){la=f[j>>2]|0;ra=f[W>>2]|0;ta=f[k>>2]|0;sa=0;do{f[ta+(sa<<2)>>2]=(f[la+(sa<<2)>>2]|0)-(f[ra+(sa+ba<<2)>>2]|0);sa=sa+1|0}while((sa|0)<(fa|0));Ca=ta}else Ca=f[k>>2]|0;Rg((f[H>>2]|0)+((X(f[F>>2]|0,pa)|0)<<2)+($<<2)|0,Ca|0,fa<<2|0)|0;pa=pa+1|0}while(pa>>>0>>0);pa=f[k>>2]|0;za=pa;Aa=pa}pa=ba+(b[oa>>0]|0)|0;if(za|0){na=f[T>>2]|0;if((na|0)!=(za|0))f[T>>2]=na+(~((na+-4-za|0)>>>2)<<2);br(Aa)}na=f[j>>2]|0;if(na|0){ma=f[R>>2]|0;if((ma|0)!=(na|0))f[R>>2]=ma+(~((ma+-4-na|0)>>>2)<<2);br(na)}ja=pa;ka=oa;break}default:{pa=ga+24|0;na=b[pa>>0]|0;ma=na<<24>>24;f[j>>2]=0;f[K>>2]=0;f[O>>2]=0;if(!(na<<24>>24)){Da=0;Ea=0}else{if(na<<24>>24<0){wa=53;break b}na=ma<<2;ta=dn(na)|0;f[j>>2]=ta;sa=ta+(ma<<2)|0;f[P>>2]=sa;hj(ta|0,0,na|0)|0;f[K>>2]=sa;Da=ta;Ea=ta}if(Q){Fa=Ea;Ga=Da}else{ta=ga+84|0;sa=ga+68|0;na=0;do{if(!(b[ta>>0]|0))Ha=f[(f[sa>>2]|0)+(na<<2)>>2]|0;else Ha=na;ma=f[j>>2]|0;f[g>>2]=Ha;ra=b[pa>>0]|0;f[e>>2]=f[g>>2];Ob(ga,e,ra,ma)|0;Rg((f[H>>2]|0)+((X(f[F>>2]|0,na)|0)<<2)+($<<2)|0,f[j>>2]|0,b[pa>>0]<<2|0)|0;na=na+1|0}while(na>>>0>>0);na=f[j>>2]|0;Fa=na;Ga=na}if(Fa|0){na=f[K>>2]|0;if((na|0)!=(Fa|0))f[K>>2]=na+(~((na+-4-Fa|0)>>>2)<<2);br(Ga)}ja=ba;ka=pa}}while(0);na=ca+1|0;sa=f[G>>2]|0;if(na>>>0>=(f[L>>2]|0)-sa>>2>>>0){wa=66;break}$=$+(b[ka>>0]|0)|0;aa=ha;ba=ja;ca=na;da=sa;ea=f[A>>2]|0}if((wa|0)==24)mq(j);else if((wa|0)==30)mq(k);else if((wa|0)==53)mq(j);else if((wa|0)==66){Ia=f[D>>2]|0;Ja=f[H>>2]|0;wa=67;break}}else{Ia=E;Ja=N;wa=67}while(0);d:do if((wa|0)==67){N=X(Ia,B)|0;if((N|0)>0){E=0;H=0;while(1){D=f[Ja+(E<<2)>>2]|0;if(!D)Ka=H;else{A=(_(D|0)|0)^31;Ka=(A|0)<(H|0)?H:A+1|0}E=E+1|0;if((E|0)>=(N|0)){La=Ka;break}else H=Ka}}else La=0;switch(b[h>>0]|0){case 6:{Ge(j,Ia);f[l>>2]=0;f[l+4>>2]=i;H=f[F>>2]|0;f[l+8>>2]=H;f[m>>2]=f[i>>2];f[m+4>>2]=i;f[m+8>>2]=H;f[k>>2]=La;f[g>>2]=f[l>>2];f[g+4>>2]=f[l+4>>2];f[g+8>>2]=f[l+8>>2];f[e>>2]=f[m>>2];f[e+4>>2]=f[m+4>>2];f[e+8>>2]=f[m+8>>2];H=ff(j,g,e,k,c)|0;Ee(j);if(!H){ia=0;break d}break}case 5:{Ge(j,Ia);f[n>>2]=0;f[n+4>>2]=i;H=f[F>>2]|0;f[n+8>>2]=H;f[o>>2]=f[i>>2];f[o+4>>2]=i;f[o+8>>2]=H;f[k>>2]=La;f[g>>2]=f[n>>2];f[g+4>>2]=f[n+4>>2];f[g+8>>2]=f[n+8>>2];f[e>>2]=f[o>>2];f[e+4>>2]=f[o+4>>2];f[e+8>>2]=f[o+8>>2];H=gf(j,g,e,k,c)|0;Ee(j);if(!H){ia=0;break d}break}case 4:{Ge(j,Ia);f[p>>2]=0;f[p+4>>2]=i;H=f[F>>2]|0;f[p+8>>2]=H;f[q>>2]=f[i>>2];f[q+4>>2]=i;f[q+8>>2]=H;f[k>>2]=La;f[g>>2]=f[p>>2];f[g+4>>2]=f[p+4>>2];f[g+8>>2]=f[p+8>>2];f[e>>2]=f[q>>2];f[e+4>>2]=f[q+4>>2];f[e+8>>2]=f[q+8>>2];H=gf(j,g,e,k,c)|0;Ee(j);if(!H){ia=0;break d}break}case 3:{Oe(j,Ia);f[r>>2]=0;f[r+4>>2]=i;H=f[F>>2]|0;f[r+8>>2]=H;f[s>>2]=f[i>>2];f[s+4>>2]=i;f[s+8>>2]=H;f[k>>2]=La;f[g>>2]=f[r>>2];f[g+4>>2]=f[r+4>>2];f[g+8>>2]=f[r+8>>2];f[e>>2]=f[s>>2];f[e+4>>2]=f[s+4>>2];f[e+8>>2]=f[s+8>>2];H=mf(j,g,e,k,c)|0;Ue(j);if(!H){ia=0;break d}break}case 2:{Oe(j,Ia);f[t>>2]=0;f[t+4>>2]=i;H=f[F>>2]|0;f[t+8>>2]=H;f[v>>2]=f[i>>2];f[v+4>>2]=i;f[v+8>>2]=H;f[k>>2]=La;f[g>>2]=f[t>>2];f[g+4>>2]=f[t+4>>2];f[g+8>>2]=f[t+8>>2];f[e>>2]=f[v>>2];f[e+4>>2]=f[v+4>>2];f[e+8>>2]=f[v+8>>2];H=mf(j,g,e,k,c)|0;Ue(j);if(!H){ia=0;break d}break}case 1:{Pe(j,Ia);f[w>>2]=0;f[w+4>>2]=i;H=f[F>>2]|0;f[w+8>>2]=H;f[x>>2]=f[i>>2];f[x+4>>2]=i;f[x+8>>2]=H;f[k>>2]=La;f[g>>2]=f[w>>2];f[g+4>>2]=f[w+4>>2];f[g+8>>2]=f[w+8>>2];f[e>>2]=f[x>>2];f[e+4>>2]=f[x+4>>2];f[e+8>>2]=f[x+8>>2];H=lf(j,g,e,k,c)|0;Te(j);if(!H){ia=0;break d}break}case 0:{Pe(j,Ia);f[y>>2]=0;f[y+4>>2]=i;H=f[F>>2]|0;f[y+8>>2]=H;f[z>>2]=f[i>>2];f[z+4>>2]=i;f[z+8>>2]=H;f[k>>2]=La;f[g>>2]=f[y>>2];f[g+4>>2]=f[y+4>>2];f[g+8>>2]=f[y+8>>2];f[e>>2]=f[z>>2];f[e+4>>2]=f[z+4>>2];f[e+8>>2]=f[z+8>>2];H=lf(j,g,e,k,c)|0;Te(j);if(!H){ia=0;break d}break}default:{ia=0;break d}}ia=1}while(0);j=f[i+12>>2]|0;if(!j){u=d;return ia|0}i=f[J>>2]|0;if((i|0)!=(j|0))f[J>>2]=i+(~((i+-4-j|0)>>>2)<<2);br(j);u=d;return ia|0}function lb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;d=u;u=u+80|0;e=d+56|0;g=d+52|0;h=d+48|0;i=d+68|0;j=d;k=d+44|0;l=d+40|0;m=d+36|0;n=d+32|0;o=d+28|0;p=d+24|0;q=d+20|0;r=d+16|0;s=d+12|0;if(!(b[c+352>>0]|0)){Ne(e,f[c+8>>2]|0);t=c+12|0;v=f[e>>2]|0;f[e>>2]=0;w=f[t>>2]|0;f[t>>2]=v;if(w){ui(w);br(w);w=f[e>>2]|0;f[e>>2]=0;if(w|0){ui(w);br(w)}}else f[e>>2]=0}else{Mg(e,f[c+8>>2]|0);w=c+12|0;v=f[e>>2]|0;f[e>>2]=0;t=f[w>>2]|0;f[w>>2]=v;if(t){ui(t);br(t);t=f[e>>2]|0;f[e>>2]=0;if(t|0){ui(t);br(t)}}else f[e>>2]=0}t=c+12|0;v=f[t>>2]|0;if(v|0?(((f[v+4>>2]|0)-(f[v>>2]|0)>>2>>>0)/3|0|0)!=(f[v+40>>2]|0):0){v=c+200|0;Td(v,c)|0;w=f[t>>2]|0;x=c+4|0;Nh(((f[w+28>>2]|0)-(f[w+24>>2]|0)>>2)-(f[w+44>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;w=f[t>>2]|0;Nh((((f[w+4>>2]|0)-(f[w>>2]|0)>>2>>>0)/3|0)-(f[w+40>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;w=c+28|0;y=c+8|0;z=f[y>>2]|0;A=((f[z+100>>2]|0)-(f[z+96>>2]|0)|0)/12|0;b[e>>0]=0;Xg(w,A,e);A=f[t>>2]|0;z=(f[A+28>>2]|0)-(f[A+24>>2]|0)>>2;f[e>>2]=-1;Sf(c+52|0,z,e);z=c+40|0;A=f[z>>2]|0;B=c+44|0;C=f[B>>2]|0;if((C|0)!=(A|0))f[B>>2]=C+(~((C+-4-A|0)>>>2)<<2);A=f[t>>2]|0;C=(f[A+4>>2]|0)-(f[A>>2]|0)>>2;$j(z,C-((C>>>0)%3|0)|0);C=c+84|0;z=f[t>>2]|0;A=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2;b[e>>0]=0;Xg(C,A,e);A=c+96|0;z=f[A>>2]|0;B=c+100|0;D=f[B>>2]|0;if((D|0)!=(z|0))f[B>>2]=D+(~((D+-4-z|0)>>>2)<<2);f[c+164>>2]=-1;z=c+168|0;f[z>>2]=0;D=f[c+108>>2]|0;E=c+112|0;F=f[E>>2]|0;if((F|0)!=(D|0))f[E>>2]=F+(~(((F+-12-D|0)>>>0)/12|0)*12|0);D=c+132|0;if(f[D>>2]|0){F=c+128|0;E=f[F>>2]|0;if(E|0){G=E;do{E=G;G=f[G>>2]|0;br(E)}while((G|0)!=0)}f[F>>2]=0;F=f[c+124>>2]|0;if(F|0){G=c+120|0;E=0;do{f[(f[G>>2]|0)+(E<<2)>>2]=0;E=E+1|0}while((E|0)!=(F|0))}f[D>>2]=0}f[c+144>>2]=0;D=f[t>>2]|0;F=(f[D+28>>2]|0)-(f[D+24>>2]|0)>>2;f[e>>2]=-1;Sf(c+152|0,F,e);F=c+72|0;D=f[F>>2]|0;E=c+76|0;G=f[E>>2]|0;if((G|0)!=(D|0))f[E>>2]=G+(~((G+-4-D|0)>>>2)<<2);D=f[t>>2]|0;$j(F,((f[D+4>>2]|0)-(f[D>>2]|0)>>2>>>0)/3|0);f[c+64>>2]=0;if(!(oe(c)|0)){D=dn(32)|0;f[e>>2]=D;f[e+8>>2]=-2147483616;f[e+4>>2]=29;H=D;I=13227;J=H+29|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[D+29>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}if(!(bh(c)|0)){D=dn(48)|0;f[e>>2]=D;f[e+8>>2]=-2147483600;f[e+4>>2]=36;H=D;I=13257;J=H+36|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[D+36>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}D=c+172|0;G=c+176|0;K=(((f[G>>2]|0)-(f[D>>2]|0)|0)/136|0)&255;b[i>>0]=K;L=f[(f[x>>2]|0)+44>>2]|0;M=L+16|0;N=f[M+4>>2]|0;if((N|0)>0|(N|0)==0&(f[M>>2]|0)>>>0>0)O=K;else{f[g>>2]=f[L+4>>2];f[e>>2]=f[g>>2];ye(L,e,i,i+1|0)|0;O=b[i>>0]|0}f[c+284>>2]=O&255;O=f[t>>2]|0;i=(f[O+4>>2]|0)-(f[O>>2]|0)|0;O=i>>2;Ti(v);f[j>>2]=0;L=j+4|0;f[L>>2]=0;f[j+8>>2]=0;a:do if((i|0)>0){K=c+104|0;M=j+8|0;N=0;b:while(1){P=(N>>>0)/3|0;Q=P>>>5;R=1<<(P&31);if((f[(f[w>>2]|0)+(Q<<2)>>2]&R|0)==0?(S=f[t>>2]|0,f[k>>2]=P,f[e>>2]=f[k>>2],!(Rj(S,e)|0)):0){f[g>>2]=0;f[l>>2]=P;f[e>>2]=f[l>>2];P=gg(c,e,g)|0;Vi(v,P);S=f[g>>2]|0;T=(S|0)==-1;do if(P){do if(T){U=-1;V=-1;W=-1}else{X=f[f[t>>2]>>2]|0;Y=f[X+(S<<2)>>2]|0;Z=S+1|0;_=((Z>>>0)%3|0|0)==0?S+-2|0:Z;if((_|0)==-1)$=-1;else $=f[X+(_<<2)>>2]|0;_=(((S>>>0)%3|0|0)==0?2:-1)+S|0;if((_|0)==-1){U=-1;V=$;W=Y;break}U=f[X+(_<<2)>>2]|0;V=$;W=Y}while(0);Y=f[C>>2]|0;_=Y+(W>>>5<<2)|0;f[_>>2]=f[_>>2]|1<<(W&31);_=Y+(V>>>5<<2)|0;f[_>>2]=f[_>>2]|1<<(V&31);_=Y+(U>>>5<<2)|0;f[_>>2]=f[_>>2]|1<<(U&31);f[e>>2]=1;_=f[B>>2]|0;if(_>>>0<(f[K>>2]|0)>>>0){f[_>>2]=1;f[B>>2]=_+4}else Ci(A,e);_=(f[w>>2]|0)+(Q<<2)|0;f[_>>2]=f[_>>2]|R;_=S+1|0;if(T)aa=-1;else aa=((_>>>0)%3|0|0)==0?S+-2|0:_;f[e>>2]=aa;Y=f[L>>2]|0;if(Y>>>0<(f[M>>2]|0)>>>0){f[Y>>2]=aa;f[L>>2]=Y+4}else Ci(j,e);if(T)break;Y=((_>>>0)%3|0|0)==0?S+-2|0:_;if((Y|0)==-1)break;_=f[(f[(f[t>>2]|0)+12>>2]|0)+(Y<<2)>>2]|0;Y=(_|0)==-1;X=Y?-1:(_>>>0)/3|0;if(Y)break;if(f[(f[w>>2]|0)+(X>>>5<<2)>>2]&1<<(X&31)|0)break;f[m>>2]=_;f[e>>2]=f[m>>2];if(!(Zb(c,e)|0)){ba=65;break b}}else{_=S+1|0;if(T)ca=-1;else ca=((_>>>0)%3|0|0)==0?S+-2|0:_;f[n>>2]=ca;f[e>>2]=f[n>>2];Ce(c,e,1)|0;f[o>>2]=f[g>>2];f[e>>2]=f[o>>2];if(!(Zb(c,e)|0)){ba=71;break b}}while(0)}N=N+1|0;if((N|0)>=(O|0)){ba=77;break a}}if((ba|0)==65){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;N=dn(48)|0;f[e>>2]=N;f[e+8>>2]=-2147483600;f[e+4>>2]=32;H=N;I=13294;J=H+32|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[N+32>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}else if((ba|0)==71){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;M=dn(48)|0;f[e>>2]=M;f[e+8>>2]=-2147483600;f[e+4>>2]=32;H=M;I=13294;J=H+32|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[M+32>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}}else ba=77;while(0);do if((ba|0)==77){O=f[F>>2]|0;o=f[E>>2]|0;n=o;if((O|0)!=(o|0)?(ca=o+-4|0,O>>>0>>0):0){o=O;O=ca;do{ca=f[o>>2]|0;f[o>>2]=f[O>>2];f[O>>2]=ca;o=o+4|0;O=O+-4|0}while(o>>>0>>0)}f[p>>2]=n;f[q>>2]=f[j>>2];f[r>>2]=f[L>>2];f[h>>2]=f[p>>2];f[g>>2]=f[q>>2];f[e>>2]=f[r>>2];Md(F,h,g,e)|0;if((f[G>>2]|0)!=(f[D>>2]|0)?(O=f[y>>2]|0,o=((f[O+100>>2]|0)-(f[O+96>>2]|0)|0)/12|0,b[e>>0]=0,Xg(w,o,e),o=f[F>>2]|0,O=f[E>>2]|0,(o|0)!=(O|0)):0){M=o;do{f[s>>2]=f[M>>2];f[e>>2]=f[s>>2];ue(c,e)|0;M=M+4|0}while((M|0)!=(O|0))}$h(v);Nh(f[c+324>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;Nh(f[z>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;if(Jg(c)|0){O=f[(f[x>>2]|0)+44>>2]|0;M=f[c+232>>2]|0;n=O+16|0;o=f[n+4>>2]|0;if(!((o|0)>0|(o|0)==0&(f[n>>2]|0)>>>0>0)){n=(f[c+236>>2]|0)-M|0;f[g>>2]=f[O+4>>2];f[e>>2]=f[g>>2];ye(O,e,M,M+n|0)|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;break}else{f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;n=dn(32)|0;f[e>>2]=n;f[e+8>>2]=-2147483616;f[e+4>>2]=28;H=n;I=13327;J=H+28|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[n+28>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);break}}while(0);g=f[j>>2]|0;if(g|0){j=f[L>>2]|0;if((j|0)!=(g|0))f[L>>2]=j+(~((j+-4-g|0)>>>2)<<2);br(g)}u=d;return}g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=29;H=g;I=13197;J=H+29|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[g+29>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}function mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)mq(e);else{j=h<<2;k=dn(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;hj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+1164|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);br(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)mq(e);else{r=s<<2;o=dn(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;hj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+1176|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);br(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Jc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+1152|0;y=a+1084|0;h=a+1080|0;j=a+1072|0;m=a+1076|0;n=a+1068|0;A=b+8|0;B=c+8|0;C=a+1124|0;D=a+1120|0;E=a+1112|0;F=a+1116|0;G=a+1108|0;H=i+4|0;I=i+24|0;J=i+24|0;K=p+24|0;L=z;while(1){z=f[v>>2]|0;M=L+-1|0;N=M+z|0;O=f[t>>2]|0;P=f[O+(((N>>>0)/113|0)<<2)>>2]|0;Q=(N>>>0)%113|0;N=f[P+(Q*36|0)>>2]|0;R=f[P+(Q*36|0)+12>>2]|0;S=f[P+(Q*36|0)+24>>2]|0;T=f[P+(Q*36|0)+32>>2]|0;f[l>>2]=M;M=f[o>>2]|0;Q=M-O>>2;if((1-L-z+((Q|0)==0?0:(Q*113|0)+-1|0)|0)>>>0>225){br(f[M+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=N;f[c>>2]=R;M=f[k>>2]|0;Q=((f[g>>2]|0)+-1|0)==(S|0)?0:S+1|0;S=(f[s>>2]|0)+(T*12|0)|0;z=R-N|0;O=(f[a>>2]|0)-(f[(f[S>>2]|0)+(Q<<2)>>2]|0)|0;a:do if(O){if(z>>>0<3){P=f[w>>2]|0;f[P>>2]=Q;U=f[g>>2]|0;if(U>>>0>1){V=1;W=U;Y=Q;while(1){Y=(Y|0)==(W+-1|0)?0:Y+1|0;f[P+(V<<2)>>2]=Y;V=V+1|0;Z=f[g>>2]|0;if(V>>>0>=Z>>>0){$=Z;break}else W=Z}}else $=U;if(!z){aa=85;break}else{ba=0;ca=$}while(1){W=(f[I>>2]|0)+((X(f[H>>2]|0,N+ba|0)|0)<<2)|0;if(!ca)da=0;else{V=0;do{Y=f[(f[w>>2]|0)+(V<<2)>>2]|0;P=(f[a>>2]|0)-(f[(f[S>>2]|0)+(Y<<2)>>2]|0)|0;do if(P|0){Z=f[y>>2]|0;ea=32-Z|0;fa=32-P|0;ga=f[W+(Y<<2)>>2]<(ea|0)){ha=ga>>>fa;fa=P-ea|0;f[y>>2]=fa;ea=f[h>>2]|ha>>>fa;f[h>>2]=ea;fa=f[j>>2]|0;if((fa|0)==(f[m>>2]|0))Ci(n,h);else{f[fa>>2]=ea;f[j>>2]=fa+4}f[h>>2]=ha<<32-(f[y>>2]|0);break}ha=f[h>>2]|ga>>>Z;f[h>>2]=ha;ga=Z+P|0;f[y>>2]=ga;if((ga|0)!=32)break;ga=f[j>>2]|0;if((ga|0)==(f[m>>2]|0))Ci(n,h);else{f[ga>>2]=ha;f[j>>2]=ga+4}f[h>>2]=0;f[y>>2]=0}while(0);V=V+1|0;P=f[g>>2]|0}while(V>>>0

>>0);da=P}ba=ba+1|0;if(ba>>>0>=z>>>0){aa=85;break a}else ca=da}}U=T+1|0;qg(M+(U*12|0)|0,f[M+(T*12|0)>>2]|0,f[M+(T*12|0)+4>>2]|0);V=(f[(f[k>>2]|0)+(U*12|0)>>2]|0)+(Q<<2)|0;W=(f[V>>2]|0)+(1<>2]=W;V=f[A>>2]|0;P=f[B>>2]|0;b:do if((R|0)==(N|0))ia=N;else{Y=f[J>>2]|0;if(!V){if((f[Y+(Q<<2)>>2]|0)>>>0>>0){ia=R;break}else{ja=R;ka=N}while(1){ga=ja;do{ga=ga+-1|0;if((ka|0)==(ga|0)){ia=ka;break b}ha=(f[K>>2]|0)+((X(ga,P)|0)<<2)+(Q<<2)|0}while((f[ha>>2]|0)>>>0>=W>>>0);ka=ka+1|0;if((ka|0)==(ga|0)){ia=ga;break b}else ja=ga}}else{la=R;ma=N}while(1){ha=ma;while(1){na=Y+((X(ha,V)|0)<<2)|0;if((f[na+(Q<<2)>>2]|0)>>>0>=W>>>0){oa=la;break}Z=ha+1|0;if((Z|0)==(la|0)){ia=la;break b}else ha=Z}while(1){oa=oa+-1|0;if((ha|0)==(oa|0)){ia=ha;break b}pa=(f[K>>2]|0)+((X(oa,P)|0)<<2)|0;if((f[pa+(Q<<2)>>2]|0)>>>0>>0){qa=0;break}}do{ga=na+(qa<<2)|0;Z=pa+(qa<<2)|0;fa=f[ga>>2]|0;f[ga>>2]=f[Z>>2];f[Z>>2]=fa;qa=qa+1|0}while((qa|0)!=(V|0));ma=ha+1|0;if((ma|0)==(oa|0)){ia=oa;break}else la=oa}}while(0);W=(_(z|0)|0)^31;P=ia-N|0;Y=R-ia|0;fa=P>>>0>>0;if((P|0)!=(Y|0)){Z=f[C>>2]|0;if(fa)f[D>>2]=f[D>>2]|1<<31-Z;ga=Z+1|0;f[C>>2]=ga;if((ga|0)==32){ga=f[E>>2]|0;if((ga|0)==(f[F>>2]|0))Ci(G,D);else{f[ga>>2]=f[D>>2];f[E>>2]=ga+4}f[C>>2]=0;f[D>>2]=0}}ga=z>>>1;if(fa){fa=ga-P|0;if(W|0){Z=0;ea=1<>>1}}}else{ea=ga-Y|0;if(W|0){Z=0;fa=1<>>1}}}fa=f[s>>2]|0;W=f[fa+(T*12|0)>>2]|0;Z=W+(Q<<2)|0;f[Z>>2]=(f[Z>>2]|0)+1;qg(fa+(U*12|0)|0,W,f[fa+(T*12|0)+4>>2]|0);if((ia|0)!=(N|0)){fa=f[o>>2]|0;W=f[t>>2]|0;Z=fa-W>>2;ea=f[v>>2]|0;ga=f[l>>2]|0;if((((Z|0)==0?0:(Z*113|0)+-1|0)|0)==(ga+ea|0)){Jc(e);ra=f[v>>2]|0;sa=f[l>>2]|0;ta=f[o>>2]|0;ua=f[t>>2]|0}else{ra=ea;sa=ga;ta=fa;ua=W}W=sa+ra|0;if((ta|0)==(ua|0))va=0;else va=(f[ua+(((W>>>0)/113|0)<<2)>>2]|0)+(((W>>>0)%113|0)*36|0)|0;f[va>>2]=N;W=va+4|0;f[W>>2]=r;f[W+4>>2]=x;f[va+12>>2]=ia;f[va+16>>2]=i;f[va+20>>2]=V;f[va+24>>2]=Q;f[va+28>>2]=P;f[va+32>>2]=T;f[l>>2]=(f[l>>2]|0)+1}if((R|0)!=(ia|0)){W=f[o>>2]|0;fa=f[t>>2]|0;ga=W-fa>>2;ea=f[v>>2]|0;Z=f[l>>2]|0;if((((ga|0)==0?0:(ga*113|0)+-1|0)|0)==(Z+ea|0)){Jc(e);wa=f[v>>2]|0;xa=f[l>>2]|0;ya=f[o>>2]|0;za=f[t>>2]|0}else{wa=ea;xa=Z;ya=W;za=fa}fa=xa+wa|0;if((ya|0)==(za|0))Aa=0;else Aa=(f[za+(((fa>>>0)/113|0)<<2)>>2]|0)+(((fa>>>0)%113|0)*36|0)|0;f[Aa>>2]=ia;f[Aa+4>>2]=i;f[Aa+8>>2]=V;f[Aa+12>>2]=R;fa=Aa+16|0;f[fa>>2]=p;f[fa+4>>2]=q;f[Aa+24>>2]=Q;f[Aa+28>>2]=Y;f[Aa+32>>2]=U;fa=(f[l>>2]|0)+1|0;f[l>>2]=fa;Ba=fa}else aa=85}else aa=85;while(0);if((aa|0)==85){aa=0;Ba=f[l>>2]|0}if(!Ba)break;else L=Ba}}Ba=f[t>>2]|0;L=f[v>>2]|0;Aa=Ba+(((L>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ba;if((q|0)==(Ba|0)){Ca=0;Da=0}else{ia=(f[Aa>>2]|0)+(((L>>>0)%113|0)*36|0)|0;Ca=ia;Da=ia}ia=Aa;Aa=Da;c:while(1){Da=Aa;do{L=Da;if((Ca|0)==(L|0))break c;Da=L+36|0}while((Da-(f[ia>>2]|0)|0)!=4068);Da=ia+4|0;ia=Da;Aa=f[Da>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ba;do{br(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Ea=f[o>>2]|0;Fa=Ea-i>>2}while(Fa>>>0>2);Ga=Fa;Ha=i;Ia=Ea}else{Ga=l;Ha=Ba;Ia=q}switch(Ga|0){case 1:{Ja=56;aa=99;break}case 2:{Ja=113;aa=99;break}default:{}}if((aa|0)==99)f[v>>2]=Ja;if((Ha|0)!=(Ia|0)){Ja=Ha;do{br(f[Ja>>2]|0);Ja=Ja+4|0}while((Ja|0)!=(Ia|0));Ia=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Ia|0))f[o>>2]=t+(~((t+-4-Ia|0)>>>2)<<2)}Ia=f[e>>2]|0;if(!Ia){u=d;return}br(Ia);u=d;return}function nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)mq(e);else{j=h<<2;k=dn(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;hj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+140|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);br(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)mq(e);else{r=s<<2;o=dn(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;hj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+152|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);br(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Jc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+128|0;y=a+60|0;h=a+56|0;j=a+48|0;m=a+52|0;n=a+44|0;A=b+8|0;B=c+8|0;C=a+12|0;D=a+100|0;E=a+96|0;F=a+88|0;G=a+92|0;H=a+84|0;I=i+4|0;J=i+24|0;K=i+24|0;L=p+24|0;M=z;while(1){z=f[v>>2]|0;N=M+-1|0;O=N+z|0;P=f[t>>2]|0;Q=f[P+(((O>>>0)/113|0)<<2)>>2]|0;R=(O>>>0)%113|0;O=f[Q+(R*36|0)>>2]|0;S=f[Q+(R*36|0)+12>>2]|0;T=f[Q+(R*36|0)+24>>2]|0;U=f[Q+(R*36|0)+32>>2]|0;f[l>>2]=N;N=f[o>>2]|0;R=N-P>>2;if((1-M-z+((R|0)==0?0:(R*113|0)+-1|0)|0)>>>0>225){br(f[N+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=O;f[c>>2]=S;N=f[k>>2]|0;R=((f[g>>2]|0)+-1|0)==(T|0)?0:T+1|0;T=(f[s>>2]|0)+(U*12|0)|0;z=S-O|0;P=(f[a>>2]|0)-(f[(f[T>>2]|0)+(R<<2)>>2]|0)|0;a:do if(P){if(z>>>0<3){Q=f[w>>2]|0;f[Q>>2]=R;V=f[g>>2]|0;if(V>>>0>1){W=1;Y=V;Z=R;while(1){Z=(Z|0)==(Y+-1|0)?0:Z+1|0;f[Q+(W<<2)>>2]=Z;W=W+1|0;$=f[g>>2]|0;if(W>>>0>=$>>>0){aa=$;break}else Y=$}}else aa=V;if(!z){ba=81;break}else{ca=0;da=aa}while(1){Y=(f[J>>2]|0)+((X(f[I>>2]|0,O+ca|0)|0)<<2)|0;if(!da)ea=0;else{W=0;do{Z=f[(f[w>>2]|0)+(W<<2)>>2]|0;Q=(f[a>>2]|0)-(f[(f[T>>2]|0)+(Z<<2)>>2]|0)|0;do if(Q|0){$=f[y>>2]|0;fa=32-$|0;ga=32-Q|0;ha=f[Y+(Z<<2)>>2]<(fa|0)){ia=ha>>>ga;ga=Q-fa|0;f[y>>2]=ga;fa=f[h>>2]|ia>>>ga;f[h>>2]=fa;ga=f[j>>2]|0;if((ga|0)==(f[m>>2]|0))Ci(n,h);else{f[ga>>2]=fa;f[j>>2]=ga+4}f[h>>2]=ia<<32-(f[y>>2]|0);break}ia=f[h>>2]|ha>>>$;f[h>>2]=ia;ha=$+Q|0;f[y>>2]=ha;if((ha|0)!=32)break;ha=f[j>>2]|0;if((ha|0)==(f[m>>2]|0))Ci(n,h);else{f[ha>>2]=ia;f[j>>2]=ha+4}f[h>>2]=0;f[y>>2]=0}while(0);W=W+1|0;Q=f[g>>2]|0}while(W>>>0>>0);ea=Q}ca=ca+1|0;if(ca>>>0>=z>>>0){ba=81;break a}else da=ea}}V=U+1|0;qg(N+(V*12|0)|0,f[N+(U*12|0)>>2]|0,f[N+(U*12|0)+4>>2]|0);W=(f[(f[k>>2]|0)+(V*12|0)>>2]|0)+(R<<2)|0;Y=(f[W>>2]|0)+(1<>2]=Y;W=f[A>>2]|0;Q=f[B>>2]|0;b:do if((S|0)==(O|0))ja=O;else{Z=f[K>>2]|0;if(!W){if((f[Z+(R<<2)>>2]|0)>>>0>>0){ja=S;break}else{ka=S;la=O}while(1){ha=ka;do{ha=ha+-1|0;if((la|0)==(ha|0)){ja=la;break b}ia=(f[L>>2]|0)+((X(ha,Q)|0)<<2)+(R<<2)|0}while((f[ia>>2]|0)>>>0>=Y>>>0);la=la+1|0;if((la|0)==(ha|0)){ja=ha;break b}else ka=ha}}else{ma=S;na=O}while(1){ia=na;while(1){oa=Z+((X(ia,W)|0)<<2)|0;if((f[oa+(R<<2)>>2]|0)>>>0>=Y>>>0){pa=ma;break}$=ia+1|0;if(($|0)==(ma|0)){ja=ma;break b}else ia=$}while(1){pa=pa+-1|0;if((ia|0)==(pa|0)){ja=ia;break b}qa=(f[L>>2]|0)+((X(pa,Q)|0)<<2)|0;if((f[qa+(R<<2)>>2]|0)>>>0>>0){ra=0;break}}do{ha=oa+(ra<<2)|0;$=qa+(ra<<2)|0;ga=f[ha>>2]|0;f[ha>>2]=f[$>>2];f[$>>2]=ga;ra=ra+1|0}while((ra|0)!=(W|0));na=ia+1|0;if((na|0)==(pa|0)){ja=pa;break}else ma=pa}}while(0);Y=(_(z|0)|0)^31;Q=ja-O|0;Z=S-ja|0;ga=Q>>>0>>0;if((Q|0)!=(Z|0)){$=f[D>>2]|0;if(ga)f[E>>2]=f[E>>2]|1<<31-$;ha=$+1|0;f[D>>2]=ha;if((ha|0)==32){ha=f[F>>2]|0;if((ha|0)==(f[G>>2]|0))Ci(H,E);else{f[ha>>2]=f[E>>2];f[F>>2]=ha+4}f[D>>2]=0;f[E>>2]=0}}ha=z>>>1;if(ga)bg(C,Y,ha-Q|0);else bg(C,Y,ha-Z|0);ha=f[s>>2]|0;Y=f[ha+(U*12|0)>>2]|0;ga=Y+(R<<2)|0;f[ga>>2]=(f[ga>>2]|0)+1;qg(ha+(V*12|0)|0,Y,f[ha+(U*12|0)+4>>2]|0);if((ja|0)!=(O|0)){ha=f[o>>2]|0;Y=f[t>>2]|0;ga=ha-Y>>2;$=f[v>>2]|0;fa=f[l>>2]|0;if((((ga|0)==0?0:(ga*113|0)+-1|0)|0)==(fa+$|0)){Jc(e);sa=f[v>>2]|0;ta=f[l>>2]|0;ua=f[o>>2]|0;va=f[t>>2]|0}else{sa=$;ta=fa;ua=ha;va=Y}Y=ta+sa|0;if((ua|0)==(va|0))wa=0;else wa=(f[va+(((Y>>>0)/113|0)<<2)>>2]|0)+(((Y>>>0)%113|0)*36|0)|0;f[wa>>2]=O;Y=wa+4|0;f[Y>>2]=r;f[Y+4>>2]=x;f[wa+12>>2]=ja;f[wa+16>>2]=i;f[wa+20>>2]=W;f[wa+24>>2]=R;f[wa+28>>2]=Q;f[wa+32>>2]=U;f[l>>2]=(f[l>>2]|0)+1}if((S|0)!=(ja|0)){Q=f[o>>2]|0;Y=f[t>>2]|0;ha=Q-Y>>2;fa=f[v>>2]|0;$=f[l>>2]|0;if((((ha|0)==0?0:(ha*113|0)+-1|0)|0)==($+fa|0)){Jc(e);xa=f[v>>2]|0;ya=f[l>>2]|0;za=f[o>>2]|0;Aa=f[t>>2]|0}else{xa=fa;ya=$;za=Q;Aa=Y}Y=ya+xa|0;if((za|0)==(Aa|0))Ba=0;else Ba=(f[Aa+(((Y>>>0)/113|0)<<2)>>2]|0)+(((Y>>>0)%113|0)*36|0)|0;f[Ba>>2]=ja;f[Ba+4>>2]=i;f[Ba+8>>2]=W;f[Ba+12>>2]=S;Y=Ba+16|0;f[Y>>2]=p;f[Y+4>>2]=q;f[Ba+24>>2]=R;f[Ba+28>>2]=Z;f[Ba+32>>2]=V;Z=(f[l>>2]|0)+1|0;f[l>>2]=Z;Ca=Z}else ba=81}else ba=81;while(0);if((ba|0)==81){ba=0;Ca=f[l>>2]|0}if(!Ca)break;else M=Ca}}Ca=f[t>>2]|0;M=f[v>>2]|0;Ba=Ca+(((M>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ca;if((q|0)==(Ca|0)){Da=0;Ea=0}else{ja=(f[Ba>>2]|0)+(((M>>>0)%113|0)*36|0)|0;Da=ja;Ea=ja}ja=Ba;Ba=Ea;c:while(1){Ea=Ba;do{M=Ea;if((Da|0)==(M|0))break c;Ea=M+36|0}while((Ea-(f[ja>>2]|0)|0)!=4068);Ea=ja+4|0;ja=Ea;Ba=f[Ea>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ca;do{br(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Fa=f[o>>2]|0;Ga=Fa-i>>2}while(Ga>>>0>2);Ha=Ga;Ia=i;Ja=Fa}else{Ha=l;Ia=Ca;Ja=q}switch(Ha|0){case 1:{Ka=56;ba=95;break}case 2:{Ka=113;ba=95;break}default:{}}if((ba|0)==95)f[v>>2]=Ka;if((Ia|0)!=(Ja|0)){Ka=Ia;do{br(f[Ka>>2]|0);Ka=Ka+4|0}while((Ka|0)!=(Ja|0));Ja=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Ja|0))f[o>>2]=t+(~((t+-4-Ja|0)>>>2)<<2)}Ja=f[e>>2]|0;if(!Ja){u=d;return}br(Ja);u=d;return}function ob(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0.0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0.0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0.0,ob=0.0,pb=0.0,qb=0.0,rb=0.0,sb=0.0,tb=0;i=u;u=u+512|0;j=i;k=d+c|0;l=0-k|0;m=a+4|0;n=a+100|0;o=b;b=0;a:while(1){switch(o|0){case 46:{p=6;break a;break}case 48:break;default:{q=0;r=o;s=b;t=0;v=0;break a}}w=f[m>>2]|0;if(w>>>0<(f[n>>2]|0)>>>0){f[m>>2]=w+1;o=h[w>>0]|0;b=1;continue}else{o=Di(a)|0;b=1;continue}}if((p|0)==6){o=f[m>>2]|0;if(o>>>0<(f[n>>2]|0)>>>0){f[m>>2]=o+1;x=h[o>>0]|0}else x=Di(a)|0;if((x|0)==48){o=0;w=0;while(1){y=Tn(o|0,w|0,-1,-1)|0;z=I;A=f[m>>2]|0;if(A>>>0<(f[n>>2]|0)>>>0){f[m>>2]=A+1;B=h[A>>0]|0}else B=Di(a)|0;if((B|0)==48){o=y;w=z}else{q=1;r=B;s=1;t=y;v=z;break}}}else{q=1;r=x;s=b;t=0;v=0}}f[j>>2]=0;b=r+-48|0;x=(r|0)==46;b:do if(x|b>>>0<10){B=j+496|0;w=0;o=0;z=0;y=q;A=s;C=r;D=x;E=b;F=t;G=v;H=0;J=0;c:while(1){do if(D)if(!y){L=w;M=o;N=1;O=z;P=A;Q=H;R=J;S=H;T=J}else break c;else{U=Tn(H|0,J|0,1,0)|0;V=I;W=(C|0)!=48;if((o|0)>=125){if(!W){L=w;M=o;N=y;O=z;P=A;Q=F;R=G;S=U;T=V;break}f[B>>2]=f[B>>2]|1;L=w;M=o;N=y;O=z;P=A;Q=F;R=G;S=U;T=V;break}Y=j+(o<<2)|0;if(!w)Z=E;else Z=C+-48+((f[Y>>2]|0)*10|0)|0;f[Y>>2]=Z;Y=w+1|0;_=(Y|0)==9;L=_?0:Y;M=o+(_&1)|0;N=y;O=W?U:z;P=1;Q=F;R=G;S=U;T=V}while(0);V=f[m>>2]|0;if(V>>>0<(f[n>>2]|0)>>>0){f[m>>2]=V+1;$=h[V>>0]|0}else $=Di(a)|0;E=$+-48|0;D=($|0)==46;if(!(D|E>>>0<10)){aa=L;ba=M;ca=O;da=N;ea=$;fa=P;ga=S;ha=Q;ia=T;ja=R;p=29;break b}else{w=L;o=M;z=O;y=N;A=P;C=$;F=Q;G=R;H=S;J=T}}ka=w;la=o;ma=z;na=H;oa=J;pa=F;qa=G;ra=(A|0)!=0;p=37}else{aa=0;ba=0;ca=0;da=q;ea=r;fa=s;ga=0;ha=t;ia=0;ja=v;p=29}while(0);do if((p|0)==29){v=(da|0)==0;t=v?ga:ha;s=v?ia:ja;v=(fa|0)!=0;if(!(v&(ea|32|0)==101))if((ea|0)>-1){ka=aa;la=ba;ma=ca;na=ga;oa=ia;pa=t;qa=s;ra=v;p=37;break}else{sa=aa;ta=ba;ua=ca;va=ga;wa=ia;xa=v;ya=t;za=s;p=39;break}v=De(a,g)|0;r=I;if((v|0)==0&(r|0)==-2147483648){if(!g){Rm(a,0);Aa=0.0;break}if(!(f[n>>2]|0)){Ba=0;Ca=0}else{f[m>>2]=(f[m>>2]|0)+-1;Ba=0;Ca=0}}else{Ba=v;Ca=r}r=Tn(Ba|0,Ca|0,t|0,s|0)|0;Da=aa;Ea=ba;Fa=ca;Ga=r;Ha=ga;Ia=I;Ja=ia;p=41}while(0);if((p|0)==37)if(f[n>>2]|0){f[m>>2]=(f[m>>2]|0)+-1;if(ra){Da=ka;Ea=la;Fa=ma;Ga=pa;Ha=na;Ia=qa;Ja=oa;p=41}else p=40}else{sa=ka;ta=la;ua=ma;va=na;wa=oa;xa=ra;ya=pa;za=qa;p=39}if((p|0)==39)if(xa){Da=sa;Ea=ta;Fa=ua;Ga=ya;Ha=va;Ia=za;Ja=wa;p=41}else p=40;do if((p|0)==40){wa=ir()|0;f[wa>>2]=22;Rm(a,0);Aa=0.0}else if((p|0)==41){wa=f[j>>2]|0;if(!wa){Aa=+(e|0)*0.0;break}if(((Ja|0)<0|(Ja|0)==0&Ha>>>0<10)&((Ga|0)==(Ha|0)&(Ia|0)==(Ja|0))?(c|0)>30|(wa>>>c|0)==0:0){Aa=+(e|0)*+(wa>>>0);break}wa=(d|0)/-2|0;za=((wa|0)<0)<<31>>31;if((Ia|0)>(za|0)|(Ia|0)==(za|0)&Ga>>>0>wa>>>0){wa=ir()|0;f[wa>>2]=34;Aa=+(e|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}wa=d+-106|0;za=((wa|0)<0)<<31>>31;if((Ia|0)<(za|0)|(Ia|0)==(za|0)&Ga>>>0>>0){wa=ir()|0;f[wa>>2]=34;Aa=+(e|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(!Da)Ka=Ea;else{if((Da|0)<9){wa=j+(Ea<<2)|0;za=Da;va=f[wa>>2]|0;while(1){va=va*10|0;if((za|0)>=8)break;else za=za+1|0}f[wa>>2]=va}Ka=Ea+1|0}if((Fa|0)<9?(Fa|0)<=(Ga|0)&(Ga|0)<18:0){if((Ga|0)==9){Aa=+(e|0)*+((f[j>>2]|0)>>>0);break}if((Ga|0)<9){Aa=+(e|0)*+((f[j>>2]|0)>>>0)/+(f[6408+(8-Ga<<2)>>2]|0);break}za=c+27+(X(Ga,-3)|0)|0;A=f[j>>2]|0;if((za|0)>30|(A>>>za|0)==0){Aa=+(e|0)*+(A>>>0)*+(f[6408+(Ga+-10<<2)>>2]|0);break}}A=(Ga|0)%9|0;if(!A){La=0;Ma=Ka;Na=0;Oa=Ga}else{za=(Ga|0)>-1?A:A+9|0;A=f[6408+(8-za<<2)>>2]|0;if(Ka){G=1e9/(A|0)|0;F=0;J=0;H=Ga;z=0;do{o=j+(z<<2)|0;w=f[o>>2]|0;ya=((w>>>0)/(A>>>0)|0)+F|0;f[o>>2]=ya;F=X(G,(w>>>0)%(A>>>0)|0)|0;w=(z|0)==(J|0)&(ya|0)==0;H=w?H+-9|0:H;J=w?J+1&127:J;z=z+1|0}while((z|0)!=(Ka|0));if(!F){Pa=J;Qa=Ka;Ra=H}else{f[j+(Ka<<2)>>2]=F;Pa=J;Qa=Ka+1|0;Ra=H}}else{Pa=0;Qa=0;Ra=Ga}La=0;Ma=Qa;Na=Pa;Oa=9-za+Ra|0}d:while(1){z=(Oa|0)<18;A=(Oa|0)==18;G=j+(Na<<2)|0;va=La;wa=Ma;while(1){if(!z){if(!A){Sa=va;Ta=Na;Ua=Oa;Va=wa;break d}if((f[G>>2]|0)>>>0>=9007199){Sa=va;Ta=Na;Ua=18;Va=wa;break d}}w=0;Wa=wa;ya=wa+127|0;while(1){o=ya&127;ua=j+(o<<2)|0;ta=Rn(f[ua>>2]|0,0,29)|0;sa=Tn(ta|0,I|0,w|0,0)|0;ta=I;if(ta>>>0>0|(ta|0)==0&sa>>>0>1e9){xa=up(sa|0,ta|0,1e9,0)|0;qa=an(sa|0,ta|0,1e9,0)|0;Xa=xa;Ya=qa}else{Xa=0;Ya=sa}f[ua>>2]=Ya;ua=(o|0)==(Na|0);Wa=(Ya|0)==0&(((o|0)!=(Wa+127&127|0)|ua)^1)?o:Wa;if(ua)break;else{w=Xa;ya=o+-1|0}}va=va+-29|0;if(Xa|0)break;else wa=Wa}wa=Na+127&127;G=Wa+127&127;A=j+((Wa+126&127)<<2)|0;if((wa|0)==(Wa|0)){f[A>>2]=f[A>>2]|f[j+(G<<2)>>2];Za=G}else Za=Wa;f[j+(wa<<2)>>2]=Xa;La=va;Ma=Za;Na=wa;Oa=Oa+9|0}e:while(1){za=Va+1&127;H=j+((Va+127&127)<<2)|0;J=Sa;F=Ta;wa=Ua;while(1){G=(wa|0)==18;A=(wa|0)>27?9:1;_a=J;$a=F;while(1){z=0;while(1){ya=z+$a&127;if((ya|0)==(Va|0)){ab=2;p=88;break}w=f[j+(ya<<2)>>2]|0;ya=f[6440+(z<<2)>>2]|0;if(w>>>0>>0){ab=2;p=88;break}if(w>>>0>ya>>>0)break;ya=z+1|0;if((z|0)<1)z=ya;else{ab=ya;p=88;break}}if((p|0)==88?(p=0,G&(ab|0)==2):0){bb=0.0;cb=0;db=Va;break e}eb=A+_a|0;if(($a|0)==(Va|0)){_a=eb;$a=Va}else break}G=(1<>>A;fb=0;gb=$a;hb=wa;ya=$a;do{w=j+(ya<<2)|0;o=f[w>>2]|0;ua=(o>>>A)+fb|0;f[w>>2]=ua;fb=X(o&G,z)|0;o=(ya|0)==(gb|0)&(ua|0)==0;hb=o?hb+-9|0:hb;gb=o?gb+1&127:gb;ya=ya+1&127}while((ya|0)!=(Va|0));if(!fb){J=eb;F=gb;wa=hb;continue}if((za|0)!=(gb|0))break;f[H>>2]=f[H>>2]|1;J=eb;F=gb;wa=hb}f[j+(Va<<2)>>2]=fb;Sa=eb;Ta=gb;Ua=hb;Va=za}while(1){wa=cb+$a&127;F=db+1&127;if((wa|0)==(db|0)){f[j+(F+-1<<2)>>2]=0;ib=F}else ib=db;bb=bb*1.0e9+ +((f[j+(wa<<2)>>2]|0)>>>0);cb=cb+1|0;if((cb|0)==2)break;else db=ib}jb=+(e|0);kb=bb*jb;wa=_a+53|0;F=wa-d|0;J=(F|0)<(c|0);H=J?((F|0)>0?F:0):c;if((H|0)<53){lb=+Gq(+Wj(1.0,105-H|0),kb);mb=+Sq(kb,+Wj(1.0,53-H|0));nb=lb;ob=mb;pb=lb+(kb-mb)}else{nb=0.0;ob=0.0;pb=kb}va=$a+2&127;if((va|0)!=(ib|0)){ya=f[j+(va<<2)>>2]|0;do if(ya>>>0>=5e8){if((ya|0)!=5e8){qb=jb*.75+ob;break}if(($a+3&127|0)==(ib|0)){qb=jb*.5+ob;break}else{qb=jb*.75+ob;break}}else{if((ya|0)==0?($a+3&127|0)==(ib|0):0){qb=ob;break}qb=jb*.25+ob}while(0);if((53-H|0)>1?!(+Sq(qb,1.0)!=0.0):0)rb=qb+1.0;else rb=qb}else rb=ob;jb=pb+rb-nb;do if((wa&2147483647|0)>(-2-k|0)){ya=!(+K(+jb)>=9007199254740992.0);va=_a+((ya^1)&1)|0;kb=ya?jb:jb*.5;if((va+50|0)<=(l|0)?!(rb!=0.0&(J&((H|0)!=(F|0)|ya))):0){sb=kb;tb=va;break}ya=ir()|0;f[ya>>2]=34;sb=kb;tb=va}else{sb=jb;tb=_a}while(0);Aa=+Hq(sb,tb)}while(0);u=i;return +Aa}function pb(a,c,d,e,g,i){a=a|0;c=+c;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0.0,E=0,F=0,G=0,H=0.0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0.0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0;j=u;u=u+560|0;k=j+8|0;l=j;m=j+524|0;n=m;o=j+512|0;f[l>>2]=0;p=o+12|0;xo(c)|0;if((I|0)<0){q=-c;r=1;s=15511}else{q=c;r=(g&2049|0)!=0&1;s=(g&2048|0)==0?((g&1|0)==0?15512:15517):15514}xo(q)|0;do if(0==0&(I&2146435072|0)==2146435072){t=(i&32|0)!=0;v=r+3|0;Hk(a,32,d,v,g&-65537);ep(a,s,r);ep(a,q!=q|0.0!=0.0?(t?17461:15538):t?15530:15534,3);Hk(a,32,d,v,g^8192);w=v}else{c=+Iq(q,l)*2.0;v=c!=0.0;if(v)f[l>>2]=(f[l>>2]|0)+-1;t=i|32;if((t|0)==97){x=i&32;y=(x|0)==0?s:s+9|0;z=r|2;A=12-e|0;do if(!(e>>>0>11|(A|0)==0)){B=8.0;C=A;do{C=C+-1|0;B=B*16.0}while((C|0)!=0);if((b[y>>0]|0)==45){D=-(B+(-c-B));break}else{D=c+B-B;break}}else D=c;while(0);A=f[l>>2]|0;C=(A|0)<0?0-A|0:A;E=Jj(C,((C|0)<0)<<31>>31,p)|0;if((E|0)==(p|0)){C=o+11|0;b[C>>0]=48;F=C}else F=E;b[F+-1>>0]=(A>>31&2)+43;A=F+-2|0;b[A>>0]=i+15;E=(e|0)<1;C=(g&8|0)==0;G=m;H=D;while(1){J=~~H;K=G+1|0;b[G>>0]=x|h[15542+J>>0];H=(H-+(J|0))*16.0;if((K-n|0)==1?!(C&(E&H==0.0)):0){b[K>>0]=46;L=G+2|0}else L=K;if(!(H!=0.0))break;else G=L}G=L;if((e|0)!=0?(-2-n+G|0)<(e|0):0){M=G-n|0;N=e+2|0}else{E=G-n|0;M=E;N=E}E=p-A|0;G=E+z+N|0;Hk(a,32,d,G,g);ep(a,y,z);Hk(a,48,d,G,g^65536);ep(a,m,M);Hk(a,48,N-M|0,0,0);ep(a,A,E);Hk(a,32,d,G,g^8192);w=G;break}G=(e|0)<0?6:e;if(v){E=(f[l>>2]|0)+-28|0;f[l>>2]=E;O=c*268435456.0;P=E}else{O=c;P=f[l>>2]|0}E=(P|0)<0?k:k+288|0;C=E;H=O;do{x=~~H>>>0;f[C>>2]=x;C=C+4|0;H=(H-+(x>>>0))*1.0e9}while(H!=0.0);if((P|0)>0){v=E;A=C;z=P;while(1){y=(z|0)<29?z:29;x=A+-4|0;if(x>>>0>=v>>>0){K=x;x=0;do{J=Rn(f[K>>2]|0,0,y|0)|0;Q=Tn(J|0,I|0,x|0,0)|0;J=I;R=an(Q|0,J|0,1e9,0)|0;f[K>>2]=R;x=up(Q|0,J|0,1e9,0)|0;K=K+-4|0}while(K>>>0>=v>>>0);if(x){K=v+-4|0;f[K>>2]=x;S=K}else S=v}else S=v;K=A;while(1){if(K>>>0<=S>>>0)break;J=K+-4|0;if(!(f[J>>2]|0))K=J;else break}x=(f[l>>2]|0)-y|0;f[l>>2]=x;if((x|0)>0){v=S;A=K;z=x}else{T=S;U=K;V=x;break}}}else{T=E;U=C;V=P}if((V|0)<0){z=((G+25|0)/9|0)+1|0;A=(t|0)==102;v=T;x=U;J=V;while(1){Q=0-J|0;R=(Q|0)<9?Q:9;if(v>>>0>>0){Q=(1<>>R;Y=0;Z=v;do{_=f[Z>>2]|0;f[Z>>2]=(_>>>R)+Y;Y=X(_&Q,W)|0;Z=Z+4|0}while(Z>>>0>>0);Z=(f[v>>2]|0)==0?v+4|0:v;if(!Y){$=Z;aa=x}else{f[x>>2]=Y;$=Z;aa=x+4|0}}else{$=(f[v>>2]|0)==0?v+4|0:v;aa=x}Z=A?E:$;W=(aa-Z>>2|0)>(z|0)?Z+(z<<2)|0:aa;J=(f[l>>2]|0)+R|0;f[l>>2]=J;if((J|0)>=0){ba=$;ca=W;break}else{v=$;x=W}}}else{ba=T;ca=U}x=E;if(ba>>>0>>0){v=(x-ba>>2)*9|0;J=f[ba>>2]|0;if(J>>>0<10)da=v;else{z=v;v=10;while(1){v=v*10|0;A=z+1|0;if(J>>>0>>0){da=A;break}else z=A}}}else da=0;z=(t|0)==103;v=(G|0)!=0;J=G-((t|0)!=102?da:0)+((v&z)<<31>>31)|0;if((J|0)<(((ca-x>>2)*9|0)+-9|0)){A=J+9216|0;J=E+4+(((A|0)/9|0)+-1024<<2)|0;C=(A|0)%9|0;if((C|0)<8){A=C;C=10;while(1){W=C*10|0;if((A|0)<7){A=A+1|0;C=W}else{ea=W;break}}}else ea=10;C=f[J>>2]|0;A=(C>>>0)%(ea>>>0)|0;t=(J+4|0)==(ca|0);if(!(t&(A|0)==0)){B=(((C>>>0)/(ea>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;W=(ea|0)/2|0;H=A>>>0>>0?.5:t&(A|0)==(W|0)?1.0:1.5;if(!r){fa=H;ga=B}else{W=(b[s>>0]|0)==45;fa=W?-H:H;ga=W?-B:B}W=C-A|0;f[J>>2]=W;if(ga+fa!=ga){A=W+ea|0;f[J>>2]=A;if(A>>>0>999999999){A=ba;W=J;while(1){C=W+-4|0;f[W>>2]=0;if(C>>>0>>0){t=A+-4|0;f[t>>2]=0;ha=t}else ha=A;t=(f[C>>2]|0)+1|0;f[C>>2]=t;if(t>>>0>999999999){A=ha;W=C}else{ia=ha;ja=C;break}}}else{ia=ba;ja=J}W=(x-ia>>2)*9|0;A=f[ia>>2]|0;if(A>>>0<10){ka=ja;la=W;ma=ia}else{C=W;W=10;while(1){W=W*10|0;t=C+1|0;if(A>>>0>>0){ka=ja;la=t;ma=ia;break}else C=t}}}else{ka=J;la=da;ma=ba}}else{ka=J;la=da;ma=ba}C=ka+4|0;na=la;oa=ca>>>0>C>>>0?C:ca;pa=ma}else{na=da;oa=ca;pa=ba}C=oa;while(1){if(C>>>0<=pa>>>0){qa=0;break}W=C+-4|0;if(!(f[W>>2]|0))C=W;else{qa=1;break}}J=0-na|0;do if(z){W=G+((v^1)&1)|0;if((W|0)>(na|0)&(na|0)>-5){ra=i+-1|0;sa=W+-1-na|0}else{ra=i+-2|0;sa=W+-1|0}W=g&8;if(!W){if(qa?(A=f[C+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){t=0;Z=10;while(1){Z=Z*10|0;Q=t+1|0;if((A>>>0)%(Z>>>0)|0|0){ta=Q;break}else t=Q}}else ta=0;else ta=9;t=((C-x>>2)*9|0)+-9|0;if((ra|32|0)==102){Z=t-ta|0;A=(Z|0)>0?Z:0;ua=ra;va=(sa|0)<(A|0)?sa:A;wa=0;break}else{A=t+na-ta|0;t=(A|0)>0?A:0;ua=ra;va=(sa|0)<(t|0)?sa:t;wa=0;break}}else{ua=ra;va=sa;wa=W}}else{ua=i;va=G;wa=g&8}while(0);G=va|wa;x=(G|0)!=0&1;v=(ua|32|0)==102;if(v){xa=0;ya=(na|0)>0?na:0}else{z=(na|0)<0?J:na;t=Jj(z,((z|0)<0)<<31>>31,p)|0;z=p;if((z-t|0)<2){A=t;while(1){Z=A+-1|0;b[Z>>0]=48;if((z-Z|0)<2)A=Z;else{za=Z;break}}}else za=t;b[za+-1>>0]=(na>>31&2)+43;A=za+-2|0;b[A>>0]=ua;xa=A;ya=z-A|0}A=r+1+va+x+ya|0;Hk(a,32,d,A,g);ep(a,s,r);Hk(a,48,d,A,g^65536);if(v){J=pa>>>0>E>>>0?E:pa;Z=m+9|0;R=Z;Y=m+8|0;Q=J;do{K=Jj(f[Q>>2]|0,0,Z)|0;if((Q|0)==(J|0))if((K|0)==(Z|0)){b[Y>>0]=48;Aa=Y}else Aa=K;else if(K>>>0>m>>>0){hj(m|0,48,K-n|0)|0;y=K;while(1){_=y+-1|0;if(_>>>0>m>>>0)y=_;else{Aa=_;break}}}else Aa=K;ep(a,Aa,R-Aa|0);Q=Q+4|0}while(Q>>>0<=E>>>0);if(G|0)ep(a,15558,1);if(Q>>>0>>0&(va|0)>0){E=va;R=Q;while(1){Y=Jj(f[R>>2]|0,0,Z)|0;if(Y>>>0>m>>>0){hj(m|0,48,Y-n|0)|0;J=Y;while(1){v=J+-1|0;if(v>>>0>m>>>0)J=v;else{Ba=v;break}}}else Ba=Y;ep(a,Ba,(E|0)<9?E:9);R=R+4|0;J=E+-9|0;if(!(R>>>0>>0&(E|0)>9)){Ca=J;break}else E=J}}else Ca=va;Hk(a,48,Ca+9|0,9,0)}else{E=qa?C:pa+4|0;if((va|0)>-1){R=m+9|0;Z=(wa|0)==0;Q=R;G=0-n|0;J=m+8|0;K=va;v=pa;while(1){x=Jj(f[v>>2]|0,0,R)|0;if((x|0)==(R|0)){b[J>>0]=48;Da=J}else Da=x;do if((v|0)==(pa|0)){x=Da+1|0;ep(a,Da,1);if(Z&(K|0)<1){Ea=x;break}ep(a,15558,1);Ea=x}else{if(Da>>>0<=m>>>0){Ea=Da;break}hj(m|0,48,Da+G|0)|0;x=Da;while(1){z=x+-1|0;if(z>>>0>m>>>0)x=z;else{Ea=z;break}}}while(0);Y=Q-Ea|0;ep(a,Ea,(K|0)>(Y|0)?Y:K);x=K-Y|0;v=v+4|0;if(!(v>>>0>>0&(x|0)>-1)){Fa=x;break}else K=x}}else Fa=va;Hk(a,48,Fa+18|0,18,0);ep(a,xa,p-xa|0)}Hk(a,32,d,A,g^8192);w=A}while(0);u=j;return ((w|0)<(d|0)?d:w)|0}function qb(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0;i=u;u=u+64|0;j=i+16|0;k=i;l=i+24|0;m=i+8|0;n=i+20|0;f[j>>2]=c;c=(a|0)!=0;o=l+40|0;q=o;r=l+39|0;l=m+4|0;s=0;t=0;v=0;a:while(1){do if((t|0)>-1)if((s|0)>(2147483647-t|0)){w=ir()|0;f[w>>2]=75;x=-1;break}else{x=s+t|0;break}else x=t;while(0);w=f[j>>2]|0;y=b[w>>0]|0;if(!(y<<24>>24)){z=88;break}else{A=y;B=w}b:while(1){switch(A<<24>>24){case 37:{C=B;D=B;z=9;break b;break}case 0:{E=B;break b;break}default:{}}y=B+1|0;f[j>>2]=y;A=b[y>>0]|0;B=y}c:do if((z|0)==9)while(1){z=0;if((b[D+1>>0]|0)!=37){E=C;break c}y=C+1|0;D=D+2|0;f[j>>2]=D;if((b[D>>0]|0)!=37){E=y;break}else{C=y;z=9}}while(0);y=E-w|0;if(c)ep(a,w,y);if(y|0){s=y;t=x;continue}y=(Pq(b[(f[j>>2]|0)+1>>0]|0)|0)==0;F=f[j>>2]|0;if(!y?(b[F+2>>0]|0)==36:0){G=(b[F+1>>0]|0)+-48|0;H=1;J=3}else{G=-1;H=v;J=1}y=F+J|0;f[j>>2]=y;F=b[y>>0]|0;K=(F<<24>>24)+-32|0;if(K>>>0>31|(1<>24)+-32|K;P=F+1|0;f[j>>2]=P;Q=b[P>>0]|0;R=(Q<<24>>24)+-32|0;if(R>>>0>31|(1<>24==42){if((Pq(b[N+1>>0]|0)|0)!=0?(F=f[j>>2]|0,(b[F+2>>0]|0)==36):0){O=F+1|0;f[h+((b[O>>0]|0)+-48<<2)>>2]=10;S=f[g+((b[O>>0]|0)+-48<<3)>>2]|0;T=1;U=F+3|0}else{if(H|0){V=-1;break}if(c){F=(f[e>>2]|0)+(4-1)&~(4-1);O=f[F>>2]|0;f[e>>2]=F+4;W=O}else W=0;S=W;T=0;U=(f[j>>2]|0)+1|0}f[j>>2]=U;O=(S|0)<0;X=O?0-S|0:S;Y=O?L|8192:L;Z=T;_=U}else{O=Cl(j)|0;if((O|0)<0){V=-1;break}X=O;Y=L;Z=H;_=f[j>>2]|0}do if((b[_>>0]|0)==46){if((b[_+1>>0]|0)!=42){f[j>>2]=_+1;O=Cl(j)|0;$=O;aa=f[j>>2]|0;break}if(Pq(b[_+2>>0]|0)|0?(O=f[j>>2]|0,(b[O+3>>0]|0)==36):0){F=O+2|0;f[h+((b[F>>0]|0)+-48<<2)>>2]=10;K=f[g+((b[F>>0]|0)+-48<<3)>>2]|0;F=O+4|0;f[j>>2]=F;$=K;aa=F;break}if(Z|0){V=-1;break a}if(c){F=(f[e>>2]|0)+(4-1)&~(4-1);K=f[F>>2]|0;f[e>>2]=F+4;ba=K}else ba=0;K=(f[j>>2]|0)+2|0;f[j>>2]=K;$=ba;aa=K}else{$=-1;aa=_}while(0);K=0;F=aa;while(1){if(((b[F>>0]|0)+-65|0)>>>0>57){V=-1;break a}O=F;F=F+1|0;f[j>>2]=F;ca=b[(b[O>>0]|0)+-65+(15030+(K*58|0))>>0]|0;da=ca&255;if((da+-1|0)>>>0>=8)break;else K=da}if(!(ca<<24>>24)){V=-1;break}O=(G|0)>-1;do if(ca<<24>>24==19)if(O){V=-1;break a}else z=50;else{if(O){f[h+(G<<2)>>2]=da;P=g+(G<<3)|0;Q=f[P+4>>2]|0;y=k;f[y>>2]=f[P>>2];f[y+4>>2]=Q;z=50;break}if(!c){V=0;break a}Ie(k,da,e);ea=f[j>>2]|0}while(0);if((z|0)==50){z=0;if(c)ea=F;else{s=0;t=x;v=Z;continue}}O=b[ea+-1>>0]|0;Q=(K|0)!=0&(O&15|0)==3?O&-33:O;O=Y&-65537;y=(Y&8192|0)==0?Y:O;d:do switch(Q|0){case 110:{switch((K&255)<<24>>24){case 0:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 1:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 2:{P=f[k>>2]|0;f[P>>2]=x;f[P+4>>2]=((x|0)<0)<<31>>31;s=0;t=x;v=Z;continue a;break}case 3:{d[f[k>>2]>>1]=x;s=0;t=x;v=Z;continue a;break}case 4:{b[f[k>>2]>>0]=x;s=0;t=x;v=Z;continue a;break}case 6:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 7:{P=f[k>>2]|0;f[P>>2]=x;f[P+4>>2]=((x|0)<0)<<31>>31;s=0;t=x;v=Z;continue a;break}default:{s=0;t=x;v=Z;continue a}}break}case 112:{fa=120;ga=$>>>0>8?$:8;ha=y|8;z=62;break}case 88:case 120:{fa=Q;ga=$;ha=y;z=62;break}case 111:{P=k;R=f[P>>2]|0;ia=f[P+4>>2]|0;P=Gl(R,ia,o)|0;ja=q-P|0;ka=P;la=0;ma=15494;na=(y&8|0)==0|($|0)>(ja|0)?$:ja+1|0;oa=y;pa=R;qa=ia;z=68;break}case 105:case 100:{ia=k;R=f[ia>>2]|0;ja=f[ia+4>>2]|0;if((ja|0)<0){ia=Vn(0,0,R|0,ja|0)|0;P=I;ra=k;f[ra>>2]=ia;f[ra+4>>2]=P;sa=1;ta=15494;ua=ia;va=P;z=67;break d}else{sa=(y&2049|0)!=0&1;ta=(y&2048|0)==0?((y&1|0)==0?15494:15496):15495;ua=R;va=ja;z=67;break d}break}case 117:{ja=k;sa=0;ta=15494;ua=f[ja>>2]|0;va=f[ja+4>>2]|0;z=67;break}case 99:{b[r>>0]=f[k>>2];wa=r;xa=0;ya=15494;za=o;Aa=1;Ba=O;break}case 109:{ja=ir()|0;Ca=kp(f[ja>>2]|0)|0;z=72;break}case 115:{ja=f[k>>2]|0;Ca=ja|0?ja:15504;z=72;break}case 67:{f[m>>2]=f[k>>2];f[l>>2]=0;f[k>>2]=m;Da=-1;Ea=m;z=76;break}case 83:{ja=f[k>>2]|0;if(!$){Hk(a,32,X,0,y);Fa=0;z=85}else{Da=$;Ea=ja;z=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{s=pb(a,+p[k>>3],X,$,y,Q)|0;t=x;v=Z;continue a;break}default:{wa=w;xa=0;ya=15494;za=o;Aa=$;Ba=y}}while(0);e:do if((z|0)==62){z=0;w=k;Q=f[w>>2]|0;K=f[w+4>>2]|0;w=ol(Q,K,o,fa&32)|0;F=(ha&8|0)==0|(Q|0)==0&(K|0)==0;ka=w;la=F?0:2;ma=F?15494:15494+(fa>>4)|0;na=ga;oa=ha;pa=Q;qa=K;z=68}else if((z|0)==67){z=0;ka=Jj(ua,va,o)|0;la=sa;ma=ta;na=$;oa=y;pa=ua;qa=va;z=68}else if((z|0)==72){z=0;K=cg(Ca,0,$)|0;Q=(K|0)==0;wa=Ca;xa=0;ya=15494;za=Q?Ca+$|0:K;Aa=Q?$:K-Ca|0;Ba=O}else if((z|0)==76){z=0;K=Ea;Q=0;F=0;while(1){w=f[K>>2]|0;if(!w){Ga=Q;Ha=F;break}ja=Yo(n,w)|0;if((ja|0)<0|ja>>>0>(Da-Q|0)>>>0){Ga=Q;Ha=ja;break}w=ja+Q|0;if(Da>>>0>w>>>0){K=K+4|0;Q=w;F=ja}else{Ga=w;Ha=ja;break}}if((Ha|0)<0){V=-1;break a}Hk(a,32,X,Ga,y);if(!Ga){Fa=0;z=85}else{F=Ea;Q=0;while(1){K=f[F>>2]|0;if(!K){Fa=Ga;z=85;break e}ja=Yo(n,K)|0;Q=ja+Q|0;if((Q|0)>(Ga|0)){Fa=Ga;z=85;break e}ep(a,n,ja);if(Q>>>0>=Ga>>>0){Fa=Ga;z=85;break}else F=F+4|0}}}while(0);if((z|0)==68){z=0;O=(pa|0)!=0|(qa|0)!=0;F=(na|0)!=0|O;Q=q-ka+((O^1)&1)|0;wa=F?ka:o;xa=la;ya=ma;za=o;Aa=F?((na|0)>(Q|0)?na:Q):na;Ba=(na|0)>-1?oa&-65537:oa}else if((z|0)==85){z=0;Hk(a,32,X,Fa,y^8192);s=(X|0)>(Fa|0)?X:Fa;t=x;v=Z;continue}Q=za-wa|0;F=(Aa|0)<(Q|0)?Q:Aa;O=F+xa|0;ja=(X|0)<(O|0)?O:X;Hk(a,32,ja,O,Ba);ep(a,ya,xa);Hk(a,48,ja,O,Ba^65536);Hk(a,48,F,Q,0);ep(a,wa,Q);Hk(a,32,ja,O,Ba^8192);s=ja;t=x;v=Z}f:do if((z|0)==88)if(!a)if(v){Z=1;while(1){t=f[h+(Z<<2)>>2]|0;if(!t){Ia=Z;break}Ie(g+(Z<<3)|0,t,e);t=Z+1|0;if((Z|0)<9)Z=t;else{Ia=t;break}}if((Ia|0)<10){Z=Ia;while(1){if(f[h+(Z<<2)>>2]|0){V=-1;break f}if((Z|0)<9)Z=Z+1|0;else{V=1;break}}}else V=1}else V=0;else V=x;while(0);u=i;return V|0}function rb(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=Oa,ma=Oa,na=Oa,oa=0,pa=0,qa=0,ra=0,sa=0;c=u;u=u+64|0;d=c+28|0;e=c+16|0;g=c+4|0;h=c;i=a;j=a+80|0;k=f[j>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=i;l=d+20|0;n[l>>2]=$(1.0);f[d+24>>2]=i;qh(d,k);k=f[j>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;m=(k|0)==0;do if(!m)if(k>>>0>1073741823)mq(e);else{o=k<<2;p=dn(o)|0;f[e>>2]=p;q=p+(k<<2)|0;f[e+8>>2]=q;hj(p|0,0,o|0)|0;f[i>>2]=q;break}while(0);f[g>>2]=0;k=g+4|0;f[k>>2]=0;f[g+8>>2]=0;f[h>>2]=0;if(!m){m=d+16|0;q=d+4|0;o=d+12|0;p=d+8|0;r=g+8|0;s=d+24|0;t=0;v=0;while(1){w=f[m>>2]|0;x=f[w+8>>2]|0;y=(f[w+12>>2]|0)-x|0;w=(y|0)>0;z=x;if(w){x=y>>>2;A=0;B=0;while(1){C=f[z+(A<<2)>>2]|0;if(!(b[C+84>>0]|0))D=f[(f[C+68>>2]|0)+(v<<2)>>2]|0;else D=v;C=D+239^B;A=A+1|0;if((A|0)>=(x|0)){E=C;break}else B=C}}else E=0;B=f[q>>2]|0;x=(B|0)==0;a:do if(!x){A=B+-1|0;C=(A&B|0)==0;if(!C)if(E>>>0>>0)F=E;else F=(E>>>0)%(B>>>0)|0;else F=A&E;G=f[(f[d>>2]|0)+(F<<2)>>2]|0;if((G|0)!=0?(H=f[G>>2]|0,(H|0)!=0):0){G=f[s>>2]|0;I=G+8|0;J=G+12|0;b:do if(C){G=H;while(1){K=f[G+4>>2]|0;L=(K|0)==(E|0);if(!(L|(K&A|0)==(F|0))){M=44;break a}c:do if(L){K=f[G+8>>2]|0;N=f[I>>2]|0;O=(f[J>>2]|0)-N|0;P=N;if((O|0)<=0){Q=G;break b}N=O>>>2;O=0;while(1){R=f[P+(O<<2)>>2]|0;if(!(b[R+84>>0]|0)){S=f[R+68>>2]|0;T=f[S+(v<<2)>>2]|0;U=f[S+(K<<2)>>2]|0}else{T=v;U=K}O=O+1|0;if((U|0)!=(T|0))break c;if((O|0)>=(N|0)){V=G;M=42;break b}}}while(0);G=f[G>>2]|0;if(!G){M=44;break a}}}else{G=H;while(1){L=f[G+4>>2]|0;d:do if((L|0)!=(E|0)){if(L>>>0>>0)X=L;else X=(L>>>0)%(B>>>0)|0;if((X|0)!=(F|0)){M=44;break a}}else{N=f[G+8>>2]|0;O=f[I>>2]|0;K=(f[J>>2]|0)-O|0;P=O;if((K|0)<=0){Q=G;break b}O=K>>>2;K=0;while(1){S=f[P+(K<<2)>>2]|0;if(!(b[S+84>>0]|0)){R=f[S+68>>2]|0;Y=f[R+(v<<2)>>2]|0;Z=f[R+(N<<2)>>2]|0}else{Y=v;Z=N}K=K+1|0;if((Z|0)!=(Y|0))break d;if((K|0)>=(O|0)){V=G;M=42;break b}}}while(0);G=f[G>>2]|0;if(!G){M=44;break a}}}while(0);if((M|0)==42){M=0;if(!V){M=44;break}else Q=V}f[(f[e>>2]|0)+(v<<2)>>2]=f[Q+12>>2];_=t}else M=44}else M=44;while(0);do if((M|0)==44){M=0;if(w){J=y>>>2;I=0;H=0;while(1){A=f[z+(I<<2)>>2]|0;if(!(b[A+84>>0]|0))aa=f[(f[A+68>>2]|0)+(v<<2)>>2]|0;else aa=v;A=aa+239^H;I=I+1|0;if((I|0)>=(J|0)){ba=A;break}else H=A}}else ba=0;e:do if(!x){H=B+-1|0;J=(H&B|0)==0;if(!J)if(ba>>>0>>0)ca=ba;else ca=(ba>>>0)%(B>>>0)|0;else ca=H&ba;I=f[(f[d>>2]|0)+(ca<<2)>>2]|0;if((I|0)!=0?(A=f[I>>2]|0,(A|0)!=0):0){I=f[s>>2]|0;C=I+8|0;G=I+12|0;if(J){J=A;while(1){I=f[J+4>>2]|0;if(!((I|0)==(ba|0)|(I&H|0)==(ca|0))){da=ca;M=76;break e}I=f[J+8>>2]|0;L=f[C>>2]|0;O=(f[G>>2]|0)-L|0;K=L;if((O|0)<=0){ea=v;break e}L=O>>>2;O=0;while(1){N=f[K+(O<<2)>>2]|0;if(!(b[N+84>>0]|0)){P=f[N+68>>2]|0;fa=f[P+(v<<2)>>2]|0;ga=f[P+(I<<2)>>2]|0}else{fa=v;ga=I}O=O+1|0;if((ga|0)!=(fa|0))break;if((O|0)>=(L|0)){ea=v;break e}}J=f[J>>2]|0;if(!J){da=ca;M=76;break e}}}else ha=A;while(1){J=f[ha+4>>2]|0;if((J|0)!=(ba|0)){if(J>>>0>>0)ia=J;else ia=(J>>>0)%(B>>>0)|0;if((ia|0)!=(ca|0)){da=ca;M=76;break e}}J=f[ha+8>>2]|0;H=f[C>>2]|0;L=(f[G>>2]|0)-H|0;O=H;if((L|0)<=0){ea=v;break e}H=L>>>2;L=0;while(1){I=f[O+(L<<2)>>2]|0;if(!(b[I+84>>0]|0)){K=f[I+68>>2]|0;ja=f[K+(v<<2)>>2]|0;ka=f[K+(J<<2)>>2]|0}else{ja=v;ka=J}L=L+1|0;if((ka|0)!=(ja|0))break;if((L|0)>=(H|0)){ea=v;break e}}ha=f[ha>>2]|0;if(!ha){da=ca;M=76;break}}}else{da=ca;M=76}}else{da=0;M=76}while(0);if((M|0)==76){M=0;G=dn(16)|0;f[G+8>>2]=v;f[G+12>>2]=t;f[G+4>>2]=ba;f[G>>2]=0;la=$(((f[o>>2]|0)+1|0)>>>0);ma=$(B>>>0);na=$(n[l>>2]);do if(x|$(na*ma)>>0<3|(B+-1&B|0)!=0)&1;A=~~$(W($(la/na)))>>>0;qh(d,C>>>0>>0?A:C);C=f[q>>2]|0;A=C+-1|0;if(!(A&C)){oa=C;pa=A&ba;break}if(ba>>>0>>0){oa=C;pa=ba}else{oa=C;pa=(ba>>>0)%(C>>>0)|0}}else{oa=B;pa=da}while(0);C=(f[d>>2]|0)+(pa<<2)|0;A=f[C>>2]|0;if(!A){f[G>>2]=f[p>>2];f[p>>2]=G;f[C>>2]=p;C=f[G>>2]|0;if(C|0){H=f[C+4>>2]|0;C=oa+-1|0;if(C&oa)if(H>>>0>>0)qa=H;else qa=(H>>>0)%(oa>>>0)|0;else qa=H&C;ra=(f[d>>2]|0)+(qa<<2)|0;M=89}}else{f[G>>2]=f[A>>2];ra=A;M=89}if((M|0)==89){M=0;f[ra>>2]=G}f[o>>2]=(f[o>>2]|0)+1;ea=f[h>>2]|0}A=t+1|0;f[(f[e>>2]|0)+(ea<<2)>>2]=t;C=f[k>>2]|0;if((C|0)==(f[r>>2]|0)){Ci(g,h);_=A;break}else{f[C>>2]=f[h>>2];f[k>>2]=C+4;_=A;break}}while(0);v=(f[h>>2]|0)+1|0;f[h>>2]=v;sa=f[j>>2]|0;if(v>>>0>=sa>>>0)break;else t=_}if((_|0)!=(sa|0)){Xa[f[(f[a>>2]|0)+24>>2]&15](a,e,g);f[j>>2]=_}}_=f[g>>2]|0;if(_|0){g=f[k>>2]|0;if((g|0)!=(_|0))f[k>>2]=g+(~((g+-4-_|0)>>>2)<<2);br(_)}_=f[e>>2]|0;if(_|0){e=f[i>>2]|0;if((e|0)!=(_|0))f[i>>2]=e+(~((e+-4-_|0)>>>2)<<2);br(_)}_=f[d+8>>2]|0;if(_|0){e=_;do{_=e;e=f[e>>2]|0;br(_)}while((e|0)!=0)}e=f[d>>2]|0;f[d>>2]=0;if(!e){u=c;return}br(e);u=c;return}function sb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;g=u;u=u+80|0;h=g+76|0;i=g+72|0;j=g+48|0;k=g+24|0;l=g;m=a+32|0;n=f[c>>2]|0;c=n+1|0;if((n|0)!=-1){o=((c>>>0)%3|0|0)==0?n+-2|0:c;c=(((n>>>0)%3|0|0)==0?2:-1)+n|0;if((o|0)==-1)p=-1;else p=f[(f[f[m>>2]>>2]|0)+(o<<2)>>2]|0;if((c|0)==-1){q=p;r=-1}else{q=p;r=f[(f[f[m>>2]>>2]|0)+(c<<2)>>2]|0}}else{q=-1;r=-1}c=f[a+36>>2]|0;m=f[c>>2]|0;p=(f[c+4>>2]|0)-m>>2;if(p>>>0<=q>>>0)mq(c);o=m;m=f[o+(q<<2)>>2]|0;if(p>>>0<=r>>>0)mq(c);c=f[o+(r<<2)>>2]|0;r=(m|0)<(e|0);do if(r&(c|0)<(e|0)){o=m<<1;p=f[d+(o<<2)>>2]|0;q=((p|0)<0)<<31>>31;n=f[d+((o|1)<<2)>>2]|0;o=((n|0)<0)<<31>>31;s=c<<1;t=f[d+(s<<2)>>2]|0;v=f[d+((s|1)<<2)>>2]|0;if(!((t|0)!=(p|0)|(v|0)!=(n|0))){f[a+8>>2]=p;f[a+12>>2]=n;u=g;return 1}s=a+4|0;w=f[(f[s>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))y=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else y=w;f[i>>2]=y;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];ub(x,h,w,j)|0;w=f[(f[s>>2]|0)+(m<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))z=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else z=w;f[i>>2]=z;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];ub(x,h,w,k)|0;w=f[(f[s>>2]|0)+(c<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;s=f[a>>2]|0;if(!(b[s+84>>0]|0))A=f[(f[s+68>>2]|0)+(w<<2)>>2]|0;else A=w;f[i>>2]=A;w=b[s+24>>0]|0;f[h>>2]=f[i>>2];ub(s,h,w,l)|0;w=l;s=k;x=f[s>>2]|0;B=f[s+4>>2]|0;s=Vn(f[w>>2]|0,f[w+4>>2]|0,x|0,B|0)|0;w=I;C=l+8|0;D=k+8|0;E=f[D>>2]|0;F=f[D+4>>2]|0;D=Vn(f[C>>2]|0,f[C+4>>2]|0,E|0,F|0)|0;C=I;G=l+16|0;H=k+16|0;J=f[H>>2]|0;K=f[H+4>>2]|0;H=Vn(f[G>>2]|0,f[G+4>>2]|0,J|0,K|0)|0;G=I;L=on(s|0,w|0,s|0,w|0)|0;M=I;N=on(D|0,C|0,D|0,C|0)|0;O=Tn(N|0,I|0,L|0,M|0)|0;M=I;L=on(H|0,G|0,H|0,G|0)|0;N=Tn(O|0,M|0,L|0,I|0)|0;L=I;if((N|0)==0&(L|0)==0)break;M=j;O=Vn(f[M>>2]|0,f[M+4>>2]|0,x|0,B|0)|0;B=I;x=j+8|0;M=Vn(f[x>>2]|0,f[x+4>>2]|0,E|0,F|0)|0;F=I;E=j+16|0;x=Vn(f[E>>2]|0,f[E+4>>2]|0,J|0,K|0)|0;K=I;J=on(O|0,B|0,s|0,w|0)|0;E=I;P=on(M|0,F|0,D|0,C|0)|0;Q=Tn(P|0,I|0,J|0,E|0)|0;E=I;J=on(x|0,K|0,H|0,G|0)|0;P=Tn(Q|0,E|0,J|0,I|0)|0;J=I;E=Vn(t|0,((t|0)<0)<<31>>31|0,p|0,q|0)|0;t=I;Q=Vn(v|0,((v|0)<0)<<31>>31|0,n|0,o|0)|0;v=I;R=on(N|0,L|0,p|0,q|0)|0;q=I;p=on(N|0,L|0,n|0,o|0)|0;o=I;n=on(P|0,J|0,E|0,t|0)|0;S=I;T=on(P|0,J|0,Q|0,v|0)|0;U=I;V=Tn(n|0,S|0,R|0,q|0)|0;q=I;R=Tn(T|0,U|0,p|0,o|0)|0;o=I;p=on(P|0,J|0,s|0,w|0)|0;w=I;s=on(P|0,J|0,D|0,C|0)|0;C=I;D=on(P|0,J|0,H|0,G|0)|0;G=I;H=zk(p|0,w|0,N|0,L|0)|0;w=I;p=zk(s|0,C|0,N|0,L|0)|0;C=I;s=zk(D|0,G|0,N|0,L|0)|0;G=I;D=Vn(O|0,B|0,H|0,w|0)|0;w=I;H=Vn(M|0,F|0,p|0,C|0)|0;C=I;p=Vn(x|0,K|0,s|0,G|0)|0;G=I;s=on(D|0,w|0,D|0,w|0)|0;w=I;D=on(H|0,C|0,H|0,C|0)|0;C=Tn(D|0,I|0,s|0,w|0)|0;w=I;s=on(p|0,G|0,p|0,G|0)|0;G=Tn(C|0,w|0,s|0,I|0)|0;s=I;w=Vn(0,0,E|0,t|0)|0;t=I;E=on(G|0,s|0,N|0,L|0)|0;s=I;switch(E|0){case 0:{if(!s){W=0;X=0}else{Y=1;Z=0;_=E;$=s;aa=23}break}case 1:{if(!s){ba=1;ca=0;aa=24}else{Y=1;Z=0;_=E;$=s;aa=23}break}default:{Y=1;Z=0;_=E;$=s;aa=23}}if((aa|0)==23)while(1){aa=0;G=Rn(Y|0,Z|0,1)|0;C=I;p=_;_=Wn(_|0,$|0,2)|0;if(!($>>>0>0|($|0)==0&p>>>0>7)){ba=G;ca=C;aa=24;break}else{Y=G;Z=C;$=I;aa=23}}if((aa|0)==24)while(1){aa=0;C=up(E|0,s|0,ba|0,ca|0)|0;G=Tn(C|0,I|0,ba|0,ca|0)|0;C=Wn(G|0,I|0,1)|0;G=I;p=on(C|0,G|0,C|0,G|0)|0;D=I;if(D>>>0>s>>>0|(D|0)==(s|0)&p>>>0>E>>>0){ba=C;ca=G;aa=24}else{W=C;X=G;break}}E=on(W|0,X|0,Q|0,v|0)|0;s=I;G=on(W|0,X|0,w|0,t|0)|0;C=I;p=Tn(E|0,s|0,V|0,q|0)|0;D=I;H=Tn(G|0,C|0,R|0,o|0)|0;K=I;x=zk(p|0,D|0,N|0,L|0)|0;D=I;p=zk(H|0,K|0,N|0,L|0)|0;K=I;H=Vn(V|0,q|0,E|0,s|0)|0;s=I;E=Vn(R|0,o|0,G|0,C|0)|0;C=I;G=zk(H|0,s|0,N|0,L|0)|0;s=I;H=zk(E|0,C|0,N|0,L|0)|0;C=I;E=e<<1;F=f[d+(E<<2)>>2]|0;M=((F|0)<0)<<31>>31;B=f[d+((E|1)<<2)>>2]|0;E=((B|0)<0)<<31>>31;O=Vn(F|0,M|0,x|0,D|0)|0;J=I;P=Vn(B|0,E|0,p|0,K|0)|0;U=I;T=on(O|0,J|0,O|0,J|0)|0;J=I;O=on(P|0,U|0,P|0,U|0)|0;U=Tn(O|0,I|0,T|0,J|0)|0;J=I;T=Vn(F|0,M|0,G|0,s|0)|0;M=I;F=Vn(B|0,E|0,H|0,C|0)|0;E=I;B=on(T|0,M|0,T|0,M|0)|0;M=I;T=on(F|0,E|0,F|0,E|0)|0;E=Tn(T|0,I|0,B|0,M|0)|0;M=I;B=a+16|0;T=a+20|0;F=f[T>>2]|0;O=f[a+24>>2]|0;P=(F|0)==(O<<5|0);if(J>>>0>>0|(J|0)==(M|0)&U>>>0>>0){do if(P)if((F+1|0)<0)mq(B);else{E=O<<6;U=F+32&-32;hi(B,F>>>0<1073741823?(E>>>0>>0?U:E):2147483647);da=f[T>>2]|0;break}else da=F;while(0);f[T>>2]=da+1;L=(f[B>>2]|0)+(da>>>5<<2)|0;f[L>>2]=f[L>>2]|1<<(da&31);ea=x;fa=p;ga=K;ha=D}else{do if(P)if((F+1|0)<0)mq(B);else{L=O<<6;N=F+32&-32;hi(B,F>>>0<1073741823?(L>>>0>>0?N:L):2147483647);ia=f[T>>2]|0;break}else ia=F;while(0);f[T>>2]=ia+1;F=(f[B>>2]|0)+(ia>>>5<<2)|0;f[F>>2]=f[F>>2]&~(1<<(ia&31));ea=G;fa=H;ga=C;ha=s}f[a+8>>2]=ea;f[a+12>>2]=fa;u=g;return 1}while(0);do if(r)ja=m<<1;else{if((e|0)>0){ja=(e<<1)+-2|0;break}fa=a+8|0;f[fa>>2]=0;f[fa+4>>2]=0;u=g;return 1}while(0);f[a+8>>2]=f[d+(ja<<2)>>2];f[a+12>>2]=f[d+(ja+1<<2)>>2];u=g;return 1}function tb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;g=u;u=u+80|0;h=g+76|0;i=g+72|0;j=g+48|0;k=g+24|0;l=g;m=a+32|0;n=f[c>>2]|0;c=n+1|0;do if((n|0)!=-1){o=((c>>>0)%3|0|0)==0?n+-2|0:c;if(!((n>>>0)%3|0)){p=n+2|0;q=o;break}else{p=n+-1|0;q=o;break}}else{p=-1;q=-1}while(0);n=f[(f[m>>2]|0)+28>>2]|0;m=f[n+(q<<2)>>2]|0;q=f[n+(p<<2)>>2]|0;p=f[a+36>>2]|0;n=f[p>>2]|0;c=(f[p+4>>2]|0)-n>>2;if(c>>>0<=m>>>0)mq(p);o=n;n=f[o+(m<<2)>>2]|0;if(c>>>0<=q>>>0)mq(p);p=f[o+(q<<2)>>2]|0;q=(n|0)<(e|0);do if(q&(p|0)<(e|0)){o=n<<1;c=f[d+(o<<2)>>2]|0;m=((c|0)<0)<<31>>31;r=f[d+((o|1)<<2)>>2]|0;o=((r|0)<0)<<31>>31;s=p<<1;t=f[d+(s<<2)>>2]|0;v=f[d+((s|1)<<2)>>2]|0;if(!((t|0)!=(c|0)|(v|0)!=(r|0))){f[a+8>>2]=c;f[a+12>>2]=r;u=g;return 1}s=a+4|0;w=f[(f[s>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))y=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else y=w;f[i>>2]=y;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];ub(x,h,w,j)|0;w=f[(f[s>>2]|0)+(n<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))z=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else z=w;f[i>>2]=z;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];ub(x,h,w,k)|0;w=f[(f[s>>2]|0)+(p<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;s=f[a>>2]|0;if(!(b[s+84>>0]|0))A=f[(f[s+68>>2]|0)+(w<<2)>>2]|0;else A=w;f[i>>2]=A;w=b[s+24>>0]|0;f[h>>2]=f[i>>2];ub(s,h,w,l)|0;w=l;s=k;x=f[s>>2]|0;B=f[s+4>>2]|0;s=Vn(f[w>>2]|0,f[w+4>>2]|0,x|0,B|0)|0;w=I;C=l+8|0;D=k+8|0;E=f[D>>2]|0;F=f[D+4>>2]|0;D=Vn(f[C>>2]|0,f[C+4>>2]|0,E|0,F|0)|0;C=I;G=l+16|0;H=k+16|0;J=f[H>>2]|0;K=f[H+4>>2]|0;H=Vn(f[G>>2]|0,f[G+4>>2]|0,J|0,K|0)|0;G=I;L=on(s|0,w|0,s|0,w|0)|0;M=I;N=on(D|0,C|0,D|0,C|0)|0;O=Tn(N|0,I|0,L|0,M|0)|0;M=I;L=on(H|0,G|0,H|0,G|0)|0;N=Tn(O|0,M|0,L|0,I|0)|0;L=I;if((N|0)==0&(L|0)==0)break;M=j;O=Vn(f[M>>2]|0,f[M+4>>2]|0,x|0,B|0)|0;B=I;x=j+8|0;M=Vn(f[x>>2]|0,f[x+4>>2]|0,E|0,F|0)|0;F=I;E=j+16|0;x=Vn(f[E>>2]|0,f[E+4>>2]|0,J|0,K|0)|0;K=I;J=on(O|0,B|0,s|0,w|0)|0;E=I;P=on(M|0,F|0,D|0,C|0)|0;Q=Tn(P|0,I|0,J|0,E|0)|0;E=I;J=on(x|0,K|0,H|0,G|0)|0;P=Tn(Q|0,E|0,J|0,I|0)|0;J=I;E=Vn(t|0,((t|0)<0)<<31>>31|0,c|0,m|0)|0;t=I;Q=Vn(v|0,((v|0)<0)<<31>>31|0,r|0,o|0)|0;v=I;R=on(N|0,L|0,c|0,m|0)|0;m=I;c=on(N|0,L|0,r|0,o|0)|0;o=I;r=on(P|0,J|0,E|0,t|0)|0;S=I;T=on(P|0,J|0,Q|0,v|0)|0;U=I;V=Tn(r|0,S|0,R|0,m|0)|0;m=I;R=Tn(T|0,U|0,c|0,o|0)|0;o=I;c=on(P|0,J|0,s|0,w|0)|0;w=I;s=on(P|0,J|0,D|0,C|0)|0;C=I;D=on(P|0,J|0,H|0,G|0)|0;G=I;H=zk(c|0,w|0,N|0,L|0)|0;w=I;c=zk(s|0,C|0,N|0,L|0)|0;C=I;s=zk(D|0,G|0,N|0,L|0)|0;G=I;D=Vn(O|0,B|0,H|0,w|0)|0;w=I;H=Vn(M|0,F|0,c|0,C|0)|0;C=I;c=Vn(x|0,K|0,s|0,G|0)|0;G=I;s=on(D|0,w|0,D|0,w|0)|0;w=I;D=on(H|0,C|0,H|0,C|0)|0;C=Tn(D|0,I|0,s|0,w|0)|0;w=I;s=on(c|0,G|0,c|0,G|0)|0;G=Tn(C|0,w|0,s|0,I|0)|0;s=I;w=Vn(0,0,E|0,t|0)|0;t=I;E=on(G|0,s|0,N|0,L|0)|0;s=I;switch(E|0){case 0:{if(!s){W=0;X=0}else{Y=1;Z=0;_=E;$=s;aa=22}break}case 1:{if(!s){ba=1;ca=0;aa=23}else{Y=1;Z=0;_=E;$=s;aa=22}break}default:{Y=1;Z=0;_=E;$=s;aa=22}}if((aa|0)==22)while(1){aa=0;G=Rn(Y|0,Z|0,1)|0;C=I;c=_;_=Wn(_|0,$|0,2)|0;if(!($>>>0>0|($|0)==0&c>>>0>7)){ba=G;ca=C;aa=23;break}else{Y=G;Z=C;$=I;aa=22}}if((aa|0)==23)while(1){aa=0;C=up(E|0,s|0,ba|0,ca|0)|0;G=Tn(C|0,I|0,ba|0,ca|0)|0;C=Wn(G|0,I|0,1)|0;G=I;c=on(C|0,G|0,C|0,G|0)|0;D=I;if(D>>>0>s>>>0|(D|0)==(s|0)&c>>>0>E>>>0){ba=C;ca=G;aa=23}else{W=C;X=G;break}}E=on(W|0,X|0,Q|0,v|0)|0;s=I;G=on(W|0,X|0,w|0,t|0)|0;C=I;c=Tn(E|0,s|0,V|0,m|0)|0;D=I;H=Tn(G|0,C|0,R|0,o|0)|0;K=I;x=zk(c|0,D|0,N|0,L|0)|0;D=I;c=zk(H|0,K|0,N|0,L|0)|0;K=I;H=Vn(V|0,m|0,E|0,s|0)|0;s=I;E=Vn(R|0,o|0,G|0,C|0)|0;C=I;G=zk(H|0,s|0,N|0,L|0)|0;s=I;H=zk(E|0,C|0,N|0,L|0)|0;C=I;E=e<<1;F=f[d+(E<<2)>>2]|0;M=((F|0)<0)<<31>>31;B=f[d+((E|1)<<2)>>2]|0;E=((B|0)<0)<<31>>31;O=Vn(F|0,M|0,x|0,D|0)|0;J=I;P=Vn(B|0,E|0,c|0,K|0)|0;U=I;T=on(O|0,J|0,O|0,J|0)|0;J=I;O=on(P|0,U|0,P|0,U|0)|0;U=Tn(O|0,I|0,T|0,J|0)|0;J=I;T=Vn(F|0,M|0,G|0,s|0)|0;M=I;F=Vn(B|0,E|0,H|0,C|0)|0;E=I;B=on(T|0,M|0,T|0,M|0)|0;M=I;T=on(F|0,E|0,F|0,E|0)|0;E=Tn(T|0,I|0,B|0,M|0)|0;M=I;B=a+16|0;T=a+20|0;F=f[T>>2]|0;O=f[a+24>>2]|0;P=(F|0)==(O<<5|0);if(J>>>0>>0|(J|0)==(M|0)&U>>>0>>0){do if(P)if((F+1|0)<0)mq(B);else{E=O<<6;U=F+32&-32;hi(B,F>>>0<1073741823?(E>>>0>>0?U:E):2147483647);da=f[T>>2]|0;break}else da=F;while(0);f[T>>2]=da+1;L=(f[B>>2]|0)+(da>>>5<<2)|0;f[L>>2]=f[L>>2]|1<<(da&31);ea=x;fa=c;ga=K;ha=D}else{do if(P)if((F+1|0)<0)mq(B);else{L=O<<6;N=F+32&-32;hi(B,F>>>0<1073741823?(L>>>0>>0?N:L):2147483647);ia=f[T>>2]|0;break}else ia=F;while(0);f[T>>2]=ia+1;F=(f[B>>2]|0)+(ia>>>5<<2)|0;f[F>>2]=f[F>>2]&~(1<<(ia&31));ea=G;fa=H;ga=C;ha=s}f[a+8>>2]=ea;f[a+12>>2]=fa;u=g;return 1}while(0);do if(q)ja=n<<1;else{if((e|0)>0){ja=(e<<1)+-2|0;break}fa=a+8|0;f[fa>>2]=0;f[fa+4>>2]=0;u=g;return 1}while(0);f[a+8>>2]=f[d+(ja<<2)>>2];f[a+12>>2]=f[d+(ja+1<<2)>>2];u=g;return 1}function ub(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=Oa,D=0,E=0.0,F=0,G=0;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){m=b[o>>0]|0;q=g+(r<<3)|0;f[q>>2]=m;f[q+4>>2]=((m|0)<0)<<31>>31;r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<3)|0,0,(e<<24>>24)-o<<3|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=g+(t<<3)|0;f[k>>2]=h[m>>0];f[k+4>>2]=0;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<3)|0,0,(e<<24>>24)-m<<3|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){o=d[l>>1]|0;k=g+(q<<3)|0;f[k>>2]=o;f[k+4>>2]=((o|0)<0)<<31>>31;q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<3)|0,0,(e<<24>>24)-l<<3|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){m=g+(k<<3)|0;f[m>>2]=j[r>>1];f[m+4>>2]=0;k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<3)|0,0,(e<<24>>24)-r<<3|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=on(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Tn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){l=f[t>>2]|0;m=g+(o<<3)|0;f[m>>2]=l;f[m+4>>2]=((l|0)<0)<<31>>31;o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(t<<3)|0,0,(e<<24>>24)-t<<3|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=on(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Tn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){r=g+(m<<3)|0;f[r>>2]=f[q>>2];f[r+4>>2]=0;m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(q<<3)|0,0,(e<<24>>24)-q<<3|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=on(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Tn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){t=k;r=f[t+4>>2]|0;z=g+(l<<3)|0;f[z>>2]=f[t>>2];f[z+4>>2]=r;l=l+1|0;r=b[q>>0]|0;if((l|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){A=r;break}else k=k+8|0}}else A=m;k=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(k<<3)|0,0,(e<<24>>24)-k<<3|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;r=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;z=Tn(r|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+z|0;z=0;while(1){q=o;r=f[q+4>>2]|0;t=g+(z<<3)|0;f[t>>2]=f[q>>2];f[t+4>>2]=r;z=z+1|0;r=b[k>>0]|0;if((z|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){B=r;break}else o=o+8|0}}else B=l;o=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<3)|0,0,(e<<24>>24)-o<<3|0)|0;i=1;return i|0}case 9:{o=a+24|0;z=b[o>>0]|0;if((z<<24>>24>e<<24>>24?e:z)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;r=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(r|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){C=$(n[m>>2]);k=+K(+C)>=1.0?(+C>0.0?~~+Y(+J(+C/4294967296.0),4294967295.0)>>>0:~~+W((+C-+(~~+C>>>0))/4294967296.0)>>>0):0;r=g+(t<<3)|0;f[r>>2]=~~+C>>>0;f[r+4>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){D=k;break}else m=m+4|0}}else D=z;m=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<3)|0,0,(e<<24>>24)-m<<3|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;r=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+r|0;r=0;while(1){E=+p[l>>3];o=+K(E)>=1.0?(E>0.0?~~+Y(+J(E/4294967296.0),4294967295.0)>>>0:~~+W((E-+(~~E>>>0))/4294967296.0)>>>0):0;k=g+(r<<3)|0;f[k>>2]=~~E>>>0;f[k+4>>2]=o;r=r+1|0;o=b[m>>0]|0;if((r|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){F=o;break}else l=l+8|0}}else F=t;l=F<<24>>24;if(F<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<3)|0,0,(e<<24>>24)-l<<3|0)|0;i=1;return i|0}case 11:{l=a+24|0;r=b[l>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){m=f[f[a>>2]>>2]|0;z=a+40|0;o=on(f[z>>2]|0,f[z+4>>2]|0,f[c>>2]|0,0)|0;z=a+48|0;k=Tn(o|0,I|0,f[z>>2]|0,f[z+4>>2]|0)|0;z=m+k|0;k=0;while(1){m=g+(k<<3)|0;f[m>>2]=h[z>>0];f[m+4>>2]=0;k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){G=m;break}else z=z+1|0}}else G=r;z=G<<24>>24;if(G<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(z<<3)|0,0,(e<<24>>24)-z<<3|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function vb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;c=u;u=u+16|0;d=c+8|0;e=c;if((f[a+92>>2]|0)==(f[a+88>>2]|0)){u=c;return 1}g=a+52|0;h=f[g>>2]|0;if((h|0)==(f[a+56>>2]|0)){Ci(a+48|0,b);i=b}else{f[h>>2]=f[b>>2];f[g>>2]=h+4;i=b}b=a+84|0;f[b>>2]=0;h=a+4|0;g=f[h>>2]|0;j=f[i>>2]|0;k=j+1|0;if((j|0)!=-1){l=((k>>>0)%3|0|0)==0?j+-2|0:k;if((l|0)==-1)m=-1;else m=f[(f[g>>2]|0)+(l<<2)>>2]|0;l=(((j>>>0)%3|0|0)==0?2:-1)+j|0;if((l|0)==-1){n=m;o=-1}else{n=m;o=f[(f[g>>2]|0)+(l<<2)>>2]|0}}else{n=-1;o=-1}l=a+36|0;g=f[l>>2]|0;m=g+(n>>>5<<2)|0;j=1<<(n&31);k=f[m>>2]|0;if(!(k&j)){f[m>>2]=k|j;j=f[i>>2]|0;k=j+1|0;if((j|0)==-1)p=-1;else p=((k>>>0)%3|0|0)==0?j+-2|0:k;f[e>>2]=p;k=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((p>>>0)/3|0)*12|0)+(((p>>>0)%3|0)<<2)>>2]|0;p=f[a+20>>2]|0;f[d>>2]=k;j=f[p+4>>2]|0;p=j+4|0;m=f[p>>2]|0;if((m|0)==(f[j+8>>2]|0))Ci(j,d);else{f[m>>2]=k;f[p>>2]=m+4}m=a+12|0;p=f[m>>2]|0;k=p+4|0;j=f[k>>2]|0;if((j|0)==(f[p+8>>2]|0)){Ci(p,e);q=f[m>>2]|0}else{f[j>>2]=f[e>>2];f[k>>2]=j+4;q=p}p=q+24|0;f[(f[q+12>>2]|0)+(n<<2)>>2]=f[p>>2];f[p>>2]=(f[p>>2]|0)+1;r=f[l>>2]|0}else r=g;g=r+(o>>>5<<2)|0;r=1<<(o&31);p=f[g>>2]|0;if(!(p&r)){f[g>>2]=p|r;r=f[i>>2]|0;do if((r|0)!=-1)if(!((r>>>0)%3|0)){s=r+2|0;break}else{s=r+-1|0;break}else s=-1;while(0);f[e>>2]=s;r=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((s>>>0)/3|0)*12|0)+(((s>>>0)%3|0)<<2)>>2]|0;s=f[a+20>>2]|0;f[d>>2]=r;p=f[s+4>>2]|0;s=p+4|0;g=f[s>>2]|0;if((g|0)==(f[p+8>>2]|0))Ci(p,d);else{f[g>>2]=r;f[s>>2]=g+4}g=a+12|0;s=f[g>>2]|0;r=s+4|0;p=f[r>>2]|0;if((p|0)==(f[s+8>>2]|0)){Ci(s,e);t=f[g>>2]|0}else{f[p>>2]=f[e>>2];f[r>>2]=p+4;t=s}s=t+24|0;f[(f[t+12>>2]|0)+(o<<2)>>2]=f[s>>2];f[s>>2]=(f[s>>2]|0)+1}s=f[i>>2]|0;if((s|0)==-1)v=-1;else v=f[(f[f[h>>2]>>2]|0)+(s<<2)>>2]|0;s=(f[l>>2]|0)+(v>>>5<<2)|0;o=1<<(v&31);t=f[s>>2]|0;if(!(o&t)){f[s>>2]=t|o;o=f[i>>2]|0;f[e>>2]=o;t=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((o>>>0)/3|0)*12|0)+(((o>>>0)%3|0)<<2)>>2]|0;o=f[a+20>>2]|0;f[d>>2]=t;s=f[o+4>>2]|0;o=s+4|0;p=f[o>>2]|0;if((p|0)==(f[s+8>>2]|0))Ci(s,d);else{f[p>>2]=t;f[o>>2]=p+4}p=a+12|0;o=f[p>>2]|0;t=o+4|0;s=f[t>>2]|0;if((s|0)==(f[o+8>>2]|0)){Ci(o,e);w=f[p>>2]|0}else{f[s>>2]=f[e>>2];f[t>>2]=s+4;w=o}o=w+24|0;f[(f[w+12>>2]|0)+(v<<2)>>2]=f[o>>2];f[o>>2]=(f[o>>2]|0)+1}o=f[b>>2]|0;a:do if((o|0)<3){v=a+24|0;w=a+16|0;s=a+20|0;t=a+12|0;p=a+88|0;r=o;while(1){g=r;while(1){x=a+48+(g*12|0)+4|0;y=f[x>>2]|0;if((f[a+48+(g*12|0)>>2]|0)!=(y|0))break;if((g|0)<2)g=g+1|0;else break a}n=y+-4|0;q=f[n>>2]|0;f[x>>2]=n;f[b>>2]=g;f[i>>2]=q;if((q|0)==-1)break;n=(q>>>0)/3|0;j=f[v>>2]|0;do if(!(f[j+(n>>>5<<2)>>2]&1<<(n&31))){k=q;m=j;b:while(1){z=(k>>>0)/3|0;A=m+(z>>>5<<2)|0;f[A>>2]=1<<(z&31)|f[A>>2];A=f[i>>2]|0;if((A|0)==-1)B=-1;else B=f[(f[f[h>>2]>>2]|0)+(A<<2)>>2]|0;z=(f[l>>2]|0)+(B>>>5<<2)|0;C=1<<(B&31);D=f[z>>2]|0;if(!(C&D)){f[z>>2]=D|C;C=f[i>>2]|0;f[e>>2]=C;D=f[(f[(f[w>>2]|0)+96>>2]|0)+(((C>>>0)/3|0)*12|0)+(((C>>>0)%3|0)<<2)>>2]|0;C=f[s>>2]|0;f[d>>2]=D;z=f[C+4>>2]|0;C=z+4|0;E=f[C>>2]|0;if((E|0)==(f[z+8>>2]|0))Ci(z,d);else{f[E>>2]=D;f[C>>2]=E+4}E=f[t>>2]|0;C=E+4|0;D=f[C>>2]|0;if((D|0)==(f[E+8>>2]|0)){Ci(E,e);F=f[t>>2]|0}else{f[D>>2]=f[e>>2];f[C>>2]=D+4;F=E}E=F+24|0;f[(f[F+12>>2]|0)+(B<<2)>>2]=f[E>>2];f[E>>2]=(f[E>>2]|0)+1;G=f[i>>2]|0}else G=A;A=f[h>>2]|0;if((G|0)==-1){H=93;break}E=G+1|0;D=((E>>>0)%3|0|0)==0?G+-2|0:E;if((D|0)==-1)I=-1;else I=f[(f[A+12>>2]|0)+(D<<2)>>2]|0;D=(((G>>>0)%3|0|0)==0?2:-1)+G|0;if((D|0)==-1)J=-1;else J=f[(f[A+12>>2]|0)+(D<<2)>>2]|0;D=(I|0)==-1;E=D?-1:(I>>>0)/3|0;C=(J|0)==-1;z=C?-1:(J>>>0)/3|0;if(D)K=1;else K=(f[(f[v>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)!=0;do if(C)if(K){H=93;break b}else H=82;else{if(f[(f[v>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)if(K){H=93;break b}else{H=82;break}E=f[(f[A>>2]|0)+(J<<2)>>2]|0;if(!(1<<(E&31)&f[(f[l>>2]|0)+(E>>>5<<2)>>2])){L=(f[p>>2]|0)+(E<<2)|0;E=f[L>>2]|0;f[L>>2]=E+1;M=(E|0)>0?1:2}else M=0;if(K?(M|0)<=(f[b>>2]|0):0){N=J;break}f[d>>2]=J;E=a+48+(M*12|0)+4|0;L=f[E>>2]|0;if((L|0)==(f[a+48+(M*12|0)+8>>2]|0))Ci(a+48+(M*12|0)|0,d);else{f[L>>2]=J;f[E>>2]=L+4}if((f[b>>2]|0)>(M|0))f[b>>2]=M;if(K){H=93;break b}else H=82}while(0);if((H|0)==82){H=0;if(D)O=-1;else O=f[(f[f[h>>2]>>2]|0)+(I<<2)>>2]|0;if(!(1<<(O&31)&f[(f[l>>2]|0)+(O>>>5<<2)>>2])){A=(f[p>>2]|0)+(O<<2)|0;z=f[A>>2]|0;f[A>>2]=z+1;P=(z|0)>0?1:2}else P=0;if((P|0)>(f[b>>2]|0))break;else N=I}f[i>>2]=N;k=N;m=f[v>>2]|0}if((H|0)==93){H=0;Q=f[b>>2]|0;break}f[d>>2]=I;m=a+48+(P*12|0)+4|0;k=f[m>>2]|0;if((k|0)==(f[a+48+(P*12|0)+8>>2]|0))Ci(a+48+(P*12|0)|0,d);else{f[k>>2]=I;f[m>>2]=k+4}k=f[b>>2]|0;if((k|0)>(P|0)){f[b>>2]=P;R=P}else R=k;Q=R}else Q=g;while(0);if((Q|0)<3)r=Q;else break a}u=c;return 1}while(0);f[i>>2]=-1;u=c;return 1}function wb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}wb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;wb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function xb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}xb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;xb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}yb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;yb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function zb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}zb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;zb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Ab(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Ab(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Ab(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}} +function Bb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Bb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Bb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Cb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Cb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Cb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Db(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Db(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Db(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Eb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Eb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Eb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Fb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Fb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Fb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Gb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Gb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Gb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Hb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Hb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Hb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Ib(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Ib(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Jb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Jb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Jb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Kb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Kb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Kb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Lb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Lb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Lb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Mb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Mb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Nb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Nb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Ob(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){f[g+(r<<2)>>2]=b[o>>0];r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){f[g+(t<<2)>>2]=h[m>>0];t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=d[l>>1];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=j[r>>1];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=on(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Tn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){f[g+(o<<2)>>2]=f[t>>2];o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(t<<2)|0,0,(e<<24>>24)-t<<2|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=on(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Tn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){f[g+(m<<2)>>2]=f[q>>2];m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(q<<2)|0,0,(e<<24>>24)-q<<2|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=on(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Tn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){f[g+(l<<2)>>2]=f[k>>2];l=l+1|0;t=b[q>>0]|0;if((l|0)>=((t<<24>>24>e<<24>>24?e:t)<<24>>24|0)){z=t;break}else k=k+8|0}}else z=m;k=z<<24>>24;if(z<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(k<<2)|0,0,(e<<24>>24)-k<<2|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;t=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(t|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+r|0;r=0;while(1){f[g+(r<<2)>>2]=f[o>>2];r=r+1|0;q=b[k>>0]|0;if((r|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){A=q;break}else o=o+8|0}}else A=l;o=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 9:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=~~$(n[m>>2])>>>0;f[g+(t<<2)>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){B=k;break}else m=m+4|0}}else B=r;m=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=~~+p[l>>3]>>>0;q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){C=o;break}else l=l+8|0}}else C=t;l=C<<24>>24;if(C<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 11:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=h[r>>0];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){D=m;break}else r=r+1|0}}else D=q;r=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function Pb(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){f[g+(r<<2)>>2]=b[o>>0];r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){f[g+(t<<2)>>2]=h[m>>0];t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=d[l>>1];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=j[r>>1];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=on(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Tn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){f[g+(o<<2)>>2]=f[t>>2];o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(t<<2)|0,0,(e<<24>>24)-t<<2|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=on(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Tn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){f[g+(m<<2)>>2]=f[q>>2];m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(q<<2)|0,0,(e<<24>>24)-q<<2|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=on(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Tn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){f[g+(l<<2)>>2]=f[k>>2];l=l+1|0;t=b[q>>0]|0;if((l|0)>=((t<<24>>24>e<<24>>24?e:t)<<24>>24|0)){z=t;break}else k=k+8|0}}else z=m;k=z<<24>>24;if(z<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(k<<2)|0,0,(e<<24>>24)-k<<2|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;t=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(t|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+r|0;r=0;while(1){f[g+(r<<2)>>2]=f[o>>2];r=r+1|0;q=b[k>>0]|0;if((r|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){A=q;break}else o=o+8|0}}else A=l;o=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 9:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=~~$(n[m>>2]);f[g+(t<<2)>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){B=k;break}else m=m+4|0}}else B=r;m=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=~~+p[l>>3];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){C=o;break}else l=l+8|0}}else C=t;l=C<<24>>24;if(C<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 11:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=h[r>>0];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){D=m;break}else r=r+1|0}}else D=q;r=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function Qb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=Oa,J=0,K=0,L=0,M=0,N=Oa;e=u;u=u+48|0;g=e+36|0;h=e+24|0;i=e+12|0;j=e;if(!(ih(a,c,d)|0)){k=0;u=e;return k|0}l=f[(f[(f[c+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;if((f[l+28>>2]|0)!=9){k=0;u=e;return k|0}m=c+48|0;c=f[m>>2]|0;o=dn(32)|0;f[g>>2]=o;f[g+8>>2]=-2147483616;f[g+4>>2]=17;p=o;q=12932;r=p+17|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[o+17>>0]=0;o=c+16|0;s=f[o>>2]|0;if(s){t=o;v=s;a:while(1){s=v;while(1){if((f[s+16>>2]|0)>=(d|0))break;w=f[s+4>>2]|0;if(!w){x=t;break a}else s=w}v=f[s>>2]|0;if(!v){x=s;break}else t=s}if(((x|0)!=(o|0)?(f[x+16>>2]|0)<=(d|0):0)?(o=x+20|0,(sh(o,g)|0)!=0):0)y=yk(o,g,-1)|0;else z=12}else z=12;if((z|0)==12)y=yk(c,g,-1)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if((y|0)<1){k=0;u=e;return k|0}c=f[m>>2]|0;o=dn(32)|0;f[g>>2]=o;f[g+8>>2]=-2147483616;f[g+4>>2]=19;p=o;q=13005;r=p+19|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[o+19>>0]=0;o=c+16|0;x=f[o>>2]|0;if(x){t=o;v=x;b:while(1){x=v;while(1){if((f[x+16>>2]|0)>=(d|0))break;w=f[x+4>>2]|0;if(!w){A=t;break b}else x=w}v=f[x>>2]|0;if(!v){A=x;break}else t=x}if((A|0)!=(o|0)?(f[A+16>>2]|0)<=(d|0):0)B=A+20|0;else z=24}else z=24;if((z|0)==24)B=c;if(!(sh(B,g)|0))C=0;else{B=f[m>>2]|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;c=dn(32)|0;f[h>>2]=c;f[h+8>>2]=-2147483616;f[h+4>>2]=18;p=c;q=13025;r=p+18|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[c+18>>0]=0;c=B+16|0;A=f[c>>2]|0;if(A){o=c;t=A;c:while(1){A=t;while(1){if((f[A+16>>2]|0)>=(d|0))break;v=f[A+4>>2]|0;if(!v){D=o;break c}else A=v}t=f[A>>2]|0;if(!t){D=A;break}else o=A}if((D|0)!=(c|0)?(f[D+16>>2]|0)<=(d|0):0)E=D+20|0;else z=34}else z=34;if((z|0)==34)E=B;B=(sh(E,h)|0)!=0;if((b[h+11>>0]|0)<0)br(f[h>>2]|0);C=B}if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if(!C){Kd(a+40|0,l,y)|0;k=1;u=e;return k|0}C=l+24|0;l=b[C>>0]|0;B=l<<24>>24;f[i>>2]=0;E=i+4|0;f[E>>2]=0;f[i+8>>2]=0;do if(l<<24>>24)if(l<<24>>24<0)mq(i);else{D=B<<2;c=dn(D)|0;f[i>>2]=c;o=c+(B<<2)|0;f[i+8>>2]=o;hj(c|0,0,D|0)|0;f[E>>2]=o;F=c;break}else F=0;while(0);B=f[m>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;l=dn(32)|0;f[j>>2]=l;f[j+8>>2]=-2147483616;f[j+4>>2]=19;p=l;q=13005;r=p+19|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[l+19>>0]=0;l=b[C>>0]|0;c=l<<24>>24;o=B+16|0;D=f[o>>2]|0;if(D){t=o;x=D;d:while(1){D=x;while(1){if((f[D+16>>2]|0)>=(d|0))break;v=f[D+4>>2]|0;if(!v){G=t;break d}else D=v}x=f[D>>2]|0;if(!x){G=D;break}else t=D}if(((G|0)!=(o|0)?(f[G+16>>2]|0)<=(d|0):0)?(o=G+20|0,(sh(o,j)|0)!=0):0){t=zg(o,j)|0;if((t|0)!=(G+24|0)){dj(g,t+28|0);t=g+11|0;G=b[t>>0]|0;o=G<<24>>24<0;if(!((o?f[g+4>>2]|0:G&255)|0))H=G;else{if(l<<24>>24>0){x=o?f[g>>2]|0:g;o=0;do{I=$(pq(x,h));A=x;x=f[h>>2]|0;if((A|0)==(x|0))break;n[F+(o<<2)>>2]=I;o=o+1|0}while((o|0)<(c|0));J=b[t>>0]|0}else J=G;H=J}if(H<<24>>24<0)br(f[g>>2]|0)}}else z=64}else z=64;if((z|0)==64?(H=zg(B,j)|0,(H|0)!=(B+4|0)):0){dj(g,H+28|0);H=g+11|0;B=b[H>>0]|0;J=B<<24>>24<0;if(!((J?f[g+4>>2]|0:B&255)|0))K=B;else{if(l<<24>>24>0){l=J?f[g>>2]|0:g;J=0;do{I=$(pq(l,h));G=l;l=f[h>>2]|0;if((G|0)==(l|0))break;n[F+(J<<2)>>2]=I;J=J+1|0}while((J|0)<(c|0));L=b[H>>0]|0}else L=B;K=L}if(K<<24>>24<0)br(f[g>>2]|0)}if((b[j+11>>0]|0)<0)br(f[j>>2]|0);j=f[m>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;m=dn(32)|0;f[g>>2]=m;f[g+8>>2]=-2147483616;f[g+4>>2]=18;p=m;q=13025;r=p+18|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[m+18>>0]=0;m=j+16|0;q=f[m>>2]|0;if(q){p=m;r=q;e:while(1){q=r;while(1){if((f[q+16>>2]|0)>=(d|0))break;K=f[q+4>>2]|0;if(!K){M=p;break e}else q=K}r=f[q>>2]|0;if(!r){M=q;break}else p=q}if(((M|0)!=(m|0)?(f[M+16>>2]|0)<=(d|0):0)?(d=M+20|0,(sh(d,g)|0)!=0):0)N=$(kk(d,g,$(1.0)));else z=86}else z=86;if((z|0)==86)N=$(kk(j,g,$(1.0)));if((b[g+11>>0]|0)<0)br(f[g>>2]|0);wl(a+40|0,y,f[i>>2]|0,b[C>>0]|0,N);C=f[i>>2]|0;if(C|0){i=f[E>>2]|0;if((i|0)!=(C|0))f[E>>2]=i+(~((i+-4-C|0)>>>2)<<2);br(C)}k=1;u=e;return k|0}function Rb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;e=u;u=u+64|0;d=e+48|0;h=e+36|0;i=e+24|0;j=e+16|0;k=e+8|0;l=e;m=e+32|0;n=a+60|0;f[a+68>>2]=g;g=a+108|0;lk(g);o=a+56|0;p=f[o>>2]|0;q=(f[p+4>>2]|0)-(f[p>>2]|0)|0;r=q>>2;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;s=i;f[s>>2]=0;f[s+4>>2]=0;s=j;f[s>>2]=0;f[s+4>>2]=0;s=k;f[s>>2]=0;f[s+4>>2]=0;s=l;f[s>>2]=0;f[s+4>>2]=0;if((q|0)<=0){u=e;return 1}q=h+4|0;s=h+8|0;t=a+104|0;v=i+4|0;w=a+100|0;x=j+4|0;y=a+8|0;z=a+16|0;A=a+32|0;B=a+12|0;C=a+28|0;D=a+20|0;E=a+24|0;F=a+96|0;a=k+4|0;G=l+4|0;H=f[p>>2]|0;if((f[p+4>>2]|0)==(H|0)){J=p;mq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];fc(n,d,h);H=f[h>>2]|0;p=(H|0)>-1?H:0-H|0;M=f[q>>2]|0;N=(M|0)>-1?M:0-M|0;O=Tn(N|0,((N|0)<0)<<31>>31|0,p|0,((p|0)<0)<<31>>31|0)|0;p=f[s>>2]|0;N=(p|0)>-1;P=N?p:0-p|0;p=Tn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((p|0)==0&(P|0)==0){O=f[t>>2]|0;Q=O;R=h;S=M;T=O}else{O=f[t>>2]|0;U=((O|0)<0)<<31>>31;V=on(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=zk(V|0,I|0,p|0,P|0)|0;f[h>>2]=H;V=on(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=zk(V|0,I|0,p|0,P|0)|0;f[q>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=s;S=M;T=O}f[R>>2]=Q;O=f[h>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[s>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[s>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[s>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){p=(N|0)==(Z|0);if(!(P&p)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(p&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);f[i>>2]=$;f[v>>2]=aa;P=0-S|0;M=0-_|0;f[h>>2]=0-O;f[q>>2]=P;f[s>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(p=(N|0)==(ca|0),!(M&p)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(p&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);f[j>>2]=da;f[x>>2]=ea;N=K<<1;M=b+(N<<2)|0;H=f[y>>2]|0;if((H|0)>0){O=0;P=i;p=H;while(1){if((p|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;U=f[z>>2]|0;if((V|0)>(U|0)){fa=f[A>>2]|0;f[fa+(H<<2)>>2]=U;ga=fa}else{fa=f[B>>2]|0;U=f[A>>2]|0;f[U+(H<<2)>>2]=(V|0)<(fa|0)?fa:V;ga=U}H=H+1|0;U=f[y>>2]|0}while((H|0)<(U|0));ha=ga;ia=U}else{ha=f[A>>2]|0;ia=p}H=(f[M+(O<<2)>>2]|0)-(f[ha+(O<<2)>>2]|0)|0;U=k+(O<<2)|0;f[U>>2]=H;ja=f[C>>2]|0;if((H|0)>=(ja|0)){if((H|0)>(f[E>>2]|0)){ka=H-(f[D>>2]|0)|0;la=52}}else{ka=(f[D>>2]|0)+H|0;la=52}if((la|0)==52){la=0;f[U>>2]=ka}O=O+1|0;if((O|0)>=(ia|0))break;else{P=ha;p=ia}}if((ia|0)>0){p=0;P=j;O=ia;U=ja;while(1){if((O|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;fa=f[z>>2]|0;if((V|0)>(fa|0))f[ha+(H<<2)>>2]=fa;else{fa=f[B>>2]|0;f[ha+(H<<2)>>2]=(V|0)<(fa|0)?fa:V}H=H+1|0;ma=f[y>>2]|0}while((H|0)<(ma|0));na=f[C>>2]|0;oa=ma}else{na=U;oa=O}H=(f[M+(p<<2)>>2]|0)-(f[ha+(p<<2)>>2]|0)|0;V=l+(p<<2)|0;f[V>>2]=H;if((H|0)>=(na|0)){if((H|0)>(f[E>>2]|0)){pa=H-(f[D>>2]|0)|0;la=65}}else{pa=(f[D>>2]|0)+H|0;la=65}if((la|0)==65){la=0;f[V>>2]=pa}p=p+1|0;if((p|0)>=(oa|0))break;else{P=ha;O=oa;U=na}}}}U=f[k>>2]|0;O=f[t>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))qa=(f[F>>2]|0)+U|0;else qa=U;else qa=U-(f[F>>2]|0)|0;f[k>>2]=qa;U=f[a>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ra=(f[F>>2]|0)+U|0;else ra=U;else ra=U-(f[F>>2]|0)|0;f[a>>2]=ra;U=f[l>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))sa=(f[F>>2]|0)+U|0;else sa=U;else sa=U-(f[F>>2]|0)|0;f[l>>2]=sa;U=f[G>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ta=(f[F>>2]|0)+U|0;else ta=U;else ta=U-(f[F>>2]|0)|0;f[G>>2]=ta;if((((ra|0)>-1?ra:0-ra|0)+((qa|0)>-1?qa:0-qa|0)|0)<(((sa|0)>-1?sa:0-sa|0)+((ta|0)>-1?ta:0-ta|0)|0)){Vi(g,0);ua=k}else{Vi(g,1);ua=l}U=f[ua>>2]|0;if((U|0)<0)va=(f[F>>2]|0)+U|0;else va=U;U=c+(N<<2)|0;f[U>>2]=va;O=f[ua+4>>2]|0;if((O|0)<0)wa=(f[F>>2]|0)+O|0;else wa=O;f[U+4>>2]=wa;K=K+1|0;if((K|0)>=(r|0)){la=3;break}U=f[o>>2]|0;L=f[U>>2]|0;if((f[U+4>>2]|0)-L>>2>>>0<=K>>>0){J=U;la=4;break}}if((la|0)==3){u=e;return 1}else if((la|0)==4)mq(J);return 0}function Sb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;e=u;u=u+64|0;d=e+48|0;h=e+36|0;i=e+24|0;j=e+16|0;k=e+8|0;l=e;m=e+32|0;n=a+60|0;f[a+68>>2]=g;g=a+108|0;lk(g);o=a+56|0;p=f[o>>2]|0;q=(f[p+4>>2]|0)-(f[p>>2]|0)|0;r=q>>2;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;s=i;f[s>>2]=0;f[s+4>>2]=0;s=j;f[s>>2]=0;f[s+4>>2]=0;s=k;f[s>>2]=0;f[s+4>>2]=0;s=l;f[s>>2]=0;f[s+4>>2]=0;if((q|0)<=0){u=e;return 1}q=h+4|0;s=h+8|0;t=a+104|0;v=i+4|0;w=a+100|0;x=j+4|0;y=a+8|0;z=a+16|0;A=a+32|0;B=a+12|0;C=a+28|0;D=a+20|0;E=a+24|0;F=a+96|0;a=k+4|0;G=l+4|0;H=f[p>>2]|0;if((f[p+4>>2]|0)==(H|0)){J=p;mq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];$b(n,d,h);H=f[h>>2]|0;p=(H|0)>-1?H:0-H|0;M=f[q>>2]|0;N=(M|0)>-1?M:0-M|0;O=Tn(N|0,((N|0)<0)<<31>>31|0,p|0,((p|0)<0)<<31>>31|0)|0;p=f[s>>2]|0;N=(p|0)>-1;P=N?p:0-p|0;p=Tn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((p|0)==0&(P|0)==0){O=f[t>>2]|0;Q=O;R=h;S=M;T=O}else{O=f[t>>2]|0;U=((O|0)<0)<<31>>31;V=on(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=zk(V|0,I|0,p|0,P|0)|0;f[h>>2]=H;V=on(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=zk(V|0,I|0,p|0,P|0)|0;f[q>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=s;S=M;T=O}f[R>>2]=Q;O=f[h>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[s>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[s>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[s>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){p=(N|0)==(Z|0);if(!(P&p)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(p&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);f[i>>2]=$;f[v>>2]=aa;P=0-S|0;M=0-_|0;f[h>>2]=0-O;f[q>>2]=P;f[s>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(p=(N|0)==(ca|0),!(M&p)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(p&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);f[j>>2]=da;f[x>>2]=ea;N=K<<1;M=b+(N<<2)|0;H=f[y>>2]|0;if((H|0)>0){O=0;P=i;p=H;while(1){if((p|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;U=f[z>>2]|0;if((V|0)>(U|0)){fa=f[A>>2]|0;f[fa+(H<<2)>>2]=U;ga=fa}else{fa=f[B>>2]|0;U=f[A>>2]|0;f[U+(H<<2)>>2]=(V|0)<(fa|0)?fa:V;ga=U}H=H+1|0;U=f[y>>2]|0}while((H|0)<(U|0));ha=ga;ia=U}else{ha=f[A>>2]|0;ia=p}H=(f[M+(O<<2)>>2]|0)-(f[ha+(O<<2)>>2]|0)|0;U=k+(O<<2)|0;f[U>>2]=H;ja=f[C>>2]|0;if((H|0)>=(ja|0)){if((H|0)>(f[E>>2]|0)){ka=H-(f[D>>2]|0)|0;la=52}}else{ka=(f[D>>2]|0)+H|0;la=52}if((la|0)==52){la=0;f[U>>2]=ka}O=O+1|0;if((O|0)>=(ia|0))break;else{P=ha;p=ia}}if((ia|0)>0){p=0;P=j;O=ia;U=ja;while(1){if((O|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;fa=f[z>>2]|0;if((V|0)>(fa|0))f[ha+(H<<2)>>2]=fa;else{fa=f[B>>2]|0;f[ha+(H<<2)>>2]=(V|0)<(fa|0)?fa:V}H=H+1|0;ma=f[y>>2]|0}while((H|0)<(ma|0));na=f[C>>2]|0;oa=ma}else{na=U;oa=O}H=(f[M+(p<<2)>>2]|0)-(f[ha+(p<<2)>>2]|0)|0;V=l+(p<<2)|0;f[V>>2]=H;if((H|0)>=(na|0)){if((H|0)>(f[E>>2]|0)){pa=H-(f[D>>2]|0)|0;la=65}}else{pa=(f[D>>2]|0)+H|0;la=65}if((la|0)==65){la=0;f[V>>2]=pa}p=p+1|0;if((p|0)>=(oa|0))break;else{P=ha;O=oa;U=na}}}}U=f[k>>2]|0;O=f[t>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))qa=(f[F>>2]|0)+U|0;else qa=U;else qa=U-(f[F>>2]|0)|0;f[k>>2]=qa;U=f[a>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ra=(f[F>>2]|0)+U|0;else ra=U;else ra=U-(f[F>>2]|0)|0;f[a>>2]=ra;U=f[l>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))sa=(f[F>>2]|0)+U|0;else sa=U;else sa=U-(f[F>>2]|0)|0;f[l>>2]=sa;U=f[G>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ta=(f[F>>2]|0)+U|0;else ta=U;else ta=U-(f[F>>2]|0)|0;f[G>>2]=ta;if((((ra|0)>-1?ra:0-ra|0)+((qa|0)>-1?qa:0-qa|0)|0)<(((sa|0)>-1?sa:0-sa|0)+((ta|0)>-1?ta:0-ta|0)|0)){Vi(g,0);ua=k}else{Vi(g,1);ua=l}U=f[ua>>2]|0;if((U|0)<0)va=(f[F>>2]|0)+U|0;else va=U;U=c+(N<<2)|0;f[U>>2]=va;O=f[ua+4>>2]|0;if((O|0)<0)wa=(f[F>>2]|0)+O|0;else wa=O;f[U+4>>2]=wa;K=K+1|0;if((K|0)>=(r|0)){la=3;break}U=f[o>>2]|0;L=f[U>>2]|0;if((f[U+4>>2]|0)-L>>2>>>0<=K>>>0){J=U;la=4;break}}if((la|0)==3){u=e;return 1}else if((la|0)==4)mq(J);return 0}function Tb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;c=u;u=u+16|0;d=c+8|0;e=c;g=f[b>>2]|0;if((g|0)==-1){h=1;u=c;return h|0}i=(g>>>0)/3|0;j=a+24|0;if(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0){h=1;u=c;return h|0}i=a+48|0;k=f[i>>2]|0;l=a+52|0;m=f[l>>2]|0;if((m|0)==(k|0))n=k;else{o=m+(~((m+-4-k|0)>>>2)<<2)|0;f[l>>2]=o;n=o}o=a+56|0;if((n|0)==(f[o>>2]|0))Ci(i,b);else{f[n>>2]=g;f[l>>2]=n+4}n=a+4|0;g=f[n>>2]|0;k=f[b>>2]|0;m=k+1|0;do if((k|0)!=-1){p=f[g+28>>2]|0;q=f[p+((((m>>>0)%3|0|0)==0?k+-2|0:m)<<2)>>2]|0;if(!((k>>>0)%3|0)){r=q;s=k+2|0;t=p;break}else{r=q;s=k+-1|0;t=p;break}}else{p=f[g+28>>2]|0;r=f[p+-4>>2]|0;s=-1;t=p}while(0);g=f[t+(s<<2)>>2]|0;if((r|0)==-1|(g|0)==-1){h=0;u=c;return h|0}s=a+36|0;t=f[s>>2]|0;k=t+(r>>>5<<2)|0;m=1<<(r&31);p=f[k>>2]|0;if(!(p&m)){f[k>>2]=p|m;m=f[b>>2]|0;p=m+1|0;if((m|0)==-1)v=-1;else v=((p>>>0)%3|0|0)==0?m+-2|0:p;f[e>>2]=v;p=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((v>>>0)/3|0)*12|0)+(((v>>>0)%3|0)<<2)>>2]|0;v=f[a+20>>2]|0;f[d>>2]=p;m=f[v+4>>2]|0;v=m+4|0;k=f[v>>2]|0;if((k|0)==(f[m+8>>2]|0))Ci(m,d);else{f[k>>2]=p;f[v>>2]=k+4}k=a+12|0;v=f[k>>2]|0;p=v+4|0;m=f[p>>2]|0;if((m|0)==(f[v+8>>2]|0)){Ci(v,e);w=f[k>>2]|0}else{f[m>>2]=f[e>>2];f[p>>2]=m+4;w=v}v=w+24|0;f[(f[w+12>>2]|0)+(r<<2)>>2]=f[v>>2];f[v>>2]=(f[v>>2]|0)+1;x=f[s>>2]|0}else x=t;t=x+(g>>>5<<2)|0;x=1<<(g&31);v=f[t>>2]|0;if(!(v&x)){f[t>>2]=v|x;x=f[b>>2]|0;do if((x|0)!=-1)if(!((x>>>0)%3|0)){y=x+2|0;break}else{y=x+-1|0;break}else y=-1;while(0);f[e>>2]=y;x=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((y>>>0)/3|0)*12|0)+(((y>>>0)%3|0)<<2)>>2]|0;y=f[a+20>>2]|0;f[d>>2]=x;v=f[y+4>>2]|0;y=v+4|0;t=f[y>>2]|0;if((t|0)==(f[v+8>>2]|0))Ci(v,d);else{f[t>>2]=x;f[y>>2]=t+4}t=a+12|0;y=f[t>>2]|0;x=y+4|0;v=f[x>>2]|0;if((v|0)==(f[y+8>>2]|0)){Ci(y,e);z=f[t>>2]|0}else{f[v>>2]=f[e>>2];f[x>>2]=v+4;z=y}y=z+24|0;f[(f[z+12>>2]|0)+(g<<2)>>2]=f[y>>2];f[y>>2]=(f[y>>2]|0)+1}y=f[i>>2]|0;g=f[l>>2]|0;if((y|0)==(g|0)){h=1;u=c;return h|0}z=a+16|0;v=a+20|0;x=a+12|0;a=g;g=y;a:while(1){y=f[a+-4>>2]|0;f[b>>2]=y;t=(y>>>0)/3|0;if((y|0)!=-1?(y=(f[j>>2]|0)+(t>>>5<<2)|0,r=1<<(t&31),t=f[y>>2]|0,(t&r|0)==0):0){f[y>>2]=t|r;r=f[n>>2]|0;t=f[b>>2]|0;y=f[(f[r+28>>2]|0)+(t<<2)>>2]|0;if((y|0)==-1){h=0;A=79;break}else{B=y;C=r;D=t}b:while(1){t=(f[s>>2]|0)+(B>>>5<<2)|0;r=1<<(B&31);y=f[t>>2]|0;do if(!(y&r)){w=f[(f[C+40>>2]|0)+(B<<2)>>2]|0;if((w|0)==-1)E=1;else{m=f[(f[f[C+64>>2]>>2]|0)+(w<<2)>>2]|0;E=(1<<(m&31)&f[(f[C+12>>2]|0)+(m>>>5<<2)>>2]|0)!=0}f[t>>2]=y|r;m=f[b>>2]|0;f[e>>2]=m;w=f[(f[(f[z>>2]|0)+96>>2]|0)+(((m>>>0)/3|0)*12|0)+(((m>>>0)%3|0)<<2)>>2]|0;m=f[v>>2]|0;f[d>>2]=w;p=f[m+4>>2]|0;m=p+4|0;k=f[m>>2]|0;if((k|0)==(f[p+8>>2]|0))Ci(p,d);else{f[k>>2]=w;f[m>>2]=k+4}k=f[x>>2]|0;m=k+4|0;w=f[m>>2]|0;if((w|0)==(f[k+8>>2]|0)){Ci(k,e);F=f[x>>2]|0}else{f[w>>2]=f[e>>2];f[m>>2]=w+4;F=k}k=F+24|0;f[(f[F+12>>2]|0)+(B<<2)>>2]=f[k>>2];f[k>>2]=(f[k>>2]|0)+1;k=f[n>>2]|0;w=f[b>>2]|0;if(E){G=w;H=k;A=59;break}m=w+1|0;do if((w|0)==-1)I=-1;else{p=((m>>>0)%3|0|0)==0?w+-2|0:m;if((p|0)==-1){I=-1;break}if(f[(f[k>>2]|0)+(p>>>5<<2)>>2]&1<<(p&31)|0){I=-1;break}I=f[(f[(f[k+64>>2]|0)+12>>2]|0)+(p<<2)>>2]|0}while(0);f[b>>2]=I;J=(I>>>0)/3|0;K=k}else{G=D;H=C;A=59}while(0);if((A|0)==59){A=0;r=G+1|0;if((G|0)==-1){A=60;break}y=((r>>>0)%3|0|0)==0?G+-2|0:r;do if((y|0)==-1)L=-1;else{if(f[(f[H>>2]|0)+(y>>>5<<2)>>2]&1<<(y&31)|0){L=-1;break}L=f[(f[(f[H+64>>2]|0)+12>>2]|0)+(y<<2)>>2]|0}while(0);f[d>>2]=L;y=(((G>>>0)%3|0|0)==0?2:-1)+G|0;do if((y|0)==-1)M=-1;else{if(f[(f[H>>2]|0)+(y>>>5<<2)>>2]&1<<(y&31)|0){M=-1;break}M=f[(f[(f[H+64>>2]|0)+12>>2]|0)+(y<<2)>>2]|0}while(0);y=(L|0)==-1;r=(L>>>0)/3|0;t=y?-1:r;m=(M|0)==-1;w=(M>>>0)/3|0;p=m?-1:w;do if(!y){q=f[j>>2]|0;if(f[q+(t>>>5<<2)>>2]&1<<(t&31)|0){A=69;break}if(m){N=L;O=r;break}if(!(f[q+(p>>>5<<2)>>2]&1<<(p&31))){A=74;break b}else{N=L;O=r}}else A=69;while(0);if((A|0)==69){A=0;if(m){A=71;break}if(!(f[(f[j>>2]|0)+(p>>>5<<2)>>2]&1<<(p&31))){N=M;O=w}else{A=71;break}}f[b>>2]=N;J=O;K=H}r=(f[j>>2]|0)+(J>>>5<<2)|0;f[r>>2]=f[r>>2]|1<<(J&31);D=f[b>>2]|0;B=f[(f[K+28>>2]|0)+(D<<2)>>2]|0;if((B|0)==-1){h=0;A=79;break a}else C=K}do if((A|0)==60){A=0;f[d>>2]=-1;A=71}else if((A|0)==74){A=0;r=f[l>>2]|0;f[r+-4>>2]=M;if((r|0)==(f[o>>2]|0)){Ci(i,d);P=f[l>>2]|0;break}else{f[r>>2]=f[d>>2];t=r+4|0;f[l>>2]=t;P=t;break}}while(0);if((A|0)==71){A=0;t=(f[l>>2]|0)+-4|0;f[l>>2]=t;P=t}Q=f[i>>2]|0;R=P}else{t=a+-4|0;f[l>>2]=t;Q=g;R=t}if((Q|0)==(R|0)){h=1;A=79;break}else{a=R;g=Q}}if((A|0)==79){u=c;return h|0}return 0}function Ub(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,Y=Oa,Z=0,_=0,aa=0,ba=0;d=u;u=u+16|0;e=d;g=a+16|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[g>>2]=$(1.0);i=a+20|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[a+36>>2]=$(1.0);j=f[c+8>>2]|0;a:do if(j|0){k=a+4|0;l=a+12|0;m=a+8|0;o=j;p=j;while(1){q=o+8|0;r=b[q+11>>0]|0;s=r<<24>>24<0;t=s?f[q>>2]|0:q;v=s?f[o+12>>2]|0:r&255;if(v>>>0>3){r=t;s=v;w=v;while(1){x=X(h[r>>0]|h[r+1>>0]<<8|h[r+2>>0]<<16|h[r+3>>0]<<24,1540483477)|0;s=(X(x>>>24^x,1540483477)|0)^(X(s,1540483477)|0);w=w+-4|0;if(w>>>0<=3)break;else r=r+4|0}r=v+-4|0;w=r&-4;y=r-w|0;z=t+(w+4)|0;A=s}else{y=v;z=t;A=v}switch(y|0){case 3:{B=h[z+2>>0]<<16^A;C=8;break}case 2:{B=A;C=8;break}case 1:{D=A;C=9;break}default:E=A}if((C|0)==8){C=0;D=h[z+1>>0]<<8^B;C=9}if((C|0)==9){C=0;E=X(D^h[z>>0],1540483477)|0}w=X(E>>>13^E,1540483477)|0;r=w>>>15^w;w=f[k>>2]|0;x=(w|0)==0;b:do if(!x){F=w+-1|0;G=(F&w|0)==0;if(!G)if(r>>>0>>0)H=r;else H=(r>>>0)%(w>>>0)|0;else H=r&F;I=f[(f[a>>2]|0)+(H<<2)>>2]|0;if((I|0)!=0?(J=f[I>>2]|0,(J|0)!=0):0){I=(v|0)==0;if(G){if(I){G=J;while(1){K=f[G+4>>2]|0;if(!((K|0)==(r|0)|(K&F|0)==(H|0))){L=H;C=50;break b}K=b[G+8+11>>0]|0;if(!((K<<24>>24<0?f[G+12>>2]|0:K&255)|0))break b;G=f[G>>2]|0;if(!G){L=H;C=50;break b}}}else M=J;while(1){G=f[M+4>>2]|0;if(!((G|0)==(r|0)|(G&F|0)==(H|0))){L=H;C=50;break b}G=M+8|0;K=b[G+11>>0]|0;N=K<<24>>24<0;O=K&255;do if(((N?f[M+12>>2]|0:O)|0)==(v|0)){K=f[G>>2]|0;if(N)if(!(Pk(K,t,v)|0))break b;else break;if((b[t>>0]|0)==(K&255)<<24>>24){K=G;P=O;Q=t;do{P=P+-1|0;K=K+1|0;if(!P)break b;Q=Q+1|0}while((b[K>>0]|0)==(b[Q>>0]|0))}}while(0);M=f[M>>2]|0;if(!M){L=H;C=50;break b}}}if(I){F=J;while(1){O=f[F+4>>2]|0;if((O|0)!=(r|0)){if(O>>>0>>0)R=O;else R=(O>>>0)%(w>>>0)|0;if((R|0)!=(H|0)){L=H;C=50;break b}}O=b[F+8+11>>0]|0;if(!((O<<24>>24<0?f[F+12>>2]|0:O&255)|0))break b;F=f[F>>2]|0;if(!F){L=H;C=50;break b}}}else S=J;while(1){F=f[S+4>>2]|0;if((F|0)!=(r|0)){if(F>>>0>>0)T=F;else T=(F>>>0)%(w>>>0)|0;if((T|0)!=(H|0)){L=H;C=50;break b}}F=S+8|0;I=b[F+11>>0]|0;O=I<<24>>24<0;G=I&255;do if(((O?f[S+12>>2]|0:G)|0)==(v|0)){I=f[F>>2]|0;if(O)if(!(Pk(I,t,v)|0))break b;else break;if((b[t>>0]|0)==(I&255)<<24>>24){I=F;N=G;Q=t;do{N=N+-1|0;I=I+1|0;if(!N)break b;Q=Q+1|0}while((b[I>>0]|0)==(b[Q>>0]|0))}}while(0);S=f[S>>2]|0;if(!S){L=H;C=50;break}}}else{L=H;C=50}}else{L=0;C=50}while(0);if((C|0)==50){C=0;pi(e,a,r,q);U=$(((f[l>>2]|0)+1|0)>>>0);V=$(w>>>0);Y=$(n[g>>2]);do if(x|$(Y*V)>>0<3|(w+-1&w|0)!=0)&1;v=~~$(W($(U/Y)))>>>0;Ph(a,t>>>0>>0?v:t);t=f[k>>2]|0;v=t+-1|0;if(!(v&t)){Z=t;_=v&r;break}if(r>>>0>>0){Z=t;_=r}else{Z=t;_=(r>>>0)%(t>>>0)|0}}else{Z=w;_=L}while(0);w=f[(f[a>>2]|0)+(_<<2)>>2]|0;if(!w){f[f[e>>2]>>2]=f[m>>2];f[m>>2]=f[e>>2];f[(f[a>>2]|0)+(_<<2)>>2]=m;r=f[e>>2]|0;x=f[r>>2]|0;if(x|0){q=f[x+4>>2]|0;x=Z+-1|0;if(x&Z)if(q>>>0>>0)aa=q;else aa=(q>>>0)%(Z>>>0)|0;else aa=q&x;f[(f[a>>2]|0)+(aa<<2)>>2]=r}}else{f[f[e>>2]>>2]=f[w>>2];f[w>>2]=f[e>>2]}f[l>>2]=(f[l>>2]|0)+1}w=f[p>>2]|0;if(!w)break a;else{o=w;p=w}}}while(0);e=f[c+28>>2]|0;if(!e){u=d;return}else ba=e;do{e=ba;c=dn(40)|0;Ub(c,f[e+20>>2]|0);aa=xc(i,e+8|0)|0;e=f[aa>>2]|0;f[aa>>2]=c;if(e|0){c=f[e+28>>2]|0;if(c|0){aa=c;do{c=aa;aa=f[aa>>2]|0;bi(c+8|0);br(c)}while((aa|0)!=0)}aa=e+20|0;c=f[aa>>2]|0;f[aa>>2]=0;if(c|0)br(c);c=f[e+8>>2]|0;if(c|0){aa=c;do{c=aa;aa=f[aa>>2]|0;a=c+8|0;Z=f[c+20>>2]|0;if(Z|0){_=c+24|0;if((f[_>>2]|0)!=(Z|0))f[_>>2]=Z;br(Z)}if((b[a+11>>0]|0)<0)br(f[a>>2]|0);br(c)}while((aa|0)!=0)}aa=f[e>>2]|0;f[e>>2]=0;if(aa|0)br(aa);br(e)}ba=f[ba>>2]|0}while((ba|0)!=0);u=d;return}function Vb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+16|0;j=g+12|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=r;z=0;A=0;B=r;C=r;D=0;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=on(f[r>>2]|0,f[r+4>>2]|0,y+z|0,0)|0;r=Tn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8|h[G+2>>0]<<16|h[G+3>>0]<<24;f[j>>2]=r;G=r&65535;F=r>>>16;H=F&65535;J=(r&65535^318)+239^F;F=(D|0)==0;a:do if(!F){K=D+-1|0;L=(K&D|0)==0;if(!L)if(J>>>0>>0)M=J;else M=(J>>>0)%(D>>>0)|0;else M=J&K;N=f[(f[i>>2]|0)+(M<<2)>>2]|0;do if(N|0?(O=f[N>>2]|0,O|0):0){b:do if(L){P=O;while(1){Q=f[P+4>>2]|0;R=(Q|0)==(J|0);if(!(R|(Q&K|0)==(M|0))){S=27;break b}if((R?(R=P+8|0,(d[R>>1]|0)==G<<16>>16):0)?(d[R+2>>1]|0)==H<<16>>16:0){T=P;S=26;break b}P=f[P>>2]|0;if(!P){S=27;break}}}else{P=O;while(1){R=f[P+4>>2]|0;if((R|0)==(J|0)){Q=P+8|0;if((d[Q>>1]|0)==G<<16>>16?(d[Q+2>>1]|0)==H<<16>>16:0){T=P;S=26;break b}}else{if(R>>>0>>0)U=R;else U=(R>>>0)%(D>>>0)|0;if((U|0)!=(M|0)){S=27;break b}}P=f[P>>2]|0;if(!P){S=27;break}}}while(0);if((S|0)==26){S=0;f[E+(z<<2)>>2]=f[T+12>>2];V=e;X=A;Y=C;Z=B;_=E;break a}else if((S|0)==27){S=0;if(F){aa=0;S=46;break a}else break}}while(0);K=D+-1|0;L=(K&D|0)==0;if(!L)if(J>>>0>>0)ba=J;else ba=(J>>>0)%(D>>>0)|0;else ba=K&J;N=f[(f[i>>2]|0)+(ba<<2)>>2]|0;if((N|0)!=0?(O=f[N>>2]|0,(O|0)!=0):0){if(L){L=O;while(1){N=f[L+4>>2]|0;if(!((N|0)==(J|0)|(N&K|0)==(ba|0))){aa=ba;S=46;break a}N=L+8|0;if((d[N>>1]|0)==G<<16>>16?(d[N+2>>1]|0)==H<<16>>16:0){S=61;break a}L=f[L>>2]|0;if(!L){aa=ba;S=46;break a}}}else ca=O;while(1){L=f[ca+4>>2]|0;if((L|0)!=(J|0)){if(L>>>0>>0)da=L;else da=(L>>>0)%(D>>>0)|0;if((da|0)!=(ba|0)){aa=ba;S=46;break a}}L=ca+8|0;if((d[L>>1]|0)==G<<16>>16?(d[L+2>>1]|0)==H<<16>>16:0){S=61;break a}ca=f[ca>>2]|0;if(!ca){aa=ba;S=46;break}}}else{aa=ba;S=46}}else{aa=0;S=46}while(0);if((S|0)==46){S=0;H=dn(16)|0;G=H+8|0;d[G>>1]=r;d[G+2>>1]=r>>>16;f[H+12>>2]=A;f[H+4>>2]=J;f[H>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(D>>>0);ga=$(n[l>>2]);do if(F|$(ga*fa)>>0<3|(D+-1&D|0)!=0)&1;O=~~$(W($(ea/ga)))>>>0;Eh(i,G>>>0>>0?O:G);G=f[o>>2]|0;O=G+-1|0;if(!(O&G)){ha=G;ia=O&J;break}if(J>>>0>>0){ha=G;ia=J}else{ha=G;ia=(J>>>0)%(G>>>0)|0}}else{ha=D;ia=aa}while(0);J=(f[i>>2]|0)+(ia<<2)|0;F=f[J>>2]|0;if(!F){f[H>>2]=f[v>>2];f[v>>2]=H;f[J>>2]=v;J=f[H>>2]|0;if(J|0){r=f[J+4>>2]|0;J=ha+-1|0;if(J&ha)if(r>>>0>>0)ja=r;else ja=(r>>>0)%(ha>>>0)|0;else ja=r&J;ka=(f[i>>2]|0)+(ja<<2)|0;S=59}}else{f[H>>2]=f[F>>2];ka=F;S=59}if((S|0)==59){S=0;f[ka>>2]=H}f[t>>2]=(f[t>>2]|0)+1;S=61}if((S|0)==61){S=0;F=w;J=f[F>>2]|0;r=on(J|0,f[F+4>>2]|0,A|0,0)|0;Rg((f[f[x>>2]>>2]|0)+r|0,j|0,J|0)|0;J=f[k>>2]|0;f[J+(z<<2)>>2]=A;V=J;X=A+1|0;Y=J;Z=J;_=J}J=z+1|0;la=f[m>>2]|0;if(J>>>0>=la>>>0)break;e=V;z=J;A=X;B=Z;C=Y;D=f[o>>2]|0;E=_}if((X|0)==(la|0))ma=Z;else{Z=a+84|0;if(!(b[Z>>0]|0)){_=f[a+72>>2]|0;E=f[a+68>>2]|0;o=E;if((_|0)==(E|0))na=V;else{D=_-E>>2;E=0;do{_=o+(E<<2)|0;f[_>>2]=f[Y+(f[_>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=V}}else{b[Z>>0]=0;Z=a+68|0;V=a+72|0;D=f[V>>2]|0;E=f[Z>>2]|0;Y=D-E>>2;o=E;E=D;if(la>>>0<=Y>>>0)if(la>>>0>>0?(D=o+(la<<2)|0,(D|0)!=(E|0)):0){f[V>>2]=E+(~((E+-4-D|0)>>>2)<<2);oa=la}else oa=la;else{kh(Z,la-Y|0,1204);oa=f[m>>2]|0}Y=f[k>>2]|0;if(!oa)na=Y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[Y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=Y}}f[m>>2]=X;ma=na}if(!ma)pa=X;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);br(ma);pa=X}}else pa=0;X=f[i+8>>2]|0;if(X|0){ma=X;do{X=ma;ma=f[ma>>2]|0;br(X)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}br(ma);u=g;return pa|0}function Wb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;c=u;u=u+16|0;d=c+8|0;e=c;g=f[b>>2]|0;if((g|0)==-1){h=1;u=c;return h|0}i=(g>>>0)/3|0;j=a+24|0;if(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0){h=1;u=c;return h|0}i=a+48|0;k=f[i>>2]|0;l=a+52|0;m=f[l>>2]|0;if((m|0)==(k|0))n=k;else{o=m+(~((m+-4-k|0)>>>2)<<2)|0;f[l>>2]=o;n=o}o=a+56|0;if((n|0)==(f[o>>2]|0))Ci(i,b);else{f[n>>2]=g;f[l>>2]=n+4}n=a+4|0;g=f[n>>2]|0;k=f[b>>2]|0;m=k+1|0;if((k|0)==-1){h=0;u=c;return h|0}p=((m>>>0)%3|0|0)==0?k+-2|0:m;if((p|0)==-1)q=-1;else q=f[(f[g>>2]|0)+(p<<2)>>2]|0;p=(((k>>>0)%3|0|0)==0?2:-1)+k|0;if((p|0)==-1){h=0;u=c;return h|0}k=f[(f[g>>2]|0)+(p<<2)>>2]|0;if((q|0)==-1|(k|0)==-1){h=0;u=c;return h|0}p=a+36|0;g=f[p>>2]|0;m=g+(q>>>5<<2)|0;r=1<<(q&31);s=f[m>>2]|0;if(!(s&r)){f[m>>2]=s|r;r=f[b>>2]|0;s=r+1|0;if((r|0)==-1)t=-1;else t=((s>>>0)%3|0|0)==0?r+-2|0:s;f[e>>2]=t;s=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((t>>>0)/3|0)*12|0)+(((t>>>0)%3|0)<<2)>>2]|0;t=f[a+20>>2]|0;f[d>>2]=s;r=f[t+4>>2]|0;t=r+4|0;m=f[t>>2]|0;if((m|0)==(f[r+8>>2]|0))Ci(r,d);else{f[m>>2]=s;f[t>>2]=m+4}m=a+12|0;t=f[m>>2]|0;s=t+4|0;r=f[s>>2]|0;if((r|0)==(f[t+8>>2]|0)){Ci(t,e);v=f[m>>2]|0}else{f[r>>2]=f[e>>2];f[s>>2]=r+4;v=t}t=v+24|0;f[(f[v+12>>2]|0)+(q<<2)>>2]=f[t>>2];f[t>>2]=(f[t>>2]|0)+1;w=f[p>>2]|0}else w=g;g=w+(k>>>5<<2)|0;w=1<<(k&31);t=f[g>>2]|0;if(!(t&w)){f[g>>2]=t|w;w=f[b>>2]|0;do if((w|0)!=-1)if(!((w>>>0)%3|0)){x=w+2|0;break}else{x=w+-1|0;break}else x=-1;while(0);f[e>>2]=x;w=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((x>>>0)/3|0)*12|0)+(((x>>>0)%3|0)<<2)>>2]|0;x=f[a+20>>2]|0;f[d>>2]=w;t=f[x+4>>2]|0;x=t+4|0;g=f[x>>2]|0;if((g|0)==(f[t+8>>2]|0))Ci(t,d);else{f[g>>2]=w;f[x>>2]=g+4}g=a+12|0;x=f[g>>2]|0;w=x+4|0;t=f[w>>2]|0;if((t|0)==(f[x+8>>2]|0)){Ci(x,e);y=f[g>>2]|0}else{f[t>>2]=f[e>>2];f[w>>2]=t+4;y=x}x=y+24|0;f[(f[y+12>>2]|0)+(k<<2)>>2]=f[x>>2];f[x>>2]=(f[x>>2]|0)+1}x=f[i>>2]|0;k=f[l>>2]|0;if((x|0)==(k|0)){h=1;u=c;return h|0}y=a+16|0;t=a+20|0;w=a+12|0;a=k;k=x;a:while(1){x=f[a+-4>>2]|0;f[b>>2]=x;g=(x>>>0)/3|0;if((x|0)!=-1?(x=(f[j>>2]|0)+(g>>>5<<2)|0,q=1<<(g&31),g=f[x>>2]|0,(g&q|0)==0):0){f[x>>2]=g|q;q=f[b>>2]|0;if((q|0)==-1){h=0;z=80;break}g=f[n>>2]|0;x=q;b:while(1){q=f[(f[g>>2]|0)+(x<<2)>>2]|0;if((q|0)==-1){h=0;z=80;break a}v=(f[p>>2]|0)+(q>>>5<<2)|0;r=1<<(q&31);s=f[v>>2]|0;do if(!(s&r)){m=f[(f[g+24>>2]|0)+(q<<2)>>2]|0;A=m+1|0;do if((m|0)==-1)B=1;else{C=((A>>>0)%3|0|0)==0?m+-2|0:A;if((C|0)==-1){B=1;break}D=f[(f[g+12>>2]|0)+(C<<2)>>2]|0;C=D+1|0;if((D|0)==-1){B=1;break}B=((((C>>>0)%3|0|0)==0?D+-2|0:C)|0)==-1}while(0);f[v>>2]=s|r;A=f[b>>2]|0;f[e>>2]=A;m=f[(f[(f[y>>2]|0)+96>>2]|0)+(((A>>>0)/3|0)*12|0)+(((A>>>0)%3|0)<<2)>>2]|0;A=f[t>>2]|0;f[d>>2]=m;C=f[A+4>>2]|0;A=C+4|0;D=f[A>>2]|0;if((D|0)==(f[C+8>>2]|0))Ci(C,d);else{f[D>>2]=m;f[A>>2]=D+4}D=f[w>>2]|0;A=D+4|0;m=f[A>>2]|0;if((m|0)==(f[D+8>>2]|0)){Ci(D,e);E=f[w>>2]|0}else{f[m>>2]=f[e>>2];f[A>>2]=m+4;E=D}D=E+24|0;f[(f[E+12>>2]|0)+(q<<2)>>2]=f[D>>2];f[D>>2]=(f[D>>2]|0)+1;D=f[n>>2]|0;m=f[b>>2]|0;if(B)if((m|0)==-1){z=63;break b}else{F=m;G=D;z=64;break}do if((m|0)==-1)H=-1;else{A=m+1|0;C=((A>>>0)%3|0|0)==0?m+-2|0:A;if((C|0)==-1){H=-1;break}H=f[(f[D+12>>2]|0)+(C<<2)>>2]|0}while(0);f[b>>2]=H;I=(H>>>0)/3|0;J=D}else{F=x;G=g;z=64}while(0);if((z|0)==64){z=0;q=F+1|0;r=((q>>>0)%3|0|0)==0?F+-2|0:q;if((r|0)==-1)K=-1;else K=f[(f[G+12>>2]|0)+(r<<2)>>2]|0;f[d>>2]=K;r=(((F>>>0)%3|0|0)==0?2:-1)+F|0;if((r|0)==-1)L=-1;else L=f[(f[G+12>>2]|0)+(r<<2)>>2]|0;r=(K|0)==-1;q=(K>>>0)/3|0;s=r?-1:q;v=(L|0)==-1;m=(L>>>0)/3|0;C=v?-1:m;do if(!r){A=f[j>>2]|0;if(f[A+(s>>>5<<2)>>2]&1<<(s&31)|0){z=70;break}if(v){M=K;N=q;break}if(!(f[A+(C>>>5<<2)>>2]&1<<(C&31))){z=75;break b}else{M=K;N=q}}else z=70;while(0);if((z|0)==70){z=0;if(v){z=72;break}if(!(f[(f[j>>2]|0)+(C>>>5<<2)>>2]&1<<(C&31))){M=L;N=m}else{z=72;break}}f[b>>2]=M;I=N;J=G}q=(f[j>>2]|0)+(I>>>5<<2)|0;f[q>>2]=f[q>>2]|1<<(I&31);x=f[b>>2]|0;if((x|0)==-1){h=0;z=80;break a}else g=J}do if((z|0)==63){z=0;f[d>>2]=-1;z=72}else if((z|0)==75){z=0;g=f[l>>2]|0;f[g+-4>>2]=L;if((g|0)==(f[o>>2]|0)){Ci(i,d);O=f[l>>2]|0;break}else{f[g>>2]=f[d>>2];x=g+4|0;f[l>>2]=x;O=x;break}}while(0);if((z|0)==72){z=0;x=(f[l>>2]|0)+-4|0;f[l>>2]=x;O=x}P=f[i>>2]|0;Q=O}else{x=a+-4|0;f[l>>2]=x;P=k;Q=x}if((P|0)==(Q|0)){h=1;z=80;break}else{a=Q;k=P}}if((z|0)==80){u=c;return h|0}return 0}function Xb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=Oa,da=Oa,ea=Oa,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;e=u;u=u+48|0;g=e+20|0;i=e;j=e+8|0;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=c+48|0;p=c+40|0;m=g+4|0;s=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=f[d>>2]|0;d=q;y=0;z=0;A=q;B=q;C=q;q=0;while(1){D=r;E=f[D>>2]|0;F=f[D+4>>2]|0;D=p;G=on(f[D>>2]|0,f[D+4>>2]|0,x+y|0,0)|0;D=Tn(G|0,I|0,E|0,F|0)|0;F=(f[f[c>>2]>>2]|0)+D|0;D=F;E=h[D>>0]|h[D+1>>0]<<8|h[D+2>>0]<<16|h[D+3>>0]<<24;D=F+4|0;F=h[D>>0]|h[D+1>>0]<<8|h[D+2>>0]<<16|h[D+3>>0]<<24;D=i;f[D>>2]=E;f[D+4>>2]=F;D=(E^318)+239^F;G=(q|0)==0;a:do if(!G){H=q+-1|0;J=(H&q|0)==0;if(!J)if(D>>>0>>0)K=D;else K=(D>>>0)%(q>>>0)|0;else K=D&H;L=f[(f[g>>2]|0)+(K<<2)>>2]|0;do if(L|0?(M=f[L>>2]|0,M|0):0){b:do if(J){N=M;while(1){O=f[N+4>>2]|0;P=(O|0)==(D|0);if(!(P|(O&H|0)==(K|0))){Q=27;break b}if((P?(f[N+8>>2]|0)==(E|0):0)?(f[N+12>>2]|0)==(F|0):0){R=N;Q=26;break b}N=f[N>>2]|0;if(!N){Q=27;break}}}else{N=M;while(1){P=f[N+4>>2]|0;if((P|0)==(D|0)){if((f[N+8>>2]|0)==(E|0)?(f[N+12>>2]|0)==(F|0):0){R=N;Q=26;break b}}else{if(P>>>0>>0)S=P;else S=(P>>>0)%(q>>>0)|0;if((S|0)!=(K|0)){Q=27;break b}}N=f[N>>2]|0;if(!N){Q=27;break}}}while(0);if((Q|0)==26){Q=0;f[A+(y<<2)>>2]=f[R+16>>2];T=d;U=z;V=C;X=B;Y=A;break a}else if((Q|0)==27){Q=0;if(G){Z=0;Q=46;break a}else break}}while(0);H=q+-1|0;J=(H&q|0)==0;if(!J)if(D>>>0>>0)_=D;else _=(D>>>0)%(q>>>0)|0;else _=H&D;L=f[(f[g>>2]|0)+(_<<2)>>2]|0;if((L|0)!=0?(M=f[L>>2]|0,(M|0)!=0):0){if(J){J=M;while(1){L=f[J+4>>2]|0;if(!((L|0)==(D|0)|(L&H|0)==(_|0))){Z=_;Q=46;break a}if((f[J+8>>2]|0)==(E|0)?(f[J+12>>2]|0)==(F|0):0){Q=61;break a}J=f[J>>2]|0;if(!J){Z=_;Q=46;break a}}}else aa=M;while(1){J=f[aa+4>>2]|0;if((J|0)!=(D|0)){if(J>>>0>>0)ba=J;else ba=(J>>>0)%(q>>>0)|0;if((ba|0)!=(_|0)){Z=_;Q=46;break a}}if((f[aa+8>>2]|0)==(E|0)?(f[aa+12>>2]|0)==(F|0):0){Q=61;break a}aa=f[aa>>2]|0;if(!aa){Z=_;Q=46;break}}}else{Z=_;Q=46}}else{Z=0;Q=46}while(0);if((Q|0)==46){Q=0;M=dn(20)|0;J=M+8|0;f[J>>2]=E;f[J+4>>2]=F;f[M+16>>2]=z;f[M+4>>2]=D;f[M>>2]=0;ca=$(((f[s>>2]|0)+1|0)>>>0);da=$(q>>>0);ea=$(n[k>>2]);do if(G|$(ea*da)>>0<3|(q+-1&q|0)!=0)&1;H=~~$(W($(ca/ea)))>>>0;Ih(g,J>>>0>>0?H:J);J=f[m>>2]|0;H=J+-1|0;if(!(H&J)){fa=J;ga=H&D;break}if(D>>>0>>0){fa=J;ga=D}else{fa=J;ga=(D>>>0)%(J>>>0)|0}}else{fa=q;ga=Z}while(0);D=(f[g>>2]|0)+(ga<<2)|0;G=f[D>>2]|0;if(!G){f[M>>2]=f[t>>2];f[t>>2]=M;f[D>>2]=t;D=f[M>>2]|0;if(D|0){F=f[D+4>>2]|0;D=fa+-1|0;if(D&fa)if(F>>>0>>0)ha=F;else ha=(F>>>0)%(fa>>>0)|0;else ha=F&D;ia=(f[g>>2]|0)+(ha<<2)|0;Q=59}}else{f[M>>2]=f[G>>2];ia=G;Q=59}if((Q|0)==59){Q=0;f[ia>>2]=M}f[s>>2]=(f[s>>2]|0)+1;Q=61}if((Q|0)==61){Q=0;G=v;D=f[G>>2]|0;F=on(D|0,f[G+4>>2]|0,z|0,0)|0;Rg((f[f[w>>2]>>2]|0)+F|0,i|0,D|0)|0;D=f[j>>2]|0;f[D+(y<<2)>>2]=z;T=D;U=z+1|0;V=D;X=D;Y=D}D=y+1|0;ja=f[l>>2]|0;if(D>>>0>=ja>>>0)break;d=T;y=D;z=U;A=Y;B=X;C=V;q=f[m>>2]|0}if((U|0)==(ja|0))ka=X;else{X=a+84|0;if(!(b[X>>0]|0)){m=f[a+72>>2]|0;q=f[a+68>>2]|0;C=q;if((m|0)==(q|0))la=T;else{B=m-q>>2;q=0;do{m=C+(q<<2)|0;f[m>>2]=f[V+(f[m>>2]<<2)>>2];q=q+1|0}while(q>>>0>>0);la=T}}else{b[X>>0]=0;X=a+68|0;T=a+72|0;B=f[T>>2]|0;q=f[X>>2]|0;V=B-q>>2;C=q;q=B;if(ja>>>0<=V>>>0)if(ja>>>0>>0?(B=C+(ja<<2)|0,(B|0)!=(q|0)):0){f[T>>2]=q+(~((q+-4-B|0)>>>2)<<2);ma=ja}else ma=ja;else{kh(X,ja-V|0,1204);ma=f[l>>2]|0}V=f[j>>2]|0;if(!ma)la=V;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[V+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);la=V}}f[l>>2]=U;ka=la}if(!ka)na=U;else{la=f[o>>2]|0;if((la|0)!=(ka|0))f[o>>2]=la+(~((la+-4-ka|0)>>>2)<<2);br(ka);na=U}}else na=0;U=f[g+8>>2]|0;if(U|0){ka=U;do{U=ka;ka=f[ka>>2]|0;br(U)}while((ka|0)!=0)}ka=f[g>>2]|0;f[g>>2]=0;if(!ka){u=e;return na|0}br(ka);u=e;return na|0}function Yb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+12|0;j=g+32|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=r;z=0;A=0;B=r;C=r;D=0;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=on(f[r>>2]|0,f[r+4>>2]|0,y+z|0,0)|0;r=Tn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8;d[j>>1]=r;G=r&255;F=(r&65535)>>>8;H=F&255;J=((r&255^318)+239<<16>>16^F)&65535;F=(D|0)==0;a:do if(!F){K=D+-1|0;L=(K&D|0)==0;if(!L)if(D>>>0>J>>>0)M=J;else M=(J>>>0)%(D>>>0)|0;else M=K&J;N=f[(f[i>>2]|0)+(M<<2)>>2]|0;do if(N|0?(O=f[N>>2]|0,O|0):0){b:do if(L){P=O;while(1){Q=f[P+4>>2]|0;R=(Q|0)==(J|0);if(!(R|(Q&K|0)==(M|0))){S=27;break b}if((R?(R=P+8|0,(b[R>>0]|0)==G<<24>>24):0)?(b[R+1>>0]|0)==H<<24>>24:0){T=P;S=26;break b}P=f[P>>2]|0;if(!P){S=27;break}}}else{P=O;while(1){R=f[P+4>>2]|0;if((R|0)==(J|0)){Q=P+8|0;if((b[Q>>0]|0)==G<<24>>24?(b[Q+1>>0]|0)==H<<24>>24:0){T=P;S=26;break b}}else{if(R>>>0>>0)U=R;else U=(R>>>0)%(D>>>0)|0;if((U|0)!=(M|0)){S=27;break b}}P=f[P>>2]|0;if(!P){S=27;break}}}while(0);if((S|0)==26){S=0;f[E+(z<<2)>>2]=f[T+12>>2];V=e;X=A;Y=C;Z=B;_=E;break a}else if((S|0)==27){S=0;if(F){aa=0;S=46;break a}else break}}while(0);K=D+-1|0;L=(K&D|0)==0;if(!L)if(D>>>0>J>>>0)ba=J;else ba=(J>>>0)%(D>>>0)|0;else ba=K&J;N=f[(f[i>>2]|0)+(ba<<2)>>2]|0;if((N|0)!=0?(O=f[N>>2]|0,(O|0)!=0):0){if(L){L=O;while(1){N=f[L+4>>2]|0;if(!((N|0)==(J|0)|(N&K|0)==(ba|0))){aa=ba;S=46;break a}N=L+8|0;if((b[N>>0]|0)==G<<24>>24?(b[N+1>>0]|0)==H<<24>>24:0){S=61;break a}L=f[L>>2]|0;if(!L){aa=ba;S=46;break a}}}else ca=O;while(1){L=f[ca+4>>2]|0;if((L|0)!=(J|0)){if(L>>>0>>0)da=L;else da=(L>>>0)%(D>>>0)|0;if((da|0)!=(ba|0)){aa=ba;S=46;break a}}L=ca+8|0;if((b[L>>0]|0)==G<<24>>24?(b[L+1>>0]|0)==H<<24>>24:0){S=61;break a}ca=f[ca>>2]|0;if(!ca){aa=ba;S=46;break}}}else{aa=ba;S=46}}else{aa=0;S=46}while(0);if((S|0)==46){S=0;H=dn(16)|0;G=H+8|0;b[G>>0]=r;b[G+1>>0]=r>>8;f[H+12>>2]=A;f[H+4>>2]=J;f[H>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(D>>>0);ga=$(n[l>>2]);do if(F|$(ga*fa)>>0<3|(D+-1&D|0)!=0)&1;O=~~$(W($(ea/ga)))>>>0;Lh(i,G>>>0>>0?O:G);G=f[o>>2]|0;O=G+-1|0;if(!(O&G)){ha=G;ia=O&J;break}if(G>>>0>J>>>0){ha=G;ia=J}else{ha=G;ia=(J>>>0)%(G>>>0)|0}}else{ha=D;ia=aa}while(0);J=(f[i>>2]|0)+(ia<<2)|0;F=f[J>>2]|0;if(!F){f[H>>2]=f[v>>2];f[v>>2]=H;f[J>>2]=v;J=f[H>>2]|0;if(J|0){r=f[J+4>>2]|0;J=ha+-1|0;if(J&ha)if(r>>>0>>0)ja=r;else ja=(r>>>0)%(ha>>>0)|0;else ja=r&J;ka=(f[i>>2]|0)+(ja<<2)|0;S=59}}else{f[H>>2]=f[F>>2];ka=F;S=59}if((S|0)==59){S=0;f[ka>>2]=H}f[t>>2]=(f[t>>2]|0)+1;S=61}if((S|0)==61){S=0;F=w;J=f[F>>2]|0;r=on(J|0,f[F+4>>2]|0,A|0,0)|0;Rg((f[f[x>>2]>>2]|0)+r|0,j|0,J|0)|0;J=f[k>>2]|0;f[J+(z<<2)>>2]=A;V=J;X=A+1|0;Y=J;Z=J;_=J}J=z+1|0;la=f[m>>2]|0;if(J>>>0>=la>>>0)break;e=V;z=J;A=X;B=Z;C=Y;D=f[o>>2]|0;E=_}if((X|0)==(la|0))ma=Z;else{Z=a+84|0;if(!(b[Z>>0]|0)){_=f[a+72>>2]|0;E=f[a+68>>2]|0;o=E;if((_|0)==(E|0))na=V;else{D=_-E>>2;E=0;do{_=o+(E<<2)|0;f[_>>2]=f[Y+(f[_>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=V}}else{b[Z>>0]=0;Z=a+68|0;V=a+72|0;D=f[V>>2]|0;E=f[Z>>2]|0;Y=D-E>>2;o=E;E=D;if(la>>>0<=Y>>>0)if(la>>>0>>0?(D=o+(la<<2)|0,(D|0)!=(E|0)):0){f[V>>2]=E+(~((E+-4-D|0)>>>2)<<2);oa=la}else oa=la;else{kh(Z,la-Y|0,1204);oa=f[m>>2]|0}Y=f[k>>2]|0;if(!oa)na=Y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[Y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=Y}}f[m>>2]=X;ma=na}if(!ma)pa=X;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);br(ma);pa=X}}else pa=0;X=f[i+8>>2]|0;if(X|0){ma=X;do{X=ma;ma=f[ma>>2]|0;br(X)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}br(ma);u=g;return pa|0}function Zb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;c=u;u=u+16|0;d=c+8|0;e=c;g=c+4|0;h=a+16|0;i=f[h>>2]|0;j=a+20|0;k=f[j>>2]|0;if((k|0)==(i|0))l=i;else{m=k+(~((k+-4-i|0)>>>2)<<2)|0;f[j>>2]=m;l=m}m=a+24|0;if((l|0)==(f[m>>2]|0)){Ci(h,b);n=f[h>>2]|0;o=f[j>>2]|0}else{f[l>>2]=f[b>>2];k=l+4|0;f[j>>2]=k;n=i;o=k}k=f[a+8>>2]|0;i=(f[k+100>>2]|0)-(f[k+96>>2]|0)|0;k=(i|0)/12|0;if((n|0)==(o|0)){u=c;return 1}n=a+28|0;l=(i|0)>0;i=a+164|0;p=a+12|0;q=a+76|0;r=a+80|0;s=a+72|0;t=a+200|0;v=a+320|0;w=a+152|0;x=a+84|0;y=a+324|0;z=a+292|0;A=a+304|0;B=a+316|0;C=a+328|0;D=a+336|0;E=a+332|0;F=a+168|0;G=a+140|0;H=a+120|0;I=o;do{o=f[I+-4>>2]|0;f[b>>2]=o;a:do if((o|0)!=-1?(J=(o>>>0)/3|0,K=f[n>>2]|0,(f[K+(J>>>5<<2)>>2]&1<<(J&31)|0)==0):0){if(l){J=0;L=K;b:while(1){K=J+1|0;f[i>>2]=(f[i>>2]|0)+1;M=f[b>>2]|0;N=(M|0)==-1?-1:(M>>>0)/3|0;M=L+(N>>>5<<2)|0;f[M>>2]=1<<(N&31)|f[M>>2];M=f[q>>2]|0;if((M|0)==(f[r>>2]|0))Ci(s,b);else{f[M>>2]=f[b>>2];f[q>>2]=M+4}f[v>>2]=f[b>>2];M=f[b>>2]|0;if((M|0)==-1)O=-1;else O=f[(f[f[p>>2]>>2]|0)+(M<<2)>>2]|0;P=(f[(f[w>>2]|0)+(O<<2)>>2]|0)!=-1;Q=(f[x>>2]|0)+(O>>>5<<2)|0;R=1<<(O&31);S=f[Q>>2]|0;do if(!(S&R)){f[Q>>2]=S|R;if(P){T=f[b>>2]|0;U=38;break}f[y>>2]=(f[y>>2]|0)+1;V=f[v>>2]|0;W=V+1|0;do if((V|0)!=-1){X=((W>>>0)%3|0|0)==0?V+-2|0:W;if(!((V>>>0)%3|0)){Y=V+2|0;Z=X;break}else{Y=V+-1|0;Z=X;break}}else{Y=-1;Z=-1}while(0);V=f[z>>2]|0;W=f[A>>2]|0;X=W+(f[V+(Z<<2)>>2]<<2)|0;_=f[X>>2]|0;f[X>>2]=_+-1;X=W+(f[V+(Y<<2)>>2]<<2)|0;f[X>>2]=(f[X>>2]|0)+-1;X=f[B>>2]|0;if((X|0)!=-1){V=f[C>>2]|0;if((_|0)<(V|0))$=V;else{W=f[E>>2]|0;$=(_|0)>(W|0)?W:_}_=$-V|0;V=f[D>>2]|0;W=f[3384+(X<<2)>>2]|0;f[d>>2]=W;X=V+(_*12|0)+4|0;aa=f[X>>2]|0;if(aa>>>0<(f[V+(_*12|0)+8>>2]|0)>>>0){f[aa>>2]=W;f[X>>2]=aa+4}else Ci(V+(_*12|0)|0,d)}f[B>>2]=0;_=f[b>>2]|0;V=_+1|0;if((_|0)!=-1?(aa=((V>>>0)%3|0|0)==0?_+-2|0:V,(aa|0)!=-1):0)ba=f[(f[(f[p>>2]|0)+12>>2]|0)+(aa<<2)>>2]|0;else ba=-1;f[b>>2]=ba}else{T=M;U=38}while(0);if((U|0)==38){U=0;M=T+1|0;if((T|0)==-1){U=43;break}R=((M>>>0)%3|0|0)==0?T+-2|0:M;if((R|0)==-1)ca=-1;else ca=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;f[e>>2]=ca;R=(((T>>>0)%3|0|0)==0?2:-1)+T|0;if((R|0)==-1)da=-1;else da=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;R=(ca|0)==-1;S=R?-1:(ca>>>0)/3|0;ea=(da|0)==-1;fa=ea?-1:(da>>>0)/3|0;Q=((M>>>0)%3|0|0)==0?T+-2|0:M;if(((Q|0)!=-1?(M=f[(f[p>>2]|0)+12>>2]|0,aa=f[M+(Q<<2)>>2]|0,(aa|0)!=-1):0)?(Q=(aa>>>0)/3|0,aa=f[n>>2]|0,(f[aa+(Q>>>5<<2)>>2]&1<<(Q&31)|0)==0):0){Q=(((T>>>0)%3|0|0)==0?2:-1)+T|0;do if((Q|0)!=-1){V=f[M+(Q<<2)>>2]|0;if((V|0)==-1)break;_=(V>>>0)/3|0;if(!(f[aa+(_>>>5<<2)>>2]&1<<(_&31))){U=62;break b}}while(0);if(!ea)jf(a,f[i>>2]|0,N,0,fa);hd(t,3);ga=f[e>>2]|0}else{if(!R){jf(a,f[i>>2]|0,N,1,S);aa=f[b>>2]|0;if((aa|0)==-1){U=52;break}else ha=aa}else ha=T;aa=(((ha>>>0)%3|0|0)==0?2:-1)+ha|0;if((aa|0)==-1){U=52;break}Q=f[(f[(f[p>>2]|0)+12>>2]|0)+(aa<<2)>>2]|0;if((Q|0)==-1){U=52;break}aa=(Q>>>0)/3|0;if(f[(f[n>>2]|0)+(aa>>>5<<2)>>2]&1<<(aa&31)|0){U=52;break}hd(t,5);ga=da}f[b>>2]=ga}if((K|0)>=(k|0))break a;J=K;L=f[n>>2]|0}do if((U|0)==43){U=0;f[e>>2]=-1;U=54}else if((U|0)==52){U=0;if(ea)U=54;else{jf(a,f[i>>2]|0,N,0,fa);U=54}}else if((U|0)==62){U=0;hd(t,1);f[F>>2]=(f[F>>2]|0)+1;if(P?(L=f[(f[w>>2]|0)+(O<<2)>>2]|0,(1<<(L&31)&f[(f[G>>2]|0)+(L>>>5<<2)>>2]|0)==0):0){f[g>>2]=f[b>>2];f[d>>2]=f[g>>2];Ce(a,d,0)|0}L=f[i>>2]|0;f[d>>2]=N;J=Sd(H,d)|0;f[J>>2]=L;L=f[j>>2]|0;f[L+-4>>2]=da;if((L|0)==(f[m>>2]|0)){Ci(h,e);break}else{f[L>>2]=f[e>>2];f[j>>2]=L+4;break}}while(0);if((U|0)==54){U=0;hd(t,7);f[j>>2]=(f[j>>2]|0)+-4}}}else U=11;while(0);if((U|0)==11){U=0;f[j>>2]=I+-4}I=f[j>>2]|0}while((f[h>>2]|0)!=(I|0));u=c;return 1}function _b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=Oa,K=Oa,L=Oa,M=0,N=0,O=0,P=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=xd(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];Xe(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;ri(j,8);l=d;d=l;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;d=l+4|0;l=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;d=f[j>>2]|0;o=d;b[o>>0]=m;b[o+1>>0]=m>>8;b[o+2>>0]=m>>16;b[o+3>>0]=m>>24;m=d+4|0;b[m>>0]=l;b[m+1>>0]=l>>8;b[m+2>>0]=l>>16;b[m+3>>0]=l>>24;dj(i,c);c=i+12|0;f[c>>2]=0;l=i+16|0;f[l>>2]=0;f[i+20>>2]=0;m=f[k>>2]|0;d=f[j>>2]|0;o=m-d|0;if(!o){p=d;q=m;r=0}else{ri(c,o);p=f[j>>2]|0;q=f[k>>2]|0;r=f[c>>2]|0}Rg(r|0,p|0,q-p|0)|0;p=i+11|0;q=b[p>>0]|0;r=q<<24>>24<0;c=r?f[i>>2]|0:i;o=r?f[i+4>>2]|0:q&255;if(o>>>0>3){q=c;r=o;m=o;while(1){d=X(h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24,1540483477)|0;r=(X(d>>>24^d,1540483477)|0)^(X(r,1540483477)|0);m=m+-4|0;if(m>>>0<=3)break;else q=q+4|0}q=o+-4|0;m=q&-4;s=q-m|0;t=c+(m+4)|0;v=r}else{s=o;t=c;v=o}switch(s|0){case 3:{w=h[t+2>>0]<<16^v;x=10;break}case 2:{w=v;x=10;break}case 1:{y=v;x=11;break}default:z=v}if((x|0)==10){y=h[t+1>>0]<<8^w;x=11}if((x|0)==11)z=X(y^h[t>>0],1540483477)|0;t=X(z>>>13^z,1540483477)|0;z=t>>>15^t;t=a+4|0;y=f[t>>2]|0;w=(y|0)==0;a:do if(!w){v=y+-1|0;s=(v&y|0)==0;if(!s)if(z>>>0>>0)A=z;else A=(z>>>0)%(y>>>0)|0;else A=z&v;r=f[(f[a>>2]|0)+(A<<2)>>2]|0;if((r|0)!=0?(m=f[r>>2]|0,(m|0)!=0):0){r=(o|0)==0;if(s){if(r){s=m;while(1){q=f[s+4>>2]|0;if(!((q|0)==(z|0)|(q&v|0)==(A|0))){B=A;x=52;break a}q=b[s+8+11>>0]|0;if(!((q<<24>>24<0?f[s+12>>2]|0:q&255)|0))break a;s=f[s>>2]|0;if(!s){B=A;x=52;break a}}}else C=m;while(1){s=f[C+4>>2]|0;if(!((s|0)==(z|0)|(s&v|0)==(A|0))){B=A;x=52;break a}s=C+8|0;q=b[s+11>>0]|0;d=q<<24>>24<0;D=q&255;do if(((d?f[C+12>>2]|0:D)|0)==(o|0)){q=f[s>>2]|0;if(d)if(!(Pk(q,c,o)|0))break a;else break;if((b[c>>0]|0)==(q&255)<<24>>24){q=s;E=D;F=c;do{E=E+-1|0;q=q+1|0;if(!E)break a;F=F+1|0}while((b[q>>0]|0)==(b[F>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){B=A;x=52;break a}}}if(r){v=m;while(1){D=f[v+4>>2]|0;if((D|0)!=(z|0)){if(D>>>0>>0)G=D;else G=(D>>>0)%(y>>>0)|0;if((G|0)!=(A|0)){B=A;x=52;break a}}D=b[v+8+11>>0]|0;if(!((D<<24>>24<0?f[v+12>>2]|0:D&255)|0))break a;v=f[v>>2]|0;if(!v){B=A;x=52;break a}}}else H=m;while(1){v=f[H+4>>2]|0;if((v|0)!=(z|0)){if(v>>>0>>0)I=v;else I=(v>>>0)%(y>>>0)|0;if((I|0)!=(A|0)){B=A;x=52;break a}}v=H+8|0;r=b[v+11>>0]|0;D=r<<24>>24<0;s=r&255;do if(((D?f[H+12>>2]|0:s)|0)==(o|0)){r=f[v>>2]|0;if(D)if(!(Pk(r,c,o)|0))break a;else break;if((b[c>>0]|0)==(r&255)<<24>>24){r=v;d=s;F=c;do{d=d+-1|0;r=r+1|0;if(!d)break a;F=F+1|0}while((b[r>>0]|0)==(b[F>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){B=A;x=52;break}}}else{B=A;x=52}}else{B=0;x=52}while(0);if((x|0)==52){_h(g,a,z,i);x=a+12|0;J=$(((f[x>>2]|0)+1|0)>>>0);K=$(y>>>0);L=$(n[a+16>>2]);do if(w|$(L*K)>>0<3|(y+-1&y|0)!=0)&1;H=~~$(W($(J/L)))>>>0;Ph(a,A>>>0>>0?H:A);A=f[t>>2]|0;H=A+-1|0;if(!(H&A)){M=A;N=H&z;break}if(z>>>0>>0){M=A;N=z}else{M=A;N=(z>>>0)%(A>>>0)|0}}else{M=y;N=B}while(0);B=f[(f[a>>2]|0)+(N<<2)>>2]|0;if(!B){y=a+8|0;f[f[g>>2]>>2]=f[y>>2];f[y>>2]=f[g>>2];f[(f[a>>2]|0)+(N<<2)>>2]=y;y=f[g>>2]|0;N=f[y>>2]|0;if(!N)O=g;else{z=f[N+4>>2]|0;N=M+-1|0;if(N&M)if(z>>>0>>0)P=z;else P=(z>>>0)%(M>>>0)|0;else P=z&N;f[(f[a>>2]|0)+(P<<2)>>2]=y;O=g}}else{f[f[g>>2]>>2]=f[B>>2];f[B>>2]=f[g>>2];O=g}f[x>>2]=(f[x>>2]|0)+1;f[O>>2]=0}O=f[i+12>>2]|0;if(O|0){if((f[l>>2]|0)!=(O|0))f[l>>2]=O;br(O)}if((b[p>>0]|0)<0)br(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;br(i);u=e;return}function $b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;e=u;u=u+96|0;g=e+92|0;h=e+88|0;i=e+72|0;j=e+48|0;k=e+24|0;l=e;m=a+16|0;n=f[m>>2]|0;o=f[c>>2]|0;f[i>>2]=n;f[i+4>>2]=o;c=i+8|0;f[c>>2]=o;b[i+12>>0]=1;p=(o|0)==-1;if(p)q=-1;else q=f[(f[n>>2]|0)+(o<<2)>>2]|0;n=a+20|0;r=f[n>>2]|0;s=f[r>>2]|0;if((f[r+4>>2]|0)-s>>2>>>0<=q>>>0)mq(r);r=a+8|0;t=f[(f[r>>2]|0)+(f[s+(q<<2)>>2]<<2)>>2]|0;q=a+4|0;s=f[q>>2]|0;if(!(b[s+84>>0]|0))v=f[(f[s+68>>2]|0)+(t<<2)>>2]|0;else v=t;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;f[h>>2]=v;v=b[s+24>>0]|0;f[g>>2]=f[h>>2];ub(s,g,v,j)|0;v=a+28|0;a=(f[v>>2]|0)==0;a:do if(!p){s=k+8|0;t=j+8|0;w=k+16|0;x=j+16|0;y=l+8|0;z=l+16|0;A=o;B=o;C=0;D=0;E=0;F=0;G=0;H=0;J=a;K=o;while(1){do if(J){L=K+1|0;if((K|0)==-1){M=A;N=-1;O=-1;P=-1;break}Q=((L>>>0)%3|0|0)==0?K+-2|0:L;if((A|0)!=-1)if(!((A>>>0)%3|0)){R=A;S=A+2|0;T=Q;U=A;V=19;break}else{R=A;S=A+-1|0;T=Q;U=A;V=19;break}else{R=-1;S=-1;T=Q;U=-1;V=19}}else{Q=B+1|0;L=((Q>>>0)%3|0|0)==0?B+-2|0:Q;if(!((B>>>0)%3|0)){R=A;S=B+2|0;T=L;U=K;V=19;break}else{R=A;S=B+-1|0;T=L;U=K;V=19;break}}while(0);if((V|0)==19){V=0;if((T|0)==-1){M=R;N=-1;O=S;P=U}else{M=R;N=f[(f[f[m>>2]>>2]|0)+(T<<2)>>2]|0;O=S;P=U}}W=f[n>>2]|0;L=f[W>>2]|0;if((f[W+4>>2]|0)-L>>2>>>0<=N>>>0){V=22;break}Q=f[(f[r>>2]|0)+(f[L+(N<<2)>>2]<<2)>>2]|0;L=f[q>>2]|0;if(!(b[L+84>>0]|0))X=f[(f[L+68>>2]|0)+(Q<<2)>>2]|0;else X=Q;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[h>>2]=X;Q=b[L+24>>0]|0;f[g>>2]=f[h>>2];ub(L,g,Q,k)|0;if((O|0)==-1)Y=-1;else Y=f[(f[f[m>>2]>>2]|0)+(O<<2)>>2]|0;Z=f[n>>2]|0;Q=f[Z>>2]|0;if((f[Z+4>>2]|0)-Q>>2>>>0<=Y>>>0){V=28;break}L=f[(f[r>>2]|0)+(f[Q+(Y<<2)>>2]<<2)>>2]|0;Q=f[q>>2]|0;if(!(b[Q+84>>0]|0))_=f[(f[Q+68>>2]|0)+(L<<2)>>2]|0;else _=L;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;f[h>>2]=_;L=b[Q+24>>0]|0;f[g>>2]=f[h>>2];ub(Q,g,L,l)|0;L=k;Q=j;$=f[Q>>2]|0;aa=f[Q+4>>2]|0;Q=Vn(f[L>>2]|0,f[L+4>>2]|0,$|0,aa|0)|0;L=I;ba=s;ca=t;da=f[ca>>2]|0;ea=f[ca+4>>2]|0;ca=Vn(f[ba>>2]|0,f[ba+4>>2]|0,da|0,ea|0)|0;ba=I;fa=w;ga=x;ha=f[ga>>2]|0;ia=f[ga+4>>2]|0;ga=Vn(f[fa>>2]|0,f[fa+4>>2]|0,ha|0,ia|0)|0;fa=I;ja=l;ka=Vn(f[ja>>2]|0,f[ja+4>>2]|0,$|0,aa|0)|0;aa=I;$=y;ja=Vn(f[$>>2]|0,f[$+4>>2]|0,da|0,ea|0)|0;ea=I;da=z;$=Vn(f[da>>2]|0,f[da+4>>2]|0,ha|0,ia|0)|0;ia=I;ha=on($|0,ia|0,ca|0,ba|0)|0;da=I;la=on(ja|0,ea|0,ga|0,fa|0)|0;ma=I;na=on(ka|0,aa|0,ga|0,fa|0)|0;fa=I;ga=on($|0,ia|0,Q|0,L|0)|0;ia=I;$=on(ja|0,ea|0,Q|0,L|0)|0;L=I;Q=on(ka|0,aa|0,ca|0,ba|0)|0;ba=I;ca=Vn(C|0,D|0,la|0,ma|0)|0;ma=Tn(ca|0,I|0,ha|0,da|0)|0;da=I;ha=Tn(na|0,fa|0,E|0,F|0)|0;fa=Vn(ha|0,I|0,ga|0,ia|0)|0;ia=I;ga=Vn(G|0,H|0,Q|0,ba|0)|0;ba=Tn(ga|0,I|0,$|0,L|0)|0;L=I;ph(i);B=f[c>>2]|0;$=(f[v>>2]|0)==0;if((B|0)==-1){oa=$;pa=da;qa=ma;ra=ia;sa=fa;ta=L;ua=ba;break a}else{A=M;C=ma;D=da;E=fa;F=ia;G=ba;H=L;J=$;K=P}}if((V|0)==22)mq(W);else if((V|0)==28)mq(Z)}else{oa=a;pa=0;qa=0;ra=0;sa=0;ta=0;ua=0}while(0);a=(pa|0)>-1|(pa|0)==-1&qa>>>0>4294967295;Z=Vn(0,0,qa|0,pa|0)|0;V=a?pa:I;W=(ra|0)>-1|(ra|0)==-1&sa>>>0>4294967295;P=Vn(0,0,sa|0,ra|0)|0;M=W?ra:I;v=(ta|0)>-1|(ta|0)==-1&ua>>>0>4294967295;c=Vn(0,0,ua|0,ta|0)|0;i=Tn((W?sa:P)|0,M|0,(v?ua:c)|0,(v?ta:I)|0)|0;v=Tn(i|0,I|0,(a?qa:Z)|0,V|0)|0;V=I;if(oa){if((v|0)<=536870912){va=qa;wa=sa;xa=ua;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}oa=Wn(v|0,V|0,29)|0;Z=oa&7;oa=zk(qa|0,pa|0,Z|0,0)|0;a=zk(sa|0,ra|0,Z|0,0)|0;i=zk(ua|0,ta|0,Z|0,0)|0;va=oa;wa=a;xa=i;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}else{if(!((V|0)>0|(V|0)==0&v>>>0>536870912)){va=qa;wa=sa;xa=ua;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}i=Wn(v|0,V|0,29)|0;V=I;v=zk(qa|0,pa|0,i|0,V|0)|0;pa=zk(sa|0,ra|0,i|0,V|0)|0;ra=zk(ua|0,ta|0,i|0,V|0)|0;va=v;wa=pa;xa=ra;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}}function ac(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=Oa,M=Oa,N=Oa,O=0,P=0,Q=0,R=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=xd(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];Xe(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;l=d+11|0;m=b[l>>0]|0;o=d+4|0;p=f[o>>2]|0;q=m<<24>>24<0?p:m&255;if(!q){r=m;s=p;t=0}else{ri(j,q);r=b[l>>0]|0;s=f[o>>2]|0;t=f[j>>2]|0}o=r<<24>>24<0;Rg(t|0,(o?f[d>>2]|0:d)|0,(o?s:r&255)|0)|0;dj(i,c);c=i+12|0;f[c>>2]=0;r=i+16|0;f[r>>2]=0;f[i+20>>2]=0;s=f[k>>2]|0;o=f[j>>2]|0;d=s-o|0;if(!d){v=o;w=s;x=0}else{ri(c,d);v=f[j>>2]|0;w=f[k>>2]|0;x=f[c>>2]|0}Rg(x|0,v|0,w-v|0)|0;v=i+11|0;w=b[v>>0]|0;x=w<<24>>24<0;c=x?f[i>>2]|0:i;d=x?f[i+4>>2]|0:w&255;if(d>>>0>3){w=c;x=d;s=d;while(1){o=X(h[w>>0]|h[w+1>>0]<<8|h[w+2>>0]<<16|h[w+3>>0]<<24,1540483477)|0;x=(X(o>>>24^o,1540483477)|0)^(X(x,1540483477)|0);s=s+-4|0;if(s>>>0<=3)break;else w=w+4|0}w=d+-4|0;s=w&-4;y=w-s|0;z=c+(s+4)|0;A=x}else{y=d;z=c;A=d}switch(y|0){case 3:{B=h[z+2>>0]<<16^A;C=12;break}case 2:{B=A;C=12;break}case 1:{D=A;C=13;break}default:E=A}if((C|0)==12){D=h[z+1>>0]<<8^B;C=13}if((C|0)==13)E=X(D^h[z>>0],1540483477)|0;z=X(E>>>13^E,1540483477)|0;E=z>>>15^z;z=a+4|0;D=f[z>>2]|0;B=(D|0)==0;a:do if(!B){A=D+-1|0;y=(A&D|0)==0;if(!y)if(E>>>0>>0)F=E;else F=(E>>>0)%(D>>>0)|0;else F=E&A;x=f[(f[a>>2]|0)+(F<<2)>>2]|0;if((x|0)!=0?(s=f[x>>2]|0,(s|0)!=0):0){x=(d|0)==0;if(y){if(x){y=s;while(1){w=f[y+4>>2]|0;if(!((w|0)==(E|0)|(w&A|0)==(F|0))){G=F;C=54;break a}w=b[y+8+11>>0]|0;if(!((w<<24>>24<0?f[y+12>>2]|0:w&255)|0))break a;y=f[y>>2]|0;if(!y){G=F;C=54;break a}}}else H=s;while(1){y=f[H+4>>2]|0;if(!((y|0)==(E|0)|(y&A|0)==(F|0))){G=F;C=54;break a}y=H+8|0;w=b[y+11>>0]|0;o=w<<24>>24<0;t=w&255;do if(((o?f[H+12>>2]|0:t)|0)==(d|0)){w=f[y>>2]|0;if(o)if(!(Pk(w,c,d)|0))break a;else break;if((b[c>>0]|0)==(w&255)<<24>>24){w=y;l=t;q=c;do{l=l+-1|0;w=w+1|0;if(!l)break a;q=q+1|0}while((b[w>>0]|0)==(b[q>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){G=F;C=54;break a}}}if(x){A=s;while(1){t=f[A+4>>2]|0;if((t|0)!=(E|0)){if(t>>>0>>0)I=t;else I=(t>>>0)%(D>>>0)|0;if((I|0)!=(F|0)){G=F;C=54;break a}}t=b[A+8+11>>0]|0;if(!((t<<24>>24<0?f[A+12>>2]|0:t&255)|0))break a;A=f[A>>2]|0;if(!A){G=F;C=54;break a}}}else J=s;while(1){A=f[J+4>>2]|0;if((A|0)!=(E|0)){if(A>>>0>>0)K=A;else K=(A>>>0)%(D>>>0)|0;if((K|0)!=(F|0)){G=F;C=54;break a}}A=J+8|0;x=b[A+11>>0]|0;t=x<<24>>24<0;y=x&255;do if(((t?f[J+12>>2]|0:y)|0)==(d|0)){x=f[A>>2]|0;if(t)if(!(Pk(x,c,d)|0))break a;else break;if((b[c>>0]|0)==(x&255)<<24>>24){x=A;o=y;q=c;do{o=o+-1|0;x=x+1|0;if(!o)break a;q=q+1|0}while((b[x>>0]|0)==(b[q>>0]|0))}}while(0);J=f[J>>2]|0;if(!J){G=F;C=54;break}}}else{G=F;C=54}}else{G=0;C=54}while(0);if((C|0)==54){_h(g,a,E,i);C=a+12|0;L=$(((f[C>>2]|0)+1|0)>>>0);M=$(D>>>0);N=$(n[a+16>>2]);do if(B|$(N*M)>>0<3|(D+-1&D|0)!=0)&1;J=~~$(W($(L/N)))>>>0;Ph(a,F>>>0>>0?J:F);F=f[z>>2]|0;J=F+-1|0;if(!(J&F)){O=F;P=J&E;break}if(E>>>0>>0){O=F;P=E}else{O=F;P=(E>>>0)%(F>>>0)|0}}else{O=D;P=G}while(0);G=f[(f[a>>2]|0)+(P<<2)>>2]|0;if(!G){D=a+8|0;f[f[g>>2]>>2]=f[D>>2];f[D>>2]=f[g>>2];f[(f[a>>2]|0)+(P<<2)>>2]=D;D=f[g>>2]|0;P=f[D>>2]|0;if(!P)Q=g;else{E=f[P+4>>2]|0;P=O+-1|0;if(P&O)if(E>>>0>>0)R=E;else R=(E>>>0)%(O>>>0)|0;else R=E&P;f[(f[a>>2]|0)+(R<<2)>>2]=D;Q=g}}else{f[f[g>>2]>>2]=f[G>>2];f[G>>2]=f[g>>2];Q=g}f[C>>2]=(f[C>>2]|0)+1;f[Q>>2]=0}Q=f[i+12>>2]|0;if(Q|0){if((f[r>>2]|0)!=(Q|0))f[r>>2]=Q;br(Q)}if((b[v>>0]|0)<0)br(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;br(i);u=e;return}function bc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+12|0;j=g+32|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=0;z=r;A=0;B=0;C=r;D=r;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=on(f[r>>2]|0,f[r+4>>2]|0,y+A|0,0)|0;r=Tn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8;d[j>>1]=r;G=(r^318)&65535;a:do if(e){F=e+-1|0;H=(F&e|0)==0;if(!H)if(e>>>0>G>>>0)J=G;else J=(G>>>0)%(e>>>0)|0;else J=F&G;K=f[i>>2]|0;L=f[K+(J<<2)>>2]|0;b:do if(L|0?(M=f[L>>2]|0,M|0):0){c:do if(H){N=M;while(1){O=f[N+4>>2]|0;P=(O|0)==(G|0);if(!(P|(O&F|0)==(J|0)))break b;if(P?(d[N+8>>1]|0)==r<<16>>16:0){Q=N;break c}N=f[N>>2]|0;if(!N)break b}}else{N=M;while(1){P=f[N+4>>2]|0;if((P|0)==(G|0)){if((d[N+8>>1]|0)==r<<16>>16){Q=N;break c}}else{if(P>>>0>>0)R=P;else R=(P>>>0)%(e>>>0)|0;if((R|0)!=(J|0))break b}N=f[N>>2]|0;if(!N)break b}}while(0);f[E+(A<<2)>>2]=f[Q+12>>2];S=z;T=B;U=D;V=C;X=E;break a}while(0);if(!H)if(e>>>0>G>>>0)Y=G;else Y=(G>>>0)%(e>>>0)|0;else Y=F&G;L=f[K+(Y<<2)>>2]|0;if(!L){Z=Y;_=e;aa=0;ba=40}else{if(H){M=L;while(1){M=f[M>>2]|0;if(!M){Z=Y;_=e;aa=0;ba=40;break a}N=f[M+4>>2]|0;if(!((N|0)==(G|0)|(N&F|0)==(Y|0))){Z=Y;_=e;aa=0;ba=40;break a}if((d[M+8>>1]|0)==r<<16>>16){ba=55;break a}}}else ca=L;while(1){ca=f[ca>>2]|0;if(!ca){Z=Y;_=e;aa=0;ba=40;break a}M=f[ca+4>>2]|0;if((M|0)!=(G|0)){if(M>>>0>>0)da=M;else da=(M>>>0)%(e>>>0)|0;if((da|0)!=(Y|0)){Z=Y;_=e;aa=0;ba=40;break a}}if((d[ca+8>>1]|0)==r<<16>>16){ba=55;break}}}}else{Z=0;_=0;aa=1;ba=40}while(0);if((ba|0)==40){ba=0;L=dn(16)|0;d[L+8>>1]=r;f[L+12>>2]=B;f[L+4>>2]=G;f[L>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(_>>>0);ga=$(n[l>>2]);do if(aa|$(ga*fa)>>0<3|(_+-1&_|0)!=0)&1;F=~~$(W($(ea/ga)))>>>0;Fh(i,M>>>0>>0?F:M);M=f[o>>2]|0;F=M+-1|0;if(!(F&M)){ha=M;ia=F&G;break}if(M>>>0>G>>>0){ha=M;ia=G}else{ha=M;ia=(G>>>0)%(M>>>0)|0}}else{ha=_;ia=Z}while(0);G=(f[i>>2]|0)+(ia<<2)|0;r=f[G>>2]|0;if(!r){f[L>>2]=f[v>>2];f[v>>2]=L;f[G>>2]=v;G=f[L>>2]|0;if(G|0){M=f[G+4>>2]|0;G=ha+-1|0;if(G&ha)if(M>>>0>>0)ja=M;else ja=(M>>>0)%(ha>>>0)|0;else ja=M&G;ka=(f[i>>2]|0)+(ja<<2)|0;ba=53}}else{f[L>>2]=f[r>>2];ka=r;ba=53}if((ba|0)==53){ba=0;f[ka>>2]=L}f[t>>2]=(f[t>>2]|0)+1;ba=55}if((ba|0)==55){ba=0;r=w;G=f[r>>2]|0;M=on(G|0,f[r+4>>2]|0,B|0,0)|0;Rg((f[f[x>>2]>>2]|0)+M|0,j|0,G|0)|0;G=f[k>>2]|0;f[G+(A<<2)>>2]=B;S=G;T=B+1|0;U=G;V=G;X=G}G=A+1|0;la=f[m>>2]|0;if(G>>>0>=la>>>0)break;e=f[o>>2]|0;z=S;A=G;B=T;C=V;D=U;E=X}if((T|0)==(la|0))ma=V;else{V=a+84|0;if(!(b[V>>0]|0)){X=f[a+72>>2]|0;E=f[a+68>>2]|0;D=E;if((X|0)==(E|0))na=S;else{C=X-E>>2;E=0;do{X=D+(E<<2)|0;f[X>>2]=f[U+(f[X>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=S}}else{b[V>>0]=0;V=a+68|0;S=a+72|0;C=f[S>>2]|0;E=f[V>>2]|0;U=C-E>>2;D=E;E=C;if(la>>>0<=U>>>0)if(la>>>0>>0?(C=D+(la<<2)|0,(C|0)!=(E|0)):0){f[S>>2]=E+(~((E+-4-C|0)>>>2)<<2);oa=la}else oa=la;else{kh(V,la-U|0,1204);oa=f[m>>2]|0}U=f[k>>2]|0;if(!oa)na=U;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[U+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=U}}f[m>>2]=T;ma=na}if(!ma)pa=T;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);br(ma);pa=T}}else pa=0;T=f[i+8>>2]|0;if(T|0){ma=T;do{T=ma;ma=f[ma>>2]|0;br(T)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}br(ma);u=g;return pa|0}function cc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=Oa,K=Oa,L=Oa,M=0,N=0,O=0,P=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=xd(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];Xe(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;ri(j,4);l=f[j>>2]|0;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[l>>0]=m;b[l+1>>0]=m>>8;b[l+2>>0]=m>>16;b[l+3>>0]=m>>24;dj(i,c);c=i+12|0;f[c>>2]=0;m=i+16|0;f[m>>2]=0;f[i+20>>2]=0;l=f[k>>2]|0;d=f[j>>2]|0;o=l-d|0;if(!o){p=d;q=l;r=0}else{ri(c,o);p=f[j>>2]|0;q=f[k>>2]|0;r=f[c>>2]|0}Rg(r|0,p|0,q-p|0)|0;p=i+11|0;q=b[p>>0]|0;r=q<<24>>24<0;c=r?f[i>>2]|0:i;o=r?f[i+4>>2]|0:q&255;if(o>>>0>3){q=c;r=o;l=o;while(1){d=X(h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24,1540483477)|0;r=(X(d>>>24^d,1540483477)|0)^(X(r,1540483477)|0);l=l+-4|0;if(l>>>0<=3)break;else q=q+4|0}q=o+-4|0;l=q&-4;s=q-l|0;t=c+(l+4)|0;v=r}else{s=o;t=c;v=o}switch(s|0){case 3:{w=h[t+2>>0]<<16^v;x=10;break}case 2:{w=v;x=10;break}case 1:{y=v;x=11;break}default:z=v}if((x|0)==10){y=h[t+1>>0]<<8^w;x=11}if((x|0)==11)z=X(y^h[t>>0],1540483477)|0;t=X(z>>>13^z,1540483477)|0;z=t>>>15^t;t=a+4|0;y=f[t>>2]|0;w=(y|0)==0;a:do if(!w){v=y+-1|0;s=(v&y|0)==0;if(!s)if(z>>>0>>0)A=z;else A=(z>>>0)%(y>>>0)|0;else A=z&v;r=f[(f[a>>2]|0)+(A<<2)>>2]|0;if((r|0)!=0?(l=f[r>>2]|0,(l|0)!=0):0){r=(o|0)==0;if(s){if(r){s=l;while(1){q=f[s+4>>2]|0;if(!((q|0)==(z|0)|(q&v|0)==(A|0))){B=A;x=52;break a}q=b[s+8+11>>0]|0;if(!((q<<24>>24<0?f[s+12>>2]|0:q&255)|0))break a;s=f[s>>2]|0;if(!s){B=A;x=52;break a}}}else C=l;while(1){s=f[C+4>>2]|0;if(!((s|0)==(z|0)|(s&v|0)==(A|0))){B=A;x=52;break a}s=C+8|0;q=b[s+11>>0]|0;d=q<<24>>24<0;D=q&255;do if(((d?f[C+12>>2]|0:D)|0)==(o|0)){q=f[s>>2]|0;if(d)if(!(Pk(q,c,o)|0))break a;else break;if((b[c>>0]|0)==(q&255)<<24>>24){q=s;E=D;F=c;do{E=E+-1|0;q=q+1|0;if(!E)break a;F=F+1|0}while((b[q>>0]|0)==(b[F>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){B=A;x=52;break a}}}if(r){v=l;while(1){D=f[v+4>>2]|0;if((D|0)!=(z|0)){if(D>>>0>>0)G=D;else G=(D>>>0)%(y>>>0)|0;if((G|0)!=(A|0)){B=A;x=52;break a}}D=b[v+8+11>>0]|0;if(!((D<<24>>24<0?f[v+12>>2]|0:D&255)|0))break a;v=f[v>>2]|0;if(!v){B=A;x=52;break a}}}else H=l;while(1){v=f[H+4>>2]|0;if((v|0)!=(z|0)){if(v>>>0>>0)I=v;else I=(v>>>0)%(y>>>0)|0;if((I|0)!=(A|0)){B=A;x=52;break a}}v=H+8|0;r=b[v+11>>0]|0;D=r<<24>>24<0;s=r&255;do if(((D?f[H+12>>2]|0:s)|0)==(o|0)){r=f[v>>2]|0;if(D)if(!(Pk(r,c,o)|0))break a;else break;if((b[c>>0]|0)==(r&255)<<24>>24){r=v;d=s;F=c;do{d=d+-1|0;r=r+1|0;if(!d)break a;F=F+1|0}while((b[r>>0]|0)==(b[F>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){B=A;x=52;break}}}else{B=A;x=52}}else{B=0;x=52}while(0);if((x|0)==52){_h(g,a,z,i);x=a+12|0;J=$(((f[x>>2]|0)+1|0)>>>0);K=$(y>>>0);L=$(n[a+16>>2]);do if(w|$(L*K)>>0<3|(y+-1&y|0)!=0)&1;H=~~$(W($(J/L)))>>>0;Ph(a,A>>>0>>0?H:A);A=f[t>>2]|0;H=A+-1|0;if(!(H&A)){M=A;N=H&z;break}if(z>>>0>>0){M=A;N=z}else{M=A;N=(z>>>0)%(A>>>0)|0}}else{M=y;N=B}while(0);B=f[(f[a>>2]|0)+(N<<2)>>2]|0;if(!B){y=a+8|0;f[f[g>>2]>>2]=f[y>>2];f[y>>2]=f[g>>2];f[(f[a>>2]|0)+(N<<2)>>2]=y;y=f[g>>2]|0;N=f[y>>2]|0;if(!N)O=g;else{z=f[N+4>>2]|0;N=M+-1|0;if(N&M)if(z>>>0>>0)P=z;else P=(z>>>0)%(M>>>0)|0;else P=z&N;f[(f[a>>2]|0)+(P<<2)>>2]=y;O=g}}else{f[f[g>>2]>>2]=f[B>>2];f[B>>2]=f[g>>2];O=g}f[x>>2]=(f[x>>2]|0)+1;f[O>>2]=0}O=f[i+12>>2]|0;if(O|0){if((f[m>>2]|0)!=(O|0))f[m>>2]=O;br(O)}if((b[p>>0]|0)<0)br(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;br(i);u=e;return}function dc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=Oa,da=Oa,ea=Oa,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;e=u;u=u+48|0;g=e+12|0;h=e+32|0;i=e;j=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[j>>2]=$(1.0);k=a+80|0;l=f[k>>2]|0;f[i>>2]=0;m=i+4|0;f[m>>2]=0;f[i+8>>2]=0;if(l){if(l>>>0>1073741823)mq(i);o=l<<2;p=dn(o)|0;f[i>>2]=p;q=p+(l<<2)|0;f[i+8>>2]=q;hj(p|0,0,o|0)|0;f[m>>2]=q;q=c+48|0;o=c+40|0;l=g+4|0;r=g+12|0;s=g+8|0;t=a+40|0;v=a+64|0;w=f[d>>2]|0;d=0;x=p;y=0;z=0;A=p;B=p;C=p;while(1){p=q;D=f[p>>2]|0;E=f[p+4>>2]|0;p=o;F=on(f[p>>2]|0,f[p+4>>2]|0,w+y|0,0)|0;p=Tn(F|0,I|0,D|0,E|0)|0;E=b[(f[f[c>>2]>>2]|0)+p>>0]|0;b[h>>0]=E;p=E&255^318;a:do if(d){D=d+-1|0;F=(D&d|0)==0;if(!F)if(p>>>0>>0)G=p;else G=(p>>>0)%(d>>>0)|0;else G=D&p;H=f[g>>2]|0;J=f[H+(G<<2)>>2]|0;b:do if(J|0?(K=f[J>>2]|0,K|0):0){c:do if(F){L=K;while(1){M=f[L+4>>2]|0;N=(M|0)==(p|0);if(!(N|(M&D|0)==(G|0)))break b;if(N?(b[L+8>>0]|0)==E<<24>>24:0){O=L;break c}L=f[L>>2]|0;if(!L)break b}}else{L=K;while(1){N=f[L+4>>2]|0;if((N|0)==(p|0)){if((b[L+8>>0]|0)==E<<24>>24){O=L;break c}}else{if(N>>>0>>0)P=N;else P=(N>>>0)%(d>>>0)|0;if((P|0)!=(G|0))break b}L=f[L>>2]|0;if(!L)break b}}while(0);f[C+(y<<2)>>2]=f[O+12>>2];Q=x;R=z;S=B;T=A;U=C;break a}while(0);if(!F)if(p>>>0>>0)V=p;else V=(p>>>0)%(d>>>0)|0;else V=D&p;J=f[H+(V<<2)>>2]|0;if(!J){X=V;Y=d;Z=0;_=40}else{if(F){K=J;while(1){K=f[K>>2]|0;if(!K){X=V;Y=d;Z=0;_=40;break a}L=f[K+4>>2]|0;if(!((L|0)==(p|0)|(L&D|0)==(V|0))){X=V;Y=d;Z=0;_=40;break a}if((b[K+8>>0]|0)==E<<24>>24){_=55;break a}}}else aa=J;while(1){aa=f[aa>>2]|0;if(!aa){X=V;Y=d;Z=0;_=40;break a}K=f[aa+4>>2]|0;if((K|0)!=(p|0)){if(K>>>0>>0)ba=K;else ba=(K>>>0)%(d>>>0)|0;if((ba|0)!=(V|0)){X=V;Y=d;Z=0;_=40;break a}}if((b[aa+8>>0]|0)==E<<24>>24){_=55;break}}}}else{X=0;Y=0;Z=1;_=40}while(0);if((_|0)==40){_=0;J=dn(16)|0;b[J+8>>0]=E;f[J+12>>2]=z;f[J+4>>2]=p;f[J>>2]=0;ca=$(((f[r>>2]|0)+1|0)>>>0);da=$(Y>>>0);ea=$(n[j>>2]);do if(Z|$(ea*da)>>0<3|(Y+-1&Y|0)!=0)&1;D=~~$(W($(ca/ea)))>>>0;Mh(g,K>>>0>>0?D:K);K=f[l>>2]|0;D=K+-1|0;if(!(D&K)){fa=K;ga=D&p;break}if(p>>>0>>0){fa=K;ga=p}else{fa=K;ga=(p>>>0)%(K>>>0)|0}}else{fa=Y;ga=X}while(0);p=(f[g>>2]|0)+(ga<<2)|0;E=f[p>>2]|0;if(!E){f[J>>2]=f[s>>2];f[s>>2]=J;f[p>>2]=s;p=f[J>>2]|0;if(p|0){K=f[p+4>>2]|0;p=fa+-1|0;if(p&fa)if(K>>>0>>0)ha=K;else ha=(K>>>0)%(fa>>>0)|0;else ha=K&p;ia=(f[g>>2]|0)+(ha<<2)|0;_=53}}else{f[J>>2]=f[E>>2];ia=E;_=53}if((_|0)==53){_=0;f[ia>>2]=J}f[r>>2]=(f[r>>2]|0)+1;_=55}if((_|0)==55){_=0;E=t;p=f[E>>2]|0;K=on(p|0,f[E+4>>2]|0,z|0,0)|0;Rg((f[f[v>>2]>>2]|0)+K|0,h|0,p|0)|0;p=f[i>>2]|0;f[p+(y<<2)>>2]=z;Q=p;R=z+1|0;S=p;T=p;U=p}p=y+1|0;ja=f[k>>2]|0;if(p>>>0>=ja>>>0)break;d=f[l>>2]|0;x=Q;y=p;z=R;A=T;B=S;C=U}if((R|0)==(ja|0))ka=T;else{T=a+84|0;if(!(b[T>>0]|0)){U=f[a+72>>2]|0;C=f[a+68>>2]|0;B=C;if((U|0)==(C|0))la=Q;else{A=U-C>>2;C=0;do{U=B+(C<<2)|0;f[U>>2]=f[S+(f[U>>2]<<2)>>2];C=C+1|0}while(C>>>0>>0);la=Q}}else{b[T>>0]=0;T=a+68|0;Q=a+72|0;A=f[Q>>2]|0;C=f[T>>2]|0;S=A-C>>2;B=C;C=A;if(ja>>>0<=S>>>0)if(ja>>>0>>0?(A=B+(ja<<2)|0,(A|0)!=(C|0)):0){f[Q>>2]=C+(~((C+-4-A|0)>>>2)<<2);ma=ja}else ma=ja;else{kh(T,ja-S|0,1204);ma=f[k>>2]|0}S=f[i>>2]|0;if(!ma)la=S;else{i=f[a+68>>2]|0;a=0;do{f[i+(a<<2)>>2]=f[S+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);la=S}}f[k>>2]=R;ka=la}if(!ka)na=R;else{la=f[m>>2]|0;if((la|0)!=(ka|0))f[m>>2]=la+(~((la+-4-ka|0)>>>2)<<2);br(ka);na=R}}else na=0;R=f[g+8>>2]|0;if(R|0){ka=R;do{R=ka;ka=f[ka>>2]|0;br(R)}while((ka|0)!=0)}ka=f[g>>2]|0;f[g>>2]=0;if(!ka){u=e;return na|0}br(ka);u=e;return na|0}function ec(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=Oa,ea=Oa,fa=Oa,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;e=u;u=u+48|0;g=e+16|0;i=e+12|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=c+48|0;p=c+40|0;m=g+4|0;s=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=f[d>>2]|0;d=0;y=q;z=0;A=0;B=q;C=q;D=q;while(1){q=r;E=f[q>>2]|0;F=f[q+4>>2]|0;q=p;G=on(f[q>>2]|0,f[q+4>>2]|0,x+z|0,0)|0;q=Tn(G|0,I|0,E|0,F|0)|0;F=(f[f[c>>2]>>2]|0)+q|0;q=h[F>>0]|h[F+1>>0]<<8|h[F+2>>0]<<16|h[F+3>>0]<<24;f[i>>2]=q;F=q^318;a:do if(d){E=d+-1|0;G=(E&d|0)==0;if(!G)if(F>>>0>>0)H=F;else H=(F>>>0)%(d>>>0)|0;else H=E&F;J=f[g>>2]|0;K=f[J+(H<<2)>>2]|0;b:do if(K|0?(L=f[K>>2]|0,L|0):0){c:do if(G){M=L;while(1){N=f[M+4>>2]|0;O=(N|0)==(F|0);if(!(O|(N&E|0)==(H|0)))break b;if(O?(f[M+8>>2]|0)==(q|0):0){P=M;break c}M=f[M>>2]|0;if(!M)break b}}else{M=L;while(1){O=f[M+4>>2]|0;if((O|0)==(F|0)){if((f[M+8>>2]|0)==(q|0)){P=M;break c}}else{if(O>>>0>>0)Q=O;else Q=(O>>>0)%(d>>>0)|0;if((Q|0)!=(H|0))break b}M=f[M>>2]|0;if(!M)break b}}while(0);f[D+(z<<2)>>2]=f[P+12>>2];R=y;S=A;T=C;U=B;V=D;break a}while(0);if(!G)if(F>>>0>>0)X=F;else X=(F>>>0)%(d>>>0)|0;else X=E&F;K=f[J+(X<<2)>>2]|0;if(!K){Y=X;Z=d;_=0;aa=40}else{if(G){L=K;while(1){L=f[L>>2]|0;if(!L){Y=X;Z=d;_=0;aa=40;break a}M=f[L+4>>2]|0;if(!((M|0)==(F|0)|(M&E|0)==(X|0))){Y=X;Z=d;_=0;aa=40;break a}if((f[L+8>>2]|0)==(q|0)){aa=55;break a}}}else ba=K;while(1){ba=f[ba>>2]|0;if(!ba){Y=X;Z=d;_=0;aa=40;break a}L=f[ba+4>>2]|0;if((L|0)!=(F|0)){if(L>>>0>>0)ca=L;else ca=(L>>>0)%(d>>>0)|0;if((ca|0)!=(X|0)){Y=X;Z=d;_=0;aa=40;break a}}if((f[ba+8>>2]|0)==(q|0)){aa=55;break}}}}else{Y=0;Z=0;_=1;aa=40}while(0);if((aa|0)==40){aa=0;K=dn(16)|0;f[K+8>>2]=q;f[K+12>>2]=A;f[K+4>>2]=F;f[K>>2]=0;da=$(((f[s>>2]|0)+1|0)>>>0);ea=$(Z>>>0);fa=$(n[k>>2]);do if(_|$(fa*ea)>>0<3|(Z+-1&Z|0)!=0)&1;E=~~$(W($(da/fa)))>>>0;ti(g,L>>>0>>0?E:L);L=f[m>>2]|0;E=L+-1|0;if(!(E&L)){ga=L;ha=E&F;break}if(F>>>0>>0){ga=L;ha=F}else{ga=L;ha=(F>>>0)%(L>>>0)|0}}else{ga=Z;ha=Y}while(0);F=(f[g>>2]|0)+(ha<<2)|0;q=f[F>>2]|0;if(!q){f[K>>2]=f[t>>2];f[t>>2]=K;f[F>>2]=t;F=f[K>>2]|0;if(F|0){L=f[F+4>>2]|0;F=ga+-1|0;if(F&ga)if(L>>>0>>0)ia=L;else ia=(L>>>0)%(ga>>>0)|0;else ia=L&F;ja=(f[g>>2]|0)+(ia<<2)|0;aa=53}}else{f[K>>2]=f[q>>2];ja=q;aa=53}if((aa|0)==53){aa=0;f[ja>>2]=K}f[s>>2]=(f[s>>2]|0)+1;aa=55}if((aa|0)==55){aa=0;q=v;F=f[q>>2]|0;L=on(F|0,f[q+4>>2]|0,A|0,0)|0;Rg((f[f[w>>2]>>2]|0)+L|0,i|0,F|0)|0;F=f[j>>2]|0;f[F+(z<<2)>>2]=A;R=F;S=A+1|0;T=F;U=F;V=F}F=z+1|0;ka=f[l>>2]|0;if(F>>>0>=ka>>>0)break;d=f[m>>2]|0;y=R;z=F;A=S;B=U;C=T;D=V}if((S|0)==(ka|0))la=U;else{U=a+84|0;if(!(b[U>>0]|0)){V=f[a+72>>2]|0;D=f[a+68>>2]|0;C=D;if((V|0)==(D|0))ma=R;else{B=V-D>>2;D=0;do{V=C+(D<<2)|0;f[V>>2]=f[T+(f[V>>2]<<2)>>2];D=D+1|0}while(D>>>0>>0);ma=R}}else{b[U>>0]=0;U=a+68|0;R=a+72|0;B=f[R>>2]|0;D=f[U>>2]|0;T=B-D>>2;C=D;D=B;if(ka>>>0<=T>>>0)if(ka>>>0>>0?(B=C+(ka<<2)|0,(B|0)!=(D|0)):0){f[R>>2]=D+(~((D+-4-B|0)>>>2)<<2);na=ka}else na=ka;else{kh(U,ka-T|0,1204);na=f[l>>2]|0}T=f[j>>2]|0;if(!na)ma=T;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[T+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);ma=T}}f[l>>2]=S;la=ma}if(!la)oa=S;else{ma=f[o>>2]|0;if((ma|0)!=(la|0))f[o>>2]=ma+(~((ma+-4-la|0)>>>2)<<2);br(la);oa=S}}else oa=0;S=f[g+8>>2]|0;if(S|0){la=S;do{S=la;la=f[la>>2]|0;br(S)}while((la|0)!=0)}la=f[g>>2]|0;f[g>>2]=0;if(!la){u=e;return oa|0}br(la);u=e;return oa|0}function fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;e=u;u=u+96|0;g=e+92|0;h=e+88|0;i=e+72|0;j=e+48|0;k=e+24|0;l=e;m=a+16|0;n=f[m>>2]|0;o=f[c>>2]|0;f[i>>2]=n;f[i+4>>2]=o;c=i+8|0;f[c>>2]=o;b[i+12>>0]=1;p=f[(f[n+28>>2]|0)+(o<<2)>>2]|0;n=a+20|0;q=f[n>>2]|0;r=f[q>>2]|0;if((f[q+4>>2]|0)-r>>2>>>0<=p>>>0)mq(q);q=a+8|0;s=f[(f[q>>2]|0)+(f[r+(p<<2)>>2]<<2)>>2]|0;p=a+4|0;r=f[p>>2]|0;if(!(b[r+84>>0]|0))t=f[(f[r+68>>2]|0)+(s<<2)>>2]|0;else t=s;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;f[h>>2]=t;t=b[r+24>>0]|0;f[g>>2]=f[h>>2];ub(r,g,t,j)|0;t=a+28|0;a=(f[t>>2]|0)==0;a:do if((o|0)!=-1){r=k+8|0;s=j+8|0;v=k+16|0;w=j+16|0;x=l+8|0;y=l+16|0;z=o;A=o;B=0;C=0;D=0;E=0;F=0;G=0;H=a;J=o;while(1){do if(H){K=J+1|0;if((J|0)!=-1){L=((K>>>0)%3|0|0)==0?J+-2|0:K;if((z|0)!=-1)if(!((z>>>0)%3|0)){M=z;N=z+2|0;O=L;P=z;break}else{M=z;N=z+-1|0;O=L;P=z;break}else{M=-1;N=-1;O=L;P=-1}}else{M=z;N=-1;O=-1;P=-1}}else{L=A+1|0;K=((L>>>0)%3|0|0)==0?A+-2|0:L;if(!((A>>>0)%3|0)){M=z;N=A+2|0;O=K;P=J;break}else{M=z;N=A+-1|0;O=K;P=J;break}}while(0);K=f[(f[(f[m>>2]|0)+28>>2]|0)+(O<<2)>>2]|0;Q=f[n>>2]|0;L=f[Q>>2]|0;if((f[Q+4>>2]|0)-L>>2>>>0<=K>>>0){R=17;break}S=f[(f[q>>2]|0)+(f[L+(K<<2)>>2]<<2)>>2]|0;K=f[p>>2]|0;if(!(b[K+84>>0]|0))T=f[(f[K+68>>2]|0)+(S<<2)>>2]|0;else T=S;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[h>>2]=T;S=b[K+24>>0]|0;f[g>>2]=f[h>>2];ub(K,g,S,k)|0;S=f[(f[(f[m>>2]|0)+28>>2]|0)+(N<<2)>>2]|0;U=f[n>>2]|0;K=f[U>>2]|0;if((f[U+4>>2]|0)-K>>2>>>0<=S>>>0){R=21;break}L=f[(f[q>>2]|0)+(f[K+(S<<2)>>2]<<2)>>2]|0;S=f[p>>2]|0;if(!(b[S+84>>0]|0))V=f[(f[S+68>>2]|0)+(L<<2)>>2]|0;else V=L;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;f[h>>2]=V;L=b[S+24>>0]|0;f[g>>2]=f[h>>2];ub(S,g,L,l)|0;L=k;S=j;K=f[S>>2]|0;W=f[S+4>>2]|0;S=Vn(f[L>>2]|0,f[L+4>>2]|0,K|0,W|0)|0;L=I;X=r;Y=s;Z=f[Y>>2]|0;_=f[Y+4>>2]|0;Y=Vn(f[X>>2]|0,f[X+4>>2]|0,Z|0,_|0)|0;X=I;$=v;aa=w;ba=f[aa>>2]|0;ca=f[aa+4>>2]|0;aa=Vn(f[$>>2]|0,f[$+4>>2]|0,ba|0,ca|0)|0;$=I;da=l;ea=Vn(f[da>>2]|0,f[da+4>>2]|0,K|0,W|0)|0;W=I;K=x;da=Vn(f[K>>2]|0,f[K+4>>2]|0,Z|0,_|0)|0;_=I;Z=y;K=Vn(f[Z>>2]|0,f[Z+4>>2]|0,ba|0,ca|0)|0;ca=I;ba=on(K|0,ca|0,Y|0,X|0)|0;Z=I;fa=on(da|0,_|0,aa|0,$|0)|0;ga=I;ha=on(ea|0,W|0,aa|0,$|0)|0;$=I;aa=on(K|0,ca|0,S|0,L|0)|0;ca=I;K=on(da|0,_|0,S|0,L|0)|0;L=I;S=on(ea|0,W|0,Y|0,X|0)|0;X=I;Y=Vn(B|0,C|0,fa|0,ga|0)|0;ga=Tn(Y|0,I|0,ba|0,Z|0)|0;Z=I;ba=Tn(ha|0,$|0,D|0,E|0)|0;$=Vn(ba|0,I|0,aa|0,ca|0)|0;ca=I;aa=Vn(F|0,G|0,S|0,X|0)|0;X=Tn(aa|0,I|0,K|0,L|0)|0;L=I;xg(i);A=f[c>>2]|0;K=(f[t>>2]|0)==0;if((A|0)==-1){ia=K;ja=Z;ka=ga;la=ca;ma=$;na=L;oa=X;break a}else{z=M;B=ga;C=Z;D=$;E=ca;F=X;G=L;H=K;J=P}}if((R|0)==17)mq(Q);else if((R|0)==21)mq(U)}else{ia=a;ja=0;ka=0;la=0;ma=0;na=0;oa=0}while(0);a=(ja|0)>-1|(ja|0)==-1&ka>>>0>4294967295;U=Vn(0,0,ka|0,ja|0)|0;R=a?ja:I;Q=(la|0)>-1|(la|0)==-1&ma>>>0>4294967295;P=Vn(0,0,ma|0,la|0)|0;M=Q?la:I;t=(na|0)>-1|(na|0)==-1&oa>>>0>4294967295;c=Vn(0,0,oa|0,na|0)|0;i=Tn((Q?ma:P)|0,M|0,(t?oa:c)|0,(t?na:I)|0)|0;t=Tn(i|0,I|0,(a?ka:U)|0,R|0)|0;R=I;if(ia){if((t|0)<=536870912){pa=ka;qa=ma;ra=oa;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}ia=Wn(t|0,R|0,29)|0;U=ia&7;ia=zk(ka|0,ja|0,U|0,0)|0;a=zk(ma|0,la|0,U|0,0)|0;i=zk(oa|0,na|0,U|0,0)|0;pa=ia;qa=a;ra=i;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}else{if(!((R|0)>0|(R|0)==0&t>>>0>536870912)){pa=ka;qa=ma;ra=oa;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}i=Wn(t|0,R|0,29)|0;R=I;t=zk(ka|0,ja|0,i|0,R|0)|0;ja=zk(ma|0,la|0,i|0,R|0)|0;la=zk(oa|0,na|0,i|0,R|0)|0;pa=t;qa=ja;ra=la;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}}function gc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;g=u;u=u+48|0;i=g+28|0;j=g+8|0;k=g;l=g+16|0;m=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[m>>2]=$(1.0);o=a+80|0;p=f[o>>2]|0;f[l>>2]=0;q=l+4|0;f[q>>2]=0;f[l+8>>2]=0;if(p){if(p>>>0>1073741823)mq(l);r=p<<2;s=dn(r)|0;f[l>>2]=s;t=s+(p<<2)|0;f[l+8>>2]=t;hj(s|0,0,r|0)|0;f[q>>2]=t;t=f[e>>2]|0;e=c+48|0;r=c+40|0;s=i+4|0;p=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=e;B=f[A>>2]|0;C=f[A+4>>2]|0;A=r;D=on(f[A>>2]|0,f[A+4>>2]|0,t+y|0,0)|0;A=Tn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;A=C;B=h[A>>0]|h[A+1>>0]<<8|h[A+2>>0]<<16|h[A+3>>0]<<24;A=C+4|0;C=h[A>>0]|h[A+1>>0]<<8|h[A+2>>0]<<16|h[A+3>>0]<<24;A=j;f[A>>2]=B;f[A+4>>2]=C;A=k;f[A>>2]=B;f[A+4>>2]=C;C=kf(i,k)|0;if(!C){A=k;B=f[A>>2]|0;D=f[A+4>>2]|0;A=B&65535;E=Wn(B|0,D|0,16)|0;F=E&65535;G=D&65535;H=Wn(B|0,D|0,48)|0;J=H&65535;K=((((A^318)&65535)+239^E&65535)+239^D&65535)+239^H&65535;H=f[s>>2]|0;E=(H|0)==0;a:do if(!E){L=H+-1|0;M=(L&H|0)==0;if(!M)if(K>>>0>>0)N=K;else N=(K>>>0)%(H>>>0)|0;else N=K&L;O=f[(f[i>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(K|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}O=M+8|0;if((((d[O>>1]|0)==A<<16>>16?(d[O+2>>1]|0)==F<<16>>16:0)?(d[M+12>>1]|0)==G<<16>>16:0)?(d[O+6>>1]|0)==J<<16>>16:0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(K|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(H>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}M=S+8|0;if((((d[M>>1]|0)==A<<16>>16?(d[M+2>>1]|0)==F<<16>>16:0)?(d[S+12>>1]|0)==G<<16>>16:0)?(d[M+6>>1]|0)==J<<16>>16:0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;J=dn(20)|0;G=J+8|0;F=G;d[F>>1]=B;d[F+2>>1]=B>>>16;F=G+4|0;d[F>>1]=D;d[F+2>>1]=D>>>16;f[J+16>>2]=z;f[J+4>>2]=K;f[J>>2]=0;U=$(((f[p>>2]|0)+1|0)>>>0);V=$(H>>>0);X=$(n[m>>2]);do if(E|$(X*V)>>0<3|(H+-1&H|0)!=0)&1;G=~~$(W($(U/X)))>>>0;Ch(i,F>>>0>>0?G:F);F=f[s>>2]|0;G=F+-1|0;if(!(G&F)){Y=F;Z=G&K;break}if(K>>>0>>0){Y=F;Z=K}else{Y=F;Z=(K>>>0)%(F>>>0)|0}}else{Y=H;Z=Q}while(0);H=(f[i>>2]|0)+(Z<<2)|0;K=f[H>>2]|0;if(!K){f[J>>2]=f[v>>2];f[v>>2]=J;f[H>>2]=v;H=f[J>>2]|0;if(H|0){E=f[H+4>>2]|0;H=Y+-1|0;if(H&Y)if(E>>>0>>0)_=E;else _=(E>>>0)%(Y>>>0)|0;else _=E&H;aa=(f[i>>2]|0)+(_<<2)|0;R=44}}else{f[J>>2]=f[K>>2];aa=K;R=44}if((R|0)==44){R=0;f[aa>>2]=J}f[p>>2]=(f[p>>2]|0)+1}K=w;H=f[K>>2]|0;E=on(H|0,f[K+4>>2]|0,z|0,0)|0;Rg((f[f[x>>2]>>2]|0)+E|0,j|0,H|0)|0;H=f[l>>2]|0;f[H+(y<<2)>>2]=z;ba=z+1|0;ca=H}else{H=f[l>>2]|0;f[H+(y<<2)>>2]=f[C+16>>2];ba=z;ca=H}y=y+1|0;da=f[o>>2]|0;if(y>>>0>=da>>>0)break;else z=ba}if((ba|0)==(da|0))ea=ca;else{z=a+84|0;if(!(b[z>>0]|0)){y=f[a+72>>2]|0;j=f[a+68>>2]|0;x=j;if((y|0)==(j|0))fa=ca;else{w=y-j>>2;j=0;do{y=x+(j<<2)|0;f[y>>2]=f[ca+(f[y>>2]<<2)>>2];j=j+1|0}while(j>>>0>>0);fa=ca}}else{b[z>>0]=0;z=a+68|0;ca=a+72|0;w=f[ca>>2]|0;j=f[z>>2]|0;x=w-j>>2;y=j;j=w;if(da>>>0<=x>>>0)if(da>>>0>>0?(w=y+(da<<2)|0,(w|0)!=(j|0)):0){f[ca>>2]=j+(~((j+-4-w|0)>>>2)<<2);ga=da}else ga=da;else{kh(z,da-x|0,1204);ga=f[o>>2]|0}x=f[l>>2]|0;if(!ga)fa=x;else{l=f[a+68>>2]|0;a=0;do{f[l+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=x}}f[o>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[q>>2]|0;if((fa|0)!=(ea|0))f[q>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);br(ea);ha=ba}}else ha=0;ba=f[i+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;br(ba)}while((ea|0)!=0)}ea=f[i>>2]|0;f[i>>2]=0;if(!ea){u=g;return ha|0}br(ea);u=g;return ha|0}function hc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;c=u;u=u+16|0;d=c+8|0;e=c;g=c+4|0;h=a+16|0;i=f[h>>2]|0;j=a+20|0;k=f[j>>2]|0;if((k|0)==(i|0))l=i;else{m=k+(~((k+-4-i|0)>>>2)<<2)|0;f[j>>2]=m;l=m}m=a+24|0;if((l|0)==(f[m>>2]|0)){Ci(h,b);n=f[h>>2]|0;o=f[j>>2]|0}else{f[l>>2]=f[b>>2];k=l+4|0;f[j>>2]=k;n=i;o=k}k=f[a+8>>2]|0;i=(f[k+100>>2]|0)-(f[k+96>>2]|0)|0;k=(i|0)/12|0;if((n|0)==(o|0)){u=c;return 1}n=a+28|0;l=(i|0)>0;i=a+164|0;p=a+12|0;q=a+76|0;r=a+80|0;s=a+72|0;t=a+152|0;v=a+84|0;w=a+272|0;x=a+276|0;y=a+268|0;z=a+168|0;A=a+140|0;B=a+120|0;C=o;do{o=f[C+-4>>2]|0;f[b>>2]=o;a:do if((o|0)!=-1?(D=(o>>>0)/3|0,E=f[n>>2]|0,(f[E+(D>>>5<<2)>>2]&1<<(D&31)|0)==0):0){if(l){D=0;F=E;b:while(1){E=D+1|0;f[i>>2]=(f[i>>2]|0)+1;G=f[b>>2]|0;H=(G|0)==-1?-1:(G>>>0)/3|0;G=F+(H>>>5<<2)|0;f[G>>2]=1<<(H&31)|f[G>>2];G=f[q>>2]|0;if((G|0)==(f[r>>2]|0))Ci(s,b);else{f[G>>2]=f[b>>2];f[q>>2]=G+4}G=f[b>>2]|0;if((G|0)==-1)I=-1;else I=f[(f[f[p>>2]>>2]|0)+(G<<2)>>2]|0;J=(f[(f[t>>2]|0)+(I<<2)>>2]|0)!=-1;K=(f[v>>2]|0)+(I>>>5<<2)|0;L=1<<(I&31);M=f[K>>2]|0;do if(!(M&L)){f[K>>2]=M|L;if(J){N=f[b>>2]|0;O=30;break}f[d>>2]=0;P=f[w>>2]|0;if((P|0)==(f[x>>2]|0))Ci(y,d);else{f[P>>2]=0;f[w>>2]=P+4}P=f[b>>2]|0;Q=P+1|0;if((P|0)!=-1?(R=((Q>>>0)%3|0|0)==0?P+-2|0:Q,(R|0)!=-1):0)S=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;else S=-1;f[b>>2]=S}else{N=G;O=30}while(0);if((O|0)==30){O=0;G=N+1|0;if((N|0)==-1){O=35;break}L=((G>>>0)%3|0|0)==0?N+-2|0:G;if((L|0)==-1)T=-1;else T=f[(f[(f[p>>2]|0)+12>>2]|0)+(L<<2)>>2]|0;f[e>>2]=T;L=(((N>>>0)%3|0|0)==0?2:-1)+N|0;if((L|0)==-1)U=-1;else U=f[(f[(f[p>>2]|0)+12>>2]|0)+(L<<2)>>2]|0;L=(T|0)==-1;M=L?-1:(T>>>0)/3|0;V=(U|0)==-1;W=V?-1:(U>>>0)/3|0;K=((G>>>0)%3|0|0)==0?N+-2|0:G;if(((K|0)!=-1?(G=f[(f[p>>2]|0)+12>>2]|0,R=f[G+(K<<2)>>2]|0,(R|0)!=-1):0)?(K=(R>>>0)/3|0,R=f[n>>2]|0,(f[R+(K>>>5<<2)>>2]&1<<(K&31)|0)==0):0){K=(((N>>>0)%3|0|0)==0?2:-1)+N|0;do if((K|0)!=-1){Q=f[G+(K<<2)>>2]|0;if((Q|0)==-1)break;P=(Q>>>0)/3|0;if(!(f[R+(P>>>5<<2)>>2]&1<<(P&31))){O=63;break b}}while(0);if(!V)jf(a,f[i>>2]|0,H,0,W);f[d>>2]=3;R=f[w>>2]|0;if((R|0)==(f[x>>2]|0))Ci(y,d);else{f[R>>2]=3;f[w>>2]=R+4}X=f[e>>2]|0}else{if(!L){jf(a,f[i>>2]|0,H,1,M);R=f[b>>2]|0;if((R|0)==-1){O=44;break}else Y=R}else Y=N;R=(((Y>>>0)%3|0|0)==0?2:-1)+Y|0;if((R|0)==-1){O=44;break}K=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;if((K|0)==-1){O=44;break}R=(K>>>0)/3|0;if(f[(f[n>>2]|0)+(R>>>5<<2)>>2]&1<<(R&31)|0){O=44;break}f[d>>2]=5;R=f[w>>2]|0;if((R|0)==(f[x>>2]|0))Ci(y,d);else{f[R>>2]=5;f[w>>2]=R+4}X=U}f[b>>2]=X}if((E|0)>=(k|0))break a;D=E;F=f[n>>2]|0}do if((O|0)==35){O=0;f[e>>2]=-1;O=46}else if((O|0)==44){O=0;if(V)O=46;else{jf(a,f[i>>2]|0,H,0,W);O=46}}else if((O|0)==63){O=0;f[d>>2]=1;F=f[w>>2]|0;if((F|0)==(f[x>>2]|0))Ci(y,d);else{f[F>>2]=1;f[w>>2]=F+4}f[z>>2]=(f[z>>2]|0)+1;if(J?(F=f[(f[t>>2]|0)+(I<<2)>>2]|0,(1<<(F&31)&f[(f[A>>2]|0)+(F>>>5<<2)>>2]|0)==0):0){f[g>>2]=f[b>>2];f[d>>2]=f[g>>2];Ce(a,d,0)|0}F=f[i>>2]|0;f[d>>2]=H;D=Sd(B,d)|0;f[D>>2]=F;F=f[j>>2]|0;f[F+-4>>2]=U;if((F|0)==(f[m>>2]|0)){Ci(h,e);break}else{f[F>>2]=f[e>>2];f[j>>2]=F+4;break}}while(0);if((O|0)==46){O=0;f[d>>2]=7;F=f[w>>2]|0;if((F|0)==(f[x>>2]|0))Ci(y,d);else{f[F>>2]=7;f[w>>2]=F+4}f[j>>2]=(f[j>>2]|0)+-4}}}else O=11;while(0);if((O|0)==11){O=0;f[j>>2]=C+-4}C=f[j>>2]|0}while((f[h>>2]|0)!=(C|0));u=c;return 1}function ic(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;e=u;u=u+48|0;g=e+20|0;i=e+16|0;j=e+12|0;k=e;l=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=f[d>>2]|0;d=c+48|0;q=c+40|0;r=g+4|0;o=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=0;y=0;while(1){z=d;A=f[z>>2]|0;B=f[z+4>>2]|0;z=q;C=on(f[z>>2]|0,f[z+4>>2]|0,s+x|0,0)|0;z=Tn(C|0,I|0,A|0,B|0)|0;B=(f[f[c>>2]>>2]|0)+z|0;z=h[B>>0]|h[B+1>>0]<<8|h[B+2>>0]<<16|h[B+3>>0]<<24;f[i>>2]=z;f[j>>2]=z;z=pf(g,j)|0;if(!z){B=f[j>>2]|0;A=B&255;C=B>>>8;D=C&255;E=B>>>16;F=E&255;G=B>>>24;H=G&255;J=C&255;C=E&255;E=(((B&255^318)+239^J)+239^C)+239^G;G=f[r>>2]|0;K=(G|0)==0;a:do if(!K){L=G+-1|0;M=(L&G|0)==0;if(!M)if(E>>>0>>0)N=E;else N=(E>>>0)%(G>>>0)|0;else N=E&L;O=f[(f[g>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(E|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}O=M+8|0;if((((b[O>>0]|0)==A<<24>>24?(b[O+1>>0]|0)==D<<24>>24:0)?(b[O+2>>0]|0)==F<<24>>24:0)?(b[O+3>>0]|0)==H<<24>>24:0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(E|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(G>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}M=S+8|0;if((((b[M>>0]|0)==A<<24>>24?(b[M+1>>0]|0)==D<<24>>24:0)?(b[M+2>>0]|0)==F<<24>>24:0)?(b[M+3>>0]|0)==H<<24>>24:0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;H=dn(16)|0;F=H+8|0;D=B&-16776961|C<<16|J<<8;b[F>>0]=D;b[F+1>>0]=D>>8;b[F+2>>0]=D>>16;b[F+3>>0]=D>>24;f[H+12>>2]=y;f[H+4>>2]=E;f[H>>2]=0;U=$(((f[o>>2]|0)+1|0)>>>0);V=$(G>>>0);X=$(n[l>>2]);do if(K|$(X*V)>>0<3|(G+-1&G|0)!=0)&1;F=~~$(W($(U/X)))>>>0;Jh(g,D>>>0>>0?F:D);D=f[r>>2]|0;F=D+-1|0;if(!(F&D)){Y=D;Z=F&E;break}if(E>>>0>>0){Y=D;Z=E}else{Y=D;Z=(E>>>0)%(D>>>0)|0}}else{Y=G;Z=Q}while(0);G=(f[g>>2]|0)+(Z<<2)|0;E=f[G>>2]|0;if(!E){f[H>>2]=f[t>>2];f[t>>2]=H;f[G>>2]=t;G=f[H>>2]|0;if(G|0){K=f[G+4>>2]|0;G=Y+-1|0;if(G&Y)if(K>>>0>>0)_=K;else _=(K>>>0)%(Y>>>0)|0;else _=K&G;aa=(f[g>>2]|0)+(_<<2)|0;R=44}}else{f[H>>2]=f[E>>2];aa=E;R=44}if((R|0)==44){R=0;f[aa>>2]=H}f[o>>2]=(f[o>>2]|0)+1}E=v;G=f[E>>2]|0;K=on(G|0,f[E+4>>2]|0,y|0,0)|0;Rg((f[f[w>>2]>>2]|0)+K|0,i|0,G|0)|0;G=f[k>>2]|0;f[G+(x<<2)>>2]=y;ba=y+1|0;ca=G}else{G=f[k>>2]|0;f[G+(x<<2)>>2]=f[z+12>>2];ba=y;ca=G}x=x+1|0;da=f[m>>2]|0;if(x>>>0>=da>>>0)break;else y=ba}if((ba|0)==(da|0))ea=ca;else{y=a+84|0;if(!(b[y>>0]|0)){x=f[a+72>>2]|0;i=f[a+68>>2]|0;w=i;if((x|0)==(i|0))fa=ca;else{v=x-i>>2;i=0;do{x=w+(i<<2)|0;f[x>>2]=f[ca+(f[x>>2]<<2)>>2];i=i+1|0}while(i>>>0>>0);fa=ca}}else{b[y>>0]=0;y=a+68|0;ca=a+72|0;v=f[ca>>2]|0;i=f[y>>2]|0;w=v-i>>2;x=i;i=v;if(da>>>0<=w>>>0)if(da>>>0>>0?(v=x+(da<<2)|0,(v|0)!=(i|0)):0){f[ca>>2]=i+(~((i+-4-v|0)>>>2)<<2);ga=da}else ga=da;else{kh(y,da-w|0,1204);ga=f[m>>2]|0}w=f[k>>2]|0;if(!ga)fa=w;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[w+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=w}}f[m>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[p>>2]|0;if((fa|0)!=(ea|0))f[p>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);br(ea);ha=ba}}else ha=0;ba=f[g+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;br(ba)}while((ea|0)!=0)}ea=f[g>>2]|0;f[g>>2]=0;if(!ea){u=e;return ha|0}br(ea);u=e;return ha|0}function jc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;e=u;u=u+80|0;g=e+48|0;h=e+32|0;i=e+16|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+4|0;m=i+8|0;s=i+12|0;t=g+4|0;v=g+12|0;w=g+8|0;x=a+40|0;y=a+64|0;z=0;A=0;while(1){B=d;C=f[B>>2]|0;D=f[B+4>>2]|0;B=p;E=on(f[B>>2]|0,f[B+4>>2]|0,r+A|0,0)|0;B=Tn(E|0,I|0,C|0,D|0)|0;D=(f[f[c>>2]>>2]|0)+B|0;B=h;C=D;E=B+16|0;do{b[B>>0]=b[C>>0]|0;B=B+1|0;C=C+1|0}while((B|0)<(E|0));Xl(i|0,D|0,16)|0;C=Ff(g,i)|0;if(!C){B=f[i>>2]|0;E=f[q>>2]|0;F=f[m>>2]|0;G=f[s>>2]|0;H=(((B^318)+239^E)+239^F)+239^G;J=f[t>>2]|0;K=(J|0)==0;a:do if(!K){L=J+-1|0;M=(L&J|0)==0;if(!M)if(H>>>0>>0)N=H;else N=(H>>>0)%(J>>>0)|0;else N=H&L;O=f[(f[g>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(H|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}if((((f[M+8>>2]|0)==(B|0)?(f[M+12>>2]|0)==(E|0):0)?(f[M+16>>2]|0)==(F|0):0)?(f[M+20>>2]|0)==(G|0):0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(H|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(J>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}if((((f[S+8>>2]|0)==(B|0)?(f[S+12>>2]|0)==(E|0):0)?(f[S+16>>2]|0)==(F|0):0)?(f[S+20>>2]|0)==(G|0):0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;D=dn(28)|0;f[D+8>>2]=B;f[D+12>>2]=E;f[D+16>>2]=F;f[D+20>>2]=G;f[D+24>>2]=z;f[D+4>>2]=H;f[D>>2]=0;U=$(((f[v>>2]|0)+1|0)>>>0);V=$(J>>>0);X=$(n[k>>2]);do if(K|$(X*V)>>0<3|(J+-1&J|0)!=0)&1;M=~~$(W($(U/X)))>>>0;Gh(g,P>>>0>>0?M:P);P=f[t>>2]|0;M=P+-1|0;if(!(M&P)){Y=P;Z=M&H;break}if(H>>>0

>>0){Y=P;Z=H}else{Y=P;Z=(H>>>0)%(P>>>0)|0}}else{Y=J;Z=Q}while(0);J=(f[g>>2]|0)+(Z<<2)|0;H=f[J>>2]|0;if(!H){f[D>>2]=f[w>>2];f[w>>2]=D;f[J>>2]=w;J=f[D>>2]|0;if(J|0){K=f[J+4>>2]|0;J=Y+-1|0;if(J&Y)if(K>>>0>>0)_=K;else _=(K>>>0)%(Y>>>0)|0;else _=K&J;aa=(f[g>>2]|0)+(_<<2)|0;R=44}}else{f[D>>2]=f[H>>2];aa=H;R=44}if((R|0)==44){R=0;f[aa>>2]=D}f[v>>2]=(f[v>>2]|0)+1}H=x;J=f[H>>2]|0;K=on(J|0,f[H+4>>2]|0,z|0,0)|0;Rg((f[f[y>>2]>>2]|0)+K|0,h|0,J|0)|0;J=f[j>>2]|0;f[J+(A<<2)>>2]=z;ba=z+1|0;ca=J}else{J=f[j>>2]|0;f[J+(A<<2)>>2]=f[C+24>>2];ba=z;ca=J}A=A+1|0;da=f[l>>2]|0;if(A>>>0>=da>>>0)break;else z=ba}if((ba|0)==(da|0))ea=ca;else{z=a+84|0;if(!(b[z>>0]|0)){A=f[a+72>>2]|0;h=f[a+68>>2]|0;y=h;if((A|0)==(h|0))fa=ca;else{x=A-h>>2;h=0;do{A=y+(h<<2)|0;f[A>>2]=f[ca+(f[A>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);fa=ca}}else{b[z>>0]=0;z=a+68|0;ca=a+72|0;x=f[ca>>2]|0;h=f[z>>2]|0;y=x-h>>2;A=h;h=x;if(da>>>0<=y>>>0)if(da>>>0>>0?(x=A+(da<<2)|0,(x|0)!=(h|0)):0){f[ca>>2]=h+(~((h+-4-x|0)>>>2)<<2);ga=da}else ga=da;else{kh(z,da-y|0,1204);ga=f[l>>2]|0}y=f[j>>2]|0;if(!ga)fa=y;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=y}}f[l>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[o>>2]|0;if((fa|0)!=(ea|0))f[o>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);br(ea);ha=ba}}else ha=0;ba=f[g+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;br(ba)}while((ea|0)!=0)}ea=f[g>>2]|0;f[g>>2]=0;if(!ea){u=e;return ha|0}br(ea);u=e;return ha|0}function kc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=Oa,T=Oa,U=Oa,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;g=u;u=u+48|0;h=g+12|0;i=g+38|0;j=g+32|0;k=g;l=h+16|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=f[e>>2]|0;e=c+48|0;q=c+40|0;r=j+2|0;o=j+4|0;t=h+4|0;v=h+12|0;w=h+8|0;x=a+40|0;y=a+64|0;z=0;A=0;while(1){B=e;C=f[B>>2]|0;D=f[B+4>>2]|0;B=q;E=on(f[B>>2]|0,f[B+4>>2]|0,s+A|0,0)|0;B=Tn(E|0,I|0,C|0,D|0)|0;D=(f[f[c>>2]>>2]|0)+B|0;b[i>>0]=b[D>>0]|0;b[i+1>>0]=b[D+1>>0]|0;b[i+2>>0]=b[D+2>>0]|0;b[i+3>>0]=b[D+3>>0]|0;b[i+4>>0]=b[D+4>>0]|0;b[i+5>>0]=b[D+5>>0]|0;Xl(j|0,D|0,6)|0;D=Pf(h,j)|0;if(!D){B=d[j>>1]|0;C=d[r>>1]|0;E=d[o>>1]|0;F=(((B^318)&65535)+239^C&65535)+239^E&65535;G=f[t>>2]|0;H=(G|0)==0;a:do if(!H){J=G+-1|0;K=(J&G|0)==0;if(!K)if(F>>>0>>0)L=F;else L=(F>>>0)%(G>>>0)|0;else L=F&J;M=f[(f[h>>2]|0)+(L<<2)>>2]|0;if((M|0)!=0?(N=f[M>>2]|0,(N|0)!=0):0){if(K){K=N;while(1){M=f[K+4>>2]|0;if(!((M|0)==(F|0)|(M&J|0)==(L|0))){O=L;P=29;break a}M=K+8|0;if(((d[M>>1]|0)==B<<16>>16?(d[M+2>>1]|0)==C<<16>>16:0)?(d[K+12>>1]|0)==E<<16>>16:0)break a;K=f[K>>2]|0;if(!K){O=L;P=29;break a}}}else Q=N;while(1){K=f[Q+4>>2]|0;if((K|0)!=(F|0)){if(K>>>0>>0)R=K;else R=(K>>>0)%(G>>>0)|0;if((R|0)!=(L|0)){O=L;P=29;break a}}K=Q+8|0;if(((d[K>>1]|0)==B<<16>>16?(d[K+2>>1]|0)==C<<16>>16:0)?(d[Q+12>>1]|0)==E<<16>>16:0)break a;Q=f[Q>>2]|0;if(!Q){O=L;P=29;break}}}else{O=L;P=29}}else{O=0;P=29}while(0);if((P|0)==29){P=0;N=dn(20)|0;d[N+8>>1]=B;d[N+10>>1]=C;d[N+12>>1]=E;f[N+16>>2]=z;f[N+4>>2]=F;f[N>>2]=0;S=$(((f[v>>2]|0)+1|0)>>>0);T=$(G>>>0);U=$(n[l>>2]);do if(H|$(U*T)>>0<3|(G+-1&G|0)!=0)&1;J=~~$(W($(S/U)))>>>0;Dh(h,K>>>0>>0?J:K);K=f[t>>2]|0;J=K+-1|0;if(!(J&K)){V=K;X=J&F;break}if(F>>>0>>0){V=K;X=F}else{V=K;X=(F>>>0)%(K>>>0)|0}}else{V=G;X=O}while(0);G=(f[h>>2]|0)+(X<<2)|0;F=f[G>>2]|0;if(!F){f[N>>2]=f[w>>2];f[w>>2]=N;f[G>>2]=w;G=f[N>>2]|0;if(G|0){H=f[G+4>>2]|0;G=V+-1|0;if(G&V)if(H>>>0>>0)Y=H;else Y=(H>>>0)%(V>>>0)|0;else Y=H&G;Z=(f[h>>2]|0)+(Y<<2)|0;P=42}}else{f[N>>2]=f[F>>2];Z=F;P=42}if((P|0)==42){P=0;f[Z>>2]=N}f[v>>2]=(f[v>>2]|0)+1}F=x;G=f[F>>2]|0;H=on(G|0,f[F+4>>2]|0,z|0,0)|0;Rg((f[f[y>>2]>>2]|0)+H|0,i|0,G|0)|0;G=f[k>>2]|0;f[G+(A<<2)>>2]=z;_=z+1|0;aa=G}else{G=f[k>>2]|0;f[G+(A<<2)>>2]=f[D+16>>2];_=z;aa=G}A=A+1|0;ba=f[m>>2]|0;if(A>>>0>=ba>>>0)break;else z=_}if((_|0)==(ba|0))ca=aa;else{z=a+84|0;if(!(b[z>>0]|0)){A=f[a+72>>2]|0;i=f[a+68>>2]|0;y=i;if((A|0)==(i|0))da=aa;else{x=A-i>>2;i=0;do{A=y+(i<<2)|0;f[A>>2]=f[aa+(f[A>>2]<<2)>>2];i=i+1|0}while(i>>>0>>0);da=aa}}else{b[z>>0]=0;z=a+68|0;aa=a+72|0;x=f[aa>>2]|0;i=f[z>>2]|0;y=x-i>>2;A=i;i=x;if(ba>>>0<=y>>>0)if(ba>>>0>>0?(x=A+(ba<<2)|0,(x|0)!=(i|0)):0){f[aa>>2]=i+(~((i+-4-x|0)>>>2)<<2);ea=ba}else ea=ba;else{kh(z,ba-y|0,1204);ea=f[m>>2]|0}y=f[k>>2]|0;if(!ea)da=y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);da=y}}f[m>>2]=_;ca=da}if(!ca)fa=_;else{da=f[p>>2]|0;if((da|0)!=(ca|0))f[p>>2]=da+(~((da+-4-ca|0)>>>2)<<2);br(ca);fa=_}}else fa=0;_=f[h+8>>2]|0;if(_|0){ca=_;do{_=ca;ca=f[ca>>2]|0;br(_)}while((ca|0)!=0)}ca=f[h>>2]|0;f[h>>2]=0;if(!ca){u=g;return fa|0}br(ca);u=g;return fa|0}function lc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;d=u;u=u+80|0;e=d+72|0;g=d+64|0;h=d;i=d+68|0;j=d+60|0;k=a+352|0;if(b[k>>0]|0?(l=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0,((f[l+12>>2]|0)-(f[l+8>>2]|0)|0)>0):0){l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+8|0;m=f[f[l>>2]>>2]|0;f[e>>2]=c;l=m+4|0;n=m+8|0;o=f[n>>2]|0;if((o|0)==(f[m+12>>2]|0))Ci(l,e);else{f[o>>2]=c;f[n>>2]=o+4}o=f[e>>2]|0;p=m+16|0;q=m+20|0;m=f[q>>2]|0;r=f[p>>2]|0;s=m-r>>2;t=r;if((o|0)<(s|0)){v=t;w=o}else{r=o+1|0;f[g>>2]=-1;x=m;if(r>>>0<=s>>>0)if(r>>>0>>0?(m=t+(r<<2)|0,(m|0)!=(x|0)):0){f[q>>2]=x+(~((x+-4-m|0)>>>2)<<2);y=o;z=t}else{y=o;z=t}else{kh(p,r-s|0,g);y=f[e>>2]|0;z=f[p>>2]|0}v=z;w=y}f[v+(w<<2)>>2]=((f[n>>2]|0)-(f[l>>2]|0)>>2)+-1;A=1;u=d;return A|0}l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+56|0;n=f[(f[(f[l>>2]|0)+84>>2]|0)+(c<<2)>>2]|0;l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+4|0;w=f[(f[(f[l>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;f[g>>2]=-1;l=a+172|0;v=f[a+176>>2]|0;y=f[l>>2]|0;z=y;a:do if((v|0)==(y|0))B=-1;else{p=(v-y|0)/136|0;s=0;while(1){if((f[z+(s*136|0)>>2]|0)==(c|0))break;r=s+1|0;if(r>>>0

>>0)s=r;else{B=-1;break a}}f[g>>2]=s;B=s}while(0);b:do if(!(b[k>>0]|0)){y=(f[w+56>>2]|0)==0;do if(!((n|0)==0|y)){if((n|0)==1?b[z+(B*136|0)+28>>0]|0:0)break;v=z+(B*136|0)+104|0;p=z+(B*136|0)+4|0;r=(f[z+(B*136|0)+60>>2]|0)-(f[z+(B*136|0)+56>>2]|0)>>2;f[e>>2]=-1;Sf(z+(B*136|0)+116|0,r,e);r=dn(80)|0;t=f[a+8>>2]|0;f[r+4>>2]=0;f[r>>2]=3164;o=r+8|0;m=r+12|0;x=m+44|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(x|0));f[o>>2]=3188;q=r+56|0;f[q>>2]=0;f[r+60>>2]=0;f[r+64>>2]=0;f[r+68>>2]=t;f[r+72>>2]=v;C=r+76|0;f[C>>2]=0;D=h+4|0;m=D+4|0;x=m+40|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(x|0));f[h>>2]=3188;m=h+48|0;f[m>>2]=0;x=h+52|0;f[x>>2]=0;f[h+56>>2]=0;f[D>>2]=p;E=f[z+(B*136|0)+68>>2]|0;F=((f[E+4>>2]|0)-(f[E>>2]|0)>>2>>>0)/3|0;b[e>>0]=0;Xg(h+24|0,F,e);F=f[D>>2]|0;E=(f[F+56>>2]|0)-(f[F+52>>2]|0)>>2;b[e>>0]=0;Xg(h+36|0,E,e);f[h+8>>2]=p;f[h+12>>2]=v;f[h+16>>2]=t;f[h+20>>2]=r;f[C>>2]=a+72;ef(o,h)|0;Yf(q,f[m>>2]|0,f[x>>2]|0);E=r;f[h>>2]=3188;F=f[m>>2]|0;if(F|0){m=f[x>>2]|0;if((m|0)!=(F|0))f[x>>2]=m+(~((m+-4-F|0)>>>2)<<2);br(F)}f[h>>2]=3208;F=f[h+36>>2]|0;if(F|0)br(F);F=f[h+24>>2]|0;if(F|0)br(F);G=0;H=E;I=42;break b}while(0);if(!y){s=f[a+12>>2]|0;E=(f[s+28>>2]|0)-(f[s+24>>2]|0)>>2;f[e>>2]=-1;Sf(z+(B*136|0)+116|0,E,e);b[(f[l>>2]|0)+((f[g>>2]|0)*136|0)+100>>0]=0;J=z+(B*136|0)+104|0;I=26}else I=24}else I=24;while(0);if((I|0)==24){J=a+40|0;I=26}if((I|0)==26){B=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+48|0;do if((Yh(f[B>>2]|0)|0)==0?(f[w+56>>2]|0)==0:0){if(b[k>>0]|0?(z=f[a+8>>2]|0,((f[z+12>>2]|0)-(f[z+8>>2]|0)|0)>=5):0){I=31;break}uf(e,a,J);K=1;L=f[e>>2]|0}else I=31;while(0);if((I|0)==31){Le(e,a,J);K=0;L=f[e>>2]|0}if(!L)M=0;else{G=K;H=L;I=42}}if((I|0)==42){I=f[g>>2]|0;if((I|0)==-1)N=a+68|0;else N=(f[l>>2]|0)+(I*136|0)+132|0;f[N>>2]=G;G=dn(76)|0;f[i>>2]=H;ml(G,i,c);c=G;G=f[i>>2]|0;f[i>>2]=0;if(G|0)Va[f[(f[G>>2]|0)+4>>2]&127](G);G=a+188|0;i=f[G>>2]|0;if((i|0)==(f[a+192>>2]|0))Ci(a+184|0,g);else{f[i>>2]=f[g>>2];f[G>>2]=i+4}i=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0;f[j>>2]=c;a=i+12|0;G=f[a>>2]|0;if(G>>>0<(f[i+16>>2]|0)>>>0){f[j>>2]=0;f[G>>2]=c;f[a>>2]=G+4;O=j}else{yg(i+8|0,j);O=j}j=f[O>>2]|0;f[O>>2]=0;if(!j)M=1;else{Va[f[(f[j>>2]|0)+4>>2]&127](j);M=1}}A=M;u=d;return A|0}function mc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;d=u;u=u+80|0;e=d+72|0;g=d+64|0;h=d;i=d+68|0;j=d+60|0;k=a+288|0;if(b[k>>0]|0?(l=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0,((f[l+12>>2]|0)-(f[l+8>>2]|0)|0)>0):0){l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+8|0;m=f[f[l>>2]>>2]|0;f[e>>2]=c;l=m+4|0;n=m+8|0;o=f[n>>2]|0;if((o|0)==(f[m+12>>2]|0))Ci(l,e);else{f[o>>2]=c;f[n>>2]=o+4}o=f[e>>2]|0;p=m+16|0;q=m+20|0;m=f[q>>2]|0;r=f[p>>2]|0;s=m-r>>2;t=r;if((o|0)<(s|0)){v=t;w=o}else{r=o+1|0;f[g>>2]=-1;x=m;if(r>>>0<=s>>>0)if(r>>>0>>0?(m=t+(r<<2)|0,(m|0)!=(x|0)):0){f[q>>2]=x+(~((x+-4-m|0)>>>2)<<2);y=o;z=t}else{y=o;z=t}else{kh(p,r-s|0,g);y=f[e>>2]|0;z=f[p>>2]|0}v=z;w=y}f[v+(w<<2)>>2]=((f[n>>2]|0)-(f[l>>2]|0)>>2)+-1;A=1;u=d;return A|0}l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+56|0;n=f[(f[(f[l>>2]|0)+84>>2]|0)+(c<<2)>>2]|0;l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+4|0;w=f[(f[(f[l>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;f[g>>2]=-1;l=a+172|0;v=f[a+176>>2]|0;y=f[l>>2]|0;z=y;a:do if((v|0)==(y|0))B=-1;else{p=(v-y|0)/136|0;s=0;while(1){if((f[z+(s*136|0)>>2]|0)==(c|0))break;r=s+1|0;if(r>>>0

>>0)s=r;else{B=-1;break a}}f[g>>2]=s;B=s}while(0);b:do if(!(b[k>>0]|0)){y=(f[w+56>>2]|0)==0;do if(!((n|0)==0|y)){if((n|0)==1?b[z+(B*136|0)+28>>0]|0:0)break;v=z+(B*136|0)+104|0;p=z+(B*136|0)+4|0;r=(f[z+(B*136|0)+60>>2]|0)-(f[z+(B*136|0)+56>>2]|0)>>2;f[e>>2]=-1;Sf(z+(B*136|0)+116|0,r,e);r=dn(80)|0;t=f[a+8>>2]|0;f[r+4>>2]=0;f[r>>2]=3164;o=r+8|0;m=r+12|0;x=m+44|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(x|0));f[o>>2]=3188;q=r+56|0;f[q>>2]=0;f[r+60>>2]=0;f[r+64>>2]=0;f[r+68>>2]=t;f[r+72>>2]=v;C=r+76|0;f[C>>2]=0;D=h+4|0;m=D+4|0;x=m+40|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(x|0));f[h>>2]=3188;m=h+48|0;f[m>>2]=0;x=h+52|0;f[x>>2]=0;f[h+56>>2]=0;f[D>>2]=p;E=f[z+(B*136|0)+68>>2]|0;F=((f[E+4>>2]|0)-(f[E>>2]|0)>>2>>>0)/3|0;b[e>>0]=0;Xg(h+24|0,F,e);F=f[D>>2]|0;E=(f[F+56>>2]|0)-(f[F+52>>2]|0)>>2;b[e>>0]=0;Xg(h+36|0,E,e);f[h+8>>2]=p;f[h+12>>2]=v;f[h+16>>2]=t;f[h+20>>2]=r;f[C>>2]=a+72;ef(o,h)|0;Yf(q,f[m>>2]|0,f[x>>2]|0);E=r;f[h>>2]=3188;F=f[m>>2]|0;if(F|0){m=f[x>>2]|0;if((m|0)!=(F|0))f[x>>2]=m+(~((m+-4-F|0)>>>2)<<2);br(F)}f[h>>2]=3208;F=f[h+36>>2]|0;if(F|0)br(F);F=f[h+24>>2]|0;if(F|0)br(F);G=0;H=E;I=42;break b}while(0);if(!y){s=f[a+12>>2]|0;E=(f[s+28>>2]|0)-(f[s+24>>2]|0)>>2;f[e>>2]=-1;Sf(z+(B*136|0)+116|0,E,e);b[(f[l>>2]|0)+((f[g>>2]|0)*136|0)+100>>0]=0;J=z+(B*136|0)+104|0;I=26}else I=24}else I=24;while(0);if((I|0)==24){J=a+40|0;I=26}if((I|0)==26){B=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+48|0;do if((Yh(f[B>>2]|0)|0)==0?(f[w+56>>2]|0)==0:0){if(b[k>>0]|0?(z=f[a+8>>2]|0,((f[z+12>>2]|0)-(f[z+8>>2]|0)|0)>=5):0){I=31;break}uf(e,a,J);K=1;L=f[e>>2]|0}else I=31;while(0);if((I|0)==31){Le(e,a,J);K=0;L=f[e>>2]|0}if(!L)M=0;else{G=K;H=L;I=42}}if((I|0)==42){I=f[g>>2]|0;if((I|0)==-1)N=a+68|0;else N=(f[l>>2]|0)+(I*136|0)+132|0;f[N>>2]=G;G=dn(76)|0;f[i>>2]=H;ml(G,i,c);c=G;G=f[i>>2]|0;f[i>>2]=0;if(G|0)Va[f[(f[G>>2]|0)+4>>2]&127](G);G=a+188|0;i=f[G>>2]|0;if((i|0)==(f[a+192>>2]|0))Ci(a+184|0,g);else{f[i>>2]=f[g>>2];f[G>>2]=i+4}i=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0;f[j>>2]=c;a=i+12|0;G=f[a>>2]|0;if(G>>>0<(f[i+16>>2]|0)>>>0){f[j>>2]=0;f[G>>2]=c;f[a>>2]=G+4;O=j}else{yg(i+8|0,j);O=j}j=f[O>>2]|0;f[O>>2]=0;if(!j)M=1;else{Va[f[(f[j>>2]|0)+4>>2]&127](j);M=1}}A=M;u=d;return A|0}function nc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=u;u=u+64|0;d=e+48|0;h=e+40|0;i=e+32|0;j=e+16|0;k=e+8|0;l=e;m=e+28|0;n=a+8|0;o=f[n>>2]|0;if((o+-2|0)>>>0<=28){f[a+72>>2]=o;p=1<>2]=p+-1;o=p+-2|0;f[a+80>>2]=o;f[a+84>>2]=(o|0)/2|0}o=a+40|0;f[a+48>>2]=g;g=a+88|0;lk(g);p=a+36|0;q=f[p>>2]|0;r=(f[q+4>>2]|0)-(f[q>>2]|0)|0;s=r>>2;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;t=k;f[t>>2]=0;f[t+4>>2]=0;t=l;f[t>>2]=0;f[t+4>>2]=0;if((r|0)<=0){u=e;return 1}r=j+4|0;t=j+8|0;v=a+84|0;w=a+80|0;x=h+4|0;y=i+4|0;z=d+4|0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=l+4|0;F=a+76|0;a=k+4|0;G=l+4|0;H=f[q>>2]|0;if((f[q+4>>2]|0)==(H|0)){J=q;mq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];fc(o,d,j);H=f[j>>2]|0;q=(H|0)>-1?H:0-H|0;M=f[r>>2]|0;N=(M|0)>-1?M:0-M|0;O=Tn(N|0,((N|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;q=f[t>>2]|0;N=(q|0)>-1;P=N?q:0-q|0;q=Tn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((q|0)==0&(P|0)==0){O=f[v>>2]|0;Q=O;R=j;S=M;T=O}else{O=f[v>>2]|0;U=((O|0)<0)<<31>>31;V=on(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=zk(V|0,I|0,q|0,P|0)|0;f[j>>2]=H;V=on(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=zk(V|0,I|0,q|0,P|0)|0;f[r>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=t;S=M;T=O}f[R>>2]=Q;O=f[j>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[t>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[t>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[t>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){q=(N|0)==(Z|0);if(!(P&q)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(q&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);P=0-S|0;M=0-_|0;f[j>>2]=0-O;f[r>>2]=P;f[t>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(q=(N|0)==(ca|0),!(M&q)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(q&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);N=K<<1;M=b+(N<<2)|0;H=M+4|0;O=f[H>>2]|0;f[h>>2]=f[M>>2];f[x>>2]=O;f[i>>2]=$;f[y>>2]=aa;Dd(d,n,h,i);O=f[d>>2]|0;f[k>>2]=O;P=f[z>>2]|0;f[A>>2]=P;q=f[H>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=q;f[i>>2]=da;f[C>>2]=ea;Dd(d,n,h,i);q=f[d>>2]|0;f[l>>2]=q;M=f[D>>2]|0;f[E>>2]=M;H=f[v>>2]|0;if((H|0)>=(O|0))if((O|0)<(0-H|0))fa=(f[F>>2]|0)+O|0;else fa=O;else fa=O-(f[F>>2]|0)|0;f[k>>2]=fa;if((H|0)>=(P|0))if((P|0)<(0-H|0))ga=(f[F>>2]|0)+P|0;else ga=P;else ga=P-(f[F>>2]|0)|0;f[a>>2]=ga;if((H|0)>=(q|0))if((q|0)<(0-H|0))ha=(f[F>>2]|0)+q|0;else ha=q;else ha=q-(f[F>>2]|0)|0;f[l>>2]=ha;if((H|0)>=(M|0))if((M|0)<(0-H|0))ia=(f[F>>2]|0)+M|0;else ia=M;else ia=M-(f[F>>2]|0)|0;f[G>>2]=ia;if((((ga|0)>-1?ga:0-ga|0)+((fa|0)>-1?fa:0-fa|0)|0)<(((ha|0)>-1?ha:0-ha|0)+((ia|0)>-1?ia:0-ia|0)|0)){Vi(g,0);ja=k}else{Vi(g,1);ja=l}M=f[ja>>2]|0;if((M|0)<0)ka=(f[F>>2]|0)+M|0;else ka=M;M=c+(N<<2)|0;f[M>>2]=ka;N=f[ja+4>>2]|0;if((N|0)<0)la=(f[F>>2]|0)+N|0;else la=N;f[M+4>>2]=la;K=K+1|0;if((K|0)>=(s|0)){ma=5;break}M=f[p>>2]|0;L=f[M>>2]|0;if((f[M+4>>2]|0)-L>>2>>>0<=K>>>0){J=M;ma=6;break}}if((ma|0)==5){u=e;return 1}else if((ma|0)==6)mq(J);return 0}function oc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;c=u;u=u+48|0;d=c+24|0;e=c+12|0;g=c;if(!b){h=0;u=c;return h|0}i=a+12|0;j=a+4|0;k=f[j>>2]|0;l=f[a>>2]|0;m=k-l>>2;n=a+16|0;o=f[n>>2]|0;p=f[i>>2]|0;q=o-p>>2;r=p;p=o;if(m>>>0<=q>>>0)if(m>>>0>>0?(o=r+(m<<2)|0,(o|0)!=(p|0)):0){f[n>>2]=p+(~((p+-4-o|0)>>>2)<<2);s=l;t=k}else{s=l;t=k}else{kh(i,m-q|0,5828);s=f[a>>2]|0;t=f[j>>2]|0}f[d>>2]=0;q=d+4|0;f[q>>2]=0;f[d+8>>2]=0;$j(d,t-s>>2);s=f[j>>2]|0;t=f[a>>2]|0;if((s|0)==(t|0)){v=s;w=s}else{m=f[d>>2]|0;k=m;l=k;o=0;p=s;s=k;k=t;t=m;while(1){m=f[k+(o<<2)>>2]|0;n=f[q>>2]|0;if(m>>>0>2>>>0){x=l;y=s;z=k;A=p}else{r=m+1|0;f[e>>2]=0;B=n-t>>2;C=t;D=n;if(r>>>0<=B>>>0)if(r>>>0>>0?(n=C+(r<<2)|0,(n|0)!=(D|0)):0){f[q>>2]=D+(~((D+-4-n|0)>>>2)<<2);E=l;F=p;G=k}else{E=l;F=p;G=k}else{kh(d,r-B|0,e);E=f[d>>2]|0;F=f[j>>2]|0;G=f[a>>2]|0}x=E;y=E;z=G;A=F}B=y+(m<<2)|0;f[B>>2]=(f[B>>2]|0)+1;o=o+1|0;if(o>>>0>=A-z>>2>>>0){v=z;w=A;break}else{l=x;p=A;s=y;k=z;t=y}}}y=w-v|0;v=y>>2;f[e>>2]=0;w=e+4|0;f[w>>2]=0;f[e+8>>2]=0;if(!v){H=0;I=0}else{if(v>>>0>536870911)mq(e);t=dn(y<<1)|0;f[w>>2]=t;f[e>>2]=t;y=t+(v<<3)|0;f[e+8>>2]=y;z=v;v=t;k=t;while(1){s=v;f[s>>2]=-1;f[s+4>>2]=-1;s=k+8|0;A=z+-1|0;if(!A)break;else{z=A;v=s;k=s}}f[w>>2]=y;H=t;I=t}t=f[q>>2]|0;y=f[d>>2]|0;k=t-y|0;v=k>>2;f[g>>2]=0;z=g+4|0;f[z>>2]=0;f[g+8>>2]=0;s=y;do if(v)if(v>>>0>1073741823)mq(g);else{A=dn(k)|0;f[g>>2]=A;p=A+(v<<2)|0;f[g+8>>2]=p;hj(A|0,0,k|0)|0;f[z>>2]=p;J=A;K=p;L=A;break}else{J=0;K=0;L=0}while(0);if((t|0)!=(y|0)){y=0;t=0;while(1){f[J+(t<<2)>>2]=y;k=t+1|0;if(k>>>0>>0){y=(f[s+(t<<2)>>2]|0)+y|0;t=k}else break}}t=f[j>>2]|0;j=f[a>>2]|0;y=j;if((t|0)!=(j|0)){k=a+40|0;a=t-j>>2;j=H;t=H;g=H;A=H;p=H;x=H;l=0;o=J;while(1){F=f[y+(l<<2)>>2]|0;G=l+1|0;E=((G>>>0)%3|0|0)==0?l+-2|0:G;if((E|0)==-1)M=-1;else M=f[y+(E<<2)>>2]|0;E=((l>>>0)%3|0|0)==0;G=(E?2:-1)+l|0;if((G|0)==-1)N=-1;else N=f[y+(G<<2)>>2]|0;if(E?(M|0)==(N|0)|((F|0)==(M|0)|(F|0)==(N|0)):0){f[k>>2]=(f[k>>2]|0)+1;O=j;P=t;Q=g;R=A;S=p;T=x;U=l+2|0;V=o}else W=51;a:do if((W|0)==51){W=0;E=f[s+(N<<2)>>2]|0;b:do if((E|0)>0){G=0;B=f[o+(N<<2)>>2]|0;while(1){m=f[p+(B<<3)>>2]|0;if((m|0)==-1){X=j;Y=t;Z=A;_=p;break b}if((m|0)==(M|0)){m=f[p+(B<<3)+4>>2]|0;if((m|0)==-1)$=-1;else $=f[y+(m<<2)>>2]|0;if((F|0)!=($|0))break}m=G+1|0;if((m|0)<(E|0)){G=m;B=B+1|0}else{X=j;Y=t;Z=A;_=p;break b}}m=f[A+(B<<3)+4>>2]|0;r=G;n=B;D=t;while(1){r=r+1|0;if((r|0)>=(E|0))break;C=n+1|0;f[D+(n<<3)>>2]=f[D+(C<<3)>>2];f[D+(n<<3)+4>>2]=f[D+(C<<3)+4>>2];if((f[j+(n<<3)>>2]|0)==-1)break;else{n=C;D=j}}f[g+(n<<3)>>2]=-1;if((m|0)==-1){X=g;Y=g;Z=g;_=g}else{D=f[i>>2]|0;f[D+(l<<2)>>2]=m;f[D+(m<<2)>>2]=l;O=g;P=g;Q=g;R=g;S=g;T=x;U=l;V=o;break a}}else{X=j;Y=t;Z=A;_=p}while(0);E=f[s+(M<<2)>>2]|0;if((E|0)>0){D=0;r=f[J+(M<<2)>>2]|0;while(1){aa=x+(r<<3)|0;if((f[aa>>2]|0)==-1)break;D=D+1|0;if((D|0)>=(E|0)){O=x;P=x;Q=x;R=x;S=x;T=x;U=l;V=J;break a}else r=r+1|0}f[aa>>2]=N;f[H+(r<<3)+4>>2]=l;O=H;P=H;Q=H;R=H;S=H;T=H;U=l;V=J}else{O=X;P=Y;Q=g;R=Z;S=_;T=x;U=l;V=o}}while(0);l=U+1|0;if(l>>>0>=a>>>0)break;else{j=O;t=P;g=Q;A=R;p=S;x=T;o=V}}}f[b>>2]=v;if(!J){ba=H;ca=I}else{if((K|0)!=(J|0))f[z>>2]=K+(~((K+-4-J|0)>>>2)<<2);br(L);L=f[e>>2]|0;ba=L;ca=L}if(ba|0){L=f[w>>2]|0;if((L|0)!=(ba|0))f[w>>2]=L+(~((L+-8-ba|0)>>>3)<<3);br(ca)}ca=f[d>>2]|0;if(ca|0){d=f[q>>2]|0;if((d|0)!=(ca|0))f[q>>2]=d+(~((d+-4-ca|0)>>>2)<<2);br(ca)}h=1;u=c;return h|0}function pc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=Oa,S=Oa,T=Oa,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0;e=u;u=u+48|0;g=e+12|0;h=e+35|0;i=e+32|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+1|0;m=i+2|0;s=g+4|0;t=g+12|0;v=g+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=d;B=f[A>>2]|0;C=f[A+4>>2]|0;A=p;D=on(f[A>>2]|0,f[A+4>>2]|0,r+y|0,0)|0;A=Tn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;b[h>>0]=b[C>>0]|0;b[h+1>>0]=b[C+1>>0]|0;b[h+2>>0]=b[C+2>>0]|0;Xl(i|0,C|0,3)|0;C=Uf(g,i)|0;if(!C){A=b[i>>0]|0;B=b[q>>0]|0;D=b[m>>0]|0;E=((A&255^318)+239^B&255)+239^D&255;F=f[s>>2]|0;G=(F|0)==0;a:do if(!G){H=F+-1|0;J=(H&F|0)==0;if(!J)if(E>>>0>>0)K=E;else K=(E>>>0)%(F>>>0)|0;else K=E&H;L=f[(f[g>>2]|0)+(K<<2)>>2]|0;if((L|0)!=0?(M=f[L>>2]|0,(M|0)!=0):0){if(J){J=M;while(1){L=f[J+4>>2]|0;if(!((L|0)==(E|0)|(L&H|0)==(K|0))){N=K;O=29;break a}L=J+8|0;if(((b[L>>0]|0)==A<<24>>24?(b[L+1>>0]|0)==B<<24>>24:0)?(b[L+2>>0]|0)==D<<24>>24:0)break a;J=f[J>>2]|0;if(!J){N=K;O=29;break a}}}else P=M;while(1){J=f[P+4>>2]|0;if((J|0)!=(E|0)){if(J>>>0>>0)Q=J;else Q=(J>>>0)%(F>>>0)|0;if((Q|0)!=(K|0)){N=K;O=29;break a}}J=P+8|0;if(((b[J>>0]|0)==A<<24>>24?(b[J+1>>0]|0)==B<<24>>24:0)?(b[J+2>>0]|0)==D<<24>>24:0)break a;P=f[P>>2]|0;if(!P){N=K;O=29;break}}}else{N=K;O=29}}else{N=0;O=29}while(0);if((O|0)==29){O=0;M=dn(16)|0;b[M+8>>0]=A;b[M+9>>0]=B;b[M+10>>0]=D;f[M+12>>2]=z;f[M+4>>2]=E;f[M>>2]=0;R=$(((f[t>>2]|0)+1|0)>>>0);S=$(F>>>0);T=$(n[k>>2]);do if(G|$(T*S)>>0<3|(F+-1&F|0)!=0)&1;H=~~$(W($(R/T)))>>>0;Kh(g,J>>>0>>0?H:J);J=f[s>>2]|0;H=J+-1|0;if(!(H&J)){U=J;V=H&E;break}if(E>>>0>>0){U=J;V=E}else{U=J;V=(E>>>0)%(J>>>0)|0}}else{U=F;V=N}while(0);F=(f[g>>2]|0)+(V<<2)|0;E=f[F>>2]|0;if(!E){f[M>>2]=f[v>>2];f[v>>2]=M;f[F>>2]=v;F=f[M>>2]|0;if(F|0){G=f[F+4>>2]|0;F=U+-1|0;if(F&U)if(G>>>0>>0)X=G;else X=(G>>>0)%(U>>>0)|0;else X=G&F;Y=(f[g>>2]|0)+(X<<2)|0;O=42}}else{f[M>>2]=f[E>>2];Y=E;O=42}if((O|0)==42){O=0;f[Y>>2]=M}f[t>>2]=(f[t>>2]|0)+1}E=w;F=f[E>>2]|0;G=on(F|0,f[E+4>>2]|0,z|0,0)|0;Rg((f[f[x>>2]>>2]|0)+G|0,h|0,F|0)|0;F=f[j>>2]|0;f[F+(y<<2)>>2]=z;Z=z+1|0;_=F}else{F=f[j>>2]|0;f[F+(y<<2)>>2]=f[C+12>>2];Z=z;_=F}y=y+1|0;aa=f[l>>2]|0;if(y>>>0>=aa>>>0)break;else z=Z}if((Z|0)==(aa|0))ba=_;else{z=a+84|0;if(!(b[z>>0]|0)){y=f[a+72>>2]|0;h=f[a+68>>2]|0;x=h;if((y|0)==(h|0))ca=_;else{w=y-h>>2;h=0;do{y=x+(h<<2)|0;f[y>>2]=f[_+(f[y>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);ca=_}}else{b[z>>0]=0;z=a+68|0;_=a+72|0;w=f[_>>2]|0;h=f[z>>2]|0;x=w-h>>2;y=h;h=w;if(aa>>>0<=x>>>0)if(aa>>>0>>0?(w=y+(aa<<2)|0,(w|0)!=(h|0)):0){f[_>>2]=h+(~((h+-4-w|0)>>>2)<<2);da=aa}else da=aa;else{kh(z,aa-x|0,1204);da=f[l>>2]|0}x=f[j>>2]|0;if(!da)ca=x;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);ca=x}}f[l>>2]=Z;ba=ca}if(!ba)ea=Z;else{ca=f[o>>2]|0;if((ca|0)!=(ba|0))f[o>>2]=ca+(~((ca+-4-ba|0)>>>2)<<2);br(ba);ea=Z}}else ea=0;Z=f[g+8>>2]|0;if(Z|0){ba=Z;do{Z=ba;ba=f[ba>>2]|0;br(Z)}while((ba|0)!=0)}ba=f[g>>2]|0;f[g>>2]=0;if(!ba){u=e;return ea|0}br(ba);u=e;return ea|0}function qc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=u;u=u+64|0;d=e+48|0;h=e+40|0;i=e+32|0;j=e+16|0;k=e+8|0;l=e;m=e+28|0;n=a+8|0;o=f[n>>2]|0;if((o+-2|0)>>>0<=28){f[a+72>>2]=o;p=1<>2]=p+-1;o=p+-2|0;f[a+80>>2]=o;f[a+84>>2]=(o|0)/2|0}o=a+40|0;f[a+48>>2]=g;g=a+88|0;lk(g);p=a+36|0;q=f[p>>2]|0;r=(f[q+4>>2]|0)-(f[q>>2]|0)|0;s=r>>2;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;t=k;f[t>>2]=0;f[t+4>>2]=0;t=l;f[t>>2]=0;f[t+4>>2]=0;if((r|0)<=0){u=e;return 1}r=j+4|0;t=j+8|0;v=a+84|0;w=a+80|0;x=h+4|0;y=i+4|0;z=d+4|0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=l+4|0;F=a+76|0;a=k+4|0;G=l+4|0;H=f[q>>2]|0;if((f[q+4>>2]|0)==(H|0)){J=q;mq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];$b(o,d,j);H=f[j>>2]|0;q=(H|0)>-1?H:0-H|0;M=f[r>>2]|0;N=(M|0)>-1?M:0-M|0;O=Tn(N|0,((N|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;q=f[t>>2]|0;N=(q|0)>-1;P=N?q:0-q|0;q=Tn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((q|0)==0&(P|0)==0){O=f[v>>2]|0;Q=O;R=j;S=M;T=O}else{O=f[v>>2]|0;U=((O|0)<0)<<31>>31;V=on(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=zk(V|0,I|0,q|0,P|0)|0;f[j>>2]=H;V=on(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=zk(V|0,I|0,q|0,P|0)|0;f[r>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=t;S=M;T=O}f[R>>2]=Q;O=f[j>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[t>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[t>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[t>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){q=(N|0)==(Z|0);if(!(P&q)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(q&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);P=0-S|0;M=0-_|0;f[j>>2]=0-O;f[r>>2]=P;f[t>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(q=(N|0)==(ca|0),!(M&q)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(q&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);N=K<<1;M=b+(N<<2)|0;H=M+4|0;O=f[H>>2]|0;f[h>>2]=f[M>>2];f[x>>2]=O;f[i>>2]=$;f[y>>2]=aa;Dd(d,n,h,i);O=f[d>>2]|0;f[k>>2]=O;P=f[z>>2]|0;f[A>>2]=P;q=f[H>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=q;f[i>>2]=da;f[C>>2]=ea;Dd(d,n,h,i);q=f[d>>2]|0;f[l>>2]=q;M=f[D>>2]|0;f[E>>2]=M;H=f[v>>2]|0;if((H|0)>=(O|0))if((O|0)<(0-H|0))fa=(f[F>>2]|0)+O|0;else fa=O;else fa=O-(f[F>>2]|0)|0;f[k>>2]=fa;if((H|0)>=(P|0))if((P|0)<(0-H|0))ga=(f[F>>2]|0)+P|0;else ga=P;else ga=P-(f[F>>2]|0)|0;f[a>>2]=ga;if((H|0)>=(q|0))if((q|0)<(0-H|0))ha=(f[F>>2]|0)+q|0;else ha=q;else ha=q-(f[F>>2]|0)|0;f[l>>2]=ha;if((H|0)>=(M|0))if((M|0)<(0-H|0))ia=(f[F>>2]|0)+M|0;else ia=M;else ia=M-(f[F>>2]|0)|0;f[G>>2]=ia;if((((ga|0)>-1?ga:0-ga|0)+((fa|0)>-1?fa:0-fa|0)|0)<(((ha|0)>-1?ha:0-ha|0)+((ia|0)>-1?ia:0-ia|0)|0)){Vi(g,0);ja=k}else{Vi(g,1);ja=l}M=f[ja>>2]|0;if((M|0)<0)ka=(f[F>>2]|0)+M|0;else ka=M;M=c+(N<<2)|0;f[M>>2]=ka;N=f[ja+4>>2]|0;if((N|0)<0)la=(f[F>>2]|0)+N|0;else la=N;f[M+4>>2]=la;K=K+1|0;if((K|0)>=(s|0)){ma=5;break}M=f[p>>2]|0;L=f[M>>2]|0;if((f[M+4>>2]|0)-L>>2>>>0<=K>>>0){J=M;ma=6;break}}if((ma|0)==5){u=e;return 1}else if((ma|0)==6)mq(J);return 0}function rc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=Oa,T=Oa,U=Oa,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;e=u;u=u+64|0;g=e+36|0;h=e+24|0;i=e+12|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+4|0;m=i+8|0;s=g+4|0;t=g+12|0;v=g+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=d;B=f[A>>2]|0;C=f[A+4>>2]|0;A=p;D=on(f[A>>2]|0,f[A+4>>2]|0,r+z|0,0)|0;A=Tn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;A=h;B=C;D=A+12|0;do{b[A>>0]=b[B>>0]|0;A=A+1|0;B=B+1|0}while((A|0)<(D|0));Xl(i|0,C|0,12)|0;B=_f(g,i)|0;if(!B){A=f[i>>2]|0;D=f[q>>2]|0;E=f[m>>2]|0;F=((A^318)+239^D)+239^E;G=f[s>>2]|0;H=(G|0)==0;a:do if(!H){J=G+-1|0;K=(J&G|0)==0;if(!K)if(F>>>0>>0)L=F;else L=(F>>>0)%(G>>>0)|0;else L=F&J;M=f[(f[g>>2]|0)+(L<<2)>>2]|0;if((M|0)!=0?(N=f[M>>2]|0,(N|0)!=0):0){if(K){K=N;while(1){M=f[K+4>>2]|0;if(!((M|0)==(F|0)|(M&J|0)==(L|0))){O=L;P=29;break a}if(((f[K+8>>2]|0)==(A|0)?(f[K+12>>2]|0)==(D|0):0)?(f[K+16>>2]|0)==(E|0):0)break a;K=f[K>>2]|0;if(!K){O=L;P=29;break a}}}else Q=N;while(1){K=f[Q+4>>2]|0;if((K|0)!=(F|0)){if(K>>>0>>0)R=K;else R=(K>>>0)%(G>>>0)|0;if((R|0)!=(L|0)){O=L;P=29;break a}}if(((f[Q+8>>2]|0)==(A|0)?(f[Q+12>>2]|0)==(D|0):0)?(f[Q+16>>2]|0)==(E|0):0)break a;Q=f[Q>>2]|0;if(!Q){O=L;P=29;break}}}else{O=L;P=29}}else{O=0;P=29}while(0);if((P|0)==29){P=0;C=dn(24)|0;f[C+8>>2]=A;f[C+12>>2]=D;f[C+16>>2]=E;f[C+20>>2]=y;f[C+4>>2]=F;f[C>>2]=0;S=$(((f[t>>2]|0)+1|0)>>>0);T=$(G>>>0);U=$(n[k>>2]);do if(H|$(U*T)>>0<3|(G+-1&G|0)!=0)&1;K=~~$(W($(S/U)))>>>0;Hh(g,N>>>0>>0?K:N);N=f[s>>2]|0;K=N+-1|0;if(!(K&N)){V=N;X=K&F;break}if(F>>>0>>0){V=N;X=F}else{V=N;X=(F>>>0)%(N>>>0)|0}}else{V=G;X=O}while(0);G=(f[g>>2]|0)+(X<<2)|0;F=f[G>>2]|0;if(!F){f[C>>2]=f[v>>2];f[v>>2]=C;f[G>>2]=v;G=f[C>>2]|0;if(G|0){H=f[G+4>>2]|0;G=V+-1|0;if(G&V)if(H>>>0>>0)Y=H;else Y=(H>>>0)%(V>>>0)|0;else Y=H&G;Z=(f[g>>2]|0)+(Y<<2)|0;P=42}}else{f[C>>2]=f[F>>2];Z=F;P=42}if((P|0)==42){P=0;f[Z>>2]=C}f[t>>2]=(f[t>>2]|0)+1}F=w;G=f[F>>2]|0;H=on(G|0,f[F+4>>2]|0,y|0,0)|0;Rg((f[f[x>>2]>>2]|0)+H|0,h|0,G|0)|0;G=f[j>>2]|0;f[G+(z<<2)>>2]=y;_=y+1|0;aa=G}else{G=f[j>>2]|0;f[G+(z<<2)>>2]=f[B+20>>2];_=y;aa=G}z=z+1|0;ba=f[l>>2]|0;if(z>>>0>=ba>>>0)break;else y=_}if((_|0)==(ba|0))ca=aa;else{y=a+84|0;if(!(b[y>>0]|0)){z=f[a+72>>2]|0;h=f[a+68>>2]|0;x=h;if((z|0)==(h|0))da=aa;else{w=z-h>>2;h=0;do{z=x+(h<<2)|0;f[z>>2]=f[aa+(f[z>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);da=aa}}else{b[y>>0]=0;y=a+68|0;aa=a+72|0;w=f[aa>>2]|0;h=f[y>>2]|0;x=w-h>>2;z=h;h=w;if(ba>>>0<=x>>>0)if(ba>>>0>>0?(w=z+(ba<<2)|0,(w|0)!=(h|0)):0){f[aa>>2]=h+(~((h+-4-w|0)>>>2)<<2);ea=ba}else ea=ba;else{kh(y,ba-x|0,1204);ea=f[l>>2]|0}x=f[j>>2]|0;if(!ea)da=x;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);da=x}}f[l>>2]=_;ca=da}if(!ca)fa=_;else{da=f[o>>2]|0;if((da|0)!=(ca|0))f[o>>2]=da+(~((da+-4-ca|0)>>>2)<<2);br(ca);fa=_}}else fa=0;_=f[g+8>>2]|0;if(_|0){ca=_;do{_=ca;ca=f[ca>>2]|0;br(_)}while((ca|0)!=0)}ca=f[g>>2]|0;f[g>>2]=0;if(!ca){u=e;return fa|0}br(ca);u=e;return fa|0}function sc(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;e=u;u=u+32|0;g=e+4|0;h=e;i=e+16|0;j=c+56|0;k=f[j>>2]|0;l=(f[k+100>>2]|0)-(f[k+96>>2]|0)|0;k=(l|0)/12|0;m=c+44|0;Nh(k,f[m>>2]|0)|0;Nh(f[(f[j>>2]|0)+80>>2]|0,f[m>>2]|0)|0;n=f[c+48>>2]|0;o=dn(32)|0;f[g>>2]=o;f[g+8>>2]=-2147483616;f[g+4>>2]=21;p=o;q=14562;r=p+21|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[o+21>>0]=0;o=Oj(n,g,0)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);n=f[m>>2]|0;if(o){b[i>>0]=0;o=n+16|0;q=f[o+4>>2]|0;if(!((q|0)>0|(q|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];ye(n,g,i,i+1|0)|0}Ye(c)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}b[i>>0]=1;c=n+16|0;o=f[c+4>>2]|0;if(!((o|0)>0|(o|0)==0&(f[c>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];ye(n,g,i,i+1|0)|0}n=f[j>>2]|0;c=f[n+80>>2]|0;if(c>>>0<256){if(!l){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}o=i+1|0;q=i+1|0;p=i+1|0;r=0;s=n;while(1){t=f[s+96>>2]|0;v=f[m>>2]|0;b[i>>0]=f[t+(r*12|0)>>2];w=v+16|0;x=f[w>>2]|0;y=f[w+4>>2]|0;if((y|0)>0|(y|0)==0&x>>>0>0){z=x;A=v;B=y}else{f[h>>2]=f[v+4>>2];f[g>>2]=f[h>>2];ye(v,g,i,p)|0;v=f[m>>2]|0;y=v+16|0;z=f[y>>2]|0;A=v;B=f[y+4>>2]|0}b[i>>0]=f[t+(r*12|0)+4>>2];if((B|0)>0|(B|0)==0&z>>>0>0){C=B;D=z;E=A}else{f[h>>2]=f[A+4>>2];f[g>>2]=f[h>>2];ye(A,g,i,q)|0;y=f[m>>2]|0;v=y+16|0;C=f[v+4>>2]|0;D=f[v>>2]|0;E=y}b[i>>0]=f[t+(r*12|0)+8>>2];if(!((C|0)>0|(C|0)==0&D>>>0>0)){f[h>>2]=f[E+4>>2];f[g>>2]=f[h>>2];ye(E,g,i,o)|0}t=r+1|0;if(t>>>0>=k>>>0)break;r=t;s=f[j>>2]|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}if(c>>>0<65536){if(!l){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}s=i+2|0;r=i+2|0;o=i+2|0;E=0;D=n;while(1){C=f[D+96>>2]|0;q=f[m>>2]|0;d[i>>1]=f[C+(E*12|0)>>2];A=q+16|0;z=f[A>>2]|0;B=f[A+4>>2]|0;if((B|0)>0|(B|0)==0&z>>>0>0){F=B;G=z;H=q}else{f[h>>2]=f[q+4>>2];f[g>>2]=f[h>>2];ye(q,g,i,o)|0;q=f[m>>2]|0;z=q+16|0;F=f[z+4>>2]|0;G=f[z>>2]|0;H=q}d[i>>1]=f[C+(E*12|0)+4>>2];if((F|0)>0|(F|0)==0&G>>>0>0){I=F;J=G;K=H}else{f[h>>2]=f[H+4>>2];f[g>>2]=f[h>>2];ye(H,g,i,r)|0;q=f[m>>2]|0;z=q+16|0;I=f[z+4>>2]|0;J=f[z>>2]|0;K=q}d[i>>1]=f[C+(E*12|0)+8>>2];if(!((I|0)>0|(I|0)==0&J>>>0>0)){f[h>>2]=f[K+4>>2];f[g>>2]=f[h>>2];ye(K,g,i,s)|0}C=E+1|0;if(C>>>0>=k>>>0)break;E=C;D=f[j>>2]|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}D=(l|0)!=0;if(c>>>0<2097152){if(D){L=0;M=n}else{f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}while(1){c=f[M+96>>2]|0;Nh(f[c+(L*12|0)>>2]|0,f[m>>2]|0)|0;Nh(f[c+(L*12|0)+4>>2]|0,f[m>>2]|0)|0;Nh(f[c+(L*12|0)+8>>2]|0,f[m>>2]|0)|0;c=L+1|0;if(c>>>0>=k>>>0)break;L=c;M=f[j>>2]|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}if(!D){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}D=0;M=n;while(1){n=(f[M+96>>2]|0)+(D*12|0)|0;L=f[m>>2]|0;c=L+16|0;l=f[c+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[c>>2]|0)>>>0>0)){f[h>>2]=f[L+4>>2];f[g>>2]=f[h>>2];ye(L,g,n,n+12|0)|0}n=D+1|0;if(n>>>0>=k>>>0)break;D=n;M=f[j>>2]|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}function tc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;e=u;u=u+32|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;switch(f[c+28>>2]|0){case 9:{l=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=l;f[g>>2]=f[h>>2];m=ec(a,c,g)|0;break}case 2:{f[i>>2]=l;f[g>>2]=f[i>>2];m=Xb(a,c,g)|0;break}case 3:{f[j>>2]=l;f[g>>2]=f[j>>2];m=rc(a,c,g)|0;break}case 4:{f[k>>2]=l;f[g>>2]=f[k>>2];m=jc(a,c,g)|0;break}default:m=0}n=m;break}case 1:{m=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=m;f[g>>2]=f[h>>2];o=dc(a,c,g)|0;break}case 2:{f[i>>2]=m;f[g>>2]=f[i>>2];o=Yb(a,c,g)|0;break}case 3:{f[j>>2]=m;f[g>>2]=f[j>>2];o=pc(a,c,g)|0;break}case 4:{f[k>>2]=m;f[g>>2]=f[k>>2];o=ic(a,c,g)|0;break}default:o=0}n=o;break}case 11:case 2:{o=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=o;f[g>>2]=f[h>>2];p=dc(a,c,g)|0;break}case 2:{f[i>>2]=o;f[g>>2]=f[i>>2];p=Yb(a,c,g)|0;break}case 3:{f[j>>2]=o;f[g>>2]=f[j>>2];p=pc(a,c,g)|0;break}case 4:{f[k>>2]=o;f[g>>2]=f[k>>2];p=ic(a,c,g)|0;break}default:p=0}n=p;break}case 4:{p=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=p;f[g>>2]=f[h>>2];q=bc(a,c,g)|0;break}case 2:{f[i>>2]=p;f[g>>2]=f[i>>2];q=Vb(a,c,g)|0;break}case 3:{f[j>>2]=p;f[g>>2]=f[j>>2];q=kc(a,c,g)|0;break}case 4:{f[k>>2]=p;f[g>>2]=f[k>>2];q=gc(a,c,g)|0;break}default:q=0}n=q;break}case 3:{q=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=q;f[g>>2]=f[h>>2];r=bc(a,c,g)|0;break}case 2:{f[i>>2]=q;f[g>>2]=f[i>>2];r=Vb(a,c,g)|0;break}case 3:{f[j>>2]=q;f[g>>2]=f[j>>2];r=kc(a,c,g)|0;break}case 4:{f[k>>2]=q;f[g>>2]=f[k>>2];r=gc(a,c,g)|0;break}default:r=0}n=r;break}case 6:{r=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=r;f[g>>2]=f[h>>2];s=ec(a,c,g)|0;break}case 2:{f[i>>2]=r;f[g>>2]=f[i>>2];s=Xb(a,c,g)|0;break}case 3:{f[j>>2]=r;f[g>>2]=f[j>>2];s=rc(a,c,g)|0;break}case 4:{f[k>>2]=r;f[g>>2]=f[k>>2];s=jc(a,c,g)|0;break}default:s=0}n=s;break}case 5:{s=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=s;f[g>>2]=f[h>>2];t=ec(a,c,g)|0;break}case 2:{f[i>>2]=s;f[g>>2]=f[i>>2];t=Xb(a,c,g)|0;break}case 3:{f[j>>2]=s;f[g>>2]=f[j>>2];t=rc(a,c,g)|0;break}case 4:{f[k>>2]=s;f[g>>2]=f[k>>2];t=jc(a,c,g)|0;break}default:t=0}n=t;break}default:{v=-1;u=e;return v|0}}v=(n|0)==0?-1:n;u=e;return v|0}function uc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;e=u;u=u+32|0;g=e+16|0;h=e+12|0;i=e+29|0;j=e;k=e+28|0;if(!(f[(f[a+8>>2]|0)+80>>2]|0)){l=1;u=e;return l|0}b[i>>0]=-2;m=a+36|0;n=f[m>>2]|0;if(n)if(Ra[f[(f[a>>2]|0)+40>>2]&127](a,n)|0){n=f[m>>2]|0;o=(Qa[f[(f[n>>2]|0)+8>>2]&127](n)|0)&255;b[i>>0]=o;p=5}else q=0;else p=5;if((p|0)==5){o=d+16|0;n=o;r=f[n+4>>2]|0;if(!((r|0)>0|(r|0)==0&(f[n>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,i,i+1|0)|0}i=f[m>>2]|0;if(i|0?(n=(Qa[f[(f[i>>2]|0)+36>>2]&127](i)|0)&255,b[j>>0]=n,n=o,i=f[n+4>>2]|0,!((i|0)>0|(i|0)==0&(f[n>>2]|0)>>>0>0)):0){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,j,j+1|0)|0}n=f[a+32>>2]|0;i=b[n+24>>0]|0;r=X(f[n+80>>2]|0,i)|0;s=(f[f[n>>2]>>2]|0)+(f[n+48>>2]|0)|0;f[j>>2]=0;n=j+4|0;f[n>>2]=0;f[j+8>>2]=0;t=(r|0)==0;do if(!t)if(r>>>0>1073741823)mq(j);else{v=r<<2;w=dn(v)|0;f[j>>2]=w;x=w+(r<<2)|0;f[j+8>>2]=x;hj(w|0,0,v|0)|0;f[n>>2]=x;y=w;break}else y=0;while(0);w=f[m>>2]|0;do if(w){Ta[f[(f[w>>2]|0)+44>>2]&31](w,s,y,r,i,f[c>>2]|0)|0;x=f[m>>2]|0;if(!x){z=s;A=f[j>>2]|0;p=20;break}if(!(Qa[f[(f[x>>2]|0)+32>>2]&127](x)|0)){x=f[j>>2]|0;z=f[m>>2]|0?x:s;A=x;p=20}}else{z=s;A=y;p=20}while(0);if((p|0)==20)km(z,r,A);A=a+4|0;a=f[A>>2]|0;do if(a){z=f[a+48>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;y=dn(48)|0;f[g>>2]=y;f[g+8>>2]=-2147483600;f[g+4>>2]=34;s=y;w=9835;x=s+34|0;do{b[s>>0]=b[w>>0]|0;s=s+1|0;w=w+1|0}while((s|0)<(x|0));b[y+34>>0]=0;w=Oj(z,g,1)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if(!w){if(!t){w=f[j>>2]|0;s=0;x=0;do{x=f[w+(s<<2)>>2]|x;s=s+1|0}while((s|0)!=(r|0));if(x)B=((_(x|0)|0)>>>3^3)+1|0;else B=1}else B=1;b[k>>0]=0;s=o;w=f[s>>2]|0;z=f[s+4>>2]|0;if((z|0)>0|(z|0)==0&w>>>0>0){C=z;D=w}else{f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,k,k+1|0)|0;w=o;C=f[w+4>>2]|0;D=f[w>>2]|0}b[k>>0]=B;if(!((C|0)>0|(C|0)==0&D>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,k,k+1|0)|0}if((B|0)==(Ll(5)|0)){w=f[j>>2]|0;z=o;s=f[z+4>>2]|0;if(!((s|0)>0|(s|0)==0&(f[z>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,w,w+(r<<2)|0)|0}p=48;break}if(t)p=48;else{w=d+4|0;z=0;do{s=(f[j>>2]|0)+(z<<2)|0;y=o;v=f[y+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[y>>2]|0)>>>0>0)){f[h>>2]=f[w>>2];f[g>>2]=f[h>>2];ye(d,g,s,s+B|0)|0}z=z+1|0}while(z>>>0>>0);p=48}}else p=27}else p=27;while(0);if((p|0)==27){b[k>>0]=1;r=o;o=f[r+4>>2]|0;if(!((o|0)>0|(o|0)==0&(f[r>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,k,k+1|0)|0}wp(g);k=f[A>>2]|0;if(k|0)Pj(g,10-(Yh(f[k+48>>2]|0)|0)|0)|0;k=Dc(f[j>>2]|0,X((f[c+4>>2]|0)-(f[c>>2]|0)>>2,i)|0,i,g,d)|0;sj(g,f[g+4>>2]|0);if(k)p=48;else E=0}if((p|0)==48){p=f[m>>2]|0;if(!p)E=1;else{Ra[f[(f[p>>2]|0)+40>>2]&127](p,d)|0;E=1}}d=f[j>>2]|0;if(d|0){j=f[n>>2]|0;if((j|0)!=(d|0))f[n>>2]=j+(~((j+-4-d|0)>>>2)<<2);br(d)}q=E}l=q;u=e;return l|0}function vc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;b=u;u=u+48|0;c=b+24|0;d=b+12|0;e=b;g=a+32|0;h=a+8|0;i=a+12|0;j=f[i>>2]|0;k=f[h>>2]|0;l=j-k>>2;m=a+36|0;n=f[m>>2]|0;o=f[g>>2]|0;p=n-o>>2;q=o;o=n;n=k;if(l>>>0<=p>>>0)if(l>>>0

>>0?(r=q+(l<<2)|0,(r|0)!=(o|0)):0){f[m>>2]=o+(~((o+-4-r|0)>>>2)<<2);s=n;t=k;v=j}else{s=n;t=k;v=j}else{oi(g,l-p|0);p=f[h>>2]|0;s=p;t=p;v=f[i>>2]|0}p=v-t|0;l=p>>2;f[c>>2]=0;j=c+4|0;f[j>>2]=0;k=c+8|0;f[k>>2]=0;if(l|0){if((p|0)<0)mq(c);p=((l+-1|0)>>>5)+1|0;n=dn(p<<2)|0;f[c>>2]=n;f[k>>2]=p;f[j>>2]=l;j=l>>>5;hj(n|0,0,j<<2|0)|0;p=l&31;l=n+(j<<2)|0;if(p|0)f[l>>2]=f[l>>2]&~(-1>>>(32-p|0))}p=a+20|0;l=0;j=s;s=t;t=v;while(1){if(l>>>0>2>>>0){w=0;x=0;y=l;z=s;A=j}else{B=25;break}while(1){v=x>>>5;n=1<<(x&31);do if(!(f[(f[c>>2]|0)+(v<<2)>>2]&n)){k=f[A+(x<<2)>>2]|0;if((f[k+8>>2]|0)!=(f[k+4>>2]|0)){r=0;o=1;m=A;q=k;while(1){k=f[(f[q+4>>2]|0)+(r<<2)>>2]|0;C=0;D=m;while(1){E=f[D+(x<<2)>>2]|0;if((C|0)>=(Ra[f[(f[E>>2]|0)+24>>2]&127](E,k)|0)){F=o;break}E=f[(f[h>>2]|0)+(x<<2)>>2]|0;G=Sa[f[(f[E>>2]|0)+28>>2]&31](E,k,C)|0;if((G|0)!=(x|0)?(E=f[(f[p>>2]|0)+(G<<2)>>2]|0,(1<<(E&31)&f[(f[c>>2]|0)+(E>>>5<<2)>>2]|0)==0):0){F=0;break}C=C+1|0;D=f[h>>2]|0}r=r+1|0;m=f[h>>2]|0;q=f[m+(x<<2)>>2]|0;if(r>>>0>=(f[q+8>>2]|0)-(f[q+4>>2]|0)>>2>>>0)break;else o=F}o=m;if(F)H=o;else{I=w;J=y;K=o;break}}else H=z;f[(f[g>>2]|0)+(y<<2)>>2]=x;o=(f[c>>2]|0)+(v<<2)|0;f[o>>2]=f[o>>2]|n;I=1;J=y+1|0;K=H}else{I=w;J=y;K=z}while(0);x=x+1|0;L=f[i>>2]|0;M=L-K>>2;A=K;if(x>>>0>=M>>>0)break;else{w=I;y=J;z=K}}if(J>>>0>>0&(I^1)){N=0;break}else{l=J;j=A;s=K;t=L}}if((B|0)==25){f[d>>2]=0;B=d+4|0;f[B>>2]=0;f[d+8>>2]=0;L=f[a+4>>2]|0;a=(f[L+12>>2]|0)-(f[L+8>>2]|0)|0;L=a>>2;f[e>>2]=0;K=e+4|0;f[K>>2]=0;A=e+8|0;f[A>>2]=0;if(L|0){if((a|0)<0)mq(e);a=((L+-1|0)>>>5)+1|0;J=dn(a<<2)|0;f[e>>2]=J;f[A>>2]=a;f[K>>2]=L;K=L>>>5;hj(J|0,0,K<<2|0)|0;a=L&31;L=J+(K<<2)|0;if(a|0)f[L>>2]=f[L>>2]&~(-1>>>(32-a|0))}a:do if((t|0)==(s|0))O=1;else{a=0;L=j;K=s;J=t;while(1){A=f[(f[g>>2]|0)+(a<<2)>>2]|0;l=f[L+(A<<2)>>2]|0;I=(f[l+8>>2]|0)-(f[l+4>>2]|0)|0;l=I>>2;if((I|0)<8){P=K;Q=J}else{I=f[B>>2]|0;M=f[d>>2]|0;z=I-M>>2;y=M;M=I;if(l>>>0<=z>>>0)if(l>>>0>>0?(I=y+(l<<2)|0,(I|0)!=(M|0)):0){f[B>>2]=M+(~((M+-4-I|0)>>>2)<<2);R=0}else R=0;else{oi(d,l-z|0);R=0}while(1){if((R|0)<(l|0)){S=0;T=0;U=R}else break;while(1){z=f[(f[h>>2]|0)+(A<<2)>>2]|0;I=f[(f[z+4>>2]|0)+(S<<2)>>2]|0;M=S>>>5;y=1<<(S&31);if(!(f[(f[e>>2]|0)+(M<<2)>>2]&y)){w=0;x=1;H=z;while(1){if((w|0)>=(Ra[f[(f[H>>2]|0)+24>>2]&127](H,I)|0)){V=x;break}z=f[(f[h>>2]|0)+(A<<2)>>2]|0;F=Sa[f[(f[z>>2]|0)+28>>2]&31](z,I,w)|0;z=(f[(f[e>>2]|0)+(F>>>5<<2)>>2]&1<<(F&31)|0)!=0;F=x&z;if(!z){V=F;break}w=w+1|0;x=F;H=f[(f[h>>2]|0)+(A<<2)>>2]|0}if(V){f[(f[d>>2]|0)+(U<<2)>>2]=S;H=(f[e>>2]|0)+(M<<2)|0;f[H>>2]=f[H>>2]|y;W=1;X=U+1|0}else{W=T;X=U}}else{W=T;X=U}S=S+1|0;if((S|0)>=(l|0))break;else{T=W;U=X}}if(W|(X|0)>=(l|0))R=X;else{O=0;break a}}Of(f[(f[h>>2]|0)+(A<<2)>>2]|0,d);P=f[h>>2]|0;Q=f[i>>2]|0}a=a+1|0;if(a>>>0>=Q-P>>2>>>0){O=1;break}else{L=P;K=P;J=Q}}}while(0);Q=f[e>>2]|0;if(Q|0)br(Q);Q=f[d>>2]|0;if(Q|0){d=f[B>>2]|0;if((d|0)!=(Q|0))f[B>>2]=d+(~((d+-4-Q|0)>>>2)<<2);br(Q)}N=O}O=f[c>>2]|0;if(!O){u=b;return N|0}br(O);u=b;return N|0} +function uj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=u;u=u+16|0;g=e;h=a+4|0;f[h>>2]=c;i=f[c+64>>2]|0;c=((f[i+4>>2]|0)-(f[i>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;Xg(a+24|0,c,g);c=f[h>>2]|0;h=(f[c+56>>2]|0)-(f[c+52>>2]|0)>>2;b[g>>0]=0;Xg(a+36|0,h,g);g=a+8|0;f[g>>2]=f[d>>2];f[g+4>>2]=f[d+4>>2];f[g+8>>2]=f[d+8>>2];f[g+12>>2]=f[d+12>>2];u=e;return}function vj(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a;a:do if(!(c&3)){d=a;e=4}else{g=a;h=c;while(1){if(!(b[g>>0]|0)){i=h;break a}j=g+1|0;h=j;if(!(h&3)){d=j;e=4;break}else g=j}}while(0);if((e|0)==4){e=d;while(1){k=f[e>>2]|0;if(!((k&-2139062144^-2139062144)&k+-16843009))e=e+4|0;else break}if(!((k&255)<<24>>24))l=e;else{k=e;while(1){e=k+1|0;if(!(b[e>>0]|0)){l=e;break}else k=e}}i=l}return i-c|0}function wj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j)k=f[a+4>>2]|0;else k=i&255;do if(k>>>0>=c>>>0)if(j){i=(f[a>>2]|0)+c|0;b[g>>0]=0;Hp(i,g);f[a+4>>2]=c;break}else{b[g>>0]=0;Hp(a+c|0,g);b[h>>0]=c;break}else Xi(a,c-k|0,d)|0;while(0);u=e;return}function xj(a){a=a|0;var b=0,c=0,d=0;if(!a)return;b=a+88|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=f[c+8>>2]|0;if(b|0){d=c+12|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;br(b)}br(c)}c=f[a+68>>2]|0;if(c|0){b=a+72|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);br(c)}c=a+64|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d>>2]|0;if(c|0){b=d+4|0;if((f[b>>2]|0)!=(c|0))f[b>>2]=c;br(c)}br(d)}br(a);return}function yj(a,c,d,e,g,h,i,j,k,l){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;f[a>>2]=d;if(d|0){m=d+16|0;n=f[m+4>>2]|0;o=a+8|0;f[o>>2]=f[m>>2];f[o+4>>2]=n;n=d+24|0;d=f[n+4>>2]|0;o=a+16|0;f[o>>2]=f[n>>2];f[o+4>>2]=d}b[a+24>>0]=e;f[a+28>>2]=g;b[a+32>>0]=h&1;h=a+40|0;f[h>>2]=i;f[h+4>>2]=j;j=a+48|0;f[j>>2]=k;f[j+4>>2]=l;f[a+56>>2]=c;return}function zj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;if((f[c+76>>2]|0)>=0?(gr(c)|0)!=0:0){d=a&255;e=a&255;if((e|0)!=(b[c+75>>0]|0)?(g=c+20|0,h=f[g>>2]|0,h>>>0<(f[c+16>>2]|0)>>>0):0){f[g>>2]=h+1;b[h>>0]=d;i=e}else i=Bj(c,a)|0;fr(c);j=i}else k=3;do if((k|0)==3){i=a&255;e=a&255;if((e|0)!=(b[c+75>>0]|0)?(d=c+20|0,h=f[d>>2]|0,h>>>0<(f[c+16>>2]|0)>>>0):0){f[d>>2]=h+1;b[h>>0]=i;j=e;break}j=Bj(c,a)|0}while(0);return j|0}function Aj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=f[a+4>>2]|0;if((i|0)==-1){j=0;u=d;return j|0}b[h>>0]=i;i=c+16|0;a=f[i+4>>2]|0;if(!((a|0)>0|(a|0)==0&(f[i>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}j=1;u=d;return j|0}function Bj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=u;u=u+16|0;e=d;g=c&255;b[e>>0]=g;i=a+16|0;j=f[i>>2]|0;if(!j)if(!(pl(a)|0)){k=f[i>>2]|0;l=4}else m=-1;else{k=j;l=4}do if((l|0)==4){j=a+20|0;i=f[j>>2]|0;if(i>>>0>>0?(n=c&255,(n|0)!=(b[a+75>>0]|0)):0){f[j>>2]=i+1;b[i>>0]=g;m=n;break}if((Sa[f[a+36>>2]&31](a,e,1)|0)==1)m=h[e>>0]|0;else m=-1}while(0);u=d;return m|0}function Cj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=dn(88)|0;d=c+60|0;e=c;g=e+60|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[d>>2]=c;d=c+64|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;d=Kf(c,b)|0;f[a>>2]=d?c:0;a=d?0:c;if(d)return;ui(a);br(a);return}function Dj(a,b){a=a|0;b=b|0;if(!b)return;else{Dj(a,f[b>>2]|0);Dj(a,f[b+4>>2]|0);sj(b+20|0,f[b+24>>2]|0);br(b);return}}function Ej(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=u;u=u+16|0;g=e;h=a+4|0;f[h>>2]=c;i=((f[c+4>>2]|0)-(f[c>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;Xg(a+24|0,i,g);i=f[h>>2]|0;h=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;b[g>>0]=0;Xg(a+36|0,h,g);g=a+8|0;f[g>>2]=f[d>>2];f[g+4>>2]=f[d+4>>2];f[g+8>>2]=f[d+8>>2];f[g+12>>2]=f[d+12>>2];u=e;return}function Fj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=e+4|0;f[g>>2]=c;c=a+4|0;a=dn(32)|0;f[h>>2]=a;f[h+8>>2]=-2147483616;f[h+4>>2]=17;i=a;j=12932;k=i+17|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[a+17>>0]=0;Nj(wd(c,g)|0,h,d);if((b[h+11>>0]|0)>=0){u=e;return}br(f[h>>2]|0);u=e;return}function Gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=a+48|0;if((f[a+52>>2]|0)>>>0<=e>>>0)pe(b,e+1|0,0);c=(f[b>>2]|0)+(e>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(e&31);c=f[a+36>>2]|0;if((f[a+40>>2]|0)-c>>2>>>0<=e>>>0){d=1;return d|0}Pp(f[c+(e<<2)>>2]|0);d=1;return d|0}function Hj(a){a=a|0;if(!a)return;f[a>>2]=1136;sj(a+28|0,f[a+32>>2]|0);nj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);br(a);return}function Ij(a){a=a|0;f[a>>2]=1136;sj(a+28|0,f[a+32>>2]|0);nj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);return}function Jj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(c>>>0>0|(c|0)==0&a>>>0>4294967295){e=d;f=a;g=c;while(1){c=an(f|0,g|0,10,0)|0;e=e+-1|0;b[e>>0]=c&255|48;c=f;f=up(f|0,g|0,10,0)|0;if(!(g>>>0>9|(g|0)==9&c>>>0>4294967295))break;else g=I}h=f;i=e}else{h=a;i=d}if(!h)j=i;else{d=h;h=i;while(1){i=h+-1|0;b[i>>0]=(d>>>0)%10|0|48;if(d>>>0<10){j=i;break}else{d=(d>>>0)/10|0;h=i}}}return j|0}function Kj(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=a;while(1){d=c+1|0;if(!(tq(b[c>>0]|0)|0))break;else c=d}a=b[c>>0]|0;switch(a<<24>>24|0){case 45:{e=1;f=5;break}case 43:{e=0;f=5;break}default:{g=0;h=c;i=a}}if((f|0)==5){g=e;h=d;i=b[d>>0]|0}if(!(Pq(i<<24>>24)|0))j=0;else{i=0;d=h;while(1){h=(i*10|0)+48-(b[d>>0]|0)|0;d=d+1|0;if(!(Pq(b[d>>0]|0)|0)){j=h;break}else i=h}}return (g|0?j:0-j|0)|0}function Lj(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=0,h=0;e=u;u=u+16|0;g=e;cl(g,d);h=mi(a,c)|0;c=h+11|0;if((b[c>>0]|0)<0){b[f[h>>2]>>0]=0;f[h+4>>2]=0}else{b[h>>0]=0;b[c>>0]=0}Ng(h,0);f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];u=e;return}function Mj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;fl(g,d&1);d=mi(a,c)|0;c=d+11|0;if((b[c>>0]|0)<0){b[f[d>>2]>>0]=0;f[d+4>>2]=0}else{b[d>>0]=0;b[c>>0]=0}Ng(d,0);f[d>>2]=f[g>>2];f[d+4>>2]=f[g+4>>2];f[d+8>>2]=f[g+8>>2];u=e;return}function Nj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;fl(g,d);d=mi(a,c)|0;c=d+11|0;if((b[c>>0]|0)<0){b[f[d>>2]>>0]=0;f[d+4>>2]=0}else{b[d>>0]=0;b[c>>0]=0}Ng(d,0);f[d>>2]=f[g>>2];f[d+4>>2]=f[g+4>>2];f[d+8>>2]=f[g+8>>2];u=e;return}function Oj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=zg(a,c)|0;if((e|0)==(a+4|0)){g=-1;h=(g|0)==-1;i=(g|0)!=0;j=h?d:i;return j|0}a=e+28|0;if((b[a+11>>0]|0)<0)k=f[a>>2]|0;else k=a;g=Kj(k)|0;h=(g|0)==-1;i=(g|0)!=0;j=h?d:i;return j|0}function Pj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;if(c>>>0>10){g=0;u=d;return g|0}h=dn(48)|0;f[e>>2]=h;f[e+8>>2]=-2147483600;f[e+4>>2]=33;i=h;j=13067;k=i+33|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[h+33>>0]=0;Nj(a,e,c);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);g=1;u=d;return g|0}function Qj(a){a=a|0;f[a>>2]=1136;sj(a+28|0,f[a+32>>2]|0);nj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);br(a);return}function Rj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=f[b>>2]|0;if((c|0)==-1)return 1;b=c*3|0;if((b|0)==-1)return 1;c=f[a>>2]|0;a=f[c+(b<<2)>>2]|0;d=b+1|0;e=((d>>>0)%3|0|0)==0?b+-2|0:d;if((e|0)==-1)g=-1;else g=f[c+(e<<2)>>2]|0;e=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((e|0)==-1)h=-1;else h=f[c+(e<<2)>>2]|0;if((a|0)==(g|0))return 1;else return (a|0)==(h|0)|(g|0)==(h|0)|0;return 0}function Sj(a){a=a|0;f[a>>2]=2968;sj(a+28|0,f[a+32>>2]|0);Dj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);return}function Tj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0;d=0;while(1){if((h[15560+d>>0]|0)==(a|0)){e=2;break}g=d+1|0;if((g|0)==87){i=15648;j=87;e=5;break}else d=g}if((e|0)==2)if(!d)k=15648;else{i=15648;j=d;e=5}if((e|0)==5)while(1){e=0;d=i;do{a=d;d=d+1|0}while((b[a>>0]|0)!=0);j=j+-1|0;if(!j){k=d;break}else{i=d;e=5}}return yq(k,f[c+20>>2]|0)|0}function Uj(a,b){a=+a;b=b|0;var c=0,d=0,e=0,g=0.0,h=0.0,i=0,j=0.0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;e=Wn(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){g=+Uj(a*18446744073709551616.0,b);h=g;i=(f[b>>2]|0)+-64|0}else{h=a;i=0}f[b>>2]=i;j=h;break}case 2047:{j=a;break}default:{f[b>>2]=(e&2047)+-1022;f[s>>2]=c;f[s+4>>2]=d&-2146435073|1071644672;j=+p[s>>3]}}return +j}function Vj(a){a=a|0;f[a>>2]=2968;sj(a+28|0,f[a+32>>2]|0);Dj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);br(a);return}function Wj(a,b){a=+a;b=b|0;var c=0.0,d=0,e=0,g=0.0,h=0;if((b|0)<=1023)if((b|0)<-1022){c=a*2.2250738585072014e-308;d=(b|0)<-2044;e=b+2044|0;g=d?c*2.2250738585072014e-308:c;h=d?((e|0)>-1022?e:-1022):b+1022|0}else{g=a;h=b}else{c=a*8988465674311579538646525.0e283;e=(b|0)>2046;d=b+-2046|0;g=e?c*8988465674311579538646525.0e283:c;h=e?((d|0)<1023?d:1023):b+-1023|0}b=Rn(h+1023|0,0,52)|0;h=I;f[s>>2]=b;f[s+4>>2]=h;return +(g*+p[s>>3])}function Xj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;if(!(f[a+80>>2]|0)){b=0;return b|0}c=a+8|0;d=a+12|0;a=f[c>>2]|0;if(((f[d>>2]|0)-a|0)>0){e=0;g=a}else{b=1;return b|0}while(1){a=f[g+(e<<2)>>2]|0;e=e+1|0;if(!(yl(a,a)|0)){b=0;h=5;break}g=f[c>>2]|0;if((e|0)>=((f[d>>2]|0)-g>>2|0)){b=1;h=5;break}}if((h|0)==5)return b|0;return 0}function Yj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=a+36|0;d=a+40|0;e=f[c>>2]|0;if((f[d>>2]|0)==(e|0)){g=1;return g|0}h=a+60|0;a=0;i=e;while(1){e=f[i+(a<<2)>>2]|0;a=a+1|0;if(!(Sa[f[(f[e>>2]|0)+20>>2]&31](e,h,b)|0)){g=0;j=5;break}i=f[c>>2]|0;if(a>>>0>=(f[d>>2]|0)-i>>2>>>0){g=1;j=5;break}}if((j|0)==5)return g|0;return 0}function Zj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+36|0;d=a+40|0;a=f[c>>2]|0;if((f[d>>2]|0)==(a|0)){e=1;return e|0}else{g=0;h=a}while(1){a=f[h+(g<<2)>>2]|0;g=g+1|0;if(!(Ra[f[(f[a>>2]|0)+24>>2]&127](a,b)|0)){e=0;i=4;break}h=f[c>>2]|0;if(g>>>0>=(f[d>>2]|0)-h>>2>>>0){e=1;i=4;break}}if((i|0)==4)return e|0;return 0}function _j(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;f[a>>2]=0;c=a+4|0;f[c>>2]=0;f[a+8>>2]=0;d=b+4|0;e=(f[d>>2]|0)-(f[b>>2]|0)|0;g=e>>2;if(!g)return;if(g>>>0>1073741823)mq(a);h=dn(e)|0;f[c>>2]=h;f[a>>2]=h;f[a+8>>2]=h+(g<<2);g=f[b>>2]|0;b=(f[d>>2]|0)-g|0;if((b|0)<=0)return;Rg(h|0,g|0,b|0)|0;f[c>>2]=h+(b>>>2<<2);return}function $j(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=a+8|0;d=f[a>>2]|0;if((f[c>>2]|0)-d>>2>>>0>=b>>>0)return;e=a+4|0;if(b>>>0>1073741823){g=ra(8)|0;Wo(g,14941);f[g>>2]=6944;va(g|0,1080,114)}g=(f[e>>2]|0)-d|0;h=dn(b<<2)|0;if((g|0)>0)Rg(h|0,d|0,g|0)|0;f[a>>2]=h;f[e>>2]=h+(g>>2<<2);f[c>>2]=h+(b<<2);if(!d)return;br(d);return}function ak(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=a+36|0;c=a+40|0;d=f[b>>2]|0;if((f[c>>2]|0)==(d|0)){e=1;return e|0}g=a+60|0;a=0;h=d;while(1){d=f[h+(a<<2)>>2]|0;a=a+1|0;if(!(Ra[f[(f[d>>2]|0)+16>>2]&127](d,g)|0)){e=0;i=5;break}h=f[b>>2]|0;if(a>>>0>=(f[c>>2]|0)-h>>2>>>0){e=1;i=5;break}}if((i|0)==5)return e|0;return 0}function bk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d;g=dn(16)|0;f[e>>2]=g;f[e+8>>2]=-2147483632;f[e+4>>2]=15;h=g;i=12916;j=h+15|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[g+15>>0]=0;Nj(a+4|0,e,c);if((b[e+11>>0]|0)>=0){u=d;return}br(f[e>>2]|0);u=d;return}function ck(a,b){a=a|0;b=b|0;var c=0,d=0;f[a>>2]=0;f[a+4>>2]=b;if(b|0?(c=mh(b,992,976,0)|0,c|0):0){d=dn(56)|0;Gm(d,c);c=f[a>>2]|0;f[a>>2]=d;if(!c)return;Va[f[(f[c>>2]|0)+4>>2]&127](c);return}c=dn(56)|0;Am(c,b);b=f[a>>2]|0;f[a>>2]=c;if(!b)return;Va[f[(f[b>>2]|0)+4>>2]&127](b);return}function dk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0;d=f[a+176>>2]|0;e=f[a+172>>2]|0;a=e;if((d|0)==(e|0))return 0;g=(d-e|0)/136|0;e=0;while(1){if((f[a+(e*136|0)>>2]|0)==(c|0)){h=4;break}d=e+1|0;if(d>>>0>>0)e=d;else{h=6;break}}if((h|0)==4)return ((b[a+(e*136|0)+100>>0]|0)==0?0:a+(e*136|0)+4|0)|0;else if((h|0)==6)return 0;return 0}function ek(a,b){a=a|0;b=b|0;var c=0,d=0;c=f[a+72>>2]|0;if(!c){d=0;return d|0}f[c+4>>2]=a+60;if(!(Qa[f[(f[c>>2]|0)+12>>2]&127](c)|0)){d=0;return d|0}if(!(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)){d=0;return d|0}if(!(Ra[f[(f[a>>2]|0)+44>>2]&127](a,b)|0)){d=0;return d|0}d=Ra[f[(f[a>>2]|0)+48>>2]&127](a,b)|0;return d|0}function fk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>357913941)mq(a);e=dn(b*12|0)|0;f[d>>2]=e;f[a>>2]=e;f[a+8>>2]=e+(b*12|0);a=b;b=e;do{_j(b,c);b=(f[d>>2]|0)+12|0;f[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function gk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=f[b>>2]|0;if(!c){d=0;return d|0}e=a+44|0;g=f[e>>2]|0;if(g>>>0<(f[a+48>>2]|0)>>>0){f[b>>2]=0;f[g>>2]=c;f[e>>2]=(f[e>>2]|0)+4;d=1;return d|0}else{Bg(a+40|0,b);d=1;return d|0}return 0}function hk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2880;f[a+40>>2]=1180;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=1460;b=a+36|0;d=f[b>>2]|0;f[b>>2]=0;if(!d){zi(a);br(a);return}Va[f[(f[d>>2]|0)+4>>2]&127](d);zi(a);br(a);return}function ik(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0;f[c>>2]=2;d=a+4|0;a=c+8|0;e=f[a>>2]|0;g=(f[c+12>>2]|0)-e|0;if(g>>>0<4294967292){Bk(a,g+4|0,0);i=f[a>>2]|0}else i=e;e=i+g|0;g=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;return}function jk(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3164;b=a+8|0;f[b>>2]=3188;c=f[a+56>>2]|0;if(c|0){d=a+60|0;e=f[d>>2]|0;if((e|0)!=(c|0))f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);br(c)}f[b>>2]=3208;b=f[a+44>>2]|0;if(b|0)br(b);b=f[a+32>>2]|0;if(!b){br(a);return}br(b);br(a);return}function kk(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=Oa,h=0;e=zg(a,c)|0;if((e|0)==(a+4|0)){g=d;return $(g)}a=e+28|0;if((b[a+11>>0]|0)<0)h=f[a>>2]|0;else h=a;g=$(+Xq(h));return $(g)}function lk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=u;u=u+16|0;c=b;d=c;f[d>>2]=0;f[d+4>>2]=0;cf(a,2,c);c=f[a+12>>2]|0;d=a+16|0;e=f[d>>2]|0;if((e|0)==(c|0)){g=a+24|0;f[g>>2]=0;h=a+28|0;f[h>>2]=0;u=b;return}f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);g=a+24|0;f[g>>2]=0;h=a+28|0;f[h>>2]=0;u=b;return}function mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=f[a+176>>2]|0;d=f[a+172>>2]|0;e=d;a:do if((c|0)!=(d|0)){g=(c-d|0)/136|0;h=0;while(1){if((f[e+(h*136|0)>>2]|0)==(b|0))break;i=h+1|0;if(i>>>0>>0)h=i;else break a}j=e+(h*136|0)+104|0;return j|0}while(0);j=a+40|0;return j|0}function nk(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3232;b=a+8|0;f[b>>2]=3256;c=f[a+56>>2]|0;if(c|0){d=a+60|0;e=f[d>>2]|0;if((e|0)!=(c|0))f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);br(c)}f[b>>2]=3276;b=f[a+44>>2]|0;if(b|0)br(b);b=f[a+32>>2]|0;if(!b){br(a);return}br(b);br(a);return}function ok(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2880;f[a+40>>2]=1180;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=1460;b=a+36|0;d=f[b>>2]|0;f[b>>2]=0;if(!d){zi(a);return}Va[f[(f[d>>2]|0)+4>>2]&127](d);zi(a);return}function pk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;Ec(a,b);if((b|0)<=-1)return;c=a+88|0;d=f[c>>2]|0;e=f[a+84>>2]|0;if((d-e>>2|0)<=(b|0))return;a=e+(b<<2)|0;b=a+4|0;e=d-b|0;g=e>>2;if(!g)h=d;else{Xl(a|0,b|0,e|0)|0;h=f[c>>2]|0}e=a+(g<<2)|0;if((h|0)==(e|0))return;f[c>>2]=h+(~((h+-4-e|0)>>>2)<<2);return}function qk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a+32>>2]|0;c=f[a+36>>2]|0;if((b|0)==(c|0)){d=1;return d|0}e=a+8|0;g=a+44|0;a=b;while(1){b=f[(f[e>>2]|0)+(f[a>>2]<<2)>>2]|0;a=a+4|0;if(!(Ra[f[(f[b>>2]|0)+20>>2]&127](b,f[g>>2]|0)|0)){d=0;h=5;break}if((a|0)==(c|0)){d=1;h=5;break}}if((h|0)==5)return d|0;return 0}function rk(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3164;b=a+8|0;f[b>>2]=3188;c=f[a+56>>2]|0;if(c|0){d=a+60|0;e=f[d>>2]|0;if((e|0)!=(c|0))f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);br(c)}f[b>>2]=3208;b=f[a+44>>2]|0;if(b|0)br(b);b=f[a+32>>2]|0;if(!b)return;br(b);return}function sk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0.0;d=u;u=u+128|0;e=d;g=e;h=g+124|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(h|0));g=e+4|0;f[g>>2]=a;h=e+8|0;f[h>>2]=-1;f[e+44>>2]=a;f[e+76>>2]=-1;Rm(e,0);i=+Lc(e,c,1);c=(f[g>>2]|0)-(f[h>>2]|0)+(f[e+108>>2]|0)|0;if(b|0)f[b>>2]=c|0?a+c|0:a;u=d;return +i}function tk(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0;a=c+16|0;g=f[a>>2]|0;do if(g){if((g|0)!=(d|0)){h=c+36|0;f[h>>2]=(f[h>>2]|0)+1;f[c+24>>2]=2;b[c+54>>0]=1;break}h=c+24|0;if((f[h>>2]|0)==2)f[h>>2]=e}else{f[a>>2]=d;f[c+24>>2]=e;f[c+36>>2]=1}while(0);return}function uk(a){a=a|0;var c=0,d=0,e=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;d=a+20|0;c=a+28|0;if((f[d>>2]|0)>>>0>(f[c>>2]|0)>>>0)Sa[f[a+36>>2]&31](a,0,0)|0;f[a+16>>2]=0;f[c>>2]=0;f[d>>2]=0;d=f[a>>2]|0;if(!(d&4)){c=(f[a+44>>2]|0)+(f[a+48>>2]|0)|0;f[a+8>>2]=c;f[a+4>>2]=c;e=d<<27>>31}else{f[a>>2]=d|32;e=-1}return e|0}function vk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=zg(a,c)|0;if((d|0)==(a+4|0)){e=0;return e|0}a=d+28|0;if((b[a+11>>0]|0)<0)g=f[a>>2]|0;else g=a;e=((Kj(g)|0)+1|0)>>>0>1;return e|0}function wk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5840;b=f[a+96>>2]|0;if(b|0){c=a+100|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);br(b)}b=f[a+84>>2]|0;if(!b){wg(a);br(a);return}d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b);wg(a);br(a);return}function xk(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3232;b=a+8|0;f[b>>2]=3256;c=f[a+56>>2]|0;if(c|0){d=a+60|0;e=f[d>>2]|0;if((e|0)!=(c|0))f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);br(c)}f[b>>2]=3276;b=f[a+44>>2]|0;if(b|0)br(b);b=f[a+32>>2]|0;if(!b)return;br(b);return}function yk(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=zg(a,c)|0;if((e|0)==(a+4|0)){g=d;return g|0}d=e+28|0;if((b[d+11>>0]|0)<0)h=f[d>>2]|0;else h=d;g=Kj(h)|0;return g|0}function zk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=Vn(e^a|0,f^b|0,e|0,f|0)|0;b=I;a=g^e;e=h^f;return Vn((Bd(i,b,Vn(g^c|0,h^d|0,g|0,h|0)|0,I,0)|0)^a|0,I^e|0,a|0,e|0)|0}function Ak(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0;f[a>>2]=b;h=b+16|0;i=f[h+4>>2]|0;j=a+8|0;f[j>>2]=f[h>>2];f[j+4>>2]=i;i=b+24|0;b=f[i+4>>2]|0;j=a+16|0;f[j>>2]=f[i>>2];f[j+4>>2]=b;b=a+40|0;f[b>>2]=c;f[b+4>>2]=d;d=a+48|0;f[d>>2]=e;f[d+4>>2]=g;return}function Bk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e|0;h=e;e=d;if(g>>>0>=b>>>0){if(g>>>0>b>>>0?(d=h+b|0,(d|0)!=(e|0)):0)f[c>>2]=d}else ri(a,b-g|0);g=a+24|0;a=g;b=Tn(f[a>>2]|0,f[a+4>>2]|0,1,0)|0;a=g;f[a>>2]=b;f[a+4>>2]=I;return}function Ck(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=zg(a,c)|0;if((d|0)==(a+4|0)){e=-1;return e|0}a=d+28|0;if((b[a+11>>0]|0)<0)g=f[a>>2]|0;else g=a;e=Kj(g)|0;return e|0}function Dk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5840;b=f[a+96>>2]|0;if(b|0){c=a+100|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);br(b)}b=f[a+84>>2]|0;if(!b){wg(a);return}d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b);wg(a);return}function Ek(a){a=a|0;var c=0,d=0,e=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=1;c=a+68|0;d=a+28|0;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));f[c>>2]=a;c=a+72|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;f[c+20>>2]=0;return}function Fk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3188;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3208;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b){br(a);return}br(b);br(a);return}function Gk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2004;b=f[a+76>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Hk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=u;u=u+256|0;g=f;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;hj(g|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;d=e;do{ep(a,g,256);d=d+-256|0}while(d>>>0>255);h=b&255}else h=e;ep(a,g,h)}u=f;return}function Ik(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3256;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b){br(a);return}br(b);br(a);return}function Jk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1696;b=f[a+76>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Kk(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;if(qp(a,f[b+8>>2]|0,g)|0)fj(0,b,c,d,e);else{h=f[a+8>>2]|0;_a[f[(f[h>>2]|0)+20>>2]&3](h,b,c,d,e,g)}return}function Lk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3188;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3208;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Mk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2060;tj(a+108|0);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Nk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3256;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Ok(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1752;tj(a+108|0);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Pk(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;a:do if(!d)e=0;else{f=a;g=d;h=c;while(1){i=b[f>>0]|0;j=b[h>>0]|0;if(i<<24>>24!=j<<24>>24)break;g=g+-1|0;if(!g){e=0;break a}else{f=f+1|0;h=h+1|0}}e=(i&255)-(j&255)|0}while(0);return e|0}function Qk(a){a=a|0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+24>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;else return (f[a+36>>2]|0)!=0|0;return 0}function Rk(a){a=a|0;var b=0,c=0;f[a>>2]=2004;b=f[a+76>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Sk(a){a=a|0;var c=0,d=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=0;while(1){if((c|0)==3)break;f[a+(c<<2)>>2]=0;c=c+1|0}if((b[a+11>>0]|0)<0)d=(f[a+8>>2]&2147483647)+-1|0;else d=10;wj(a,d,0);return}function Tk(a){a=a|0;var b=0,c=0,d=0,e=0.0,g=0.0;b=f[a+8>>2]|0;if((b|0)<2){c=0;d=0;I=c;return d|0}e=+(b|0);g=+Fg(e)*e;e=+W(+(g-+p[a>>3]));c=+K(e)>=1.0?(e>0.0?~~+Y(+J(e/4294967296.0),4294967295.0)>>>0:~~+W((e-+(~~e>>>0))/4294967296.0)>>>0):0;d=~~e>>>0;I=c;return d|0}function Uk(a){a=a|0;var b=0,c=0;f[a>>2]=1696;b=f[a+76>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Vk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=f[(f[a+36>>2]|0)+(e<<2)>>2]|0;e=f[b+32>>2]|0;if(e|0){d=e;return d|0}d=f[b+8>>2]|0;return d|0}function Wk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1216;b=f[a+16>>2]|0;if(b|0){c=a+20|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+4>>2]|0;if(!b)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(b|0))f[d>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Xk(a){a=a|0;var b=0,c=0;f[a>>2]=2060;tj(a+108|0);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Yk(a){a=a|0;if(!(f[a+64>>2]|0))return 0;if(!(f[a+68>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function Zk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(qp(a,f[b+8>>2]|0,0)|0)tk(0,b,c,d);else{e=f[a+8>>2]|0;Ya[f[(f[e>>2]|0)+28>>2]&7](e,b,c,d)}return}function _k(a){a=a|0;var b=0,c=0;f[a>>2]=1752;tj(a+108|0);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function $k(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<0){c=0;return c|0}d=f[a+4>>2]|0;if(((f[d+12>>2]|0)-(f[d+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}d=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Ra[f[(f[d>>2]|0)+36>>2]&127](d,b)|0;return c|0}function al(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<0){c=0;return c|0}d=f[a+4>>2]|0;if(((f[d+12>>2]|0)-(f[d+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}d=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Ra[f[(f[d>>2]|0)+32>>2]&127](d,b)|0;return c|0}function bl(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0;d=b[a>>0]|0;e=b[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24){f=e;g=d}else{d=c;c=a;do{c=c+1|0;d=d+1|0;a=b[c>>0]|0;e=b[d>>0]|0}while(!(a<<24>>24==0?1:a<<24>>24!=e<<24>>24));f=e;g=a}return (g&255)-(f&255)|0}function cl(a,b){a=a|0;b=$(b);var c=0,d=0;c=u;u=u+16|0;d=c;Sk(d);qi(a,d,b);Go(d);u=c;return}function dl(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;b=f[a>>2]|0;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d+(~((d+-4-b|0)>>>2)<<2)|0;f[c>>2]=g;e=g}f[a+12>>2]=0;f[a+16>>2]=0;if(!b)return;if((e|0)!=(b|0))f[c>>2]=e+(~((e+-4-b|0)>>>2)<<2);br(b);return}function el(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=f[a+16>>2]|0;if(((f[a+20>>2]|0)-d>>2|0)<=(b|0)){e=-1;return e|0}g=f[d+(b<<2)>>2]|0;if((g|0)<0){e=-1;return e|0}e=f[(f[(f[(f[a+36>>2]|0)+(g<<2)>>2]|0)+16>>2]|0)+(c<<2)>>2]|0;return e|0}function fl(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;Sk(d);vi(a,d,b);Go(d);u=c;return}function gl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;d=u;u=u+32|0;e=d;g=d+20|0;f[e>>2]=f[a+60>>2];f[e+4>>2]=0;f[e+8>>2]=b;f[e+12>>2]=g;f[e+16>>2]=c;if((ro(za(140,e|0)|0)|0)<0){f[g>>2]=-1;h=-1}else h=f[g>>2]|0;u=d;return h|0}function hl(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)==-1|(b|0)>4){c=0;return c|0}d=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-d|0)<=0){c=0;return c|0}b=f[d>>2]|0;if((b|0)==-1){c=0;return c|0}c=f[(f[a+8>>2]|0)+(b<<2)>>2]|0;return c|0}function il(a){a=a|0;if(!(f[a+40>>2]|0))return 0;if(!(f[a+24>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;else return (f[a+36>>2]|0)!=0|0;return 0}function jl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=f[(f[a+36>>2]|0)+(e<<2)>>2]|0;d=(f[b+20>>2]|0)-(f[b+16>>2]|0)>>2;return d|0}function kl(a){a=a|0;var b=0;if(!(f[a+24>>2]|0)){b=0;return b|0}if(!(f[a+28>>2]|0)){b=0;return b|0}if(!(f[a+32>>2]|0)){b=0;return b|0}b=(f[a+36>>2]|0)!=0;return b|0}function ll(a){a=a|0;if(!(f[a+60>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function ml(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;Sg(a,c);f[a>>2]=1392;c=a+72|0;d=a+36|0;a=d+36|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(a|0));d=f[b>>2]|0;f[b>>2]=0;f[c>>2]=d;return}function nl(a,c){a=a|0;c=c|0;var d=0,e=0;d=a;e=c;c=d+64|0;do{f[d>>2]=f[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(c|0));e=a+64|0;f[a+88>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;b[e+20>>0]=0;return}function ol(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if((a|0)==0&(c|0)==0)f=d;else{g=d;d=c;c=a;while(1){a=g+-1|0;b[a>>0]=h[15542+(c&15)>>0]|0|e;c=Wn(c|0,d|0,4)|0;d=I;if((c|0)==0&(d|0)==0){f=a;break}else g=a}}return f|0}function pl(a){a=a|0;var c=0,d=0,e=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;d=f[a>>2]|0;if(!(d&8)){f[a+8>>2]=0;f[a+4>>2]=0;c=f[a+44>>2]|0;f[a+28>>2]=c;f[a+20>>2]=c;f[a+16>>2]=c+(f[a+48>>2]|0);e=0}else{f[a>>2]=d|32;e=-1}return e|0}function ql(a,b){a=a|0;b=b|0;var c=0,d=0;c=f[b+88>>2]|0;if(!c){d=0;return d|0}if((f[c>>2]|0)!=2){d=0;return d|0}b=f[c+8>>2]|0;f[a+4>>2]=h[b>>0]|h[b+1>>0]<<8|h[b+2>>0]<<16|h[b+3>>0]<<24;d=1;return d|0}function rl(a){a=a|0;var b=0;if(!(f[a+44>>2]|0)){b=0;return b|0}if(!(f[a+48>>2]|0)){b=0;return b|0}if(!(f[a+52>>2]|0)){b=0;return b|0}b=(f[a+56>>2]|0)!=0;return b|0}function sl(a){a=a|0;kj(a);br(a);return}function tl(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+40>>2]=c;d=1;return d|0}function ul(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+44>>2]=c;d=1;return d|0}function vl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e|0;if(g>>>0>>0){ri(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+b|0;if((g|0)==(d|0))return;f[c>>2]=g;return}function wl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=$(e);f[a+4>>2]=b;Jf(a+8|0,c,c+(d<<2)|0);n[a+20>>2]=e;return}function xl(a,b){a=a|0;b=b|0;var c=0;if(!(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)){c=0;return c|0}if(!(Ra[f[(f[a>>2]|0)+44>>2]&127](a,b)|0)){c=0;return c|0}c=Ra[f[(f[a>>2]|0)+48>>2]&127](a,b)|0;return c|0}function yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c+4|0;e=c;f[e>>2]=0;f[d>>2]=f[e>>2];e=tc(a,b,d)|0;u=c;return e|0}function zl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;d=f[c>>2]|0;c=a;e=b-a>>2;while(1){if(!e)break;a=(e|0)/2|0;b=c+(a<<2)|0;g=(f[b>>2]|0)>>>0>>0;c=g?b+4|0:c;e=g?e+-1-a|0:a}return c|0}function Al(a){a=a|0;var c=0;f[a>>2]=0;c=a+8|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;b[a+24>>0]=1;f[a+28>>2]=9;c=a+40|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[a+56>>2]=-1;f[a+60>>2]=0;return}function Bl(a){a=a|0;mj(a);br(a);return}function Cl(a){a=a|0;var c=0,d=0,e=0,g=0,h=0;if(!(Pq(b[f[a>>2]>>0]|0)|0))c=0;else{d=0;while(1){e=f[a>>2]|0;g=(d*10|0)+-48+(b[e>>0]|0)|0;h=e+1|0;f[a>>2]=h;if(!(Pq(b[h>>0]|0)|0)){c=g;break}else d=g}}return c|0}function Dl(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+60>>2]=c;d=1;return d|0}function El(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+64>>2]=c;d=1;return d|0}function Fl(a){a=a|0;var b=0,c=0;b=f[r>>2]|0;c=b+a|0;if((a|0)>0&(c|0)<(b|0)|(c|0)<0){ea()|0;ya(12);return -1}f[r>>2]=c;if((c|0)>(da()|0)?(ca()|0)==0:0){f[r>>2]=b;ya(12);return -1}return b|0}function Gl(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;if((a|0)==0&(c|0)==0)e=d;else{f=d;d=c;c=a;while(1){a=f+-1|0;b[a>>0]=c&7|48;c=Wn(c|0,d|0,3)|0;d=I;if((c|0)==0&(d|0)==0){e=a;break}else f=a}}return e|0}function Hl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Il(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(qp(a,f[b+8>>2]|0,g)|0)fj(0,b,c,d,e);return}function Jl(a){a=a|0;var b=0,c=0;b=f[a+64>>2]|0;if(!b)return;c=Qa[f[(f[b>>2]|0)+32>>2]&127](b)|0;if(!c)return;f[a+60>>2]=(((f[c+4>>2]|0)-(f[c>>2]|0)>>2>>>0)/3|0)-(f[c+40>>2]|0);return}function Kl(a){a=a|0;Ii(a);br(a);return}function Ll(a){a=a|0;var b=0;switch(a|0){case 11:case 2:case 1:{b=1;break}case 4:case 3:{b=2;break}case 6:case 5:{b=4;break}case 8:case 7:{b=8;break}case 9:{b=4;break}case 10:{b=8;break}default:b=-1}return b|0}function Ml(){var a=0,b=0;a=dn(40)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[a+16>>2]=$(1.0);b=a+20|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;n[a+36>>2]=$(1.0);return a|0}function Nl(a,b){a=+a;b=+b;var c=0,d=0,e=0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;p[s>>3]=b;e=f[s+4>>2]&-2147483648|d&2147483647;f[s>>2]=c;f[s+4>>2]=e;return +(+p[s>>3])}function Ol(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0;d=u;u=u+16|0;e=d;p[e>>3]=c;_b(a,b,e);u=d;return}function Pl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;cc(a,b,e);u=d;return}function Ql(a,c){a=a|0;c=c|0;var d=0,e=0;if((a|0)!=(c|0)){d=b[c+11>>0]|0;e=d<<24>>24<0;Zi(a,e?f[c>>2]|0:c,e?f[c+4>>2]|0:d&255)|0}return a|0}function Rl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=X(d,c)|0;f=a>>>16;a=(e>>>16)+(X(d,f)|0)|0;d=b>>>16;b=X(d,c)|0;return (I=(a>>>16)+(X(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function Sl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=vj(b)|0;d=dn(c+13|0)|0;f[d>>2]=c;f[d+4>>2]=c;f[d+8>>2]=0;e=Sp(d)|0;Rg(e|0,b|0,c+1|0)|0;f[a>>2]=e;return}function Tl(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)==-1|(b|0)>4){c=-1;return c|0}d=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-d|0)<=0){c=-1;return c|0}c=f[d>>2]|0;return c|0}function Ul(a){a=a|0;Li(a);br(a);return}function Vl(a){a=a|0;var b=0,c=0;f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Wl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(qp(a,f[b+8>>2]|0,0)|0)tk(0,b,c,d);return}function Xl(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if((c|0)<(a|0)&(a|0)<(c+d|0)){e=a;c=c+d|0;a=a+d|0;while((d|0)>0){a=a-1|0;c=c-1|0;d=d-1|0;b[a>>0]=b[c>>0]|0}a=e}else Rg(a,c,d)|0;return a|0}function Yl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1180;b=f[a+8>>2]|0;if(!b){br(a);return}c=a+12|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Zl(a){a=a|0;var b=0;f[a>>2]=2740;b=f[a+56>>2]|0;if(!b){br(a);return}br(b);br(a);return}function _l(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=u;u=u+16|0;e=d;f[e>>2]=f[c>>2];g=Sa[f[(f[a>>2]|0)+16>>2]&31](a,b,e)|0;if(g)f[c>>2]=f[e>>2];u=d;return g&1|0}function $l(a,b){a=a|0;b=b|0;var c=0;if(b>>>0>=2){c=0;return c|0}f[a+28>>2]=b;c=1;return c|0}function am(a){a=a|0;var b=0,c=0;f[a>>2]=3e3;b=a+64|0;c=f[b>>2]|0;f[b>>2]=0;if(!c){aj(a);return}Va[f[(f[c>>2]|0)+4>>2]&127](c);aj(a);return}function bm(){var a=0,b=0;a=mn()|0;if((a|0?(b=f[a>>2]|0,b|0):0)?(a=b+48|0,(f[a>>2]&-256|0)==1126902528?(f[a+4>>2]|0)==1129074247:0):0)Qo(f[b+12>>2]|0);Qo(bq()|0)}function cm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Bf(a,b,c,d,e,f,6)|0}function dm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Af(a,b,c,d,e,f,4)|0}function em(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Gf(a,b,c,d,e,f,2)|0}function fm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Af(a,b,c,d,e,f,3)|0}function gm(a){a=a|0;var b=0;f[a>>2]=2488;b=f[a+56>>2]|0;if(!b){br(a);return}br(b);br(a);return}function hm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Gf(a,b,c,d,e,f,1)|0}function im(a){a=a|0;var c=0;c=b[w+(a&255)>>0]|0;if((c|0)<8)return c|0;c=b[w+(a>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=b[w+(a>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (b[w+(a>>>24)>>0]|0)+24|0}function jm(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;if(!a){c=0.0;return +c}if((b|0)==0|(a|0)==(b|0)){c=0.0;return +c}d=+(b>>>0)/+(a>>>0);e=1.0-d;f=d*+Fg(d);c=-(f+e*+Fg(e));return +c}function km(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=f[a+(d<<2)>>2]|0;f[c+(d<<2)>>2]=e<<1^e>>31;d=d+1|0}while((d|0)!=(b|0));return}function lm(a){a=a|0;var b=0,c=0;if(Eq(a)|0?(b=Zp(f[a>>2]|0)|0,a=b+8|0,c=f[a>>2]|0,f[a>>2]=c+-1,(c+-1|0)<0):0)br(b);return}function mm(a){a=a|0;var b=0;Ao(a);f[a>>2]=2880;f[a+40>>2]=1180;f[a+44>>2]=-1;b=a+48|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;return}function nm(a,c){a=a|0;c=c|0;var d=0;b[c+84>>0]=1;a=f[c+68>>2]|0;d=c+72|0;c=f[d>>2]|0;if((c|0)==(a|0))return 1;f[d>>2]=c+(~((c+-4-a|0)>>>2)<<2);return 1}function om(a){a=a|0;var b=0,c=0;b=f[a+16>>2]|0;c=(((f[a+12>>2]|0)+1-b|0)/64|0)+b<<3;a=b<<3;b=Tn(c|0,((c|0)<0)<<31>>31|0,a|0,((a|0)<0)<<31>>31|0)|0;return b|0}function pm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Bf(a,b,c,d,e,f,5)|0}function qm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Bf(a,b,c,d,e,f,9)|0}function rm(a){a=a|0;var b=0;f[a>>2]=3208;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b){br(a);return}br(b);br(a);return}function sm(a){a=a|0;var b=0;f[a>>2]=2740;b=f[a+56>>2]|0;if(!b)return;br(b);return}function tm(a){a=a|0;var b=0,c=0;f[a>>2]=1460;b=a+36|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);zi(a);br(a);return}function um(a){a=a|0;var b=0,c=0;f[a>>2]=1180;b=f[a+8>>2]|0;if(!b)return;c=a+12|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function vm(a){a=a|0;var b=0;f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b){br(a);return}br(b);br(a);return}function wm(a){a=a|0;var c=0;f[a>>2]=1336;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=-1;c=a+16|0;f[a+32>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;b[c+12>>0]=0;return}function xm(a){a=a|0;f[a>>2]=3296;Gi(a+8|0);br(a);return}function ym(a){a=a|0;var b=0;f[a>>2]=2488;b=f[a+56>>2]|0;if(!b)return;br(b);return}function zm(a){a=a|0;var b=0,c=0;f[a>>2]=1460;b=a+36|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);zi(a);return}function Am(a,b){a=a|0;b=b|0;f[a>>2]=2968;Vh(a+4|0);f[a+40>>2]=0;f[a+44>>2]=0;f[a>>2]=2984;f[a+48>>2]=b;f[a+52>>2]=0;return}function Bm(a){a=a|0;var b=0,c=0;f[a>>2]=3e3;b=a+64|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);aj(a);br(a);return}function Cm(a){a=a|0;var b=0,c=0,d=0;b=f[a>>2]|0;c=a+4|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);f[a+12>>2]=0;f[a+16>>2]=0;return}function Dm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=a+20|0;e=f[d>>2]|0;g=(f[a+16>>2]|0)-e|0;a=g>>>0>c>>>0?c:g;Rg(e|0,b|0,a|0)|0;f[d>>2]=(f[d>>2]|0)+a;return c|0}function Em(a){a=a|0;var b=0;f[a>>2]=3208;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Fm(a){a=a|0;f[a>>2]=3296;Gi(a+8|0);return}function Gm(a,b){a=a|0;b=b|0;f[a>>2]=2968;Vh(a+4|0);f[a+40>>2]=0;f[a+44>>2]=0;f[a>>2]=2984;f[a+48>>2]=b;f[a+52>>2]=b;return}function Hm(a){a=a|0;var b=0,c=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-8-b|0)>>>3)<<3);br(b);return}function Im(a){a=a|0;var b=0,c=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Jm(a,b){a=a|0;b=b|0;var c=0;c=f[b>>2]|0;return (1<<(c&31)&f[(f[a+28>>2]|0)+(c>>>5<<2)>>2]|0)!=0|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;return Sa[f[(f[a>>2]|0)+44>>2]&31](a,b,c)|0}function Lm(a){a=a|0;var c=0;Al(a);c=a+64|0;f[a+88>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;b[c+20>>0]=0;return}function Mm(a){a=a|0;f[a>>2]=2796;tj(a+88|0);br(a);return}function Nm(a){a=a|0;var b=0;f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Om(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((f[b+4>>2]|0)==(c|0)?(c=b+28|0,(f[c>>2]|0)!=1):0)f[c>>2]=d;return}function Pm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=$(f);pg(a,b,c,d,e,f);return}function Qm(a){a=a|0;var b=0,c=0,d=0;b=u;u=u+16|0;c=b;if((uk(a)|0)==0?(Sa[f[a+32>>2]&31](a,c,1)|0)==1:0)d=h[c>>0]|0;else d=-1;u=b;return d|0}function Rm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;f[a+104>>2]=b;c=f[a+8>>2]|0;d=f[a+4>>2]|0;e=c-d|0;f[a+108>>2]=e;f[a+100>>2]=(b|0)!=0&(e|0)>(b|0)?d+b|0:c;return}function Sm(a){a=a|0;var b=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;b=a+16|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;return}function Tm(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=$(g);pg(f[a>>2]|0,b,c,d,e,g);return}function Um(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=$(f);Pm(a,b,c,d,e,f);return}function Vm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return cm(a,b,c,d,e,f)|0}function Wm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return dm(a,b,c,d,e,f)|0}function Xm(a){a=a|0;var b=0,c=0;if(!a)return;b=f[a>>2]|0;if(b|0){c=a+4|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;br(b)}br(a);return}function Ym(a){a=a|0;f[a>>2]=2544;tj(a+88|0);br(a);return}function Zm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return em(a,b,c,d,e,f)|0}function _m(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return fm(a,b,c,d,e,f)|0}function $m(a){a=a|0;f[a>>2]=2796;tj(a+88|0);return}function an(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e|0;Bd(a,b,c,d,g)|0;u=e;return (I=f[g+4>>2]|0,f[g>>2]|0)|0}function bn(a){a=a|0;var b=0;$n(a);f[a>>2]=5840;b=a+84|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;f[b+20>>2]=0;return}function cn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return hm(a,b,c,d,e,f)|0}function dn(a){a=a|0;var b=0,c=0;b=(a|0)==0?1:a;while(1){a=$a(b)|0;if(a|0){c=a;break}a=$p()|0;if(!a){c=0;break}Ua[a&3]()}return c|0}function en(a,b,c){a=a|0;b=b|0;c=c|0;ac(a,b,c);return}function fn(a,b,c){a=a|0;b=b|0;c=c|0;f[a+4>>2]=b;f[a+8>>2]=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(c<<2)>>2];f[a+12>>2]=c;return 1}function gn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return pm(a,b,c,d,e,f)|0}function hn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return qm(a,b,c,d,e,f)|0}function jn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=$(f);Tm(a,b,c,d,e,f);return}function kn(a){a=a|0;f[a>>2]=2544;tj(a+88|0);return}function ln(a){a=a|0;var b=0,c=0,d=0;b=u;u=u+16|0;c=b;d=dr(f[a+60>>2]|0)|0;f[c>>2]=d;d=ro(Ba(6,c|0)|0)|0;u=b;return d|0}function mn(){var a=0,b=0;a=u;u=u+16|0;if(!(Ka(18612,3)|0)){b=Ia(f[4654]|0)|0;u=a;return b|0}else Dn(17746,a);return 0}function nn(a){a=a|0;var b=0;if(!a)return;b=f[a>>2]|0;f[a>>2]=0;if(b|0)Va[f[(f[b>>2]|0)+4>>2]&127](b);br(a);return}function on(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=Rl(e,a)|0;f=I;return (I=(X(b,a)|0)+(X(d,e)|0)+f|f&0,c|0|0)|0}function pn(a,b){a=a|0;b=b|0;Sg(a,b);f[a>>2]=1276;b=a+36|0;a=b+40|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function qn(a){a=a|0;Gi(a);br(a);return}function rn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;f[a+28>>2]=0;return}function sn(a){a=a|0;var b=0;b=u;u=u+16|0;wc(a);if(!(La(f[4654]|0,0)|0)){u=b;return}else Dn(17845,b)}function tn(a){a=a|0;var b=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;b=a+16|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;return}function un(a,b){a=a|0;b=b|0;return eg(a+40|0,b)|0}function vn(a,b){a=a|0;b=b|0;return $i(a,b,Aq(b)|0)|0}function wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;f[g>>2]=d;d=Mi(a,b,c,g)|0;u=e;return d|0}function xn(a,b){a=a|0;b=b|0;return Aj(a+40|0,b)|0}function yn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return zh(a,b,c,d)|0}function zn(a){a=a|0;var b=0;f[a>>2]=3608;f[a+52>>2]=0;b=a+4|0;a=b+44|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function An(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return $g(a,b,c,d)|0}function Bn(a,b){a=a|0;b=b|0;var c=0;c=f[a+64>>2]|0;return Ra[f[(f[c>>2]|0)+24>>2]&127](c,b)|0}function Cn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=0;return}function Dn(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;f[d>>2]=b;b=f[1478]|0;hh(b,a,d)|0;zj(10,b)|0;Ca()}function En(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ta[a&31](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Fn(a){a=a|0;var b=0;b=f[a+56>>2]|0;f[a+60>>2]=((f[b+100>>2]|0)-(f[b+96>>2]|0)|0)/12|0;return}function Gn(a,b){a=a|0;b=b|0;var c=0;c=f[a+64>>2]|0;return Ra[f[(f[c>>2]|0)+16>>2]&127](c,b)|0}function Hn(a,b){a=a|0;b=b|0;var c=0;c=f[a+64>>2]|0;return Ra[f[(f[c>>2]|0)+20>>2]&127](c,b)|0}function In(a,b){a=a|0;b=b|0;var c=0;c=f[a+64>>2]|0;return Ra[f[(f[c>>2]|0)+12>>2]&127](c,b)|0}function Jn(){var a=0;a=u;u=u+16|0;if(!(Ja(18616,117)|0)){u=a;return}else Dn(17795,a)}function Kn(a){a=a|0;f[a>>2]=1136;Vh(a+4|0);f[a+40>>2]=0;f[a+44>>2]=0;f[a>>2]=2944;return}function Ln(a){a=a|0;Se(a);br(a);return}function Mn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;_a[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Nn(a,b){a=a|0;b=b|0;var c=0;c=f[b+64>>2]|0;Wa[f[(f[c>>2]|0)+28>>2]&15](a,c);return}function On(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)hj(a|0,(zq(c)|0)&255|0,b|0)|0;return a|0}function Pn(a){a=a|0;return 4}function Qn(a,b,c){a=a|0;b=b|0;c=c|0;return Ui(0,b,c)|0}function Rn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b<>>32-c;return a<>>0;return (I=b+d+(e>>>0>>0|0)>>>0,e|0)|0}function Un(a,b){a=a|0;b=b|0;var c=0;if(!b)c=0;else c=lh(f[b>>2]|0,f[b+4>>2]|0,a)|0;return (c|0?c:a)|0}function Vn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return (I=e,a-c>>>0|0)|0}function Wn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return qe(a,b,c,d)|0}function Yn(a){a=a|0;Ve(a);br(a);return}function Zn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return Oi(a,b,c,d)|0}function _n(a){a=a|0;return 5}function $n(a){a=a|0;var b=0;f[a>>2]=5880;b=a+4|0;a=b+80|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function ao(a){a=a|0;return 6}function bo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Pi(a,b,c,d)|0}function co(a,b,c){a=a|0;b=b|0;c=c|0;Fj(a,b,c);return}function eo(a,b){a=a|0;b=b|0;xi(f[a>>2]|0,b);return}function fo(a,b,c){a=a|0;b=b|0;c=c|0;co(a,b,c);return}function go(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;He(a,b,c,d,1);return}function ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;He(a,b,c,d,0);return}function io(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Eg(a,b,c,d)|0}function jo(a,b,c){a=a|0;b=b|0;c=c|0;return Qh(a,b,c)|0}function ko(a){a=a|0;var b=0;b=f[a+64>>2]|0;return Qa[f[(f[b>>2]|0)+32>>2]&127](b)|0}function lo(a,b,c){a=a|0;b=b|0;c=c|0;f[a+28>>2]=b;f[a+32>>2]=c;return 1}function mo(a,b){a=a|0;b=b|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;return}function no(a,b,c){a=a|0;b=b|0;c=c|0;Fj(f[a>>2]|0,b,c);return}function oo(a,b,c){a=a|0;b=b|0;c=c|0;return Ui(a,b,c)|0}function po(a,b,c){a=a|0;b=b|0;c=c|0;return Qn(a,b,c)|0}function qo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Za[a&3](b|0,c|0,d|0,e|0,f|0)}function ro(a){a=a|0;var b=0,c=0;if(a>>>0>4294963200){b=ir()|0;f[b>>2]=0-a;c=-1}else c=a;return c|0}function so(a,b,c){a=a|0;b=b|0;c=c|0;return rh(a,b,c)|0}function to(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;return}function uo(a,b){a=a|0;b=b|0;f[a+8>>2]=b;f[a+12>>2]=-1;return 1}function vo(a,b){a=a|0;b=b|0;f[a+56>>2]=b;tp(a,b);return}function wo(a,b,c){a=a|0;b=b|0;c=c|0;no(a,b,c);return}function xo(a){a=+a;var b=0;p[s>>3]=a;b=f[s>>2]|0;I=f[s+4>>2]|0;return b|0}function yo(a,b,c){a=a|0;b=$(b);c=c|0;var d=Oa;d=$($(c|0)/b);n[a>>2]=d;return}function zo(a,b){a=a|0;b=b|0;xi(a,b);return}function Ao(a){a=a|0;wm(a);f[a>>2]=1460;f[a+36>>2]=0;return}function Bo(a){a=a|0;zn(a);f[a>>2]=3424;f[a+56>>2]=0;f[a+60>>2]=0;return}function Co(a){a=a|0;var b=0;if(!a)b=0;else b=(mh(a,1024,1112,0)|0)!=0&1;return b|0}function Do(a,b,c){a=a|0;b=b|0;c=c|0;Eo(f[a>>2]|0,b,c);return}function Eo(a,b,c){a=a|0;b=b|0;c=c|0;Fi(a+4|0,b,c);return}function Fo(a){a=a|0;var b=0;b=dn(8)|0;ck(b,a);return b|0}function Go(a){a=a|0;if((b[a+11>>0]|0)<0)br(f[a>>2]|0);return}function Ho(a){a=a|0;if(!a)return;Va[f[(f[a>>2]|0)+4>>2]&127](a);return}function Io(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Ya[a&7](b|0,c|0,d|0,e|0)}function Jo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)Xl(a|0,b|0,c|0)|0;return a|0}function Ko(a,b,c){a=a|0;b=b|0;c=c|0;Do(a,b,c);return}function Lo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)Rg(a|0,b|0,c|0)|0;return a|0}function Mo(a){a=a|0;f[a+52>>2]=f[(f[a+4>>2]|0)+80>>2];return}function No(a,b){a=a|0;b=b|0;eo(a,b);return}function Oo(a){a=a|0;f[a+52>>2]=f[(f[a+56>>2]|0)+80>>2];return}function Po(a,b){a=a|0;b=b|0;return -1}function Qo(a){a=a|0;var b=0;b=u;u=u+16|0;Ua[a&3]();Dn(17898,b)}function Ro(a){a=a|0;wh(a);br(a);return}function So(a,b,c){a=a|0;b=b|0;c=c|0;$o(a,b,c);return}function To(a,b){a=a|0;b=b|0;bk(f[a>>2]|0,b);return}function Uo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Sa[a&31](b|0,c|0,d|0)|0}function Vo(a,b){a=a|0;b=b|0;return (Jp(a,b)|0)<<24>>24|0}function Wo(a,b){a=a|0;b=b|0;f[a>>2]=6924;Sl(a+4|0,b);return}function Xo(a){a=a|0;Bo(a);f[a>>2]=3e3;f[a+64>>2]=0;return}function Yo(a,b){a=a|0;b=b|0;var c=0;if(!a)c=0;else c=Bi(a,b,0)|0;return c|0}function Zo(a,b){a=a|0;b=b|0;zo(a,b);return}function _o(a){a=a|0;return f[a+12>>2]|0}function $o(a,b,c){a=a|0;b=b|0;c=c|0;Eo(a,b,c);return}function ap(){var a=0;a=dn(64)|0;Al(a);return a|0}function bp(a,b){a=a|0;b=b|0;To(a,b);return}function cp(a){a=a|0;if(!a)return;Qi(a);br(a);return}function dp(a){a=a|0;return f[a+4>>2]|0}function ep(a,b,c){a=a|0;b=b|0;c=c|0;if(!(f[a>>2]&32))ai(b,c,a)|0;return}function fp(a){a=a|0;return Mp(a)|0}function gp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Xa[a&15](b|0,c|0,d|0)}function hp(){var a=0;a=dn(96)|0;Lm(a);return a|0}function ip(a){a=a|0;return Np(a)|0}function jp(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function kp(a){a=a|0;var b=0;b=(Yq()|0)+188|0;return Tj(a,f[b>>2]|0)|0}function lp(a){a=a|0;return ((f[a+100>>2]|0)-(f[a+96>>2]|0)|0)/12|0|0}function mp(a,b){a=a|0;b=b|0;vp(a,b);return}function np(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(3);return 0}function op(){var a=0;a=dn(12)|0;Bp(a);return a|0}function pp(a){a=a|0;zi(a);br(a);return}function qp(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function rp(a,b){a=a|0;b=b|0;var c=0;c=Fp(a|0)|0;return ((b|0)==0?a:c)|0}function sp(a){a=a|0;return (f[a+12>>2]|0)-(f[a+8>>2]|0)>>2|0}function tp(a,b){a=a|0;b=b|0;f[a+4>>2]=b;return}function up(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Bd(a,b,c,d,0)|0}function vp(a,b){a=a|0;b=b|0;bk(a,b);return}function wp(a){a=a|0;f[a+4>>2]=0;f[a+8>>2]=0;f[a>>2]=a+4;return}function xp(a){a=a|0;return nq(a)|0}function yp(){var a=0;a=dn(84)|0;$n(a);return a|0}function zp(a){a=a|0;gi(a);br(a);return}function Ap(a){a=a|0;return oq(a)|0}function Bp(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;return}function Cp(a){a=a|0;f[a>>2]=6924;lm(a+4|0);return}function Dp(a,b,c){a=a|0;b=b|0;c=c|0;return Ra[a&127](b|0,c|0)|0}function Ep(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(10)}function Fp(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function Gp(a){a=a|0;Bo(a);f[a>>2]=3504;return}function Hp(a,c){a=a|0;c=c|0;b[a>>0]=b[c>>0]|0;return}function Ip(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function Jp(a,c){a=a|0;c=c|0;return b[(f[a>>2]|0)+c>>0]|0}function Kp(a){a=a|0;return (f[a+4>>2]|0)-(f[a>>2]|0)|0}function Lp(a){a=a|0;aj(a);br(a);return}function Mp(a){a=a|0;return f[(f[a>>2]|0)+40>>2]|0}function Np(a){a=a|0;return f[(f[a>>2]|0)+44>>2]|0}function Op(a){a=a|0;if(!a)return;br(a);return}function Pp(a){a=a|0;b[a+28>>0]=1;return}function Qp(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function Rp(a,b){a=a|0;b=b|0;return 1}function Sp(a){a=a|0;return a+12|0}function Tp(a,b,c){a=a|0;b=b|0;c=c|0;Wa[a&15](b|0,c|0)}function Up(a,b){a=a|0;b=b|0;f[a+80>>2]=b;return}function Vp(){var a=0;a=dn(48)|0;Fq(a);return a|0}function Wp(a){a=a|0;return vq(a+4|0)|0}function Xp(){var a=0;a=dn(108)|0;bn(a);return a|0}function Yp(a){a=a|0;return (b[a+32>>0]|0)!=0|0}function Zp(a){a=a|0;return a+-12|0}function _p(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(9)}function $p(){var a=0;a=f[4655]|0;f[4655]=a+0;return a|0}function aq(a){a=a|0;return f[a+56>>2]|0}function bq(){var a=0;a=f[1708]|0;f[1708]=a+0;return a|0}function cq(a){a=a|0;wg(a);br(a);return}function dq(a){a=a|0;fr(a);br(a);return}function eq(a){a=a|0;return b[a+24>>0]|0}function fq(a,b){a=a|0;b=b|0;return 0}function gq(a){a=a|0;return f[a+48>>2]|0}function hq(a,b){a=a|0;b=b|0;return Qa[a&127](b|0)|0}function iq(a){a=a|0;return f[a+60>>2]|0}function jq(a){a=a|0;return f[a+28>>2]|0}function kq(a){a=a|0;sa(a|0)|0;bm()}function lq(a){a=a|0;Cp(a);br(a);return}function mq(a){a=a|0;Ca()}function nq(a){a=a|0;return f[a+40>>2]|0}function oq(a){a=a|0;return f[a+44>>2]|0}function pq(a,b){a=a|0;b=b|0;return $(+sk(a,b,0))}function qq(a){a=a|0;return 3}function rq(a,b){a=a|0;b=b|0;u=a;v=b}function sq(a){a=a|0;n[a>>2]=$(1.0);return}function tq(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function uq(a){a=a|0;return f[a+80>>2]|0}function vq(a){a=a|0;return f[a>>2]|0}function wq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(8)}function xq(a,b){a=a|0;b=b|0;Va[a&127](b|0)}function yq(a,b){a=a|0;b=b|0;return Un(a,b)|0}function zq(a){a=a|0;return a&255|0}function Aq(a){a=a|0;return vj(a)|0}function Bq(a,b){a=a|0;b=b|0;return +(+sk(a,b,1))}function Cq(a,b,c){a=a|0;b=b|0;c=c|0;aa(2);return 0}function Dq(a){a=a|0;return 2}function Eq(a){a=a|0;return 1}function Fq(a){a=a|0;Kn(a);return}function Gq(a,b){a=+a;b=+b;return +(+Nl(a,b))}function Hq(a,b){a=+a;b=b|0;return +(+Wj(a,b))}function Iq(a,b){a=+a;b=b|0;return +(+Uj(a,b))}function Jq(){return 3}function Kq(a,b,c){a=a|0;b=b|0;c=c|0;aa(7)}function Lq(){return 0}function Mq(){return -1}function Nq(){return dn(1)|0}function Oq(){return 4}function Pq(a){a=a|0;return (a+-48|0)>>>0<10|0}function Qq(){return 1}function Rq(){return 2}function Sq(a,b){a=+a;b=+b;return +(+pd(a,b))}function Tq(a,b){a=a|0;b=b|0;aa(1);return 0}function Uq(a){a=a|0;Ha()}function Vq(a){a=a|0;Ua[a&3]()}function Wq(){ua()}function Xq(a){a=a|0;return +(+Bq(a,0))}function Yq(){return lr()|0}function Zq(a,b){a=a|0;b=b|0;aa(6)}function _q(a){a=a|0;return dn(a)|0}function $q(a){a=a|0;br(a);return}function ar(a){a=a|0;u=a}function br(a){a=a|0;wc(a);return}function cr(a){a=a|0;I=a}function dr(a){a=a|0;return a|0}function er(a){a=a|0;aa(0);return 0}function fr(a){a=a|0;return}function gr(a){a=a|0;return 0}function hr(){return I|0}function ir(){return 18544}function jr(){return u|0}function kr(a){a=a|0;aa(5)}function lr(){return 6040}function mr(){aa(4)} + +// EMSCRIPTEN_END_FUNCS +var Qa=[er,Dq,Eq,Eq,Dq,gb,gr,gr,gr,ak,Vf,Eq,dp,gr,gr,Eq,gr,Eq,Eq,rl,_n,ll,Eq,ao,Yk,Eq,jq,Pn,rl,Eq,rl,_n,ll,Eq,ao,Yk,Eq,jq,Pn,rl,Eq,qq,gr,dp,Eq,gr,Eq,qq,Eq,kl,Pn,kl,_n,il,Eq,ao,Qk,Eq,jq,Eq,kl,Pn,kl,_n,il,Eq,ao,Qk,Eq,jq,Eq,Dq,Eq,Eq,Cd,Eq,Je,Tg,qk,ko,_o,dp,lg,sg,$e,_o,dp,Eq,gr,gr,wi,gr,Eq,gr,Xj,ln,Wp,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er];var Ra=[Tq,ql,Ug,ve,xl,fq,fq,fq,Rp,kb,gj,uo,Rp,Rp,fi,bj,Uh,ek,jl,Gj,Vk,Yj,Zj,Fe,Po,fq,Zh,fq,Dl,_e,fq,El,Zg,$l,td,fq,Dl,_e,fq,El,Zg,$l,td,xn,Po,fq,Xh,sd,fq,tl,We,fq,ul,Yg,$l,sd,fq,tl,We,fq,ul,Yg,$l,un,Hn,Bn,In,Gn,Kg,dk,mk,mc,le,Jm,wf,af,Ze,Ig,dk,mk,lc,le,Jm,Rp,fq,fq,bf,nm,Xf,bf,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq];var Sa=[Cq,lo,Ip,fn,Km,fg,cj,el,ih,uc,vh,$f,Rh,Qb,Oh,vg,gl,Dm,qj,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq];var Ta=[np,Ld,Bc,ne,Sb,bb,Cc,me,Rb,ab,Lg,ed,eb,sf,qc,id,db,qf,nc,np,np,np,np,np,np,np,np,np,np,np,np,np];var Ua=[mr,Wq,Ai,Jn];var Va=[kr,Ij,Qj,fr,$q,um,Yl,Wk,Uq,gi,zp,zi,pp,wh,Ro,zm,tm,Vl,Uq,Hl,Hl,Uk,Jk,_k,Ok,fr,$q,Uq,Li,Ul,Hl,Rk,Gk,Xk,Mk,fr,$q,Uq,Ii,Kl,zm,tm,fr,$q,$q,mj,Bl,ym,gm,kn,Ym,fr,$q,$q,kj,sl,sm,Zl,$m,Mm,fr,$q,ok,hk,Qj,Sj,Vj,Vj,am,Bm,Mc,Jl,Ve,Yn,rk,jk,Lk,Fk,Em,rm,xk,nk,Nk,Ik,Nm,vm,Fm,xm,Gi,qn,Se,Ln,aj,Uq,Lp,Oo,Fn,fr,$q,Uq,Lp,Mo,Lp,Mo,Dk,wk,rb,wg,cq,fr,dq,fr,fr,dq,Cp,lq,lq,sn,kr,kr,kr,kr,kr,kr,kr,kr,kr,kr];var Wa=[Zq,ik,Rf,Ri,Nn,ib,lb,sc,mo,ej,ej,pk,Ec,Zq,Zq,Zq];var Xa=[Kq,ze,Yi,$b,fc,Fc,$b,fc,uj,Ej,Hg,oj,ug,If,Kq,Kq];var Ya=[wq,Dg,Zf,Wl,Zk,wq,wq,wq];var Za=[_p,ij,Vg,_p];var _a=[Ep,Il,Kk,Ep];return{___cxa_can_catch:_l,___cxa_is_pointer_type:Co,___divdi3:zk,___muldi3:on,___udivdi3:up,___uremdi3:an,_bitshift64Lshr:Wn,_bitshift64Shl:Rn,_emscripten_bind_DracoInt8Array_DracoInt8Array_0:op,_emscripten_bind_DracoInt8Array_GetValue_1:Vo,_emscripten_bind_DracoInt8Array___destroy___0:Xm,_emscripten_bind_DracoInt8Array_size_0:Kp,_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2:jo,_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3:An,_emscripten_bind_Encoder_Encoder_0:Vp,_emscripten_bind_Encoder_GetNumberOfEncodedFaces_0:Ap,_emscripten_bind_Encoder_GetNumberOfEncodedPoints_0:xp,_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5:Um,_emscripten_bind_Encoder_SetAttributeQuantization_2:fo,_emscripten_bind_Encoder_SetEncodingMethod_1:mp,_emscripten_bind_Encoder_SetSpeedOptions_2:So,_emscripten_bind_Encoder_SetTrackEncodedProperties_1:Zo,_emscripten_bind_Encoder___destroy___0:Hj,_emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2:so,_emscripten_bind_ExpertEncoder_ExpertEncoder_1:Fo,_emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0:ip,_emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0:fp,_emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5:jn,_emscripten_bind_ExpertEncoder_SetAttributeQuantization_2:wo,_emscripten_bind_ExpertEncoder_SetEncodingMethod_1:bp,_emscripten_bind_ExpertEncoder_SetSpeedOptions_2:Ko,_emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1:No,_emscripten_bind_ExpertEncoder___destroy___0:nn,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:ap,_emscripten_bind_GeometryAttribute___destroy___0:Op,_emscripten_bind_MeshBuilder_AddFacesToMesh_3:io,_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5:hn,_emscripten_bind_MeshBuilder_AddFloatAttribute_5:hn,_emscripten_bind_MeshBuilder_AddInt16Attribute_5:_m,_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5:gn,_emscripten_bind_MeshBuilder_AddInt32Attribute_5:gn,_emscripten_bind_MeshBuilder_AddInt8Attribute_5:cn,_emscripten_bind_MeshBuilder_AddMetadataToMesh_2:po,_emscripten_bind_MeshBuilder_AddMetadata_2:oo,_emscripten_bind_MeshBuilder_AddUInt16Attribute_5:Wm,_emscripten_bind_MeshBuilder_AddUInt32Attribute_5:Vm,_emscripten_bind_MeshBuilder_AddUInt8Attribute_5:Zm,_emscripten_bind_MeshBuilder_MeshBuilder_0:Nq,_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3:yn,_emscripten_bind_MeshBuilder___destroy___0:Op,_emscripten_bind_Mesh_Mesh_0:Xp,_emscripten_bind_Mesh___destroy___0:Ho,_emscripten_bind_Mesh_num_attributes_0:sp,_emscripten_bind_Mesh_num_faces_0:lp,_emscripten_bind_Mesh_num_points_0:uq,_emscripten_bind_Mesh_set_num_points_1:Up,_emscripten_bind_MetadataBuilder_AddDoubleEntry_3:Zn,_emscripten_bind_MetadataBuilder_AddIntEntry_3:bo,_emscripten_bind_MetadataBuilder_AddStringEntry_3:Xn,_emscripten_bind_MetadataBuilder_MetadataBuilder_0:Nq,_emscripten_bind_MetadataBuilder___destroy___0:Op,_emscripten_bind_Metadata_Metadata_0:Ml,_emscripten_bind_Metadata___destroy___0:cp,_emscripten_bind_PointAttribute_PointAttribute_0:hp,_emscripten_bind_PointAttribute___destroy___0:xj,_emscripten_bind_PointAttribute_attribute_type_0:aq,_emscripten_bind_PointAttribute_byte_offset_0:gq,_emscripten_bind_PointAttribute_byte_stride_0:nq,_emscripten_bind_PointAttribute_data_type_0:jq,_emscripten_bind_PointAttribute_normalized_0:Yp,_emscripten_bind_PointAttribute_num_components_0:eq,_emscripten_bind_PointAttribute_size_0:uq,_emscripten_bind_PointAttribute_unique_id_0:iq,_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5:hn,_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5:_m,_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5:gn,_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5:cn,_emscripten_bind_PointCloudBuilder_AddMetadata_2:oo,_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5:Wm,_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5:Vm,_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5:Zm,_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0:Nq,_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3:yn,_emscripten_bind_PointCloudBuilder___destroy___0:Op,_emscripten_bind_PointCloud_PointCloud_0:yp,_emscripten_bind_PointCloud___destroy___0:Ho,_emscripten_bind_PointCloud_num_attributes_0:sp,_emscripten_bind_PointCloud_num_points_0:uq,_emscripten_bind_VoidPtr___destroy___0:Op,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:Mq,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:Lq,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:Qq,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:Rq,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:Oq,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:Mq,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:Qq,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:Lq,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:Jq,_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING:Qq,_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING:Lq,_emscripten_replace_memory:Pa,_free:wc,_i64Add:Tn,_i64Subtract:Vn,_llvm_bswap_i32:Fp,_malloc:$a,_memcpy:Rg,_memmove:Xl,_memset:hj,_sbrk:Fl,dynCall_ii:hq,dynCall_iii:Dp,dynCall_iiii:Uo,dynCall_iiiiiii:En,dynCall_v:Vq,dynCall_vi:xq,dynCall_vii:Tp,dynCall_viii:gp,dynCall_viiii:Io,dynCall_viiiii:qo,dynCall_viiiiii:Mn,establishStackSpace:rq,getTempRet0:hr,runPostSets:Sn,setTempRet0:cr,setThrew:Qp,stackAlloc:jp,stackRestore:ar,stackSave:jr}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___divdi3=Module["___divdi3"]=asm["___divdi3"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_bind_DracoInt8Array_DracoInt8Array_0=Module["_emscripten_bind_DracoInt8Array_DracoInt8Array_0"]=asm["_emscripten_bind_DracoInt8Array_DracoInt8Array_0"];var _emscripten_bind_DracoInt8Array_GetValue_1=Module["_emscripten_bind_DracoInt8Array_GetValue_1"]=asm["_emscripten_bind_DracoInt8Array_GetValue_1"];var _emscripten_bind_DracoInt8Array___destroy___0=Module["_emscripten_bind_DracoInt8Array___destroy___0"]=asm["_emscripten_bind_DracoInt8Array___destroy___0"];var _emscripten_bind_DracoInt8Array_size_0=Module["_emscripten_bind_DracoInt8Array_size_0"]=asm["_emscripten_bind_DracoInt8Array_size_0"];var _emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2=Module["_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2"]=asm["_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2"];var _emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3=Module["_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3"]=asm["_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3"];var _emscripten_bind_Encoder_Encoder_0=Module["_emscripten_bind_Encoder_Encoder_0"]=asm["_emscripten_bind_Encoder_Encoder_0"];var _emscripten_bind_Encoder_GetNumberOfEncodedFaces_0=Module["_emscripten_bind_Encoder_GetNumberOfEncodedFaces_0"]=asm["_emscripten_bind_Encoder_GetNumberOfEncodedFaces_0"];var _emscripten_bind_Encoder_GetNumberOfEncodedPoints_0=Module["_emscripten_bind_Encoder_GetNumberOfEncodedPoints_0"]=asm["_emscripten_bind_Encoder_GetNumberOfEncodedPoints_0"];var _emscripten_bind_Encoder_SetAttributeExplicitQuantization_5=Module["_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5"]=asm["_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5"];var _emscripten_bind_Encoder_SetAttributeQuantization_2=Module["_emscripten_bind_Encoder_SetAttributeQuantization_2"]=asm["_emscripten_bind_Encoder_SetAttributeQuantization_2"];var _emscripten_bind_Encoder_SetEncodingMethod_1=Module["_emscripten_bind_Encoder_SetEncodingMethod_1"]=asm["_emscripten_bind_Encoder_SetEncodingMethod_1"];var _emscripten_bind_Encoder_SetSpeedOptions_2=Module["_emscripten_bind_Encoder_SetSpeedOptions_2"]=asm["_emscripten_bind_Encoder_SetSpeedOptions_2"];var _emscripten_bind_Encoder_SetTrackEncodedProperties_1=Module["_emscripten_bind_Encoder_SetTrackEncodedProperties_1"]=asm["_emscripten_bind_Encoder_SetTrackEncodedProperties_1"];var _emscripten_bind_Encoder___destroy___0=Module["_emscripten_bind_Encoder___destroy___0"]=asm["_emscripten_bind_Encoder___destroy___0"];var _emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2=Module["_emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2"]=asm["_emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2"];var _emscripten_bind_ExpertEncoder_ExpertEncoder_1=Module["_emscripten_bind_ExpertEncoder_ExpertEncoder_1"]=asm["_emscripten_bind_ExpertEncoder_ExpertEncoder_1"];var _emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0=Module["_emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0"]=asm["_emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0"];var _emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0=Module["_emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0"]=asm["_emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0"];var _emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5=Module["_emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5"]=asm["_emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5"];var _emscripten_bind_ExpertEncoder_SetAttributeQuantization_2=Module["_emscripten_bind_ExpertEncoder_SetAttributeQuantization_2"]=asm["_emscripten_bind_ExpertEncoder_SetAttributeQuantization_2"];var _emscripten_bind_ExpertEncoder_SetEncodingMethod_1=Module["_emscripten_bind_ExpertEncoder_SetEncodingMethod_1"]=asm["_emscripten_bind_ExpertEncoder_SetEncodingMethod_1"];var _emscripten_bind_ExpertEncoder_SetSpeedOptions_2=Module["_emscripten_bind_ExpertEncoder_SetSpeedOptions_2"]=asm["_emscripten_bind_ExpertEncoder_SetSpeedOptions_2"];var _emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1=Module["_emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1"]=asm["_emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1"];var _emscripten_bind_ExpertEncoder___destroy___0=Module["_emscripten_bind_ExpertEncoder___destroy___0"]=asm["_emscripten_bind_ExpertEncoder___destroy___0"];var _emscripten_bind_GeometryAttribute_GeometryAttribute_0=Module["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"]=asm["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"];var _emscripten_bind_GeometryAttribute___destroy___0=Module["_emscripten_bind_GeometryAttribute___destroy___0"]=asm["_emscripten_bind_GeometryAttribute___destroy___0"];var _emscripten_bind_MeshBuilder_AddFacesToMesh_3=Module["_emscripten_bind_MeshBuilder_AddFacesToMesh_3"]=asm["_emscripten_bind_MeshBuilder_AddFacesToMesh_3"];var _emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5=Module["_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5"]=asm["_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5"];var _emscripten_bind_MeshBuilder_AddFloatAttribute_5=Module["_emscripten_bind_MeshBuilder_AddFloatAttribute_5"]=asm["_emscripten_bind_MeshBuilder_AddFloatAttribute_5"];var _emscripten_bind_MeshBuilder_AddInt16Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt16Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt16Attribute_5"];var _emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5=Module["_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5"]=asm["_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5"];var _emscripten_bind_MeshBuilder_AddInt32Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt32Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt32Attribute_5"];var _emscripten_bind_MeshBuilder_AddInt8Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt8Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt8Attribute_5"];var _emscripten_bind_MeshBuilder_AddMetadataToMesh_2=Module["_emscripten_bind_MeshBuilder_AddMetadataToMesh_2"]=asm["_emscripten_bind_MeshBuilder_AddMetadataToMesh_2"];var _emscripten_bind_MeshBuilder_AddMetadata_2=Module["_emscripten_bind_MeshBuilder_AddMetadata_2"]=asm["_emscripten_bind_MeshBuilder_AddMetadata_2"];var _emscripten_bind_MeshBuilder_AddUInt16Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt16Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt16Attribute_5"];var _emscripten_bind_MeshBuilder_AddUInt32Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt32Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt32Attribute_5"];var _emscripten_bind_MeshBuilder_AddUInt8Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt8Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt8Attribute_5"];var _emscripten_bind_MeshBuilder_MeshBuilder_0=Module["_emscripten_bind_MeshBuilder_MeshBuilder_0"]=asm["_emscripten_bind_MeshBuilder_MeshBuilder_0"];var _emscripten_bind_MeshBuilder_SetMetadataForAttribute_3=Module["_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3"]=asm["_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3"];var _emscripten_bind_MeshBuilder___destroy___0=Module["_emscripten_bind_MeshBuilder___destroy___0"]=asm["_emscripten_bind_MeshBuilder___destroy___0"];var _emscripten_bind_Mesh_Mesh_0=Module["_emscripten_bind_Mesh_Mesh_0"]=asm["_emscripten_bind_Mesh_Mesh_0"];var _emscripten_bind_Mesh___destroy___0=Module["_emscripten_bind_Mesh___destroy___0"]=asm["_emscripten_bind_Mesh___destroy___0"];var _emscripten_bind_Mesh_num_attributes_0=Module["_emscripten_bind_Mesh_num_attributes_0"]=asm["_emscripten_bind_Mesh_num_attributes_0"];var _emscripten_bind_Mesh_num_faces_0=Module["_emscripten_bind_Mesh_num_faces_0"]=asm["_emscripten_bind_Mesh_num_faces_0"];var _emscripten_bind_Mesh_num_points_0=Module["_emscripten_bind_Mesh_num_points_0"]=asm["_emscripten_bind_Mesh_num_points_0"];var _emscripten_bind_Mesh_set_num_points_1=Module["_emscripten_bind_Mesh_set_num_points_1"]=asm["_emscripten_bind_Mesh_set_num_points_1"];var _emscripten_bind_MetadataBuilder_AddDoubleEntry_3=Module["_emscripten_bind_MetadataBuilder_AddDoubleEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddDoubleEntry_3"];var _emscripten_bind_MetadataBuilder_AddIntEntry_3=Module["_emscripten_bind_MetadataBuilder_AddIntEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddIntEntry_3"];var _emscripten_bind_MetadataBuilder_AddStringEntry_3=Module["_emscripten_bind_MetadataBuilder_AddStringEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddStringEntry_3"];var _emscripten_bind_MetadataBuilder_MetadataBuilder_0=Module["_emscripten_bind_MetadataBuilder_MetadataBuilder_0"]=asm["_emscripten_bind_MetadataBuilder_MetadataBuilder_0"];var _emscripten_bind_MetadataBuilder___destroy___0=Module["_emscripten_bind_MetadataBuilder___destroy___0"]=asm["_emscripten_bind_MetadataBuilder___destroy___0"];var _emscripten_bind_Metadata_Metadata_0=Module["_emscripten_bind_Metadata_Metadata_0"]=asm["_emscripten_bind_Metadata_Metadata_0"];var _emscripten_bind_Metadata___destroy___0=Module["_emscripten_bind_Metadata___destroy___0"]=asm["_emscripten_bind_Metadata___destroy___0"];var _emscripten_bind_PointAttribute_PointAttribute_0=Module["_emscripten_bind_PointAttribute_PointAttribute_0"]=asm["_emscripten_bind_PointAttribute_PointAttribute_0"];var _emscripten_bind_PointAttribute___destroy___0=Module["_emscripten_bind_PointAttribute___destroy___0"]=asm["_emscripten_bind_PointAttribute___destroy___0"];var _emscripten_bind_PointAttribute_attribute_type_0=Module["_emscripten_bind_PointAttribute_attribute_type_0"]=asm["_emscripten_bind_PointAttribute_attribute_type_0"];var _emscripten_bind_PointAttribute_byte_offset_0=Module["_emscripten_bind_PointAttribute_byte_offset_0"]=asm["_emscripten_bind_PointAttribute_byte_offset_0"];var _emscripten_bind_PointAttribute_byte_stride_0=Module["_emscripten_bind_PointAttribute_byte_stride_0"]=asm["_emscripten_bind_PointAttribute_byte_stride_0"];var _emscripten_bind_PointAttribute_data_type_0=Module["_emscripten_bind_PointAttribute_data_type_0"]=asm["_emscripten_bind_PointAttribute_data_type_0"];var _emscripten_bind_PointAttribute_normalized_0=Module["_emscripten_bind_PointAttribute_normalized_0"]=asm["_emscripten_bind_PointAttribute_normalized_0"];var _emscripten_bind_PointAttribute_num_components_0=Module["_emscripten_bind_PointAttribute_num_components_0"]=asm["_emscripten_bind_PointAttribute_num_components_0"];var _emscripten_bind_PointAttribute_size_0=Module["_emscripten_bind_PointAttribute_size_0"]=asm["_emscripten_bind_PointAttribute_size_0"];var _emscripten_bind_PointAttribute_unique_id_0=Module["_emscripten_bind_PointAttribute_unique_id_0"]=asm["_emscripten_bind_PointAttribute_unique_id_0"];var _emscripten_bind_PointCloudBuilder_AddFloatAttribute_5=Module["_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt16Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt32Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt8Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddMetadata_2=Module["_emscripten_bind_PointCloudBuilder_AddMetadata_2"]=asm["_emscripten_bind_PointCloudBuilder_AddMetadata_2"];var _emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5"];var _emscripten_bind_PointCloudBuilder_PointCloudBuilder_0=Module["_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0"]=asm["_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0"];var _emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3=Module["_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3"]=asm["_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3"];var _emscripten_bind_PointCloudBuilder___destroy___0=Module["_emscripten_bind_PointCloudBuilder___destroy___0"]=asm["_emscripten_bind_PointCloudBuilder___destroy___0"];var _emscripten_bind_PointCloud_PointCloud_0=Module["_emscripten_bind_PointCloud_PointCloud_0"]=asm["_emscripten_bind_PointCloud_PointCloud_0"];var _emscripten_bind_PointCloud___destroy___0=Module["_emscripten_bind_PointCloud___destroy___0"]=asm["_emscripten_bind_PointCloud___destroy___0"];var _emscripten_bind_PointCloud_num_attributes_0=Module["_emscripten_bind_PointCloud_num_attributes_0"]=asm["_emscripten_bind_PointCloud_num_attributes_0"];var _emscripten_bind_PointCloud_num_points_0=Module["_emscripten_bind_PointCloud_num_points_0"]=asm["_emscripten_bind_PointCloud_num_points_0"];var _emscripten_bind_VoidPtr___destroy___0=Module["_emscripten_bind_VoidPtr___destroy___0"]=asm["_emscripten_bind_VoidPtr___destroy___0"];var _emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=Module["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"]=asm["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"];var _emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=Module["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"]=asm["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"];var _emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=Module["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"]=asm["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"];var _emscripten_enum_draco_GeometryAttribute_Type_COLOR=Module["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"];var _emscripten_enum_draco_GeometryAttribute_Type_GENERIC=Module["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"];var _emscripten_enum_draco_GeometryAttribute_Type_INVALID=Module["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"];var _emscripten_enum_draco_GeometryAttribute_Type_NORMAL=Module["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"];var _emscripten_enum_draco_GeometryAttribute_Type_POSITION=Module["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"];var _emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=Module["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"];var _emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING=Module["_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING"]=asm["_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING"];var _emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING=Module["_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING"]=asm["_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];Module["asm"]=asm;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=exit;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;i>>0,$jscomp.propertyToPolyfillSymbol[h]=$jscomp.IS_SYMBOL_NATIVE? +$jscomp.global.Symbol(h):$jscomp.POLYFILL_PREFIX+l+"$"+h),$jscomp.defineProperty(p,$jscomp.propertyToPolyfillSymbol[h],{configurable:!0,writable:!0,value:n})))}; +$jscomp.polyfill("Promise",function(k){function n(){this.batch_=null}function l(f){return f instanceof h?f:new h(function(q,v){q(f)})}if(k&&(!($jscomp.FORCE_POLYFILL_PROMISE||$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&"undefined"===typeof $jscomp.global.PromiseRejectionEvent)||!$jscomp.global.Promise||-1===$jscomp.global.Promise.toString().indexOf("[native code]")))return k;n.prototype.asyncExecute=function(f){if(null==this.batch_){this.batch_=[];var q=this;this.asyncExecuteFunction(function(){q.executeBatch_()})}this.batch_.push(f)}; +var p=$jscomp.global.setTimeout;n.prototype.asyncExecuteFunction=function(f){p(f,0)};n.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var f=this.batch_;this.batch_=[];for(var q=0;q=A}},"es6","es3"); +$jscomp.polyfill("Array.prototype.copyWithin",function(k){function n(l){l=Number(l);return Infinity===l||-Infinity===l?l:l|0}return k?k:function(l,p,h){var A=this.length;l=n(l);p=n(p);h=void 0===h?A:n(h);l=0>l?Math.max(A+l,0):Math.min(l,A);p=0>p?Math.max(A+p,0):Math.min(p,A);h=0>h?Math.max(A+h,0):Math.min(h,A);if(lp;)--h in this?this[--l]=this[h]:delete this[--l];return this}},"es6","es3"); +$jscomp.typedArrayCopyWithin=function(k){return k?k:Array.prototype.copyWithin};$jscomp.polyfill("Int8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8ClampedArray.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5"); +$jscomp.polyfill("Uint16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float64Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5"); +var DracoDecoderModule=function(){var k="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;"undefined"!==typeof __filename&&(k=k||__filename);return function(n){function l(e){return a.locateFile?a.locateFile(e,U):U+e}function p(e,b,c){var d=b+c;for(c=b;e[c]&&!(c>=d);)++c;if(16g?d+=String.fromCharCode(g):(g-=65536,d+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else d+=String.fromCharCode(g)}return d}function h(e,b){return e?p(ea,e,b):""}function A(){var e=ja.buffer;a.HEAP8=Y=new Int8Array(e);a.HEAP16=new Int16Array(e);a.HEAP32=ca=new Int32Array(e);a.HEAPU8=ea=new Uint8Array(e);a.HEAPU16=new Uint16Array(e);a.HEAPU32=V=new Uint32Array(e);a.HEAPF32=new Float32Array(e);a.HEAPF64=new Float64Array(e)}function f(e){if(a.onAbort)a.onAbort(e); +e="Aborted("+e+")";da(e);wa=!0;e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info.");ka(e);throw e;}function q(e){try{if(e==P&&fa)return new Uint8Array(fa);if(ma)return ma(e);throw"both async and sync fetching of the wasm failed";}catch(b){f(b)}}function v(){if(!fa&&(xa||ha)){if("function"==typeof fetch&&!P.startsWith("file://"))return fetch(P,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+P+"'";return e.arrayBuffer()}).catch(function(){return q(P)}); +if(na)return new Promise(function(e,b){na(P,function(c){e(new Uint8Array(c))},b)})}return Promise.resolve().then(function(){return q(P)})}function z(e){for(;0>2]=b};this.get_type=function(){return V[this.ptr+4>>2]};this.set_destructor=function(b){V[this.ptr+8>>2]=b};this.get_destructor=function(){return V[this.ptr+8>>2]};this.set_refcount=function(b){ca[this.ptr>>2]=b};this.set_caught=function(b){Y[this.ptr+ +12>>0]=b?1:0};this.get_caught=function(){return 0!=Y[this.ptr+12>>0]};this.set_rethrown=function(b){Y[this.ptr+13>>0]=b?1:0};this.get_rethrown=function(){return 0!=Y[this.ptr+13>>0]};this.init=function(b,c){this.set_adjusted_ptr(0);this.set_type(b);this.set_destructor(c);this.set_refcount(0);this.set_caught(!1);this.set_rethrown(!1)};this.add_ref=function(){ca[this.ptr>>2]+=1};this.release_ref=function(){var b=ca[this.ptr>>2];ca[this.ptr>>2]=b-1;return 1===b};this.set_adjusted_ptr=function(b){V[this.ptr+ +16>>2]=b};this.get_adjusted_ptr=function(){return V[this.ptr+16>>2]};this.get_exception_ptr=function(){if(ya(this.get_type()))return V[this.excPtr>>2];var b=this.get_adjusted_ptr();return 0!==b?b:this.excPtr}}function ba(){function e(){if(!la&&(la=!0,a.calledRun=!0,!wa)){za=!0;z(oa);Aa(a);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ba.unshift(a.postRun.shift());z(Ba)}}if(!(0=d?b++:2047>=d?b+=2:55296<=d&&57343>= +d?(b+=4,++c):b+=3}b=Array(b+1);c=0;d=b.length;if(0=u){var X=e.charCodeAt(++g);u=65536+((u&1023)<<10)|X&1023}if(127>=u){if(c>=d)break;b[c++]=u}else{if(2047>=u){if(c+1>=d)break;b[c++]=192|u>>6}else{if(65535>=u){if(c+2>=d)break;b[c++]=224|u>>12}else{if(c+3>=d)break;b[c++]=240|u>>18;b[c++]=128|u>>12&63}b[c++]=128|u>>6&63}b[c++]=128|u&63}}b[c]=0}e=r.alloc(b,Y);r.copy(b,Y,e);return e}return e}function pa(e){if("object"===typeof e){var b= +r.alloc(e,Y);r.copy(e,Y,b);return b}return e}function Z(){throw"cannot construct a VoidPtr, no constructor in IDL";}function S(){this.ptr=Da();x(S)[this.ptr]=this}function Q(){this.ptr=Ea();x(Q)[this.ptr]=this}function W(){this.ptr=Fa();x(W)[this.ptr]=this}function w(){this.ptr=Ga();x(w)[this.ptr]=this}function C(){this.ptr=Ha();x(C)[this.ptr]=this}function F(){this.ptr=Ia();x(F)[this.ptr]=this}function G(){this.ptr=Ja();x(G)[this.ptr]=this}function E(){this.ptr=Ka();x(E)[this.ptr]=this}function T(){this.ptr= +La();x(T)[this.ptr]=this}function B(){throw"cannot construct a Status, no constructor in IDL";}function H(){this.ptr=Ma();x(H)[this.ptr]=this}function I(){this.ptr=Na();x(I)[this.ptr]=this}function J(){this.ptr=Oa();x(J)[this.ptr]=this}function K(){this.ptr=Pa();x(K)[this.ptr]=this}function L(){this.ptr=Qa();x(L)[this.ptr]=this}function M(){this.ptr=Ra();x(M)[this.ptr]=this}function N(){this.ptr=Sa();x(N)[this.ptr]=this}function y(){this.ptr=Ta();x(y)[this.ptr]=this}function m(){this.ptr=Ua();x(m)[this.ptr]= +this}n=void 0===n?{}:n;var a="undefined"!=typeof n?n:{},Aa,ka;a.ready=new Promise(function(e,b){Aa=e;ka=b});var Va=!1,Wa=!1;a.onRuntimeInitialized=function(){Va=!0;if(Wa&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Wa=!0;if(Va&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(e){if("string"!==typeof e)return!1;e=e.split(".");return 2>e.length||3=e[1]?!0:0!=e[0]||10>>=0;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,e+100663296);var g=Math;d=Math.max(e,d);g=g.min.call(g,2147483648,d+(65536-d%65536)%65536);a:{d=ja.buffer;try{ja.grow(g-d.byteLength+65535>>>16);A();var u=1;break a}catch(X){}u=void 0}if(u)return!0}return!1},f:function(e){return 52},d:function(e,b,c,d,g){return 70},c:function(e,b,c,d){for(var g=0,u=0;u>2],ab=V[b+4>>2];b+=8;for(var sa=0;sa>2]=g;return 0}};(function(){function e(g,u){a.asm=g.exports;ja=a.asm.h;A();oa.unshift(a.asm.i);aa--;a.monitorRunDependencies&&a.monitorRunDependencies(aa);0==aa&&(null!==ra&&(clearInterval(ra),ra=null),ia&&(g=ia,ia=null,g()))}function b(g){e(g.instance)}function c(g){return v().then(function(u){return WebAssembly.instantiate(u,d)}).then(function(u){return u}).then(g,function(u){da("failed to asynchronously prepare wasm: "+u);f(u)})}var d={a:xd};aa++;a.monitorRunDependencies&&a.monitorRunDependencies(aa); +if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(g){da("Module.instantiateWasm callback failed with error: "+g),ka(g)}(function(){return fa||"function"!=typeof WebAssembly.instantiateStreaming||P.startsWith("data:application/octet-stream;base64,")||P.startsWith("file://")||Ya||"function"!=typeof fetch?c(b):fetch(P,{credentials:"same-origin"}).then(function(g){return WebAssembly.instantiateStreaming(g,d).then(b,function(u){da("wasm streaming compile failed: "+u);da("falling back to ArrayBuffer instantiation"); +return c(b)})})})().catch(ka);return{}})();var bb=a._emscripten_bind_VoidPtr___destroy___0=function(){return(bb=a._emscripten_bind_VoidPtr___destroy___0=a.asm.k).apply(null,arguments)},Da=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return(Da=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=a.asm.l).apply(null,arguments)},cb=a._emscripten_bind_DecoderBuffer_Init_2=function(){return(cb=a._emscripten_bind_DecoderBuffer_Init_2=a.asm.m).apply(null,arguments)},db=a._emscripten_bind_DecoderBuffer___destroy___0= +function(){return(db=a._emscripten_bind_DecoderBuffer___destroy___0=a.asm.n).apply(null,arguments)},Ea=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return(Ea=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=a.asm.o).apply(null,arguments)},eb=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return(eb=a._emscripten_bind_AttributeTransformData_transform_type_0=a.asm.p).apply(null,arguments)},fb=a._emscripten_bind_AttributeTransformData___destroy___0= +function(){return(fb=a._emscripten_bind_AttributeTransformData___destroy___0=a.asm.q).apply(null,arguments)},Fa=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return(Fa=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=a.asm.r).apply(null,arguments)},gb=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return(gb=a._emscripten_bind_GeometryAttribute___destroy___0=a.asm.s).apply(null,arguments)},Ga=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return(Ga= +a._emscripten_bind_PointAttribute_PointAttribute_0=a.asm.t).apply(null,arguments)},hb=a._emscripten_bind_PointAttribute_size_0=function(){return(hb=a._emscripten_bind_PointAttribute_size_0=a.asm.u).apply(null,arguments)},ib=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return(ib=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=a.asm.v).apply(null,arguments)},jb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return(jb=a._emscripten_bind_PointAttribute_attribute_type_0= +a.asm.w).apply(null,arguments)},kb=a._emscripten_bind_PointAttribute_data_type_0=function(){return(kb=a._emscripten_bind_PointAttribute_data_type_0=a.asm.x).apply(null,arguments)},lb=a._emscripten_bind_PointAttribute_num_components_0=function(){return(lb=a._emscripten_bind_PointAttribute_num_components_0=a.asm.y).apply(null,arguments)},mb=a._emscripten_bind_PointAttribute_normalized_0=function(){return(mb=a._emscripten_bind_PointAttribute_normalized_0=a.asm.z).apply(null,arguments)},nb=a._emscripten_bind_PointAttribute_byte_stride_0= +function(){return(nb=a._emscripten_bind_PointAttribute_byte_stride_0=a.asm.A).apply(null,arguments)},ob=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return(ob=a._emscripten_bind_PointAttribute_byte_offset_0=a.asm.B).apply(null,arguments)},pb=a._emscripten_bind_PointAttribute_unique_id_0=function(){return(pb=a._emscripten_bind_PointAttribute_unique_id_0=a.asm.C).apply(null,arguments)},qb=a._emscripten_bind_PointAttribute___destroy___0=function(){return(qb=a._emscripten_bind_PointAttribute___destroy___0= +a.asm.D).apply(null,arguments)},Ha=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return(Ha=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=a.asm.E).apply(null,arguments)},rb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return(rb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=a.asm.F).apply(null,arguments)},sb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0= +function(){return(sb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=a.asm.G).apply(null,arguments)},tb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return(tb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=a.asm.H).apply(null,arguments)},ub=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return(ub=a._emscripten_bind_AttributeQuantizationTransform_range_0=a.asm.I).apply(null,arguments)},vb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0= +function(){return(vb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=a.asm.J).apply(null,arguments)},Ia=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return(Ia=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=a.asm.K).apply(null,arguments)},wb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return(wb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=a.asm.L).apply(null, +arguments)},xb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return(xb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=a.asm.M).apply(null,arguments)},yb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return(yb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=a.asm.N).apply(null,arguments)},Ja=a._emscripten_bind_PointCloud_PointCloud_0=function(){return(Ja=a._emscripten_bind_PointCloud_PointCloud_0=a.asm.O).apply(null, +arguments)},zb=a._emscripten_bind_PointCloud_num_attributes_0=function(){return(zb=a._emscripten_bind_PointCloud_num_attributes_0=a.asm.P).apply(null,arguments)},Ab=a._emscripten_bind_PointCloud_num_points_0=function(){return(Ab=a._emscripten_bind_PointCloud_num_points_0=a.asm.Q).apply(null,arguments)},Bb=a._emscripten_bind_PointCloud___destroy___0=function(){return(Bb=a._emscripten_bind_PointCloud___destroy___0=a.asm.R).apply(null,arguments)},Ka=a._emscripten_bind_Mesh_Mesh_0=function(){return(Ka= +a._emscripten_bind_Mesh_Mesh_0=a.asm.S).apply(null,arguments)},Cb=a._emscripten_bind_Mesh_num_faces_0=function(){return(Cb=a._emscripten_bind_Mesh_num_faces_0=a.asm.T).apply(null,arguments)},Db=a._emscripten_bind_Mesh_num_attributes_0=function(){return(Db=a._emscripten_bind_Mesh_num_attributes_0=a.asm.U).apply(null,arguments)},Eb=a._emscripten_bind_Mesh_num_points_0=function(){return(Eb=a._emscripten_bind_Mesh_num_points_0=a.asm.V).apply(null,arguments)},Fb=a._emscripten_bind_Mesh___destroy___0=function(){return(Fb= +a._emscripten_bind_Mesh___destroy___0=a.asm.W).apply(null,arguments)},La=a._emscripten_bind_Metadata_Metadata_0=function(){return(La=a._emscripten_bind_Metadata_Metadata_0=a.asm.X).apply(null,arguments)},Gb=a._emscripten_bind_Metadata___destroy___0=function(){return(Gb=a._emscripten_bind_Metadata___destroy___0=a.asm.Y).apply(null,arguments)},Hb=a._emscripten_bind_Status_code_0=function(){return(Hb=a._emscripten_bind_Status_code_0=a.asm.Z).apply(null,arguments)},Ib=a._emscripten_bind_Status_ok_0=function(){return(Ib= +a._emscripten_bind_Status_ok_0=a.asm._).apply(null,arguments)},Jb=a._emscripten_bind_Status_error_msg_0=function(){return(Jb=a._emscripten_bind_Status_error_msg_0=a.asm.$).apply(null,arguments)},Kb=a._emscripten_bind_Status___destroy___0=function(){return(Kb=a._emscripten_bind_Status___destroy___0=a.asm.aa).apply(null,arguments)},Ma=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return(Ma=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=a.asm.ba).apply(null,arguments)}, +Lb=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return(Lb=a._emscripten_bind_DracoFloat32Array_GetValue_1=a.asm.ca).apply(null,arguments)},Mb=a._emscripten_bind_DracoFloat32Array_size_0=function(){return(Mb=a._emscripten_bind_DracoFloat32Array_size_0=a.asm.da).apply(null,arguments)},Nb=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return(Nb=a._emscripten_bind_DracoFloat32Array___destroy___0=a.asm.ea).apply(null,arguments)},Na=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0= +function(){return(Na=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=a.asm.fa).apply(null,arguments)},Ob=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return(Ob=a._emscripten_bind_DracoInt8Array_GetValue_1=a.asm.ga).apply(null,arguments)},Pb=a._emscripten_bind_DracoInt8Array_size_0=function(){return(Pb=a._emscripten_bind_DracoInt8Array_size_0=a.asm.ha).apply(null,arguments)},Qb=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return(Qb=a._emscripten_bind_DracoInt8Array___destroy___0= +a.asm.ia).apply(null,arguments)},Oa=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return(Oa=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=a.asm.ja).apply(null,arguments)},Rb=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return(Rb=a._emscripten_bind_DracoUInt8Array_GetValue_1=a.asm.ka).apply(null,arguments)},Sb=a._emscripten_bind_DracoUInt8Array_size_0=function(){return(Sb=a._emscripten_bind_DracoUInt8Array_size_0=a.asm.la).apply(null,arguments)},Tb=a._emscripten_bind_DracoUInt8Array___destroy___0= +function(){return(Tb=a._emscripten_bind_DracoUInt8Array___destroy___0=a.asm.ma).apply(null,arguments)},Pa=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return(Pa=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=a.asm.na).apply(null,arguments)},Ub=a._emscripten_bind_DracoInt16Array_GetValue_1=function(){return(Ub=a._emscripten_bind_DracoInt16Array_GetValue_1=a.asm.oa).apply(null,arguments)},Vb=a._emscripten_bind_DracoInt16Array_size_0=function(){return(Vb=a._emscripten_bind_DracoInt16Array_size_0= +a.asm.pa).apply(null,arguments)},Wb=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return(Wb=a._emscripten_bind_DracoInt16Array___destroy___0=a.asm.qa).apply(null,arguments)},Qa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return(Qa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=a.asm.ra).apply(null,arguments)},Xb=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return(Xb=a._emscripten_bind_DracoUInt16Array_GetValue_1=a.asm.sa).apply(null,arguments)}, +Yb=a._emscripten_bind_DracoUInt16Array_size_0=function(){return(Yb=a._emscripten_bind_DracoUInt16Array_size_0=a.asm.ta).apply(null,arguments)},Zb=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return(Zb=a._emscripten_bind_DracoUInt16Array___destroy___0=a.asm.ua).apply(null,arguments)},Ra=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return(Ra=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=a.asm.va).apply(null,arguments)},$b=a._emscripten_bind_DracoInt32Array_GetValue_1= +function(){return($b=a._emscripten_bind_DracoInt32Array_GetValue_1=a.asm.wa).apply(null,arguments)},ac=a._emscripten_bind_DracoInt32Array_size_0=function(){return(ac=a._emscripten_bind_DracoInt32Array_size_0=a.asm.xa).apply(null,arguments)},bc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return(bc=a._emscripten_bind_DracoInt32Array___destroy___0=a.asm.ya).apply(null,arguments)},Sa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return(Sa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0= +a.asm.za).apply(null,arguments)},cc=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return(cc=a._emscripten_bind_DracoUInt32Array_GetValue_1=a.asm.Aa).apply(null,arguments)},dc=a._emscripten_bind_DracoUInt32Array_size_0=function(){return(dc=a._emscripten_bind_DracoUInt32Array_size_0=a.asm.Ba).apply(null,arguments)},ec=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return(ec=a._emscripten_bind_DracoUInt32Array___destroy___0=a.asm.Ca).apply(null,arguments)},Ta=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0= +function(){return(Ta=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=a.asm.Da).apply(null,arguments)},fc=a._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return(fc=a._emscripten_bind_MetadataQuerier_HasEntry_2=a.asm.Ea).apply(null,arguments)},gc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return(gc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=a.asm.Fa).apply(null,arguments)},hc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=function(){return(hc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3= +a.asm.Ga).apply(null,arguments)},ic=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return(ic=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=a.asm.Ha).apply(null,arguments)},jc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return(jc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=a.asm.Ia).apply(null,arguments)},kc=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return(kc=a._emscripten_bind_MetadataQuerier_NumEntries_1=a.asm.Ja).apply(null,arguments)}, +lc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return(lc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=a.asm.Ka).apply(null,arguments)},mc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return(mc=a._emscripten_bind_MetadataQuerier___destroy___0=a.asm.La).apply(null,arguments)},Ua=a._emscripten_bind_Decoder_Decoder_0=function(){return(Ua=a._emscripten_bind_Decoder_Decoder_0=a.asm.Ma).apply(null,arguments)},nc=a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=function(){return(nc= +a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=a.asm.Na).apply(null,arguments)},oc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=function(){return(oc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=a.asm.Oa).apply(null,arguments)},pc=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return(pc=a._emscripten_bind_Decoder_GetAttributeId_2=a.asm.Pa).apply(null,arguments)},qc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return(qc=a._emscripten_bind_Decoder_GetAttributeIdByName_2= +a.asm.Qa).apply(null,arguments)},rc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return(rc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=a.asm.Ra).apply(null,arguments)},sc=a._emscripten_bind_Decoder_GetAttribute_2=function(){return(sc=a._emscripten_bind_Decoder_GetAttribute_2=a.asm.Sa).apply(null,arguments)},tc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return(tc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=a.asm.Ta).apply(null,arguments)}, +uc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return(uc=a._emscripten_bind_Decoder_GetMetadata_1=a.asm.Ua).apply(null,arguments)},vc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return(vc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=a.asm.Va).apply(null,arguments)},wc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return(wc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=a.asm.Wa).apply(null,arguments)},xc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2= +function(){return(xc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=a.asm.Xa).apply(null,arguments)},yc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return(yc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=a.asm.Ya).apply(null,arguments)},zc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=function(){return(zc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=a.asm.Za).apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return(Ac= +a._emscripten_bind_Decoder_GetAttributeFloat_3=a.asm._a).apply(null,arguments)},Bc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return(Bc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=a.asm.$a).apply(null,arguments)},Cc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return(Cc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=a.asm.ab).apply(null,arguments)},Dc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return(Dc= +a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=a.asm.bb).apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return(Ec=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=a.asm.cb).apply(null,arguments)},Fc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return(Fc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=a.asm.db).apply(null,arguments)},Gc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3= +function(){return(Gc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=a.asm.eb).apply(null,arguments)},Hc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return(Hc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=a.asm.fb).apply(null,arguments)},Ic=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return(Ic=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=a.asm.gb).apply(null,arguments)},Jc=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5= +function(){return(Jc=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=a.asm.hb).apply(null,arguments)},Kc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return(Kc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=a.asm.ib).apply(null,arguments)},Lc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=function(){return(Lc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=a.asm.jb).apply(null,arguments)},Mc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2= +function(){return(Mc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=a.asm.kb).apply(null,arguments)},Nc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return(Nc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=a.asm.lb).apply(null,arguments)},Oc=a._emscripten_bind_Decoder___destroy___0=function(){return(Oc=a._emscripten_bind_Decoder___destroy___0=a.asm.mb).apply(null,arguments)},Pc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return(Pc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM= +a.asm.nb).apply(null,arguments)},Qc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return(Qc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=a.asm.ob).apply(null,arguments)},Rc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return(Rc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=a.asm.pb).apply(null,arguments)},Sc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM= +function(){return(Sc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=a.asm.qb).apply(null,arguments)},Tc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return(Tc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=a.asm.rb).apply(null,arguments)},Uc=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return(Uc=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=a.asm.sb).apply(null,arguments)},Vc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL= +function(){return(Vc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=a.asm.tb).apply(null,arguments)},Wc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return(Wc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=a.asm.ub).apply(null,arguments)},Xc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return(Xc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=a.asm.vb).apply(null,arguments)},Yc=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC= +function(){return(Yc=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=a.asm.wb).apply(null,arguments)},Zc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return(Zc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=a.asm.xb).apply(null,arguments)},$c=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return($c=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=a.asm.yb).apply(null,arguments)},ad=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH= +function(){return(ad=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=a.asm.zb).apply(null,arguments)},bd=a._emscripten_enum_draco_DataType_DT_INVALID=function(){return(bd=a._emscripten_enum_draco_DataType_DT_INVALID=a.asm.Ab).apply(null,arguments)},cd=a._emscripten_enum_draco_DataType_DT_INT8=function(){return(cd=a._emscripten_enum_draco_DataType_DT_INT8=a.asm.Bb).apply(null,arguments)},dd=a._emscripten_enum_draco_DataType_DT_UINT8=function(){return(dd=a._emscripten_enum_draco_DataType_DT_UINT8= +a.asm.Cb).apply(null,arguments)},ed=a._emscripten_enum_draco_DataType_DT_INT16=function(){return(ed=a._emscripten_enum_draco_DataType_DT_INT16=a.asm.Db).apply(null,arguments)},fd=a._emscripten_enum_draco_DataType_DT_UINT16=function(){return(fd=a._emscripten_enum_draco_DataType_DT_UINT16=a.asm.Eb).apply(null,arguments)},gd=a._emscripten_enum_draco_DataType_DT_INT32=function(){return(gd=a._emscripten_enum_draco_DataType_DT_INT32=a.asm.Fb).apply(null,arguments)},hd=a._emscripten_enum_draco_DataType_DT_UINT32= +function(){return(hd=a._emscripten_enum_draco_DataType_DT_UINT32=a.asm.Gb).apply(null,arguments)},id=a._emscripten_enum_draco_DataType_DT_INT64=function(){return(id=a._emscripten_enum_draco_DataType_DT_INT64=a.asm.Hb).apply(null,arguments)},jd=a._emscripten_enum_draco_DataType_DT_UINT64=function(){return(jd=a._emscripten_enum_draco_DataType_DT_UINT64=a.asm.Ib).apply(null,arguments)},kd=a._emscripten_enum_draco_DataType_DT_FLOAT32=function(){return(kd=a._emscripten_enum_draco_DataType_DT_FLOAT32=a.asm.Jb).apply(null, +arguments)},ld=a._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return(ld=a._emscripten_enum_draco_DataType_DT_FLOAT64=a.asm.Kb).apply(null,arguments)},md=a._emscripten_enum_draco_DataType_DT_BOOL=function(){return(md=a._emscripten_enum_draco_DataType_DT_BOOL=a.asm.Lb).apply(null,arguments)},nd=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return(nd=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=a.asm.Mb).apply(null,arguments)},od=a._emscripten_enum_draco_StatusCode_OK=function(){return(od= +a._emscripten_enum_draco_StatusCode_OK=a.asm.Nb).apply(null,arguments)},pd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return(pd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=a.asm.Ob).apply(null,arguments)},qd=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return(qd=a._emscripten_enum_draco_StatusCode_IO_ERROR=a.asm.Pb).apply(null,arguments)},rd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return(rd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER= +a.asm.Qb).apply(null,arguments)},sd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return(sd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=a.asm.Rb).apply(null,arguments)},td=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return(td=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=a.asm.Sb).apply(null,arguments)};a._malloc=function(){return(a._malloc=a.asm.Tb).apply(null,arguments)};a._free=function(){return(a._free=a.asm.Ub).apply(null,arguments)}; +var ya=function(){return(ya=a.asm.Vb).apply(null,arguments)};a.___start_em_js=15856;a.___stop_em_js=15954;var la;ia=function b(){la||ba();la||(ia=b)};if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0=r.size?(0>>=0;switch(c.BYTES_PER_ELEMENT){case 2:d>>>=1;break;case 4:d>>>=2;break;case 8:d>>>=3}for(var g=0;gb.byteLength)return a.INVALID_GEOMETRY_TYPE;switch(b[7]){case 0:return a.POINT_CLOUD;case 1:return a.TRIANGULAR_MESH;default:return a.INVALID_GEOMETRY_TYPE}};return n.ready}}(); +"object"===typeof exports&&"object"===typeof module?module.exports=DracoDecoderModule:"function"===typeof define&&define.amd?define([],function(){return DracoDecoderModule}):"object"===typeof exports&&(exports.DracoDecoderModule=DracoDecoderModule); diff --git a/public/three/models/container.glb b/public/three/models/container.glb new file mode 100644 index 0000000..684d191 Binary files /dev/null and b/public/three/models/container.glb differ diff --git a/public/three/models/power_station.glb b/public/three/models/power_station.glb new file mode 100644 index 0000000..149dc38 Binary files /dev/null and b/public/three/models/power_station.glb differ diff --git a/question.ipynb b/question.ipynb new file mode 100644 index 0000000..090207e --- /dev/null +++ b/question.ipynb @@ -0,0 +1 @@ +{"cells":[{"attachments":{},"cell_type":"markdown","metadata":{},"source":["### 0701:v0.2\n","1. ~~集装箱标注ID~~\n","2. ~~护栏上的标识去掉~~\n","3. ~~logo加上~~\n","4. ~~左上角返回~~\n","5. ~~标识文字有点变形,处理掉~~\n","6. ~~详细信息点击切换~~"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["### 0710:v0.3\n","1. ~~模型体积压缩~~"]},{"cell_type":"markdown","metadata":{},"source":["# 0726 v0.4\n","页面端0.4版本已发布,http://146.56.233.47:9400/,\n","登录账号\n"," test/123456 \n"," test01/123456 \n"," jade/123456\n","\n","更新内容\n","1、对接后台基本数据接口\n","2、添加两个全屏界面\n","3、优化更改站点及设备配置界面\n","\n","现存问题:\n","1、图表、表格数据暂时为模拟数据\n","2、全屏地图暂时未普通地图,效果图的3D地图样式后续补充\n","3、全屏下的3D模型数据标签会发生偏移,后续待优化处理\n","\n","需要安排对接事项:\n"," 后台设备相关数据暂时缺失,需要安排硬件与后台对接上传部分模拟或真实数据,或者通过其他方式填充后台相关数据\n","\n"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["待优化\n","1. 数字逗号优化(正则)\n","2. window resize防抖优化\n"]},{"cell_type":"markdown","metadata":{},"source":["登录接口验证码没有验证"]},{"cell_type":"markdown","metadata":{},"source":["***\n","

\n","\n","***"]}],"metadata":{"language_info":{"name":"python"},"orig_nbformat":4},"nbformat":4,"nbformat_minor":2} diff --git a/src/api/Keys.ts b/src/api/Keys.ts new file mode 100644 index 0000000..13fcec4 --- /dev/null +++ b/src/api/Keys.ts @@ -0,0 +1,14 @@ +export default class Keys { + public static STORAGE_UUID = 'uuid' + public static STORAGE_TENANT_ID = 'tenant' + public static STORAGE_TOKEN = 'token' + public static STORAGE_REFRESH_TOKEN = 'refreshToken' + public static STORAGE_USER_INFO = 'userInfo' + public static STORAGE_ROLE_ROUTERS = 'roleRouters' + public static STORAGE_DICT_CACHE = 'dict' + public static STORAGE_LANG = 'lang' + public static STORAGE_STATIONID = 'stationId' + public static STORAGE_THEME = 'EDFS-THEME' + + public static CODE_SUCCEED = 0 +} diff --git a/src/api/basic/errorCode.ts b/src/api/basic/errorCode.ts new file mode 100644 index 0000000..d9ccb90 --- /dev/null +++ b/src/api/basic/errorCode.ts @@ -0,0 +1,5 @@ +export const errorCode: any = { + 401: '认证失败,无法访问系统资源', + 403: '当前操作没有权限', + 404: '访问资源不存在', +} diff --git a/src/api/basic/httpTypes.ts b/src/api/basic/httpTypes.ts new file mode 100644 index 0000000..c6ec8ff --- /dev/null +++ b/src/api/basic/httpTypes.ts @@ -0,0 +1,6 @@ +export interface Result { + code: number + msg: string + status?: number + data: T +} diff --git a/src/api/basic/utils.ts b/src/api/basic/utils.ts new file mode 100644 index 0000000..610e7ac --- /dev/null +++ b/src/api/basic/utils.ts @@ -0,0 +1,27 @@ +const authErrMap: any = { + '401': '认证失败,无法访问系统资源', + '403': '当前操作没有权限', + '404': '访问资源不存在', + default: '系统未知错误,请反馈给管理员', +} + +const networkErrMap: { [key: number]: string } = { + 400: '请求错误(400)', + 401: '未授权,请重新登录(401)', + 403: '拒绝访问(403)', + 404: '请求出错(404)', + 408: '请求超时(408)', + 500: '服务器错误(500)', + 501: '服务未实现(501)', + 502: '网络错误(502)', + 503: '服务不可用(503)', + 504: '网络超时(504)', + 505: 'HTTP版本不受支持(505)', +} + +const ignoreMsgs = [ + '无效的刷新令牌', // 刷新令牌被删除时,不用提示 + '刷新令牌已过期', // 使用刷新令牌,刷新获取新的访问令牌时,结果因为过期失败,此时需要忽略。否则,会导致继续 401,无法跳转到登出界面 +] + +export { authErrMap, networkErrMap, ignoreMsgs } diff --git a/src/api/module/eam/customer/index.ts b/src/api/module/eam/customer/index.ts new file mode 100644 index 0000000..bda60b0 --- /dev/null +++ b/src/api/module/eam/customer/index.ts @@ -0,0 +1,59 @@ +import { eamServer } from '../../index' + +export interface CustomerVO { + id?: string + name: string + contact: string + phone: string + email: string + address: string + description: string + status: number +} +export const getCustomerList = (params: PageParam) => + eamServer<{ + list: CustomerVO[] + total: number + }>({ + url: '/customer/page', + method: 'get', + params, + }) + +export const getSimpleCustomerList = () => + eamServer>({ + url: '/customer/list-all-simple', + method: 'get', + }) + +export const getCustomer = (id: Pick) => + eamServer({ + url: '/customer/get?id=' + id, + method: 'get', + }) + +export const deleteCustomer = (id: Pick) => + eamServer({ + url: '/customer/delete?id=' + id, + method: 'delete', + }) + +export const updateCustomerStatus = (params: Pick) => + eamServer({ + url: `/customer/update-status?id=${params.id}&status=${params.status}`, + method: 'put', + }) + +export const updateCustomer = (data: CustomerVO) => + eamServer({ + url: '/customer/update', + method: 'put', + data, + }) + +export const createCustomer = (data: CustomerVO) => + eamServer({ + url: '/customer/create', + method: 'post', + data, + }) diff --git a/src/api/module/eam/device/attribute.ts b/src/api/module/eam/device/attribute.ts new file mode 100644 index 0000000..099348b --- /dev/null +++ b/src/api/module/eam/device/attribute.ts @@ -0,0 +1,36 @@ +import { eamServer } from '../../index' + +export interface IAttributeTree { + name: string + description: string + pid: string + id: string + creator: string + createTime: string + children: IAttributeTree[] +} + +export type CategoryOV = Pick & { + id?: string +} + +export const createdAttribute = (data: CategoryOV) => + eamServer({ + url: '/attribute/create', + method: 'post', + data, + }) + +export const updateAttribute = (data: CategoryOV) => + eamServer({ + url: '/attribute/update', + method: 'put', + data, + }) + +export const deleteAttribute = (id: string) => + eamServer({ + url: `/attribute/delete`, + method: 'delete', + params: { id }, + }) diff --git a/src/api/module/eam/device/category.ts b/src/api/module/eam/device/category.ts new file mode 100644 index 0000000..5bf3aa8 --- /dev/null +++ b/src/api/module/eam/device/category.ts @@ -0,0 +1,42 @@ +import { eamServer } from '../../index' + +export interface ICategoryTree { + name: string + description: string + pid: string + id: string + creator: string + createTime: string + children: ICategoryTree[] +} + +export type CategoryOV = Pick & { + id?: string +} + +export const getCategoryTree = () => + eamServer({ + url: '/device-category/tree', + method: 'get', + }) + +export const createdCategory = (data: CategoryOV) => + eamServer({ + url: '/device-category/create', + method: 'post', + data, + }) + +export const updateCategory = (data: CategoryOV) => + eamServer({ + url: '/device-category/update', + method: 'put', + data, + }) + +export const deleteCategory = (id: string) => + eamServer({ + url: `/device-category/delete`, + method: 'delete', + params: { id }, + }) diff --git a/src/api/module/eam/device/index.ts b/src/api/module/eam/device/index.ts new file mode 100644 index 0000000..5948c32 --- /dev/null +++ b/src/api/module/eam/device/index.ts @@ -0,0 +1,86 @@ +import { eamServer } from '../../index' + +export interface IDevice { + id: string + name: string + categoryId: string + serialNo: string + sn: string + status: string + description: string + cost: string + createTime: string + updateTime: string + creator: string + updater: string + testSheetId: string + testSheetStatus: string + testSheetDetail: string +} + +export interface IDeviceOV { + id?: string + name: string + categoryId: string + templateId: string + serialNo: string + sn: string + description: string + cost: string +} + +export const operantDevice = (type: OperantAction, data: IDeviceOV) => { + if (type === 'create') { + return eamServer({ + url: '/device/create', + method: 'post', + data, + }) + } + if (type === 'update') { + return eamServer({ + url: '/device/update', + method: 'put', + data, + }) + } +} + +export const deleteDevice = (id: string) => + eamServer({ + url: `/device/delete`, + method: 'delete', + params: { id }, + }) + +export const getDeviceInfo = (id: string) => + eamServer({ + url: `/device/get`, + method: 'get', + params: { id }, + }) + +export const getDevicePage = (params: PageParam) => + eamServer<{ + list: IDevice[] + total: number + }>({ url: '/device/page', method: 'get', params }) + +// ============== 测试工单相关 ============== + +export const operantDeviceTestSheet = (type: OperantAction, params: any) => { + if (type === 'create') { + return eamServer({ + url: '/test-sheet/create', + method: 'post', + params, + }) + } + if (type === 'update') { + return eamServer({ + url: '/test-sheet/update', + method: 'put', + params, + }) + } +} diff --git a/src/api/module/eam/device/template.ts b/src/api/module/eam/device/template.ts new file mode 100644 index 0000000..9eb2ad9 --- /dev/null +++ b/src/api/module/eam/device/template.ts @@ -0,0 +1,75 @@ +import { eamServer } from '../../index' + +export interface IDeviceTemp { + id?: string + name: string + description: string + categoryId: string + enabled: number +} + +export type IDeviceTempOV = Omit + +export const createdDeviceTemp = (data: IDeviceTempOV) => + eamServer({ + url: '/template/create', + method: 'post', + data, + }) + +export const updateDeviceTemp = (data: IDeviceTempOV) => + eamServer({ + url: '/template/update', + method: 'put', + data, + }) + +export const deleteDeviceTemp = (id: string) => + eamServer({ + url: `/template/delete`, + method: 'delete', + params: { id }, + }) + +export const getDeviceTempPage = (params: PageParam) => + eamServer<{ + list: IDeviceTemp[] + total: number + }>({ url: '/template/page', method: 'get', params }) + +// ============== 用例相关 ============== + +export interface IDeviceCase { + id?: string + templateId: string + content: string + expectResult: string +} + +export const createdDeviceCase = (data: IDeviceCase) => + eamServer({ + url: '/section/create', + method: 'post', + data, + }) + +export const updateDeviceCase = (data: IDeviceCase) => + eamServer({ + url: '/section/update', + method: 'put', + data, + }) + +export const deleteDeviceCase = (id: string) => + eamServer({ + url: `/section/delete`, + method: 'delete', + params: { id }, + }) + +export const getDeviceCaseList = (templateId: string) => + eamServer({ + url: '/section/list-by-template', + method: 'get', + params: { templateId }, + }) diff --git a/src/api/module/index.ts b/src/api/module/index.ts new file mode 100644 index 0000000..1743a79 --- /dev/null +++ b/src/api/module/index.ts @@ -0,0 +1,7 @@ +import axiosInstance from '@/api/server/axiosInstance' +import { API_Config } from '@/api/server/config' + +const systemServer = axiosInstance('system', API_Config.system) +const eamServer = axiosInstance('eam', API_Config.eam) + +export { systemServer, eamServer } diff --git a/src/api/module/system/dept/index.ts b/src/api/module/system/dept/index.ts new file mode 100644 index 0000000..c344de7 --- /dev/null +++ b/src/api/module/system/dept/index.ts @@ -0,0 +1,57 @@ +import { systemServer } from '../../index' +export interface DeptVO { + id?: number + name: string + parentId: number + status: number + sort: number + leaderUserId: number + phone: string + email: string + createTime: Date +} + +// 查询部门(精简)列表 +export const getSimpleDeptList = async () => + systemServer({ + url: '/dept/simple-list', + method: 'get', + }) + +// 查询部门列表 +export const getDeptPage = async (params: PageParam) => + systemServer({ + url: '/dept/page', + method: 'get', + params, + }) + +// 查询部门详情 +export const getDept = async (id: number) => + systemServer({ + url: '/dept/get?id=' + id, + method: 'get', + }) + +// 新增部门 +export const createDept = async (data: DeptVO) => + systemServer({ + url: '/dept/create', + method: 'post', + data, + }) + +// 修改部门 +export const updateDept = async (params: DeptVO) => + systemServer({ + url: '/dept/update', + method: 'put', + data: params, + }) + +// 删除部门 +export const deleteDept = async (id: number) => + systemServer({ + url: '/dept/delete?id=' + id, + method: 'delete', + }) diff --git a/src/api/module/system/dict/dict.data.ts b/src/api/module/system/dict/dict.data.ts new file mode 100644 index 0000000..ada29de --- /dev/null +++ b/src/api/module/system/dict/dict.data.ts @@ -0,0 +1,68 @@ + +import { systemServer } from '../../index' + +export type DictDataVO = { + id: number | undefined + sort: number | undefined + label: string + value: string + dictType: string + status: number + colorType: string + cssClass: string + remark: string + createTime: Date +} + +// 查询字典数据(精简)列表 +export const getSimpleDictDataList = () => + systemServer({ + url: '/dict-data/simple-list', + method: 'get', + }) + +// 查询字典数据列表 +export const getDictDataPage = (params: PageParam) => + systemServer({ + url: '/dict-data/page', + method: 'get', + params, + }) +// 查询字典数据详情 +export const getDictData = (id: number) => + systemServer({ + url: '/dict-data/get?id=' + id, + method: 'get', + }) + +// 新增字典数据 +export const createDictData = (data: DictDataVO) => + systemServer({ + url: '/dict-data/create', + method: 'post', + data, + }) + +// 修改字典数据 +export const updateDictData = (data: DictDataVO) => + systemServer({ + url: '/dict-data/update', + method: 'put', + data, + }) + +// 删除字典数据 +export const deleteDictData = (id: number) => + systemServer({ + url: '/dict-data/delete?id=' + id, + method: 'delete', + }) + +// 导出字典类型数据 +export const exportDictData = (params:any) => + systemServer({ + url: '/dict-data/export', + method: 'get', + params, + responseType: 'blob', + }) \ No newline at end of file diff --git a/src/api/module/system/dict/dict.type.ts b/src/api/module/system/dict/dict.type.ts new file mode 100644 index 0000000..b7da000 --- /dev/null +++ b/src/api/module/system/dict/dict.type.ts @@ -0,0 +1,65 @@ + +import { systemServer } from '../../index' + +export type DictTypeVO = { + id: number | undefined + name: string + type: string + status: number + remark: string + createTime: Date +} + +// 查询字典(精简)列表 +export const getSimpleDictTypeList = () => + systemServer({ + url: '/dict-type/list-all-simple', + method: 'get', + }) + +// 查询字典列表 +export const getDictTypePage = (params: PageParam) => + systemServer({ + url: '/dict-type/page', + method: 'get', + params, + }) + +// 查询字典详情 +export const getDictType = (id: number) => + systemServer({ + url: '/dict-type/get?id=' + id, + method: 'get', + }) + +// 新增字典 +export const createDictType = (data: DictTypeVO) => + systemServer({ + url: '/dict-type/create', + method: 'post', + data, + }) + +// 修改字典 +export const updateDictType = (data: DictTypeVO) => + systemServer({ + url: '/dict-type/update', + method: 'put', + data, + }) + +// 删除字典 +export const deleteDictType = (id: number) => + systemServer({ + url: '/dict-type/delete?id=' + id, + method: 'delete', + }) + +// 导出字典类型 +export const exportDictType = (params: any) => + systemServer({ + url: '/dict-type/export', + method: 'get', + params, + responseType: 'blob', + }) diff --git a/src/api/module/system/file/index.ts b/src/api/module/system/file/index.ts new file mode 100644 index 0000000..77c9210 --- /dev/null +++ b/src/api/module/system/file/index.ts @@ -0,0 +1,50 @@ +import { systemServer } from '../../index' +export interface FilePageReqVO extends PageParam { + path?: string + type?: string + createTime?: Date[] +} + +// 文件预签名地址 Response VO +export interface FilePresignedUrlRespVO { + // 文件配置编号 + configId: number + // 文件上传 URL + uploadUrl: string + // 文件 URL + url: string +} + +// 查询文件列表 +export const getFilePage = (params: FilePageReqVO) => { + return systemServer({ url: '/infra/file/page', params, method: 'get' }) +} + +// 删除文件 +export const deleteFile = (id: number) => { + return systemServer({ url: '/infra/file/delete?id=' + id, method: 'delete' }) +} + +// 获取文件预签名地址 +export const getFilePresignedUrl = (path: string) => { + return systemServer({ + url: '/infra/file/presigned-url', + params: { path }, + method: 'get', + }) +} + +// 创建文件 +export const createFile = (data: any) => { + return systemServer({ url: '/infra/file/create', data, method: 'post' }) +} + +// 上传文件 +export const updateFile = (data: any) => { + return systemServer({ + url: '/infra/file/upload', + data, + method: 'post', + headers: { 'Content-Type': 'multipart/form-data' }, + }) +} diff --git a/src/api/module/system/login/index.ts b/src/api/module/system/login/index.ts new file mode 100644 index 0000000..658e462 --- /dev/null +++ b/src/api/module/system/login/index.ts @@ -0,0 +1,106 @@ +import { getRefreshToken } from '@/utils/auth' +import { systemServer } from '../../index' + +type UserLoginVO = { + username: string + password: string + captchaVerification: string + socialType?: string + socialCode?: string + socialState?: string +} + +export interface LoginRequestData { + username: string + password: string + // tenantName: string + // captchaVerification: string + // rememberMe: boolean +} +export interface SmsCodeVO { + mobile: string + scene: number +} + +export interface SmsLoginVO { + mobile: string + code: string +} +interface LoginResponse { + accessToken: string + expiresTime: number + refreshToken: string + userId: number +} + +export const getTenantId = (name: string) => + systemServer({ + url: '/tenant/get-id-by-name', + method: 'get', + params: { + name, + }, + }) + +export const login = (data: any) => + systemServer({ + method: 'post', + url: '/auth/login', + data, + }) + +// 刷新访问令牌 +export const refreshToken = () => + systemServer({ + url: '/auth/refresh-token?refreshToken=' + getRefreshToken(), + method: 'post', + }) + +// // 使用租户域名,获得租户信息 +// export const getTenantByWebsite = (website: string) => { +// return request.get({ url: '/tenant/get-by-website?website=' + website }) +// } + +// // 登出 +export const loginOut = () => systemServer({ url: '/auth/logout', method: 'post' }) + +export const getInfo = () => + systemServer({ url: '/auth/get-permission-info', method: 'get' }) + +// //获取登录验证码 +export const sendSmsCode = (data: SmsCodeVO) => { + return systemServer({ url: '/auth/send-sms-code', method: 'post', data }) +} + +// // 短信验证码登录 +export const smsLogin = (data: SmsLoginVO) => { + return systemServer({ url: '/auth/sms-login', method: 'post', data }) +} + +// // 社交快捷登录,使用 code 授权码 +// export function socialLogin(type: string, code: string, state: string) { +// return request.post({ +// url: '/auth/social-login', +// data: { +// type, +// code, +// state +// } +// }) +// } + +// // 社交授权的跳转 +// export const socialAuthRedirect = (type: number, redirectUri: string) => { +// return request.get({ +// url: '/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri +// }) +// } +// // 获取验证图片以及 token +// export const getCode = (data) => { +// return request.postOriginal({ url: 'system/captcha/get', data }) +// } + +// // 滑动或者点选验证 +// export const reqCheck = (data) => { +// return request.postOriginal({ url: 'system/captcha/check', data }) +// } diff --git a/src/api/module/system/loginLog/index.ts b/src/api/module/system/loginLog/index.ts new file mode 100644 index 0000000..29299e2 --- /dev/null +++ b/src/api/module/system/loginLog/index.ts @@ -0,0 +1,33 @@ +import { systemServer } from '../../index' +export interface LoginLogVO { + id: number + logType: number + traceId: number + userId: number + userType: number + username: string + result: number + status: number + userIp: string + userAgent: string + createTime: Date +} + +// 查询登录日志列表 +export const getLoginLogPage = (params: PageParam) => { + return systemServer({ + url: '/login-log/page', + method: 'get', + params, + }) +} + +// 导出登录日志 +export const exportLoginLog = (params: any) => { + return systemServer({ + url: '/login-log/export', + method: 'get', + params, + responseType: 'blob', + }) +} diff --git a/src/api/module/system/menu/index.ts b/src/api/module/system/menu/index.ts new file mode 100644 index 0000000..7942111 --- /dev/null +++ b/src/api/module/system/menu/index.ts @@ -0,0 +1,63 @@ +import { systemServer } from '../../index' +export interface MenuVO { + id: number + name: string + permission: string + type: number + sort: number + parentId: number + path: string + icon: string + component: string + componentName?: string + status: number + visible: boolean + keepAlive: boolean + alwaysShow?: boolean + createTime: Date +} + +// 查询菜单(精简)列表 +export const getSimpleMenusList = () => + systemServer({ + url: '/menu/simple-list', + method: 'get', + }) + +// 查询菜单列表 +export const getMenuList = (params: any) => + systemServer({ + url: '/menu/list', + method: 'get', + params, + }) + +// 获取菜单详情 +export const getMenu = (id: number) => + systemServer({ + url: '/menu/get?id=' + id, + method: 'get', + }) + +// 新增菜单 +export const createMenu = (data: MenuVO) => + systemServer({ + url: '/menu/create', + method: 'post', + data, + }) + +// 修改菜单 +export const updateMenu = (data: MenuVO) => + systemServer({ + url: '/menu/update', + method: 'put', + data, + }) + +// 删除菜单 +export const deleteMenu = (id: number) => + systemServer({ + url: '/menu/delete?id=' + id, + method: 'delete', + }) diff --git a/src/api/module/system/operatelog/index.ts b/src/api/module/system/operatelog/index.ts new file mode 100644 index 0000000..e4c2d6e --- /dev/null +++ b/src/api/module/system/operatelog/index.ts @@ -0,0 +1,51 @@ + +import { systemServer } from '../../index' + +export enum Action { + //用户个人操作 + USER_LOGIN = '登录', + USER_LOGOUT = '登出', + //用户管理 + USERMGR_ADD = '添加用户', + USERMGR_DEL = '删除用户', + USERMGR_MODIFY = '更改用户', + //zmq命令 + ZMQ_CMD_PUBLISH = '设备命令下发', + //ssh + SSH_LOGIN = 'SSH连接', + SSH_LOGOUT = 'SSH中断连接' +} + +export type OperateLogVO = { + id: number + traceId: string + userType: number + userId: number + userName: string + type: string + subType: string + bizId: number + action: string + extra: string + requestMethod: string + requestUrl: string + userIp: string + userAgent: string + creator: string + creatorName: string + createTime: Date +} + +// 查询操作日志列表 +export const getOperateLogPage = (params: PageParam) => { + return systemServer({ url: '/operate-log/page', method: 'get', params }) +} +// 导出操作日志 +export const exportOperateLog = (params: any) => { + return systemServer({ + url: '/operate-log/export', + method: 'get', + params, + responseType: 'blob', + }) +} diff --git a/src/api/module/system/permission/index.ts b/src/api/module/system/permission/index.ts new file mode 100644 index 0000000..eb4e6db --- /dev/null +++ b/src/api/module/system/permission/index.ts @@ -0,0 +1,54 @@ +import { systemServer } from '../../index' +export interface PermissionAssignUserRoleReqVO { + userId: number + roleIds: number[] +} + +export interface PermissionAssignRoleMenuReqVO { + roleId: number + menuIds: number[] +} + +export interface PermissionAssignRoleDataScopeReqVO { + roleId: number + dataScope: number + dataScopeDeptIds: number[] +} + +// 查询角色拥有的菜单权限 +export const getRoleMenuList = async (roleId: number) => + systemServer({ + url: '/permission/list-role-menus?roleId=' + roleId, + method: 'get', + }) + +// 赋予角色菜单权限 +export const assignRoleMenu = async (data: PermissionAssignRoleMenuReqVO) => + systemServer({ + url: '/permission/assign-role-menu', + method: 'post', + data, + }) + +// 赋予角色数据权限 +export const assignRoleDataScope = async (data: PermissionAssignRoleDataScopeReqVO) => + systemServer({ + url: '/permission/assign-role-data-scope', + method: 'post', + data, + }) + +// 查询用户拥有的角色数组 +export const getUserRoleList = async (userId: number) => + systemServer({ + url: '/permission/list-user-roles?userId=' + userId, + method: 'get', + }) + +// 赋予用户角色 +export const assignUserRole = async (data: PermissionAssignUserRoleReqVO) => + systemServer({ + url: '/permission/assign-user-role', + method: 'post', + data, + }) diff --git a/src/api/module/system/post/index.ts b/src/api/module/system/post/index.ts new file mode 100644 index 0000000..f577d12 --- /dev/null +++ b/src/api/module/system/post/index.ts @@ -0,0 +1,64 @@ +import { systemServer } from '../../index' +export interface PostVO { + id?: number + name: string + code: string + sort: number + status: number + remark: string + createTime?: Date +} + +// 查询岗位列表 +export const getPostPage = async (params: PageParam) => + systemServer({ + url: '/post/page', + method: 'get', + params, + }) + +// 获取岗位精简信息列表 +export const getSimplePostList = async () => + systemServer({ + url: '/post/simple-list', + method: 'get', + }) + +// 查询岗位详情 +export const getPost = async (id: number) => + systemServer({ + url: '/post/get?id=' + id, + method: 'get', + }) + +// 新增岗位 +export const createPost = async (data: PostVO) => + systemServer({ + url: '/post/create', + method: 'post', + data, + }) + +// 修改岗位 +export const updatePost = async (data: PostVO) => + systemServer({ + url: '/post/update', + method: 'put', + data, + }) + +// 删除岗位 +export const deletePost = async (id: number) => + systemServer({ + url: '/post/delete?id=' + id, + method: 'delete', + }) + +// 导出岗位 +export const exportPost = async (params: any) => + systemServer({ + url: '/post/export', + method: 'get', + params, + responseType: 'blob', + }) diff --git a/src/api/module/system/role/index.ts b/src/api/module/system/role/index.ts new file mode 100644 index 0000000..d92def9 --- /dev/null +++ b/src/api/module/system/role/index.ts @@ -0,0 +1,79 @@ +import { systemServer } from '../../index' +export interface RoleVO { + id: number + name: string + code: string + sort: number + status: number + type: number + dataScope: number + dataScopeDeptIds: number[] + createTime: Date +} + +export interface UpdateStatusReqVO { + id: number + status: number +} + +// 查询角色列表 +export const getRolePage = async (params: PageParam) => + systemServer({ + url: '/role/page', + method: 'get', + params, + }) + +// 查询角色(精简)列表 +export const getSimpleRoleList = async () => + systemServer({ + url: '/role/simple-list', + method: 'get', + }) + +// 查询角色详情 +export const getRole = async (id: number) => + systemServer({ + url: '/role/get?id=' + id, + method: 'get', + }) + +// 新增角色 +export const createRole = async (data: RoleVO) => + systemServer({ + url: '/role/create', + method: 'post', + data, + }) + +// 修改角色 +export const updateRole = async (data: RoleVO) => + systemServer({ + url: '/role/update', + method: 'put', + data, + }) + +// 修改角色状态 +export const updateRoleStatus = async (data: UpdateStatusReqVO) => + systemServer({ + url: '/role/update-status', + method: 'put', + data, + }) + +// 删除角色 +export const deleteRole = async (id: number) => + systemServer({ + url: '/role/delete?id=' + id, + method: 'delete', + }) + +// 导出角色 +export const exportRole = (params: any) => + systemServer({ + url: '/role/export-excel', + method: 'get', + params, + responseType: 'blob', + }) diff --git a/src/api/module/system/tenant/index.ts b/src/api/module/system/tenant/index.ts new file mode 100644 index 0000000..6d1444b --- /dev/null +++ b/src/api/module/system/tenant/index.ts @@ -0,0 +1,80 @@ +import { systemServer } from '../../index' + + +export interface TenantVO { + id: number + name: string + contactName: string + contactMobile: string + status: number + domain: string + packageId: number + username: string + password: string + expireTime: Date + accountCount: number + createTime: Date +} + +export interface TenantPageReqVO extends PageParam { + name?: string + contactName?: string + contactMobile?: string + status?: number + createTime?: Date[] +} + +export interface TenantExportReqVO { + name?: string + contactName?: string + contactMobile?: string + status?: number + createTime?: Date[] +} + +// 查询租户列表 +export const getTenantPage = (params: TenantPageReqVO) => + systemServer({ + url: '/tenant/page', + method: 'get', + params, + }) + +// 查询租户详情 +export const getTenant = (id: number) => + systemServer({ + url: '/tenant/get?id=' + id, + method: 'get', + }) + +// 新增租户 +export const createTenant = (data: TenantVO) => + systemServer({ + url: '/tenant/create', + method: 'post', + data, + }) + +// 修改租户 +export const updateTenant = (data: TenantVO) => + systemServer({ + url: '/tenant/update', + method: 'put', + data, + }) + +// 删除租户 +export const deleteTenant = (id: number) => + systemServer({ + url: '/tenant/delete?id=' + id, + method: 'delete', + }) + +// 导出租户 +export const exportTenant = (params: TenantExportReqVO) => + systemServer({ + url: '/tenant/export-excel', + method: 'get', + params, + responseType: 'blob', + }) diff --git a/src/api/module/system/tenantPackage/index.ts b/src/api/module/system/tenantPackage/index.ts new file mode 100644 index 0000000..34847d6 --- /dev/null +++ b/src/api/module/system/tenantPackage/index.ts @@ -0,0 +1,58 @@ +import { systemServer } from '../../index' + +export interface TenantPackageVO { + id: number + name: string + status: number + remark: string + creator: string + updater: string + updateTime: string + menuIds: number[] + createTime: Date +} + +// 查询租户套餐列表 +export const getTenantPackagePage = (params: PageParam) => + systemServer({ + url: '/tenant-package/page', + method: 'get', + params, + }) + +// 获得租户 +export const getTenantPackage = (id: number) => + systemServer({ + url: '/tenant-package/get?id=' + id, + method: 'get', + }) + +// 新增租户套餐 +export const createTenantPackage = (data: TenantPackageVO) => + systemServer({ + url: '/tenant-package/create', + method: 'post', + data, + }) + +// 修改租户套餐 +export const updateTenantPackage = (data: TenantPackageVO) => + systemServer({ + url: '/tenant-package/update', + method: 'put', + data, + }) + +// 删除租户套餐 +export const deleteTenantPackage = (id: number) => + systemServer({ + url: '/tenant-package/delete?id=' + id, + method: 'delete', + }) + +// 获取租户套餐精简信息列表 +export const getTenantPackageList = () => + systemServer({ + url: '/tenant-package/simple-list', + method: 'get', + }) diff --git a/src/api/module/system/user/index.ts b/src/api/module/system/user/index.ts new file mode 100644 index 0000000..c226d5c --- /dev/null +++ b/src/api/module/system/user/index.ts @@ -0,0 +1,121 @@ +import { systemServer } from '../../index' + +export interface UserVO { + id: number + username: string + nickname: string + deptId: number + postIds: string[] + email: string + mobile: string + sex: number + avatar: string + loginIp: string + status: number + remark: string + loginDate: Date + createTime: Date +} + +export interface UserSimple { + id: number; + nickname: string; + deptId: number; + deptName: string; +} + +// 查询用户管理列表 +export const getUserPage = (params: PageParam) => + systemServer({ + url: '/user/page', + method: 'get', + params, + }) + +// 查询所有用户列表 +export const getAllUser = () => + systemServer({ + url: '/user/all', + method: 'get', + }) + +// 查询用户详情 +export const getUser = (id: number) => + systemServer({ + url: '/user/get?id=' + id, + method: 'get', + }) + +// 新增用户 +export const createUser = (data: UserVO) => + systemServer({ + url: '/user/create', + method: 'post', + data, + }) + +// 修改用户 +export const updateUser = (data: UserVO) => + systemServer({ + url: '/user/update', + method: 'put', + data, + }) + +// 删除用户 +export const deleteUser = (id: number) => + systemServer({ + url: '/user/delete?id=' + id, + method: 'delete', + }) + +// 导出用户 +export const exportUser = (params: any) => + systemServer({ + url: '/user/export', + method: 'get', + responseType: 'blob', + params, + }) + +// 下载用户导入模板 +export const importUserTemplate = () => + systemServer({ + url: '/user/get-import-template', + method: 'get', + responseType: 'blob', + }) + +// 用户密码重置 +export const resetUserPwd = (id: number, password: string) => { + const data = { + id, + password, + } + return systemServer({ + url: '/user/reset-password', + method: 'put', + data, + }) +} + +// 用户状态修改 +export const updateUserStatus = (id: number, status: number) => { + const data = { + id, + status, + } + return systemServer({ + url: '/user/update-status', + method: 'put', + data, + }) +} + +// 获取用户精简信息列表 +export const getSimpleUserList = () => { + return systemServer({ + url: '/user/simple-list', + method: 'get', + }) +} diff --git a/src/api/module/system/user/profile.ts b/src/api/module/system/user/profile.ts new file mode 100644 index 0000000..59e70bd --- /dev/null +++ b/src/api/module/system/user/profile.ts @@ -0,0 +1,75 @@ +import { systemServer } from '../../index' +export interface ProfileVO { + id: number + username: string + nickname: string + dept: { + id: number + name: string + } + roles: { + id: number + name: string + }[] + posts: { + id: number + name: string + }[] + socialUsers: { + type: number + openid: string + }[] + email: string + mobile: string + sex: number + avatar: string + status: number + remark: string + loginIp: string + loginDate: Date + createTime: Date +} + +export interface UserProfileUpdateReqVO { + nickname: string + email: string + mobile: string + sex: number +} + +// 查询用户个人信息 +export const getUserProfile = () => + systemServer({ + url: '/user/profile/get', + method: 'get', + }) + +// 修改用户个人信息 +export const updateUserProfile = (data: UserProfileUpdateReqVO) => + systemServer({ + url: '/user/profile/update', + method: 'put', + data, + }) + +// 用户密码重置 +export const updateUserPassword = (oldPassword: string, newPassword: string) => + systemServer({ + url: '/user/profile/update-password', + method: 'put', + data: { + oldPassword, + newPassword, + }, + }) + +// 用户头像上传 +export const uploadAvatar = (data: any) => + systemServer({ + url: '/user/profile/update-avatar', + data, + method: 'post', + headers: { + 'Content-Type': 'multipart/form-data', + }, + }) diff --git a/src/api/module/system/user/socialUser.ts b/src/api/module/system/user/socialUser.ts new file mode 100644 index 0000000..398f0a0 --- /dev/null +++ b/src/api/module/system/user/socialUser.ts @@ -0,0 +1,30 @@ +import { systemServer } from '../../index' +// 社交绑定,使用 code 授权码 +export const socialBind = (type: any, code: any, state: any) => + systemServer({ + url: '/social-user/bind', + method: 'post', + data: { + type, + code, + state, + }, + }) + +// 取消社交绑定 +export const socialUnbind = (type: any, openid: any) => + systemServer({ + url: '/social-user/unbind', + method: 'delete', + data: { + type, + openid, + }, + }) + +// 社交授权的跳转 +export const socialAuthRedirect = (type: any, redirectUri: any) => + systemServer({ + url: '/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri, + method: 'get', + }) diff --git a/src/api/server/axiosInstance.ts b/src/api/server/axiosInstance.ts new file mode 100644 index 0000000..86d5029 --- /dev/null +++ b/src/api/server/axiosInstance.ts @@ -0,0 +1,235 @@ +import type { + AxiosInstance, + AxiosRequestConfig, + AxiosRequestHeaders, + AxiosResponse, + InternalAxiosRequestConfig, +} from 'axios' + +import qs from 'qs' +import Keys from '../Keys' +import { useMessage } from '@/hooks/useMessage' +import axios, { AxiosError, isCancel } from 'axios' +import { + getRefreshToken, + getTenantId, + getToken, + removeToken, + setToken, +} from '@/utils/auth' +import { authErrMap, ignoreMsgs, networkErrMap } from '../basic/utils' +import type { Result } from '../basic/httpTypes' +import type { APIConfigKeys } from './config' +import { openSocket, closeSocket } from '@/pages/socket_server/index' +import { RouterView, useRouter } from 'vue-router' +import { deleteUserCache } from '@/hooks/useCache' +const router = useRouter() + +const VITE_BASE_API_SYSTEM = import.meta.env.VITE_BASE_API_SYSTEM +const message = useMessage() +const basicHeader = { + tenant() { + const tenant = getTenantId() + if (tenant) return tenant + return '' + }, + token() { + const token = getToken() + if (token) return 'Bearer ' + token + return '' + }, + testToken: 'Bearer test', +} +interface Config { + baseURL?: string + baseAPI: string +} +const instances: Record = {} +let isRefreshToken = false // 是否正在刷新中 +let requestList: any[] = [] // 请求队列 + +const createAxiosInstance = (module: APIConfigKeys, config: Config) => { + if (!config || !config.baseAPI) { + throw new Error(`Invalid configuration for module: ${module}`) + } + const { baseAPI } = config + + if (!instances[module]) { + const instance = axios.create({ + baseURL: `${baseAPI}`, + timeout: 10000, + headers: { + 'Content-Type': 'application/json', + }, + }) + + instances[module] = instance + } + + const service = instances[module] + + service.interceptors.request.use( + (config: InternalAxiosRequestConfig): InternalAxiosRequestConfig => { + config.headers.Authorization = basicHeader.token() + // config.headers['tenant-id'] = basicHeader.tenant() + const params = config.params || {} + const data = config.data || false + if ( + config.method?.toUpperCase() === 'POST' && + (config.headers as AxiosRequestHeaders)['Content-Type'] === + 'application/x-www-form-urlencoded' + ) { + config.data = qs.stringify(data) + } + + if (config.method?.toUpperCase() === 'GET' && params) { + config.params = {} + const paramsStr = qs.stringify(params, { allowDots: true }) + if (paramsStr) { + config.url = config.url + '?' + paramsStr + } + } + return config + }, + (error: AxiosError): Promise => { + return Promise.reject(error) + } + ) + + service.interceptors.response.use( + async (res: AxiosResponse) => { + const config = res.config + let { data } = res + if (!res.data) { + throw new Error('返回“[HTTP]请求没有返回值”') + } + if ( + res.request.responseType === 'blob' || + res.request.responseType === 'arraybuffer' + ) { + // 注意:如果导出的响应为 json,说明可能失败了,不直接返回进行下载 + if (res.data.type !== 'application/json') { + return Promise.resolve({ code: res.status, data: res.data }) + } + data = await new Response(res.data).json() + } + const code = data.code || 200 + const msg = data.msg || authErrMap[code] || authErrMap['default'] + + if (ignoreMsgs.indexOf(msg) !== -1) { + // 如果是忽略的错误码,直接返回 msg 异常 + return Promise.reject({ code: null, msg }) + } else if (code === 401) { + if (!isRefreshToken) { + isRefreshToken = true + if (!getRefreshToken()) logout() + try { + const refreshTokenRes = await refreshToken() + if (refreshTokenRes.data.code !== 0) { + logout() + return Promise.reject({ code, msg }) + } + setToken(refreshTokenRes.data.data.accessToken) + config.headers!.Authorization = 'Bearer ' + getToken() + requestList.forEach((cb: any) => { + cb() + }) + requestList = [] + // 重连接socket + openSocket() + return service(config) + } catch (e) { + logout() + return Promise.reject({ code, msg }) + } finally { + requestList = [] + isRefreshToken = false + } + } else { + return new Promise(resolve => { + requestList.push(() => { + config.headers!.Authorization = 'Bearer ' + getToken() + resolve(service(config)) + }) + }) + } + } else if (code === 500) { + return Promise.reject({ code, msg }) + } else if (code !== 200) { + // if (msg === '无效的刷新令牌') { + // // hard coding:忽略这个提示,直接登出 + // console.log(msg) + // } else { + // ElMessage.error(msg) + // } + return Promise.reject({ code, msg }) + } + + return data + }, + (error: any): Promise => { + if (isCancel(error)) { + return Promise.resolve() + } + const message = '请求错误' + if (error.code === 'ECONNABORTED') { + return Promise.reject({ code: null, msg: '服务器响应超时' }) + } + if (!error.response) { + return Promise.reject({ code: null, msg: message }) + } + + const status = error.response?.status + const unKnowError = `连接出错(${error.response.status})!` + if (status === 401) { + localStorage.removeItem(Keys.STORAGE_TOKEN) + router.push('/login') + } + + const msg = networkErrMap[status] ? networkErrMap[status] : unKnowError + + return Promise.reject({ code: status || null, msg: msg }) + } + ) + + if (!service) { + throw new Error(`Failed to create Axios instance for module: ${module}`) + } + + const refreshToken = async () => { + // axios.defaults.headers.common['tenant-id'] = getTenantId() + return await axios.post( + `${VITE_BASE_API_SYSTEM}/auth/refresh-token?refreshToken=` + getRefreshToken() + ) + } + + async function request(config: AxiosRequestConfig): Promise> { + try { + const result = (await service(config)) as Result + return result + } catch (err: any) { + const result: Result = { + code: err?.code || -1, + msg: err.msg || err.message, + data: err.data || null, + } + return result + } + } + + return request +} + +let isShowLogout = false +async function logout() { + if (isShowLogout) return + isShowLogout = true + + await message.forceConfirm('登录状态已失效,请重新登录', '系统提示', '重新登录') + removeToken() + isShowLogout = false + deleteUserCache() + window.location.href = '/login' +} + +export default createAxiosInstance diff --git a/src/api/server/config.ts b/src/api/server/config.ts new file mode 100644 index 0000000..8add6ac --- /dev/null +++ b/src/api/server/config.ts @@ -0,0 +1,21 @@ +export interface APIConfig { + system: Config + eam: Config +} + +interface Config { + baseURL?: string + baseAPI: string +} + +const API_Config: APIConfig = { + system: { + baseAPI: import.meta.env.VITE_BASE_API_SYSTEM, + }, + eam: { + baseAPI: import.meta.env.VITE_BASE_API_EAM, + }, +} + +export type APIConfigKeys = keyof typeof API_Config +export { API_Config } diff --git a/src/assets/css/dash-main.css b/src/assets/css/dash-main.css new file mode 100644 index 0000000..5a9cffb --- /dev/null +++ b/src/assets/css/dash-main.css @@ -0,0 +1,10 @@ +* { + margin: 0; + padding: 0; +} +html, +body, +#app { + width: 100%; + height: 100%; +} diff --git a/src/assets/image/dashboard/common/icon_header_screen.png b/src/assets/image/dashboard/common/icon_header_screen.png new file mode 100644 index 0000000..f7597b5 Binary files /dev/null and b/src/assets/image/dashboard/common/icon_header_screen.png differ diff --git a/src/assets/image/dashboard/common/icon_header_setting.png b/src/assets/image/dashboard/common/icon_header_setting.png new file mode 100644 index 0000000..c197f8f Binary files /dev/null and b/src/assets/image/dashboard/common/icon_header_setting.png differ diff --git a/src/assets/image/dashboard/common/icon_header_user.png b/src/assets/image/dashboard/common/icon_header_user.png new file mode 100644 index 0000000..6caa1ac Binary files /dev/null and b/src/assets/image/dashboard/common/icon_header_user.png differ diff --git a/src/assets/image/dashboard/common/icon_logo.png b/src/assets/image/dashboard/common/icon_logo.png new file mode 100644 index 0000000..1b7f66b Binary files /dev/null and b/src/assets/image/dashboard/common/icon_logo.png differ diff --git a/src/assets/image/dashboard/common/icon_logo_pg.png b/src/assets/image/dashboard/common/icon_logo_pg.png new file mode 100644 index 0000000..953b56a Binary files /dev/null and b/src/assets/image/dashboard/common/icon_logo_pg.png differ diff --git a/src/assets/image/dashboard/common/icon_menu_data.png b/src/assets/image/dashboard/common/icon_menu_data.png new file mode 100644 index 0000000..49314dd Binary files /dev/null and b/src/assets/image/dashboard/common/icon_menu_data.png differ diff --git a/src/assets/image/dashboard/common/icon_menu_device.png b/src/assets/image/dashboard/common/icon_menu_device.png new file mode 100644 index 0000000..d073728 Binary files /dev/null and b/src/assets/image/dashboard/common/icon_menu_device.png differ diff --git a/src/assets/image/dashboard/common/icon_menu_home.png b/src/assets/image/dashboard/common/icon_menu_home.png new file mode 100644 index 0000000..fe7c13e Binary files /dev/null and b/src/assets/image/dashboard/common/icon_menu_home.png differ diff --git a/src/assets/image/dashboard/common/icon_menu_show.png b/src/assets/image/dashboard/common/icon_menu_show.png new file mode 100644 index 0000000..02b99d5 Binary files /dev/null and b/src/assets/image/dashboard/common/icon_menu_show.png differ diff --git a/src/assets/image/dashboard/common/icon_menu_station.png b/src/assets/image/dashboard/common/icon_menu_station.png new file mode 100644 index 0000000..7c397f1 Binary files /dev/null and b/src/assets/image/dashboard/common/icon_menu_station.png differ diff --git a/src/assets/image/dashboard/common/icon_menu_switch.png b/src/assets/image/dashboard/common/icon_menu_switch.png new file mode 100644 index 0000000..942b310 Binary files /dev/null and b/src/assets/image/dashboard/common/icon_menu_switch.png differ diff --git a/src/assets/image/dashboard/common/icon_menu_system.png b/src/assets/image/dashboard/common/icon_menu_system.png new file mode 100644 index 0000000..802dcaa Binary files /dev/null and b/src/assets/image/dashboard/common/icon_menu_system.png differ diff --git a/src/assets/image/dashboard/common/icon_menu_user.png b/src/assets/image/dashboard/common/icon_menu_user.png new file mode 100644 index 0000000..32af8e8 Binary files /dev/null and b/src/assets/image/dashboard/common/icon_menu_user.png differ diff --git a/src/assets/image/dashboard/common/img_empty.png b/src/assets/image/dashboard/common/img_empty.png new file mode 100644 index 0000000..6167db1 Binary files /dev/null and b/src/assets/image/dashboard/common/img_empty.png differ diff --git a/src/assets/image/dashboard/datas/icon_expand.png b/src/assets/image/dashboard/datas/icon_expand.png new file mode 100644 index 0000000..d270818 Binary files /dev/null and b/src/assets/image/dashboard/datas/icon_expand.png differ diff --git a/src/assets/image/dashboard/devices/bar_Bms.png b/src/assets/image/dashboard/devices/bar_Bms.png new file mode 100644 index 0000000..a6c6391 Binary files /dev/null and b/src/assets/image/dashboard/devices/bar_Bms.png differ diff --git a/src/assets/image/dashboard/devices/bar_Ecu.png b/src/assets/image/dashboard/devices/bar_Ecu.png new file mode 100644 index 0000000..8f20b20 Binary files /dev/null and b/src/assets/image/dashboard/devices/bar_Ecu.png differ diff --git a/src/assets/image/dashboard/devices/bar_Em.png b/src/assets/image/dashboard/devices/bar_Em.png new file mode 100644 index 0000000..961dbb5 Binary files /dev/null and b/src/assets/image/dashboard/devices/bar_Em.png differ diff --git a/src/assets/image/dashboard/devices/bar_Ems.png b/src/assets/image/dashboard/devices/bar_Ems.png new file mode 100644 index 0000000..f340f34 Binary files /dev/null and b/src/assets/image/dashboard/devices/bar_Ems.png differ diff --git a/src/assets/image/dashboard/devices/bar_Ffs.png b/src/assets/image/dashboard/devices/bar_Ffs.png new file mode 100644 index 0000000..6e95388 Binary files /dev/null and b/src/assets/image/dashboard/devices/bar_Ffs.png differ diff --git a/src/assets/image/dashboard/devices/bar_Pcs.png b/src/assets/image/dashboard/devices/bar_Pcs.png new file mode 100644 index 0000000..d1090bb Binary files /dev/null and b/src/assets/image/dashboard/devices/bar_Pcs.png differ diff --git a/src/assets/image/dashboard/devices/bar_Tms.png b/src/assets/image/dashboard/devices/bar_Tms.png new file mode 100644 index 0000000..9ba4a4b Binary files /dev/null and b/src/assets/image/dashboard/devices/bar_Tms.png differ diff --git a/src/assets/image/dashboard/devices/device_number.png b/src/assets/image/dashboard/devices/device_number.png new file mode 100644 index 0000000..6079cfd Binary files /dev/null and b/src/assets/image/dashboard/devices/device_number.png differ diff --git a/src/assets/image/dashboard/devices/device_product.png b/src/assets/image/dashboard/devices/device_product.png new file mode 100644 index 0000000..01d3614 Binary files /dev/null and b/src/assets/image/dashboard/devices/device_product.png differ diff --git a/src/assets/image/dashboard/devices/status_maintain.png b/src/assets/image/dashboard/devices/status_maintain.png new file mode 100644 index 0000000..ffb0e56 Binary files /dev/null and b/src/assets/image/dashboard/devices/status_maintain.png differ diff --git a/src/assets/image/dashboard/devices/status_offLine.png b/src/assets/image/dashboard/devices/status_offLine.png new file mode 100644 index 0000000..762d6cc Binary files /dev/null and b/src/assets/image/dashboard/devices/status_offLine.png differ diff --git a/src/assets/image/dashboard/devices/status_onLine.png b/src/assets/image/dashboard/devices/status_onLine.png new file mode 100644 index 0000000..6616b0c Binary files /dev/null and b/src/assets/image/dashboard/devices/status_onLine.png differ diff --git a/src/assets/image/dashboard/devices/status_scrap.png b/src/assets/image/dashboard/devices/status_scrap.png new file mode 100644 index 0000000..7f5bb6d Binary files /dev/null and b/src/assets/image/dashboard/devices/status_scrap.png differ diff --git a/src/assets/image/dashboard/devices_log/alarm_total.png b/src/assets/image/dashboard/devices_log/alarm_total.png new file mode 100644 index 0000000..7edcb78 Binary files /dev/null and b/src/assets/image/dashboard/devices_log/alarm_total.png differ diff --git a/src/assets/image/dashboard/devices_log/common_total.png b/src/assets/image/dashboard/devices_log/common_total.png new file mode 100644 index 0000000..0e1165f Binary files /dev/null and b/src/assets/image/dashboard/devices_log/common_total.png differ diff --git a/src/assets/image/dashboard/devices_log/debugger_total.png b/src/assets/image/dashboard/devices_log/debugger_total.png new file mode 100644 index 0000000..dfa8091 Binary files /dev/null and b/src/assets/image/dashboard/devices_log/debugger_total.png differ diff --git a/src/assets/image/dashboard/devices_log/err_total.png b/src/assets/image/dashboard/devices_log/err_total.png new file mode 100644 index 0000000..3a75131 Binary files /dev/null and b/src/assets/image/dashboard/devices_log/err_total.png differ diff --git a/src/assets/image/dashboard/exception/no-permission.svg b/src/assets/image/dashboard/exception/no-permission.svg new file mode 100644 index 0000000..4c408ca --- /dev/null +++ b/src/assets/image/dashboard/exception/no-permission.svg @@ -0,0 +1 @@ + diff --git a/src/assets/image/dashboard/exception/not-found.svg b/src/assets/image/dashboard/exception/not-found.svg new file mode 100644 index 0000000..a513656 --- /dev/null +++ b/src/assets/image/dashboard/exception/not-found.svg @@ -0,0 +1 @@ + diff --git a/src/assets/image/dashboard/fault/fault_conduct.png b/src/assets/image/dashboard/fault/fault_conduct.png new file mode 100644 index 0000000..ce971cc Binary files /dev/null and b/src/assets/image/dashboard/fault/fault_conduct.png differ diff --git a/src/assets/image/dashboard/fault/fault_delete.png b/src/assets/image/dashboard/fault/fault_delete.png new file mode 100644 index 0000000..09ebaf6 Binary files /dev/null and b/src/assets/image/dashboard/fault/fault_delete.png differ diff --git a/src/assets/image/dashboard/fault/fault_processed.png b/src/assets/image/dashboard/fault/fault_processed.png new file mode 100644 index 0000000..4a26b89 Binary files /dev/null and b/src/assets/image/dashboard/fault/fault_processed.png differ diff --git a/src/assets/image/dashboard/fault/fault_total.png b/src/assets/image/dashboard/fault/fault_total.png new file mode 100644 index 0000000..56b53e9 Binary files /dev/null and b/src/assets/image/dashboard/fault/fault_total.png differ diff --git a/src/assets/image/dashboard/fault/fault_untreated.png b/src/assets/image/dashboard/fault/fault_untreated.png new file mode 100644 index 0000000..bb54f99 Binary files /dev/null and b/src/assets/image/dashboard/fault/fault_untreated.png differ diff --git a/src/assets/image/dashboard/hmi/help.png b/src/assets/image/dashboard/hmi/help.png new file mode 100644 index 0000000..093fec9 Binary files /dev/null and b/src/assets/image/dashboard/hmi/help.png differ diff --git a/src/assets/image/dashboard/hmi/help_shortcut.png b/src/assets/image/dashboard/hmi/help_shortcut.png new file mode 100644 index 0000000..e403e26 Binary files /dev/null and b/src/assets/image/dashboard/hmi/help_shortcut.png differ diff --git a/src/assets/image/dashboard/hmi/icon_bms.png b/src/assets/image/dashboard/hmi/icon_bms.png new file mode 100644 index 0000000..f4b6379 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_bms.png differ diff --git a/src/assets/image/dashboard/hmi/icon_cac.png b/src/assets/image/dashboard/hmi/icon_cac.png new file mode 100644 index 0000000..a4f059b Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_cac.png differ diff --git a/src/assets/image/dashboard/hmi/icon_dgs.png b/src/assets/image/dashboard/hmi/icon_dgs.png new file mode 100644 index 0000000..683b0ac Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_dgs.png differ diff --git a/src/assets/image/dashboard/hmi/icon_ecg.png b/src/assets/image/dashboard/hmi/icon_ecg.png new file mode 100644 index 0000000..cebce40 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_ecg.png differ diff --git a/src/assets/image/dashboard/hmi/icon_ecu.png b/src/assets/image/dashboard/hmi/icon_ecu.png new file mode 100644 index 0000000..a8efdfa Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_ecu.png differ diff --git a/src/assets/image/dashboard/hmi/icon_em.png b/src/assets/image/dashboard/hmi/icon_em.png new file mode 100644 index 0000000..0b06670 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_em.png differ diff --git a/src/assets/image/dashboard/hmi/icon_ems.png b/src/assets/image/dashboard/hmi/icon_ems.png new file mode 100644 index 0000000..4d28dd1 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_ems.png differ diff --git a/src/assets/image/dashboard/hmi/icon_ffs.png b/src/assets/image/dashboard/hmi/icon_ffs.png new file mode 100644 index 0000000..8629291 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_ffs.png differ diff --git a/src/assets/image/dashboard/hmi/icon_group.png b/src/assets/image/dashboard/hmi/icon_group.png new file mode 100644 index 0000000..cebce40 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_group.png differ diff --git a/src/assets/image/dashboard/hmi/icon_mppt.png b/src/assets/image/dashboard/hmi/icon_mppt.png new file mode 100644 index 0000000..9581849 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_mppt.png differ diff --git a/src/assets/image/dashboard/hmi/icon_pcs.png b/src/assets/image/dashboard/hmi/icon_pcs.png new file mode 100644 index 0000000..e357148 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_pcs.png differ diff --git a/src/assets/image/dashboard/hmi/icon_ths.png b/src/assets/image/dashboard/hmi/icon_ths.png new file mode 100644 index 0000000..6f38e1d Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_ths.png differ diff --git a/src/assets/image/dashboard/hmi/icon_tms.png b/src/assets/image/dashboard/hmi/icon_tms.png new file mode 100644 index 0000000..2ef2bac Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_tms.png differ diff --git a/src/assets/image/dashboard/hmi/icon_unit.png b/src/assets/image/dashboard/hmi/icon_unit.png new file mode 100644 index 0000000..a8efdfa Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_unit.png differ diff --git a/src/assets/image/dashboard/hmi/icon_wpp.png b/src/assets/image/dashboard/hmi/icon_wpp.png new file mode 100644 index 0000000..abbb146 Binary files /dev/null and b/src/assets/image/dashboard/hmi/icon_wpp.png differ diff --git a/src/assets/image/dashboard/home/bg_num.png b/src/assets/image/dashboard/home/bg_num.png new file mode 100644 index 0000000..13f9892 Binary files /dev/null and b/src/assets/image/dashboard/home/bg_num.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/bg_num.png b/src/assets/image/dashboard/home/fullscreen/bg_num.png new file mode 100644 index 0000000..8fac350 Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/bg_num.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/bg_tag.png b/src/assets/image/dashboard/home/fullscreen/bg_tag.png new file mode 100644 index 0000000..acc0693 Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/bg_tag.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/bg_title.png b/src/assets/image/dashboard/home/fullscreen/bg_title.png new file mode 100644 index 0000000..df03066 Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/bg_title.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/icon_capacity.png b/src/assets/image/dashboard/home/fullscreen/icon_capacity.png new file mode 100644 index 0000000..b6e2591 Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/icon_capacity.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/icon_charge.png b/src/assets/image/dashboard/home/fullscreen/icon_charge.png new file mode 100644 index 0000000..ea678ce Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/icon_charge.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/icon_discharge.png b/src/assets/image/dashboard/home/fullscreen/icon_discharge.png new file mode 100644 index 0000000..ccf164e Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/icon_discharge.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/icon_location.png b/src/assets/image/dashboard/home/fullscreen/icon_location.png new file mode 100644 index 0000000..836a4a9 Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/icon_location.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/icon_logo.png b/src/assets/image/dashboard/home/fullscreen/icon_logo.png new file mode 100644 index 0000000..510dc4c Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/icon_logo.png differ diff --git a/src/assets/image/dashboard/home/fullscreen/icon_power.png b/src/assets/image/dashboard/home/fullscreen/icon_power.png new file mode 100644 index 0000000..c00451e Binary files /dev/null and b/src/assets/image/dashboard/home/fullscreen/icon_power.png differ diff --git a/src/assets/image/dashboard/home/icon_capacity.png b/src/assets/image/dashboard/home/icon_capacity.png new file mode 100644 index 0000000..04db184 Binary files /dev/null and b/src/assets/image/dashboard/home/icon_capacity.png differ diff --git a/src/assets/image/dashboard/home/icon_charge.png b/src/assets/image/dashboard/home/icon_charge.png new file mode 100644 index 0000000..5d56d56 Binary files /dev/null and b/src/assets/image/dashboard/home/icon_charge.png differ diff --git a/src/assets/image/dashboard/home/icon_discharge.png b/src/assets/image/dashboard/home/icon_discharge.png new file mode 100644 index 0000000..87bdd0b Binary files /dev/null and b/src/assets/image/dashboard/home/icon_discharge.png differ diff --git a/src/assets/image/dashboard/home/icon_location.png b/src/assets/image/dashboard/home/icon_location.png new file mode 100644 index 0000000..52bd77c Binary files /dev/null and b/src/assets/image/dashboard/home/icon_location.png differ diff --git a/src/assets/image/dashboard/home/icon_power.png b/src/assets/image/dashboard/home/icon_power.png new file mode 100644 index 0000000..83e1b1f Binary files /dev/null and b/src/assets/image/dashboard/home/icon_power.png differ diff --git a/src/assets/image/dashboard/station/abandon.png b/src/assets/image/dashboard/station/abandon.png new file mode 100644 index 0000000..7f5bb6d Binary files /dev/null and b/src/assets/image/dashboard/station/abandon.png differ diff --git a/src/assets/image/dashboard/station/cardList.png b/src/assets/image/dashboard/station/cardList.png new file mode 100644 index 0000000..1dc8060 Binary files /dev/null and b/src/assets/image/dashboard/station/cardList.png differ diff --git a/src/assets/image/dashboard/station/cardListActive.png b/src/assets/image/dashboard/station/cardListActive.png new file mode 100644 index 0000000..6fa6c3a Binary files /dev/null and b/src/assets/image/dashboard/station/cardListActive.png differ diff --git a/src/assets/image/dashboard/station/list.png b/src/assets/image/dashboard/station/list.png new file mode 100644 index 0000000..6e88f72 Binary files /dev/null and b/src/assets/image/dashboard/station/list.png differ diff --git a/src/assets/image/dashboard/station/listActive.png b/src/assets/image/dashboard/station/listActive.png new file mode 100644 index 0000000..5b1d4d5 Binary files /dev/null and b/src/assets/image/dashboard/station/listActive.png differ diff --git a/src/assets/image/dashboard/station/maintaining.png b/src/assets/image/dashboard/station/maintaining.png new file mode 100644 index 0000000..ffb0e56 Binary files /dev/null and b/src/assets/image/dashboard/station/maintaining.png differ diff --git a/src/assets/image/dashboard/station/offLine.png b/src/assets/image/dashboard/station/offLine.png new file mode 100644 index 0000000..762d6cc Binary files /dev/null and b/src/assets/image/dashboard/station/offLine.png differ diff --git a/src/assets/image/dashboard/station/onLine.png b/src/assets/image/dashboard/station/onLine.png new file mode 100644 index 0000000..6616b0c Binary files /dev/null and b/src/assets/image/dashboard/station/onLine.png differ diff --git a/src/assets/image/dashboard/station/station1.png b/src/assets/image/dashboard/station/station1.png new file mode 100644 index 0000000..82736c8 Binary files /dev/null and b/src/assets/image/dashboard/station/station1.png differ diff --git a/src/assets/image/dashboard/station/站点i2.png b/src/assets/image/dashboard/station/站点i2.png new file mode 100644 index 0000000..fdce786 Binary files /dev/null and b/src/assets/image/dashboard/station/站点i2.png differ diff --git a/src/assets/image/dashboard/station/站点i3.png b/src/assets/image/dashboard/station/站点i3.png new file mode 100644 index 0000000..cf09963 Binary files /dev/null and b/src/assets/image/dashboard/station/站点i3.png differ diff --git a/src/assets/image/dashboard/station/站点i4.png b/src/assets/image/dashboard/station/站点i4.png new file mode 100644 index 0000000..72658b7 Binary files /dev/null and b/src/assets/image/dashboard/station/站点i4.png differ diff --git a/src/assets/image/dashboard/station_data/battery_100.png b/src/assets/image/dashboard/station_data/battery_100.png new file mode 100644 index 0000000..5edf309 Binary files /dev/null and b/src/assets/image/dashboard/station_data/battery_100.png differ diff --git a/src/assets/image/dashboard/station_data/battery_20.png b/src/assets/image/dashboard/station_data/battery_20.png new file mode 100644 index 0000000..f4badcc Binary files /dev/null and b/src/assets/image/dashboard/station_data/battery_20.png differ diff --git a/src/assets/image/dashboard/station_data/battery_40.png b/src/assets/image/dashboard/station_data/battery_40.png new file mode 100644 index 0000000..b64e899 Binary files /dev/null and b/src/assets/image/dashboard/station_data/battery_40.png differ diff --git a/src/assets/image/dashboard/station_data/battery_60.png b/src/assets/image/dashboard/station_data/battery_60.png new file mode 100644 index 0000000..d9c4ec9 Binary files /dev/null and b/src/assets/image/dashboard/station_data/battery_60.png differ diff --git a/src/assets/image/dashboard/station_data/battery_80.png b/src/assets/image/dashboard/station_data/battery_80.png new file mode 100644 index 0000000..d9c4ec9 Binary files /dev/null and b/src/assets/image/dashboard/station_data/battery_80.png differ diff --git a/src/assets/image/dashboard/station_data/bg_info_item.png b/src/assets/image/dashboard/station_data/bg_info_item.png new file mode 100644 index 0000000..a0846ff Binary files /dev/null and b/src/assets/image/dashboard/station_data/bg_info_item.png differ diff --git a/src/assets/image/dashboard/station_data/border_frequency.png b/src/assets/image/dashboard/station_data/border_frequency.png new file mode 100644 index 0000000..0fd1c80 Binary files /dev/null and b/src/assets/image/dashboard/station_data/border_frequency.png differ diff --git a/src/assets/image/dashboard/station_data/border_voltage.png b/src/assets/image/dashboard/station_data/border_voltage.png new file mode 100644 index 0000000..098bdd2 Binary files /dev/null and b/src/assets/image/dashboard/station_data/border_voltage.png differ diff --git a/src/assets/image/dashboard/station_data/fanhuizhujiemian.png b/src/assets/image/dashboard/station_data/fanhuizhujiemian.png new file mode 100644 index 0000000..dee1bca Binary files /dev/null and b/src/assets/image/dashboard/station_data/fanhuizhujiemian.png differ diff --git a/src/assets/image/dashboard/station_data/fullscreen/battery_100.png b/src/assets/image/dashboard/station_data/fullscreen/battery_100.png new file mode 100644 index 0000000..cb72f82 Binary files /dev/null and b/src/assets/image/dashboard/station_data/fullscreen/battery_100.png differ diff --git a/src/assets/image/dashboard/station_data/fullscreen/battery_20.png b/src/assets/image/dashboard/station_data/fullscreen/battery_20.png new file mode 100644 index 0000000..4a04b13 Binary files /dev/null and b/src/assets/image/dashboard/station_data/fullscreen/battery_20.png differ diff --git a/src/assets/image/dashboard/station_data/fullscreen/battery_40.png b/src/assets/image/dashboard/station_data/fullscreen/battery_40.png new file mode 100644 index 0000000..072ba34 Binary files /dev/null and b/src/assets/image/dashboard/station_data/fullscreen/battery_40.png differ diff --git a/src/assets/image/dashboard/station_data/fullscreen/battery_60.png b/src/assets/image/dashboard/station_data/fullscreen/battery_60.png new file mode 100644 index 0000000..4296b7f Binary files /dev/null and b/src/assets/image/dashboard/station_data/fullscreen/battery_60.png differ diff --git a/src/assets/image/dashboard/station_data/fullscreen/battery_80.png b/src/assets/image/dashboard/station_data/fullscreen/battery_80.png new file mode 100644 index 0000000..5294366 Binary files /dev/null and b/src/assets/image/dashboard/station_data/fullscreen/battery_80.png differ diff --git a/src/assets/image/dashboard/station_data/fullscreen/bg_info_item.png b/src/assets/image/dashboard/station_data/fullscreen/bg_info_item.png new file mode 100644 index 0000000..3b60138 Binary files /dev/null and b/src/assets/image/dashboard/station_data/fullscreen/bg_info_item.png differ diff --git a/src/assets/image/dashboard/station_data/fullscreen/border_frequency.png b/src/assets/image/dashboard/station_data/fullscreen/border_frequency.png new file mode 100644 index 0000000..dd2f895 Binary files /dev/null and b/src/assets/image/dashboard/station_data/fullscreen/border_frequency.png differ diff --git a/src/assets/image/dashboard/station_data/fullscreen/border_voltage.png b/src/assets/image/dashboard/station_data/fullscreen/border_voltage.png new file mode 100644 index 0000000..e41cf2f Binary files /dev/null and b/src/assets/image/dashboard/station_data/fullscreen/border_voltage.png differ diff --git a/src/assets/image/dashboard/station_data/icon_btn_back.png b/src/assets/image/dashboard/station_data/icon_btn_back.png new file mode 100644 index 0000000..fa32276 Binary files /dev/null and b/src/assets/image/dashboard/station_data/icon_btn_back.png differ diff --git a/src/assets/image/dashboard/station_data/icon_electric.png b/src/assets/image/dashboard/station_data/icon_electric.png new file mode 100644 index 0000000..ce46710 Binary files /dev/null and b/src/assets/image/dashboard/station_data/icon_electric.png differ diff --git a/src/assets/image/dashboard/station_data/icon_ems.png b/src/assets/image/dashboard/station_data/icon_ems.png new file mode 100644 index 0000000..fc92e62 Binary files /dev/null and b/src/assets/image/dashboard/station_data/icon_ems.png differ diff --git a/src/assets/image/dashboard/station_data/icon_env.png b/src/assets/image/dashboard/station_data/icon_env.png new file mode 100644 index 0000000..5e542ba Binary files /dev/null and b/src/assets/image/dashboard/station_data/icon_env.png differ diff --git a/src/assets/image/dashboard/station_data/icon_power.png b/src/assets/image/dashboard/station_data/icon_power.png new file mode 100644 index 0000000..9389e47 Binary files /dev/null and b/src/assets/image/dashboard/station_data/icon_power.png differ diff --git a/src/assets/image/dashboard/station_data/label_bg_info.png b/src/assets/image/dashboard/station_data/label_bg_info.png new file mode 100644 index 0000000..25bbeef Binary files /dev/null and b/src/assets/image/dashboard/station_data/label_bg_info.png differ diff --git a/src/assets/image/dashboard/station_data/label_bg_label.png b/src/assets/image/dashboard/station_data/label_bg_label.png new file mode 100644 index 0000000..3011606 Binary files /dev/null and b/src/assets/image/dashboard/station_data/label_bg_label.png differ diff --git a/src/assets/image/dashboard/station_data/label_icon_point.png b/src/assets/image/dashboard/station_data/label_icon_point.png new file mode 100644 index 0000000..3df2e2f Binary files /dev/null and b/src/assets/image/dashboard/station_data/label_icon_point.png differ diff --git a/src/assets/image/dashboard/station_set/btn_download.png b/src/assets/image/dashboard/station_set/btn_download.png new file mode 100644 index 0000000..d38022a Binary files /dev/null and b/src/assets/image/dashboard/station_set/btn_download.png differ diff --git a/src/assets/image/dashboard/station_set/btn_import.png b/src/assets/image/dashboard/station_set/btn_import.png new file mode 100644 index 0000000..e3979ec Binary files /dev/null and b/src/assets/image/dashboard/station_set/btn_import.png differ diff --git a/src/assets/image/dashboard/station_set/icon_expand.png b/src/assets/image/dashboard/station_set/icon_expand.png new file mode 100644 index 0000000..d69710e Binary files /dev/null and b/src/assets/image/dashboard/station_set/icon_expand.png differ diff --git a/src/assets/image/dashboard/station_set/icon_expanded.png b/src/assets/image/dashboard/station_set/icon_expanded.png new file mode 100644 index 0000000..042f4ed Binary files /dev/null and b/src/assets/image/dashboard/station_set/icon_expanded.png differ diff --git a/src/assets/image/dashboard/station_set/icon_file.png b/src/assets/image/dashboard/station_set/icon_file.png new file mode 100644 index 0000000..617ffe2 Binary files /dev/null and b/src/assets/image/dashboard/station_set/icon_file.png differ diff --git a/src/assets/image/dashboard/station_set/icon_folder.png b/src/assets/image/dashboard/station_set/icon_folder.png new file mode 100644 index 0000000..d4c3428 Binary files /dev/null and b/src/assets/image/dashboard/station_set/icon_folder.png differ diff --git a/src/assets/image/login/bg.png b/src/assets/image/login/bg.png new file mode 100644 index 0000000..28bf205 Binary files /dev/null and b/src/assets/image/login/bg.png differ diff --git a/src/assets/image/login/icon_logo_pg.png b/src/assets/image/login/icon_logo_pg.png new file mode 100644 index 0000000..7c94084 Binary files /dev/null and b/src/assets/image/login/icon_logo_pg.png differ diff --git a/src/assets/image/test/location.png b/src/assets/image/test/location.png new file mode 100644 index 0000000..5e4dbd0 Binary files /dev/null and b/src/assets/image/test/location.png differ diff --git a/src/assets/image/three_models/label_bg_info.png b/src/assets/image/three_models/label_bg_info.png new file mode 100644 index 0000000..25bbeef Binary files /dev/null and b/src/assets/image/three_models/label_bg_info.png differ diff --git a/src/assets/image/three_models/label_bg_label.png b/src/assets/image/three_models/label_bg_label.png new file mode 100644 index 0000000..3011606 Binary files /dev/null and b/src/assets/image/three_models/label_bg_label.png differ diff --git a/src/assets/image/three_models/label_icon_point.png b/src/assets/image/three_models/label_icon_point.png new file mode 100644 index 0000000..3df2e2f Binary files /dev/null and b/src/assets/image/three_models/label_icon_point.png differ diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/src/components/dashboard/ColorTitle.vue b/src/components/dashboard/ColorTitle.vue new file mode 100644 index 0000000..a81619f --- /dev/null +++ b/src/components/dashboard/ColorTitle.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/components/dashboard/Cropper/index.ts b/src/components/dashboard/Cropper/index.ts new file mode 100644 index 0000000..8fcc618 --- /dev/null +++ b/src/components/dashboard/Cropper/index.ts @@ -0,0 +1,4 @@ +import CropperImage from './src/Cropper.vue' +import CropperAvatar from './src/CropperAvatar.vue' + +export { CropperImage, CropperAvatar } diff --git a/src/components/dashboard/Cropper/src/CopperModal.vue b/src/components/dashboard/Cropper/src/CopperModal.vue new file mode 100644 index 0000000..5e9cc78 --- /dev/null +++ b/src/components/dashboard/Cropper/src/CopperModal.vue @@ -0,0 +1,262 @@ + + + diff --git a/src/components/dashboard/Cropper/src/Cropper.vue b/src/components/dashboard/Cropper/src/Cropper.vue new file mode 100644 index 0000000..344b364 --- /dev/null +++ b/src/components/dashboard/Cropper/src/Cropper.vue @@ -0,0 +1,187 @@ + + + diff --git a/src/components/dashboard/Cropper/src/CropperAvatar.vue b/src/components/dashboard/Cropper/src/CropperAvatar.vue new file mode 100644 index 0000000..c32c6eb --- /dev/null +++ b/src/components/dashboard/Cropper/src/CropperAvatar.vue @@ -0,0 +1,149 @@ + + + diff --git a/src/components/dashboard/Cropper/src/types.ts b/src/components/dashboard/Cropper/src/types.ts new file mode 100644 index 0000000..bcad3b4 --- /dev/null +++ b/src/components/dashboard/Cropper/src/types.ts @@ -0,0 +1,8 @@ +import type Cropper from 'cropperjs' + +export interface CropendResult { + imgBase64: string + imgInfo: Cropper.Data +} + +export type { Cropper } diff --git a/src/components/dashboard/DictTag/index.ts b/src/components/dashboard/DictTag/index.ts new file mode 100644 index 0000000..4db2742 --- /dev/null +++ b/src/components/dashboard/DictTag/index.ts @@ -0,0 +1,3 @@ +import DictTag from './src/DictTag.vue' + +export { DictTag } diff --git a/src/components/dashboard/DictTag/src/DictTag.vue b/src/components/dashboard/DictTag/src/DictTag.vue new file mode 100644 index 0000000..1376466 --- /dev/null +++ b/src/components/dashboard/DictTag/src/DictTag.vue @@ -0,0 +1,60 @@ + diff --git a/src/components/dashboard/Edfs-button/index.vue b/src/components/dashboard/Edfs-button/index.vue new file mode 100644 index 0000000..a3f5b6f --- /dev/null +++ b/src/components/dashboard/Edfs-button/index.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/dashboard/Edfs-context-menu/index.vue b/src/components/dashboard/Edfs-context-menu/index.vue new file mode 100644 index 0000000..d4b6f12 --- /dev/null +++ b/src/components/dashboard/Edfs-context-menu/index.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/components/dashboard/Edfs-dialog.vue b/src/components/dashboard/Edfs-dialog.vue new file mode 100644 index 0000000..c41c684 --- /dev/null +++ b/src/components/dashboard/Edfs-dialog.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/components/dashboard/Edfs-exception.vue b/src/components/dashboard/Edfs-exception.vue new file mode 100644 index 0000000..66fc071 --- /dev/null +++ b/src/components/dashboard/Edfs-exception.vue @@ -0,0 +1,82 @@ + + + + diff --git a/src/components/dashboard/Edfs-number-item-input.vue b/src/components/dashboard/Edfs-number-item-input.vue new file mode 100644 index 0000000..b13e0d8 --- /dev/null +++ b/src/components/dashboard/Edfs-number-item-input.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/components/dashboard/Edfs-table/defaults.ts b/src/components/dashboard/Edfs-table/defaults.ts new file mode 100644 index 0000000..45628c9 --- /dev/null +++ b/src/components/dashboard/Edfs-table/defaults.ts @@ -0,0 +1,11 @@ +import type { TableProps } from 'element-plus'; + +interface IPaging { + currentPage?: number, + pageSize?: number, + pageTotal?: number, + usePaging?: boolean + loading?: boolean +} + +export type Props = TableProps & IPaging \ No newline at end of file diff --git a/src/components/dashboard/Edfs-table/index.vue b/src/components/dashboard/Edfs-table/index.vue new file mode 100644 index 0000000..9d2b539 --- /dev/null +++ b/src/components/dashboard/Edfs-table/index.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/src/components/dashboard/Edfs-wrap.vue b/src/components/dashboard/Edfs-wrap.vue new file mode 100644 index 0000000..6a9b743 --- /dev/null +++ b/src/components/dashboard/Edfs-wrap.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/components/dashboard/Editor/index.ts b/src/components/dashboard/Editor/index.ts new file mode 100644 index 0000000..9e9e8c2 --- /dev/null +++ b/src/components/dashboard/Editor/index.ts @@ -0,0 +1,8 @@ +import Editor from './src/Editor.vue' +import type { IDomEditor } from '@wangeditor/editor' + +export interface EditorExpose { + getEditorRef: () => Promise +} + +export { Editor } diff --git a/src/components/dashboard/Editor/src/Editor.vue b/src/components/dashboard/Editor/src/Editor.vue new file mode 100644 index 0000000..d88efa5 --- /dev/null +++ b/src/components/dashboard/Editor/src/Editor.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/src/components/dashboard/Form/index.ts b/src/components/dashboard/Form/index.ts new file mode 100644 index 0000000..dddc88f --- /dev/null +++ b/src/components/dashboard/Form/index.ts @@ -0,0 +1,15 @@ +import Form from './src/Form.vue' +import { ElForm } from 'element-plus' +import type { FormSchema, FormSetPropsType } from '@/types/form' + +export interface FormExpose { + setValues: (data: Recordable) => void + setProps: (props: Recordable) => void + delSchema: (field: string) => void + addSchema: (formSchema: FormSchema, index?: number) => void + setSchema: (schemaProps: FormSetPropsType[]) => void + formModel: Recordable + getElFormRef: () => ComponentRef +} + +export { Form } diff --git a/src/components/dashboard/Form/src/Form.vue b/src/components/dashboard/Form/src/Form.vue new file mode 100644 index 0000000..aace322 --- /dev/null +++ b/src/components/dashboard/Form/src/Form.vue @@ -0,0 +1,307 @@ + + + diff --git a/src/components/dashboard/Form/src/componentMap.ts b/src/components/dashboard/Form/src/componentMap.ts new file mode 100644 index 0000000..8e8fbd9 --- /dev/null +++ b/src/components/dashboard/Form/src/componentMap.ts @@ -0,0 +1,55 @@ +import type { Component } from 'vue' +import { + ElCascader, + ElCheckboxGroup, + ElColorPicker, + ElDatePicker, + ElInput, + ElInputNumber, + ElRadioGroup, + ElRate, + ElSelect, + ElSelectV2, + ElTreeSelect, + ElSlider, + ElSwitch, + ElTimePicker, + ElTimeSelect, + ElTransfer, + ElAutocomplete, + ElDivider +} from 'element-plus' +import { InputPassword } from '@/components/dashboard/InputPassword' +import { Editor } from '@/components/dashboard/Editor' +import { UploadImg, UploadImgs, UploadFile } from '@/components/dashboard/UploadFile' +import type { ComponentName } from '@/types/components' + +const componentMap: Recordable = { + Radio: ElRadioGroup, + Checkbox: ElCheckboxGroup, + CheckboxButton: ElCheckboxGroup, + Input: ElInput, + Autocomplete: ElAutocomplete, + InputNumber: ElInputNumber, + Select: ElSelect, + Cascader: ElCascader, + Switch: ElSwitch, + Slider: ElSlider, + TimePicker: ElTimePicker, + DatePicker: ElDatePicker, + Rate: ElRate, + ColorPicker: ElColorPicker, + Transfer: ElTransfer, + Divider: ElDivider, + TimeSelect: ElTimeSelect, + SelectV2: ElSelectV2, + TreeSelect: ElTreeSelect, + RadioButton: ElRadioGroup, + InputPassword: InputPassword, + Editor: Editor, + UploadImg: UploadImg, + UploadImgs: UploadImgs, + UploadFile: UploadFile +} + +export { componentMap } diff --git a/src/components/dashboard/Form/src/components/useRenderCheckbox.tsx b/src/components/dashboard/Form/src/components/useRenderCheckbox.tsx new file mode 100644 index 0000000..61f3652 --- /dev/null +++ b/src/components/dashboard/Form/src/components/useRenderCheckbox.tsx @@ -0,0 +1,26 @@ +import type { FormSchema } from '@/types/form' +import { ElCheckbox, ElCheckboxButton } from 'element-plus' +import { defineComponent } from 'vue' + +export const useRenderCheckbox = () => { + const renderCheckboxOptions = (item: FormSchema) => { + // 如果有别名,就取别名 + const labelAlias = item?.componentProps?.optionsAlias?.labelField + const valueAlias = item?.componentProps?.optionsAlias?.valueField + const Com = (item.component === 'Checkbox' ? ElCheckbox : ElCheckboxButton) as ReturnType< + typeof defineComponent + > + return item?.componentProps?.options?.map((option) => { + const { ...other } = option + return ( + + {option[labelAlias || 'label']} + + ) + }) + } + + return { + renderCheckboxOptions + } +} diff --git a/src/components/dashboard/Form/src/components/useRenderRadio.tsx b/src/components/dashboard/Form/src/components/useRenderRadio.tsx new file mode 100644 index 0000000..08e64b9 --- /dev/null +++ b/src/components/dashboard/Form/src/components/useRenderRadio.tsx @@ -0,0 +1,26 @@ +import type { FormSchema } from '@/types/form' +import { ElRadio, ElRadioButton } from 'element-plus' +import { defineComponent } from 'vue' + +export const useRenderRadio = () => { + const renderRadioOptions = (item: FormSchema) => { + // 如果有别名,就取别名 + const labelAlias = item?.componentProps?.optionsAlias?.labelField + const valueAlias = item?.componentProps?.optionsAlias?.valueField + const Com = (item.component === 'Radio' ? ElRadio : ElRadioButton) as ReturnType< + typeof defineComponent + > + return item?.componentProps?.options?.map((option) => { + const { ...other } = option + return ( + + {option[labelAlias || 'label']} + + ) + }) + } + + return { + renderRadioOptions + } +} diff --git a/src/components/dashboard/Form/src/components/useRenderSelect.tsx b/src/components/dashboard/Form/src/components/useRenderSelect.tsx new file mode 100644 index 0000000..dd75bc0 --- /dev/null +++ b/src/components/dashboard/Form/src/components/useRenderSelect.tsx @@ -0,0 +1,57 @@ +import type { FormSchema } from '@/types/form' +import type { ComponentOptions } from '@/types/components' +import { ElOption, ElOptionGroup } from 'element-plus' +import { getSlot } from '@/utils/tsxHelper' +import type { Slots } from 'vue' + +export const useRenderSelect = (slots: Slots) => { + // 渲染 select options + const renderSelectOptions = (item: FormSchema) => { + // 如果有别名,就取别名 + const labelAlias = item?.componentProps?.optionsAlias?.labelField + return item?.componentProps?.options?.map((option) => { + if (option?.options?.length) { + return ( + + {() => { + return option?.options?.map((v) => { + return renderSelectOptionItem(item, v) + }) + }} + + ) + } else { + return renderSelectOptionItem(item, option) + } + }) + } + + // 渲染 select option item + const renderSelectOptionItem = (item: FormSchema, option: ComponentOptions) => { + // 如果有别名,就取别名 + const labelAlias = item?.componentProps?.optionsAlias?.labelField + const valueAlias = item?.componentProps?.optionsAlias?.valueField + + const { label, value, ...other } = option + + return ( + + {{ + default: () => + // option 插槽名规则,{field}-option + item?.componentProps?.optionsSlot + ? getSlot(slots, `${item.field}-option`, { item: option }) + : undefined + }} + + ) + } + + return { + renderSelectOptions + } +} diff --git a/src/components/dashboard/Form/src/helper.ts b/src/components/dashboard/Form/src/helper.ts new file mode 100644 index 0000000..faea88f --- /dev/null +++ b/src/components/dashboard/Form/src/helper.ts @@ -0,0 +1,149 @@ +import type { Slots } from 'vue' +import { getSlot } from '@/utils/tsxHelper' +import type { PlaceholderModel } from './types' +import type { FormSchema } from '@/types/form' +import type { ColProps } from '@/types/components' +import { useI18n } from 'vue-i18n' + +/** + * + * @param schema 对应组件数据 + * @returns 返回提示信息对象 + * @description 用于自动设置placeholder + */ +export const setTextPlaceholder = (schema: FormSchema): PlaceholderModel => { + const { t } = useI18n() + const textMap = ['Input', 'Autocomplete', 'InputNumber', 'InputPassword'] + const selectMap = ['Select', 'SelectV2', 'TimePicker', 'DatePicker', 'TimeSelect', 'TimeSelect'] + if (textMap.includes(schema?.component as string)) { + return { + placeholder: t('common.inputText') + schema.label + } + } + if (selectMap.includes(schema?.component as string)) { + // 一些范围选择器 + const twoTextMap = ['datetimerange', 'daterange', 'monthrange', 'datetimerange', 'daterange'] + if ( + twoTextMap.includes( + (schema?.componentProps?.type || schema?.componentProps?.isRange) as string + ) + ) { + return { + startPlaceholder: t('common.startTimeText'), + endPlaceholder: t('common.endTimeText'), + rangeSeparator: '-' + } + } else { + return { + placeholder: t('common.selectText') + schema.label + } + } + } + return {} +} + +/** + * + * @param col 内置栅格 + * @returns 返回栅格属性 + * @description 合并传入进来的栅格属性 + */ +export const setGridProp = (col: ColProps = {}): ColProps => { + const colProps: ColProps = { + // 如果有span,代表用户优先级更高,所以不需要默认栅格 + ...(col.span + ? {} + : { + xs: 24, + sm: 12, + md: 12, + lg: 12, + xl: 12 + }), + ...col + } + return colProps +} + +/** + * + * @param item 传入的组件属性 + * @returns 默认添加 clearable 属性 + */ +export const setComponentProps = (item: FormSchema): Recordable => { + const notNeedClearable = ['ColorPicker'] + const componentProps: Recordable = notNeedClearable.includes(item.component as string) + ? { ...item.componentProps } + : { + clearable: true, + ...item.componentProps + } + // 需要删除额外的属性 + delete componentProps?.slots + return componentProps +} + +/** + * + * @param slots 插槽 + * @param slotsProps 插槽属性 + * @param field 字段名 + */ +export const setItemComponentSlots = ( + slots: Slots, + slotsProps: Recordable = {}, + field: string +): Recordable => { + const slotObj: Recordable = {} + for (const key in slotsProps) { + if (slotsProps[key]) { + // 由于组件有可能重复,需要有一个唯一的前缀 + slotObj[key] = (data: Recordable) => { + return getSlot(slots, `${field}-${key}`, data) + } + } + } + return slotObj +} + +/** + * + * @param schema Form表单结构化数组 + * @param formModel FormModel + * @returns FormModel + * @description 生成对应的formModel + */ +export const initModel = (schema: FormSchema[], formModel: Recordable) => { + const model: Recordable = { ...formModel } + schema.map((v) => { + // 如果是hidden,就删除对应的值 + if (v.hidden) { + delete model[v.field] + } else if (v.component && v.component !== 'Divider') { + const hasField = Reflect.has(model, v.field) + // 如果先前已经有值存在,则不进行重新赋值,而是采用现有的值 + model[v.field] = hasField ? model[v.field] : v.value !== void 0 ? v.value : '' + } + }) + return model +} + +/** + * @param slots 插槽 + * @param field 字段名 + * @returns 返回FormIiem插槽 + */ +export const setFormItemSlots = (slots: Slots, field: string): Recordable => { + const slotObj: Recordable = {} + if (slots[`${field}-error`]) { + slotObj['error'] = (data: Recordable) => { + return getSlot(slots, `${field}-error`, data) + } + } + if (slots[`${field}-label`]) { + slotObj['label'] = (data: Recordable) => { + return getSlot(slots, `${field}-label`, data) + } + } + return slotObj +} diff --git a/src/components/dashboard/Form/src/types.ts b/src/components/dashboard/Form/src/types.ts new file mode 100644 index 0000000..e1586c4 --- /dev/null +++ b/src/components/dashboard/Form/src/types.ts @@ -0,0 +1,17 @@ +import type { FormSchema } from '@/types/form' + +export interface PlaceholderModel { + placeholder?: string + startPlaceholder?: string + endPlaceholder?: string + rangeSeparator?: string +} + +export type FormProps = { + schema?: FormSchema[] + isCol?: boolean + model?: Recordable + autoSetPlaceholder?: boolean + isCustom?: boolean + labelWidth?: string | number +} & Recordable diff --git a/src/components/dashboard/FormItemInput.vue b/src/components/dashboard/FormItemInput.vue new file mode 100644 index 0000000..8986447 --- /dev/null +++ b/src/components/dashboard/FormItemInput.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/src/components/dashboard/FormItemSelect.vue b/src/components/dashboard/FormItemSelect.vue new file mode 100644 index 0000000..20b35c3 --- /dev/null +++ b/src/components/dashboard/FormItemSelect.vue @@ -0,0 +1,201 @@ + + + + + + + diff --git a/src/components/dashboard/Icon/index.ts b/src/components/dashboard/Icon/index.ts new file mode 100644 index 0000000..33d1de3 --- /dev/null +++ b/src/components/dashboard/Icon/index.ts @@ -0,0 +1,4 @@ +import Icon from './src/Icon.vue' +import IconSelect from './src/IconSelect.vue' + +export { Icon, IconSelect } diff --git a/src/components/dashboard/Icon/src/Icon.vue b/src/components/dashboard/Icon/src/Icon.vue new file mode 100644 index 0000000..9e70526 --- /dev/null +++ b/src/components/dashboard/Icon/src/Icon.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/components/dashboard/Icon/src/IconSelect.vue b/src/components/dashboard/Icon/src/IconSelect.vue new file mode 100644 index 0000000..e595cfe --- /dev/null +++ b/src/components/dashboard/Icon/src/IconSelect.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/src/components/dashboard/Icon/src/data.ts b/src/components/dashboard/Icon/src/data.ts new file mode 100644 index 0000000..cdbd553 --- /dev/null +++ b/src/components/dashboard/Icon/src/data.ts @@ -0,0 +1,3106 @@ +export const IconJson = { + 'ep:': [ + 'add-location', + 'aim', + 'alarm-clock', + 'apple', + 'arrow-down', + 'arrow-down-bold', + 'arrow-left', + 'arrow-left-bold', + 'arrow-right', + 'arrow-right-bold', + 'arrow-up', + 'arrow-up-bold', + 'avatar', + 'back', + 'baseball', + 'basketball', + 'bell', + 'bell-filled', + 'bicycle', + 'bottom', + 'bottom-left', + 'bottom-right', + 'bowl', + 'box', + 'briefcase', + 'brush', + 'brush-filled', + 'burger', + 'calendar', + 'camera', + 'camera-filled', + 'caret-bottom', + 'caret-left', + 'caret-right', + 'caret-top', + 'cellphone', + 'chat-dot-round', + 'chat-dot-square', + 'chat-line-round', + 'chat-line-square', + 'chat-round', + 'chat-square', + 'check', + 'checked', + 'cherry', + 'chicken', + 'circle-check', + 'circle-check-filled', + 'circle-close', + 'circle-close-filled', + 'circle-plus', + 'circle-plus-filled', + 'clock', + 'close', + 'close-bold', + 'cloudy', + 'coffee', + 'coffee-cup', + 'coin', + 'cold-drink', + 'collection', + 'collection-tag', + 'comment', + 'compass', + 'connection', + 'coordinate', + 'copy-document', + 'cpu', + 'credit-card', + 'crop', + 'd-arrow-left', + 'd-arrow-right', + 'd-caret', + 'data-analysis', + 'data-board', + 'data-line', + 'delete', + 'delete-filled', + 'delete-location', + 'dessert', + 'discount', + 'dish', + 'dish-dot', + 'document', + 'document-add', + 'document-checked', + 'document-copy', + 'document-delete', + 'document-remove', + 'download', + 'drizzling', + 'edit', + 'edit-pen', + 'eleme', + 'eleme-filled', + 'expand', + 'failed', + 'female', + 'files', + 'film', + 'filter', + 'finished', + 'first-aid-kit', + 'flag', + 'fold', + 'folder', + 'folder-add', + 'folder-checked', + 'folder-delete', + 'folder-opened', + 'folder-remove', + 'food', + 'football', + 'fork-spoon', + 'fries', + 'full-screen', + 'goblet', + 'goblet-full', + 'goblet-square', + 'goblet-square-full', + 'goods', + 'goods-filled', + 'grape', + 'grid', + 'guide', + 'headset', + 'help', + 'help-filled', + 'histogram', + 'home-filled', + 'hot-water', + 'house', + 'ice-cream', + 'ice-cream-round', + 'ice-cream-square', + 'ice-drink', + 'ice-tea', + 'info-filled', + 'iphone', + 'key', + 'knife-fork', + 'lightning', + 'link', + 'list', + 'loading', + 'location', + 'location-filled', + 'location-information', + 'lock', + 'lollipop', + 'magic-stick', + 'magnet', + 'male', + 'management', + 'map-location', + 'medal', + 'menu', + 'message', + 'message-box', + 'mic', + 'microphone', + 'milk-tea', + 'minus', + 'money', + 'monitor', + 'moon', + 'moon-night', + 'more', + 'more-filled', + 'mostly-cloudy', + 'mouse', + 'mug', + 'mute', + 'mute-notification', + 'no-smoking', + 'notebook', + 'notification', + 'odometer', + 'office-building', + 'open', + 'operation', + 'opportunity', + 'orange', + 'paperclip', + 'partly-cloudy', + 'pear', + 'phone', + 'phone-filled', + 'picture', + 'picture-filled', + 'picture-rounded', + 'pie-chart', + 'place', + 'platform', + 'plus', + 'pointer', + 'position', + 'postcard', + 'pouring', + 'present', + 'price-tag', + 'printer', + 'promotion', + 'question-filled', + 'rank', + 'reading', + 'reading-lamp', + 'refresh', + 'refresh-left', + 'refresh-right', + 'refrigerator', + 'remove', + 'remove-filled', + 'right', + 'scale-to-original', + 'school', + 'scissor', + 'search', + 'select', + 'sell', + 'semi-select', + 'service', + 'set-up', + 'setting', + 'share', + 'ship', + 'shop', + 'shopping-bag', + 'shopping-cart', + 'shopping-cart-full', + 'smoking', + 'soccer', + 'sold-out', + 'sort', + 'sort-down', + 'sort-up', + 'stamp', + 'star', + 'star-filled', + 'stopwatch', + 'success-filled', + 'sugar', + 'suitcase', + 'sunny', + 'sunrise', + 'sunset', + 'switch', + 'switch-button', + 'takeaway-box', + 'ticket', + 'tickets', + 'timer', + 'toilet-paper', + 'tools', + 'top', + 'top-left', + 'top-right', + 'trend-charts', + 'trophy', + 'turn-off', + 'umbrella', + 'unlock', + 'upload', + 'upload-filled', + 'user', + 'user-filled', + 'van', + 'video-camera', + 'video-camera-filled', + 'video-pause', + 'video-play', + 'view', + 'wallet', + 'wallet-filled', + 'warning', + 'warning-filled', + 'watch', + 'watermelon', + 'wind-power', + 'zoom-in', + 'zoom-out', + ], + 'fa:': [ + '500px', + 'address-book', + 'address-book-o', + 'address-card', + 'address-card-o', + 'adjust', + 'adn', + 'align-center', + 'align-justify', + 'align-left', + 'amazon', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'android', + 'angellist', + 'angle-double-left', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-up', + 'apple', + 'archive', + 'area-chart', + 'arrow-circle-left', + 'arrow-circle-o-left', + 'arrow-circle-o-up', + 'arrow-circle-up', + 'arrow-left', + 'arrow-up', + 'arrows', + 'arrows-alt', + 'arrows-h', + 'arrows-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'audio-description', + 'automobile', + 'backward', + 'balance-scale', + 'ban', + 'bandcamp', + 'bank', + 'bar-chart', + 'barcode', + 'bars', + 'bath', + 'battery', + 'battery-0', + 'battery-1', + 'battery-2', + 'battery-3', + 'bed', + 'beer', + 'behance', + 'behance-square', + 'bell', + 'bell-o', + 'bell-slash', + 'bell-slash-o', + 'bicycle', + 'binoculars', + 'birthday-cake', + 'bitbucket', + 'bitbucket-square', + 'bitcoin', + 'black-tie', + 'blind', + 'bluetooth', + 'bluetooth-b', + 'bold', + 'bolt', + 'bomb', + 'book', + 'bookmark', + 'bookmark-o', + 'braille', + 'briefcase', + 'bug', + 'building', + 'building-o', + 'bullhorn', + 'bullseye', + 'bus', + 'buysellads', + 'cab', + 'calculator', + 'calendar', + 'calendar-check-o', + 'calendar-minus-o', + 'calendar-o', + 'calendar-plus-o', + 'calendar-times-o', + 'camera', + 'camera-retro', + 'caret-down', + 'caret-left', + 'caret-square-o-left', + 'caret-square-o-up', + 'caret-up', + 'cart-arrow-down', + 'cart-plus', + 'cc', + 'cc-amex', + 'cc-diners-club', + 'cc-discover', + 'cc-jcb', + 'cc-mastercard', + 'cc-paypal', + 'cc-stripe', + 'cc-visa', + 'certificate', + 'chain', + 'chain-broken', + 'check', + 'check-circle', + 'check-circle-o', + 'check-square', + 'check-square-o', + 'chevron-circle-left', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-up', + 'child', + 'chrome', + 'circle', + 'circle-o', + 'circle-o-notch', + 'circle-thin', + 'clipboard', + 'clock-o', + 'clone', + 'close', + 'cloud', + 'cloud-download', + 'cloud-upload', + 'cny', + 'code', + 'code-fork', + 'codepen', + 'codiepie', + 'coffee', + 'cog', + 'cogs', + 'columns', + 'comment', + 'comment-o', + 'commenting', + 'commenting-o', + 'comments', + 'comments-o', + 'compass', + 'compress', + 'connectdevelop', + 'contao', + 'copy', + 'copyright', + 'creative-commons', + 'credit-card', + 'credit-card-alt', + 'crop', + 'crosshairs', + 'css3', + 'cube', + 'cubes', + 'cut', + 'cutlery', + 'dashboard', + 'dashcube', + 'database', + 'deaf', + 'dedent', + 'delicious', + 'desktop', + 'deviantart', + 'diamond', + 'digg', + 'dollar', + 'dot-circle-o', + 'download', + 'dribbble', + 'drivers-license', + 'drivers-license-o', + 'dropbox', + 'drupal', + 'edge', + 'edit', + 'eercast', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'empire', + 'envelope', + 'envelope-o', + 'envelope-open', + 'envelope-open-o', + 'envelope-square', + 'envira', + 'eraser', + 'etsy', + 'eur', + 'exchange', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expeditedssl', + 'external-link', + 'external-link-square', + 'eye', + 'eye-slash', + 'eyedropper', + 'fa', + 'facebook', + 'facebook-official', + 'facebook-square', + 'fast-backward', + 'fax', + 'feed', + 'female', + 'fighter-jet', + 'file', + 'file-archive-o', + 'file-audio-o', + 'file-code-o', + 'file-excel-o', + 'file-image-o', + 'file-movie-o', + 'file-o', + 'file-pdf-o', + 'file-powerpoint-o', + 'file-text', + 'file-text-o', + 'file-word-o', + 'film', + 'filter', + 'fire', + 'fire-extinguisher', + 'firefox', + 'first-order', + 'flag', + 'flag-checkered', + 'flag-o', + 'flask', + 'flickr', + 'floppy-o', + 'folder', + 'folder-o', + 'folder-open', + 'folder-open-o', + 'font', + 'fonticons', + 'fort-awesome', + 'forumbee', + 'foursquare', + 'free-code-camp', + 'frown-o', + 'futbol-o', + 'gamepad', + 'gavel', + 'gbp', + 'genderless', + 'get-pocket', + 'gg', + 'gg-circle', + 'gift', + 'git', + 'git-square', + 'github', + 'github-alt', + 'github-square', + 'gitlab', + 'gittip', + 'glass', + 'glide', + 'glide-g', + 'globe', + 'google', + 'google-plus', + 'google-plus-circle', + 'google-plus-square', + 'google-wallet', + 'graduation-cap', + 'grav', + 'group', + 'h-square', + 'hacker-news', + 'hand-grab-o', + 'hand-lizard-o', + 'hand-o-left', + 'hand-o-up', + 'hand-paper-o', + 'hand-peace-o', + 'hand-pointer-o', + 'hand-scissors-o', + 'hand-spock-o', + 'handshake-o', + 'hashtag', + 'hdd-o', + 'header', + 'headphones', + 'heart', + 'heart-o', + 'heartbeat', + 'history', + 'home', + 'hospital-o', + 'hourglass', + 'hourglass-1', + 'hourglass-2', + 'hourglass-3', + 'hourglass-o', + 'houzz', + 'html5', + 'i-cursor', + 'id-badge', + 'ils', + 'image', + 'imdb', + 'inbox', + 'indent', + 'industry', + 'info', + 'info-circle', + 'inr', + 'instagram', + 'internet-explorer', + 'intersex', + 'ioxhost', + 'italic', + 'joomla', + 'jsfiddle', + 'key', + 'keyboard-o', + 'krw', + 'language', + 'laptop', + 'lastfm', + 'lastfm-square', + 'leaf', + 'leanpub', + 'lemon-o', + 'level-up', + 'life-bouy', + 'lightbulb-o', + 'line-chart', + 'linkedin', + 'linkedin-square', + 'linode', + 'linux', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'long-arrow-left', + 'long-arrow-up', + 'low-vision', + 'magic', + 'magnet', + 'mail-forward', + 'mail-reply', + 'mail-reply-all', + 'male', + 'map', + 'map-marker', + 'map-o', + 'map-pin', + 'map-signs', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'maxcdn', + 'meanpath', + 'medium', + 'medkit', + 'meetup', + 'meh-o', + 'mercury', + 'microchip', + 'microphone', + 'microphone-slash', + 'minus', + 'minus-circle', + 'minus-square', + 'minus-square-o', + 'mixcloud', + 'mobile', + 'modx', + 'money', + 'moon-o', + 'motorcycle', + 'mouse-pointer', + 'music', + 'neuter', + 'newspaper-o', + 'object-group', + 'object-ungroup', + 'odnoklassniki', + 'odnoklassniki-square', + 'opencart', + 'openid', + 'opera', + 'optin-monster', + 'pagelines', + 'paint-brush', + 'paper-plane', + 'paper-plane-o', + 'paperclip', + 'paragraph', + 'pause', + 'pause-circle', + 'pause-circle-o', + 'paw', + 'paypal', + 'pencil', + 'pencil-square', + 'percent', + 'phone', + 'phone-square', + 'pie-chart', + 'pied-piper', + 'pied-piper-alt', + 'pied-piper-pp', + 'pinterest', + 'pinterest-p', + 'pinterest-square', + 'plane', + 'play', + 'play-circle', + 'play-circle-o', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'plus-square-o', + 'podcast', + 'power-off', + 'print', + 'product-hunt', + 'puzzle-piece', + 'qq', + 'qrcode', + 'question', + 'question-circle', + 'question-circle-o', + 'quora', + 'quote-left', + 'quote-right', + 'ra', + 'random', + 'ravelry', + 'recycle', + 'reddit', + 'reddit-alien', + 'reddit-square', + 'refresh', + 'registered', + 'renren', + 'repeat', + 'retweet', + 'road', + 'rocket', + 'rotate-left', + 'rouble', + 'rss-square', + 'safari', + 'scribd', + 'search', + 'search-minus', + 'search-plus', + 'sellsy', + 'server', + 'share-alt', + 'share-alt-square', + 'share-square', + 'share-square-o', + 'shield', + 'ship', + 'shirtsinbulk', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'sign-in', + 'sign-language', + 'sign-out', + 'signal', + 'simplybuilt', + 'sitemap', + 'skyatlas', + 'skype', + 'slack', + 'sliders', + 'slideshare', + 'smile-o', + 'snapchat', + 'snapchat-ghost', + 'snapchat-square', + 'snowflake-o', + 'sort', + 'sort-alpha-asc', + 'sort-alpha-desc', + 'sort-amount-asc', + 'sort-amount-desc', + 'sort-asc', + 'sort-numeric-asc', + 'sort-numeric-desc', + 'soundcloud', + 'space-shuttle', + 'spinner', + 'spoon', + 'spotify', + 'square', + 'square-o', + 'stack-exchange', + 'stack-overflow', + 'star', + 'star-half', + 'star-half-empty', + 'star-o', + 'steam', + 'steam-square', + 'step-backward', + 'stethoscope', + 'sticky-note', + 'sticky-note-o', + 'stop', + 'stop-circle', + 'stop-circle-o', + 'street-view', + 'strikethrough', + 'stumbleupon', + 'stumbleupon-circle', + 'subscript', + 'subway', + 'suitcase', + 'sun-o', + 'superpowers', + 'superscript', + 'table', + 'tablet', + 'tag', + 'tags', + 'tasks', + 'telegram', + 'television', + 'tencent-weibo', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'themeisle', + 'thermometer', + 'thermometer-0', + 'thermometer-1', + 'thermometer-2', + 'thermometer-3', + 'thumb-tack', + 'thumbs-down', + 'thumbs-o-up', + 'thumbs-up', + 'ticket', + 'times-circle', + 'times-circle-o', + 'times-rectangle', + 'times-rectangle-o', + 'tint', + 'toggle-off', + 'toggle-on', + 'trademark', + 'train', + 'transgender-alt', + 'trash', + 'trash-o', + 'tree', + 'trello', + 'tripadvisor', + 'trophy', + 'truck', + 'try', + 'tty', + 'tumblr', + 'tumblr-square', + 'twitch', + 'twitter', + 'twitter-square', + 'umbrella', + 'underline', + 'universal-access', + 'unlock', + 'unlock-alt', + 'upload', + 'usb', + 'user', + 'user-circle', + 'user-circle-o', + 'user-md', + 'user-o', + 'user-plus', + 'user-secret', + 'user-times', + 'venus', + 'venus-double', + 'venus-mars', + 'viacoin', + 'viadeo', + 'viadeo-square', + 'video-camera', + 'vimeo', + 'vimeo-square', + 'vine', + 'vk', + 'volume-control-phone', + 'volume-down', + 'volume-off', + 'volume-up', + 'wechat', + 'weibo', + 'whatsapp', + 'wheelchair', + 'wheelchair-alt', + 'wifi', + 'wikipedia-w', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'windows', + 'wordpress', + 'wpbeginner', + 'wpexplorer', + 'wpforms', + 'wrench', + 'xing', + 'xing-square', + 'y-combinator', + 'yahoo', + 'yelp', + 'yoast', + 'youtube', + 'youtube-play', + 'youtube-square', + ], + 'fa-solid:': [ + 'abacus', + 'ad', + 'address-book', + 'address-card', + 'adjust', + 'air-freshener', + 'align-center', + 'align-justify', + 'align-left', + 'align-right', + 'allergies', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'angle-double-down', + 'angle-double-left', + 'angle-double-right', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-right', + 'angle-up', + 'angry', + 'ankh', + 'apple-alt', + 'archive', + 'archway', + 'arrow-alt-circle-down', + 'arrow-alt-circle-left', + 'arrow-alt-circle-right', + 'arrow-alt-circle-up', + 'arrow-circle-down', + 'arrow-circle-left', + 'arrow-circle-right', + 'arrow-circle-up', + 'arrow-down', + 'arrow-left', + 'arrow-right', + 'arrow-up', + 'arrows-alt', + 'arrows-alt-h', + 'arrows-alt-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'atlas', + 'atom', + 'audio-description', + 'award', + 'baby', + 'baby-carriage', + 'backspace', + 'backward', + 'bacon', + 'bacteria', + 'bacterium', + 'bahai', + 'balance-scale', + 'balance-scale-left', + 'balance-scale-right', + 'ban', + 'band-aid', + 'barcode', + 'bars', + 'baseball-ball', + 'basketball-ball', + 'bath', + 'battery-empty', + 'battery-full', + 'battery-half', + 'battery-quarter', + 'battery-three-quarters', + 'bed', + 'beer', + 'bell', + 'bell-slash', + 'bezier-curve', + 'bible', + 'bicycle', + 'biking', + 'binoculars', + 'biohazard', + 'birthday-cake', + 'blender', + 'blender-phone', + 'blind', + 'blog', + 'bold', + 'bolt', + 'bomb', + 'bone', + 'bong', + 'book', + 'book-dead', + 'book-medical', + 'book-open', + 'book-reader', + 'bookmark', + 'border-all', + 'border-none', + 'border-style', + 'bowling-ball', + 'box', + 'box-open', + 'box-tissue', + 'boxes', + 'braille', + 'brain', + 'bread-slice', + 'briefcase', + 'briefcase-medical', + 'broadcast-tower', + 'broom', + 'brush', + 'bug', + 'building', + 'bullhorn', + 'bullseye', + 'burn', + 'bus', + 'bus-alt', + 'business-time', + 'calculator', + 'calculator-alt', + 'calendar', + 'calendar-alt', + 'calendar-check', + 'calendar-day', + 'calendar-minus', + 'calendar-plus', + 'calendar-times', + 'calendar-week', + 'camera', + 'camera-retro', + 'campground', + 'candy-cane', + 'cannabis', + 'capsules', + 'car', + 'car-alt', + 'car-battery', + 'car-crash', + 'car-side', + 'caravan', + 'caret-down', + 'caret-left', + 'caret-right', + 'caret-square-down', + 'caret-square-left', + 'caret-square-right', + 'caret-square-up', + 'caret-up', + 'carrot', + 'cart-arrow-down', + 'cart-plus', + 'cash-register', + 'cat', + 'certificate', + 'chair', + 'chalkboard', + 'chalkboard-teacher', + 'charging-station', + 'chart-area', + 'chart-bar', + 'chart-line', + 'chart-pie', + 'check', + 'check-circle', + 'check-double', + 'check-square', + 'cheese', + 'chess', + 'chess-bishop', + 'chess-board', + 'chess-king', + 'chess-knight', + 'chess-pawn', + 'chess-queen', + 'chess-rook', + 'chevron-circle-down', + 'chevron-circle-left', + 'chevron-circle-right', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-right', + 'chevron-up', + 'child', + 'church', + 'circle', + 'circle-notch', + 'city', + 'clinic-medical', + 'clipboard', + 'clipboard-check', + 'clipboard-list', + 'clock', + 'clone', + 'closed-captioning', + 'cloud', + 'cloud-download-alt', + 'cloud-meatball', + 'cloud-moon', + 'cloud-moon-rain', + 'cloud-rain', + 'cloud-showers-heavy', + 'cloud-sun', + 'cloud-sun-rain', + 'cloud-upload-alt', + 'cocktail', + 'code', + 'code-branch', + 'coffee', + 'cog', + 'cogs', + 'coins', + 'columns', + 'comment', + 'comment-alt', + 'comment-dollar', + 'comment-dots', + 'comment-medical', + 'comment-slash', + 'comments', + 'comments-dollar', + 'compact-disc', + 'compass', + 'compress', + 'compress-alt', + 'compress-arrows-alt', + 'concierge-bell', + 'cookie', + 'cookie-bite', + 'copy', + 'copyright', + 'couch', + 'credit-card', + 'crop', + 'crop-alt', + 'cross', + 'crosshairs', + 'crow', + 'crown', + 'crutch', + 'cube', + 'cubes', + 'cut', + 'database', + 'deaf', + 'democrat', + 'desktop', + 'dharmachakra', + 'diagnoses', + 'dice', + 'dice-d20', + 'dice-d6', + 'dice-five', + 'dice-four', + 'dice-one', + 'dice-six', + 'dice-three', + 'dice-two', + 'digital-tachograph', + 'directions', + 'disease', + 'divide', + 'dizzy', + 'dna', + 'dog', + 'dollar-sign', + 'dolly', + 'dolly-flatbed', + 'donate', + 'door-closed', + 'door-open', + 'dot-circle', + 'dove', + 'download', + 'drafting-compass', + 'dragon', + 'draw-polygon', + 'drum', + 'drum-steelpan', + 'drumstick-bite', + 'dumbbell', + 'dumpster', + 'dumpster-fire', + 'dungeon', + 'edit', + 'egg', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'empty-set', + 'envelope', + 'envelope-open', + 'envelope-open-text', + 'envelope-square', + 'equals', + 'eraser', + 'ethernet', + 'euro-sign', + 'exchange-alt', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expand-alt', + 'expand-arrows-alt', + 'external-link-alt', + 'external-link-square-alt', + 'eye', + 'eye-dropper', + 'eye-slash', + 'fan', + 'fast-backward', + 'fast-forward', + 'faucet', + 'fax', + 'feather', + 'feather-alt', + 'female', + 'fighter-jet', + 'file', + 'file-alt', + 'file-archive', + 'file-audio', + 'file-code', + 'file-contract', + 'file-csv', + 'file-download', + 'file-excel', + 'file-export', + 'file-image', + 'file-import', + 'file-invoice', + 'file-invoice-dollar', + 'file-medical', + 'file-medical-alt', + 'file-pdf', + 'file-powerpoint', + 'file-prescription', + 'file-signature', + 'file-upload', + 'file-video', + 'file-word', + 'fill', + 'fill-drip', + 'film', + 'filter', + 'fingerprint', + 'fire', + 'fire-alt', + 'fire-extinguisher', + 'first-aid', + 'fish', + 'fist-raised', + 'flag', + 'flag-checkered', + 'flag-usa', + 'flask', + 'flushed', + 'folder', + 'folder-minus', + 'folder-open', + 'folder-plus', + 'font', + 'football-ball', + 'forward', + 'frog', + 'frown', + 'frown-open', + 'function', + 'funnel-dollar', + 'futbol', + 'gamepad', + 'gas-pump', + 'gavel', + 'gem', + 'genderless', + 'ghost', + 'gift', + 'gifts', + 'glass-cheers', + 'glass-martini', + 'glass-martini-alt', + 'glass-whiskey', + 'glasses', + 'globe', + 'globe-africa', + 'globe-americas', + 'globe-asia', + 'globe-europe', + 'golf-ball', + 'gopuram', + 'graduation-cap', + 'greater-than', + 'greater-than-equal', + 'grimace', + 'grin', + 'grin-alt', + 'grin-beam', + 'grin-beam-sweat', + 'grin-hearts', + 'grin-squint', + 'grin-squint-tears', + 'grin-stars', + 'grin-tears', + 'grin-tongue', + 'grin-tongue-squint', + 'grin-tongue-wink', + 'grin-wink', + 'grip-horizontal', + 'grip-lines', + 'grip-lines-vertical', + 'grip-vertical', + 'guitar', + 'h-square', + 'hamburger', + 'hammer', + 'hamsa', + 'hand-holding', + 'hand-holding-heart', + 'hand-holding-medical', + 'hand-holding-usd', + 'hand-holding-water', + 'hand-lizard', + 'hand-middle-finger', + 'hand-paper', + 'hand-peace', + 'hand-point-down', + 'hand-point-left', + 'hand-point-right', + 'hand-point-up', + 'hand-pointer', + 'hand-rock', + 'hand-scissors', + 'hand-sparkles', + 'hand-spock', + 'hands', + 'hands-helping', + 'hands-wash', + 'handshake', + 'handshake-alt-slash', + 'handshake-slash', + 'hanukiah', + 'hard-hat', + 'hashtag', + 'hat-cowboy', + 'hat-cowboy-side', + 'hat-wizard', + 'hdd', + 'head-side-cough', + 'head-side-cough-slash', + 'head-side-mask', + 'head-side-virus', + 'heading', + 'headphones', + 'headphones-alt', + 'headset', + 'heart', + 'heart-broken', + 'heartbeat', + 'helicopter', + 'highlighter', + 'hiking', + 'hippo', + 'history', + 'hockey-puck', + 'holly-berry', + 'home', + 'horse', + 'horse-head', + 'hospital', + 'hospital-alt', + 'hospital-symbol', + 'hospital-user', + 'hot-tub', + 'hotdog', + 'hotel', + 'hourglass', + 'hourglass-end', + 'hourglass-half', + 'hourglass-start', + 'house-damage', + 'house-user', + 'hryvnia', + 'i-cursor', + 'ice-cream', + 'icicles', + 'icons', + 'id-badge', + 'id-card', + 'id-card-alt', + 'igloo', + 'image', + 'images', + 'inbox', + 'indent', + 'industry', + 'infinity', + 'info', + 'info-circle', + 'integral', + 'intersection', + 'italic', + 'jedi', + 'joint', + 'journal-whills', + 'kaaba', + 'key', + 'keyboard', + 'khanda', + 'kiss', + 'kiss-beam', + 'kiss-wink-heart', + 'kiwi-bird', + 'lambda', + 'landmark', + 'language', + 'laptop', + 'laptop-code', + 'laptop-house', + 'laptop-medical', + 'laugh', + 'laugh-beam', + 'laugh-squint', + 'laugh-wink', + 'layer-group', + 'leaf', + 'lemon', + 'less-than', + 'less-than-equal', + 'level-down-alt', + 'level-up-alt', + 'life-ring', + 'lightbulb', + 'link', + 'lira-sign', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'lock-open', + 'long-arrow-alt-down', + 'long-arrow-alt-left', + 'long-arrow-alt-right', + 'long-arrow-alt-up', + 'low-vision', + 'luggage-cart', + 'lungs', + 'lungs-virus', + 'magic', + 'magnet', + 'mail-bulk', + 'male', + 'map', + 'map-marked', + 'map-marked-alt', + 'map-marker', + 'map-marker-alt', + 'map-pin', + 'map-signs', + 'marker', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'mask', + 'medal', + 'medkit', + 'meh', + 'meh-blank', + 'meh-rolling-eyes', + 'memory', + 'menorah', + 'mercury', + 'meteor', + 'microchip', + 'microphone', + 'microphone-alt', + 'microphone-alt-slash', + 'microphone-slash', + 'microscope', + 'minus', + 'minus-circle', + 'minus-square', + 'mitten', + 'mobile', + 'mobile-alt', + 'money-bill', + 'money-bill-alt', + 'money-bill-wave', + 'money-bill-wave-alt', + 'money-check', + 'money-check-alt', + 'monument', + 'moon', + 'mortar-pestle', + 'mosque', + 'motorcycle', + 'mountain', + 'mouse', + 'mouse-pointer', + 'mug-hot', + 'music', + 'network-wired', + 'neuter', + 'newspaper', + 'not-equal', + 'notes-medical', + 'object-group', + 'object-ungroup', + 'oil-can', + 'om', + 'omega', + 'otter', + 'outdent', + 'pager', + 'paint-brush', + 'paint-roller', + 'palette', + 'pallet', + 'paper-plane', + 'paperclip', + 'parachute-box', + 'paragraph', + 'parking', + 'passport', + 'pastafarianism', + 'paste', + 'pause', + 'pause-circle', + 'paw', + 'peace', + 'pen', + 'pen-alt', + 'pen-fancy', + 'pen-nib', + 'pen-square', + 'pencil-alt', + 'pencil-ruler', + 'people-arrows', + 'people-carry', + 'pepper-hot', + 'percent', + 'percentage', + 'person-booth', + 'phone', + 'phone-alt', + 'phone-slash', + 'phone-square', + 'phone-square-alt', + 'phone-volume', + 'photo-video', + 'pi', + 'piggy-bank', + 'pills', + 'pizza-slice', + 'place-of-worship', + 'plane', + 'plane-arrival', + 'plane-departure', + 'plane-slash', + 'play', + 'play-circle', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'podcast', + 'poll', + 'poll-h', + 'poo', + 'poo-storm', + 'poop', + 'portrait', + 'pound-sign', + 'power-off', + 'pray', + 'praying-hands', + 'prescription', + 'prescription-bottle', + 'prescription-bottle-alt', + 'print', + 'procedures', + 'project-diagram', + 'pump-medical', + 'pump-soap', + 'puzzle-piece', + 'qrcode', + 'question', + 'question-circle', + 'quidditch', + 'quote-left', + 'quote-right', + 'quran', + 'radiation', + 'radiation-alt', + 'rainbow', + 'random', + 'receipt', + 'record-vinyl', + 'recycle', + 'redo', + 'redo-alt', + 'registered', + 'remove-format', + 'reply', + 'reply-all', + 'republican', + 'restroom', + 'retweet', + 'ribbon', + 'ring', + 'road', + 'robot', + 'rocket', + 'route', + 'rss', + 'rss-square', + 'ruble-sign', + 'ruler', + 'ruler-combined', + 'ruler-horizontal', + 'ruler-vertical', + 'running', + 'rupee-sign', + 'sad-cry', + 'sad-tear', + 'satellite', + 'satellite-dish', + 'save', + 'school', + 'screwdriver', + 'scroll', + 'sd-card', + 'search', + 'search-dollar', + 'search-location', + 'search-minus', + 'search-plus', + 'seedling', + 'server', + 'shapes', + 'share', + 'share-alt', + 'share-alt-square', + 'share-square', + 'shekel-sign', + 'shield-alt', + 'shield-virus', + 'ship', + 'shipping-fast', + 'shoe-prints', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'shuttle-van', + 'sigma', + 'sign', + 'sign-in-alt', + 'sign-language', + 'sign-out-alt', + 'signal', + 'signal-alt', + 'signal-alt-slash', + 'signal-slash', + 'signature', + 'sim-card', + 'sink', + 'sitemap', + 'skating', + 'skiing', + 'skiing-nordic', + 'skull', + 'skull-crossbones', + 'slash', + 'sleigh', + 'sliders-h', + 'smile', + 'smile-beam', + 'smile-wink', + 'smog', + 'smoking', + 'smoking-ban', + 'sms', + 'snowboarding', + 'snowflake', + 'snowman', + 'snowplow', + 'soap', + 'socks', + 'solar-panel', + 'sort', + 'sort-alpha-down', + 'sort-alpha-down-alt', + 'sort-alpha-up', + 'sort-alpha-up-alt', + 'sort-amount-down', + 'sort-amount-down-alt', + 'sort-amount-up', + 'sort-amount-up-alt', + 'sort-down', + 'sort-numeric-down', + 'sort-numeric-down-alt', + 'sort-numeric-up', + 'sort-numeric-up-alt', + 'sort-up', + 'spa', + 'space-shuttle', + 'spell-check', + 'spider', + 'spinner', + 'splotch', + 'spray-can', + 'square', + 'square-full', + 'square-root', + 'square-root-alt', + 'stamp', + 'star', + 'star-and-crescent', + 'star-half', + 'star-half-alt', + 'star-of-david', + 'star-of-life', + 'step-backward', + 'step-forward', + 'stethoscope', + 'sticky-note', + 'stop', + 'stop-circle', + 'stopwatch', + 'stopwatch-20', + 'store', + 'store-alt', + 'store-alt-slash', + 'store-slash', + 'stream', + 'street-view', + 'strikethrough', + 'stroopwafel', + 'subscript', + 'subway', + 'suitcase', + 'suitcase-rolling', + 'sun', + 'superscript', + 'surprise', + 'swatchbook', + 'swimmer', + 'swimming-pool', + 'synagogue', + 'sync', + 'sync-alt', + 'syringe', + 'table', + 'table-tennis', + 'tablet', + 'tablet-alt', + 'tablets', + 'tachometer-alt', + 'tag', + 'tags', + 'tally', + 'tape', + 'tasks', + 'taxi', + 'teeth', + 'teeth-open', + 'temperature-high', + 'temperature-low', + 'tenge', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'theater-masks', + 'thermometer', + 'thermometer-empty', + 'thermometer-full', + 'thermometer-half', + 'thermometer-quarter', + 'thermometer-three-quarters', + 'theta', + 'thumbs-down', + 'thumbs-up', + 'thumbtack', + 'ticket-alt', + 'tilde', + 'times', + 'times-circle', + 'tint', + 'tint-slash', + 'tired', + 'toggle-off', + 'toggle-on', + 'toilet', + 'toilet-paper', + 'toilet-paper-slash', + 'toolbox', + 'tools', + 'tooth', + 'torah', + 'torii-gate', + 'tractor', + 'trademark', + 'traffic-light', + 'trailer', + 'train', + 'tram', + 'transgender', + 'transgender-alt', + 'trash', + 'trash-alt', + 'trash-restore', + 'trash-restore-alt', + 'tree', + 'trophy', + 'truck', + 'truck-loading', + 'truck-monster', + 'truck-moving', + 'truck-pickup', + 'tshirt', + 'tty', + 'tv', + 'umbrella', + 'umbrella-beach', + 'underline', + 'undo', + 'undo-alt', + 'union', + 'universal-access', + 'university', + 'unlink', + 'unlock', + 'unlock-alt', + 'upload', + 'user', + 'user-alt', + 'user-alt-slash', + 'user-astronaut', + 'user-check', + 'user-circle', + 'user-clock', + 'user-cog', + 'user-edit', + 'user-friends', + 'user-graduate', + 'user-injured', + 'user-lock', + 'user-md', + 'user-minus', + 'user-ninja', + 'user-nurse', + 'user-plus', + 'user-secret', + 'user-shield', + 'user-slash', + 'user-tag', + 'user-tie', + 'user-times', + 'users', + 'users-cog', + 'users-slash', + 'utensil-spoon', + 'utensils', + 'value-absolute', + 'vector-square', + 'venus', + 'venus-double', + 'venus-mars', + 'vest', + 'vest-patches', + 'vial', + 'vials', + 'video', + 'video-slash', + 'vihara', + 'virus', + 'virus-slash', + 'viruses', + 'voicemail', + 'volleyball-ball', + 'volume', + 'volume-down', + 'volume-mute', + 'volume-off', + 'volume-slash', + 'volume-up', + 'vote-yea', + 'vr-cardboard', + 'walking', + 'wallet', + 'warehouse', + 'water', + 'wave-square', + 'weight', + 'weight-hanging', + 'wheelchair', + 'wifi', + 'wifi-slash', + 'wind', + 'window-close', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'wine-bottle', + 'wine-glass', + 'wine-glass-alt', + 'won-sign', + 'wrench', + 'x-ray', + 'yen-sign', + 'yin-yang', + ], + 'gravity-ui:': [ + 'abbr-api', + 'abbr-ml', + 'abbr-ql', + 'abbr-sql', + 'abbr-zip', + 'antenna-signal', + 'aperture', + 'archive', + 'arrow-chevron-down', + 'arrow-chevron-left', + 'arrow-chevron-right', + 'arrow-chevron-up', + 'arrow-down', + 'arrow-down-from-line', + 'arrow-down-to-line', + 'arrow-down-to-square', + 'arrow-left', + 'arrow-left-from-line', + 'arrow-left-to-line', + 'arrow-right', + 'arrow-right-arrow-left', + 'arrow-right-from-line', + 'arrow-right-from-square', + 'arrow-right-to-line', + 'arrow-right-to-square', + 'arrow-rotate-left', + 'arrow-rotate-right', + 'arrow-shape-down', + 'arrow-shape-down-from-line', + 'arrow-shape-down-to-line', + 'arrow-shape-left', + 'arrow-shape-left-from-line', + 'arrow-shape-left-to-line', + 'arrow-shape-right', + 'arrow-shape-right-from-line', + 'arrow-shape-right-to-line', + 'arrow-shape-turn-up-left', + 'arrow-shape-turn-up-right', + 'arrow-shape-up', + 'arrow-shape-up-from-line', + 'arrow-shape-up-to-line', + 'arrow-up', + 'arrow-up-arrow-down', + 'arrow-up-from-line', + 'arrow-up-from-square', + 'arrow-up-from-square-slash', + 'arrow-up-right-from-square', + 'arrow-up-to-line', + 'arrow-uturn-ccw-down', + 'arrow-uturn-ccw-left', + 'arrow-uturn-ccw-right', + 'arrow-uturn-cw-down', + 'arrow-uturn-cw-left', + 'arrow-uturn-cw-right', + 'arrows-3-rotate-left', + 'arrows-3-rotate-left-letter-a', + 'arrows-3-rotate-right', + 'arrows-opposite-to-dots', + 'arrows-rotate-left', + 'arrows-rotate-left-slash', + 'arrows-rotate-right', + 'arrows-rotate-right-slash', + 'at', + 'ban', + 'bars', + 'bars-ascending-align-center', + 'bars-ascending-align-left', + 'bars-ascending-align-left-arrow-down', + 'bars-ascending-align-left-arrow-up', + 'bars-ascending-align-right', + 'bars-descending-align-center', + 'bars-descending-align-left', + 'bars-descending-align-left-arrow-down', + 'bars-descending-align-left-arrow-up', + 'bars-descending-align-right', + 'bars-play', + 'bars-unaligned', + 'bell', + 'bell-dot', + 'bell-slash', + 'binoculars', + 'bold', + 'book', + 'book-open', + 'bookmark', + 'bookmark-fill', + 'box', + 'boxes-3', + 'branches-down', + 'branches-right', + 'branches-right-arrow-right', + 'briefcase', + 'broadcast-signal', + 'broom-motion', + 'brush', + 'bucket', + 'bucket-paint', + 'bug', + 'bulb', + 'calculator', + 'calendar', + 'camera', + 'car', + 'card-club', + 'card-diamond', + 'card-heart', + 'card-spade', + 'caret-down', + 'caret-left', + 'caret-right', + 'caret-up', + 'carets-expand-vertical', + 'chart-area-stacked', + 'chart-area-stacked-normalized', + 'chart-bar', + 'chart-bar-stacked', + 'chart-column', + 'chart-column-stacked', + 'chart-donut', + 'chart-line', + 'chart-line-label', + 'chart-mixed', + 'chart-pie', + 'chart-treemap', + 'check', + 'cherry', + 'chevron-down', + 'chevron-down-wide', + 'chevron-left', + 'chevron-right', + 'chevron-up', + 'chevron-up-wide', + 'chevrons-collapse-from-lines', + 'chevrons-collapse-horizontal', + 'chevrons-collapse-to-line', + 'chevrons-collapse-up-right', + 'chevrons-collapse-vertical', + 'chevrons-down', + 'chevrons-down-wide', + 'chevrons-expand-from-line', + 'chevrons-expand-horizontal', + 'chevrons-expand-to-lines', + 'chevrons-expand-up-right', + 'chevrons-expand-vertical', + 'chevrons-left', + 'chevrons-right', + 'chevrons-up', + 'chevrons-up-wide', + 'circle', + 'circle-arrow-down', + 'circle-arrow-down-fill', + 'circle-arrow-left', + 'circle-arrow-left-fill', + 'circle-arrow-right', + 'circle-arrow-right-fill', + 'circle-arrow-up', + 'circle-arrow-up-fill', + 'circle-check', + 'circle-check-fill', + 'circle-chevron-down', + 'circle-chevron-down-fill', + 'circle-chevron-left', + 'circle-chevron-left-fill', + 'circle-chevron-right', + 'circle-chevron-right-fill', + 'circle-chevron-up', + 'circle-chevron-up-fill', + 'circle-chevrons-down', + 'circle-chevrons-left', + 'circle-chevrons-right', + 'circle-chevrons-up', + 'circle-dashed', + 'circle-dollar', + 'circle-exclamation', + 'circle-exclamation-fill', + 'circle-fill', + 'circle-info', + 'circle-info-fill', + 'circle-letter-c', + 'circle-letter-f', + 'circle-letter-h', + 'circle-letter-p', + 'circle-letter-r', + 'circle-letter-s', + 'circle-letter-t', + 'circle-letter-w', + 'circle-link', + 'circle-minus', + 'circle-minus-fill', + 'circle-number-0', + 'circle-number-1', + 'circle-number-6', + 'circle-number-7', + 'circle-number-8', + 'circle-number-9', + 'circle-pause', + 'circle-play', + 'circle-plus', + 'circle-plus-fill', + 'circle-question', + 'circle-question-dot', + 'circle-question-fill', + 'circle-ruble', + 'circle-stop', + 'circle-xmark', + 'circle-xmark-fill', + 'circles-3-plus', + 'circles-4-diamond', + 'circles-4-square', + 'circles-5-random', + 'circles-concentric', + 'circles-intersection', + 'clock', + 'clock-arrow-rotate-left', + 'clock-fill', + 'cloud', + 'cloud-arrow-up-in', + 'cloud-check', + 'cloud-gear', + 'cloud-nut-hex', + 'clouds', + 'code', + 'code-commit', + 'code-commit-horizontal', + 'code-commits', + 'code-compare', + 'code-fork', + 'code-merge', + 'code-pull-request', + 'code-pull-request-arrow-left', + 'code-pull-request-arrow-right', + 'code-pull-request-check', + 'code-pull-request-xmark', + 'code-trunk', + 'comment', + 'comment-dot', + 'comment-fill', + 'comment-plus', + 'comment-slash', + 'comments', + 'compass', + 'copy', + 'copy-arrow-right', + 'copy-check', + 'copy-check-xmark', + 'copy-chevron-right', + 'copy-minus', + 'copy-picture', + 'copy-plus', + 'copy-transparent', + 'copy-xmark', + 'cpu', + 'cpus', + 'credit-card', + 'crop', + 'crown-diamond', + 'cube', + 'cubes-3', + 'cubes-3-overlap', + 'cup', + 'curly-brackets', + 'curly-brackets-function', + 'curly-brackets-lock', + 'database', + 'database-arrow-right', + 'database-fill', + 'database-magnifier', + 'databases', + 'databases-fill', + 'delete', + 'diamond', + 'diamond-exclamation', + 'diamond-fill', + 'dice-1', + 'dice-2', + 'dice-3', + 'dice-4', + 'dice-5', + 'dice-6', + 'display', + 'display-pulse', + 'dots-9', + 'droplet', + 'ear', + 'ellipsis', + 'ellipsis-vertical', + 'envelope', + 'envelope-open', + 'envelope-open-xmark', + 'equal', + 'eraser', + 'exclamation-shape', + 'eye', + 'eye-slash', + 'eyes-look-left', + 'eyes-look-right', + 'face-alien', + 'face-fun', + 'face-neutral', + 'face-neutral-dashed', + 'face-robot', + 'face-sad', + 'face-smile', + 'face-surprise', + 'factory', + 'file', + 'file-arrow-down', + 'file-arrow-left', + 'file-arrow-right', + 'file-arrow-right-out', + 'file-arrow-up', + 'file-check', + 'file-code', + 'file-dollar', + 'file-exclamation', + 'file-letter-p', + 'file-letter-w', + 'file-letter-x', + 'file-magnifier', + 'file-minus', + 'file-plus', + 'file-question', + 'file-ruble', + 'file-text', + 'file-xmark', + 'file-zipper', + 'files', + 'filmstrip', + 'fingerprint', + 'flag', + 'flame', + 'flask', + 'floppy-disk', + 'folder', + 'folder-arrow-down', + 'folder-arrow-left', + 'folder-arrow-right', + 'folder-arrow-up', + 'folder-arrow-up-in', + 'folder-check', + 'folder-code', + 'folder-exclamation', + 'folder-fill', + 'folder-flows', + 'folder-house', + 'folder-keyhole', + 'folder-lock', + 'folder-magnifier', + 'folder-open', + 'folder-open-fill', + 'folder-plus', + 'folder-tree', + 'folders', + 'font', + 'font-case', + 'font-cursor', + 'frame', + 'frames', + 'function', + 'funnel', + 'funnel-xmark', + 'gear', + 'gear-branches', + 'gear-dot', + 'gear-play', + 'geo', + 'geo-dots', + 'geo-fill', + 'geo-pin', + 'geo-polygons', + 'ghost', + 'gift', + 'globe', + 'gpu', + 'graduation-cap', + 'graph-node', + 'grip', + 'grip-horizontal', + 'hammer', + 'hand', + 'hand-ok', + 'hand-point-down', + 'hand-point-left', + 'hand-point-right', + 'hand-point-up', + 'hand-stop', + 'handset', + 'hard-drive', + 'hashtag', + 'heading', + 'heading-1', + 'heading-2', + 'heading-3', + 'heading-4', + 'heading-5', + 'heading-6', + 'headphones', + 'heart', + 'heart-crack', + 'heart-fill', + 'heart-pulse', + 'hierarchy', + 'house', + 'italic', + 'key', + 'keyboard', + 'layers', + 'layers-3-diagonal', + 'layers-vertical', + 'layout-cells', + 'layout-cells-large', + 'layout-columns', + 'layout-columns-3', + 'layout-footer', + 'layout-header', + 'layout-header-cells', + 'layout-header-cells-large', + 'layout-header-cells-large-fill', + 'layout-header-cells-large-letter-d', + 'layout-header-cells-large-thunderbolt', + 'layout-header-columns', + 'layout-header-cursor', + 'layout-header-side-content', + 'layout-list', + 'layout-rows', + 'layout-rows-3', + 'layout-side-content', + 'layout-side-content-left', + 'layout-side-content-right', + 'layout-split-columns', + 'layout-split-columns-3', + 'layout-split-rows', + 'layout-split-side-content-left', + 'layout-split-side-content-right', + 'layout-tabs', + 'letter-group', + 'letter-m', + 'life-ring', + 'link', + 'link-slash', + 'list-check', + 'list-check-lock', + 'list-ol', + 'list-timeline', + 'list-ul', + 'lock', + 'lock-open', + 'logo-acrobat', + 'logo-docker', + 'logo-draw-io', + 'logo-facebook', + 'logo-gitlab', + 'logo-linux', + 'logo-macos', + 'logo-markdown', + 'logo-mermaid', + 'logo-notion', + 'logo-osi', + 'logo-python', + 'logo-stack-overflow', + 'logo-telegram', + 'logo-ubuntu', + 'logo-windows', + 'logo-yandex', + 'logo-yandex-cloud', + 'logo-yandex-messenger', + 'logo-yandex-tracker', + 'magic-wand', + 'magnet', + 'magnifier', + 'magnifier-minus', + 'magnifier-plus', + 'map-pin', + 'map-pin-minus', + 'map-pin-plus', + 'math-intersection-shape', + 'math-operations', + 'math-union-shape', + 'medal', + 'megaphone', + 'microphone', + 'microphone-slash', + 'minus', + 'molecule', + 'moon', + 'mug', + 'music-note', + 'nodes-down', + 'nodes-left', + 'nodes-right', + 'nodes-up', + 'nut-hex', + 'object-align-bottom', + 'object-align-center-horizontal', + 'object-align-center-vertical', + 'object-align-justify-horizontal', + 'object-align-justify-vertical', + 'object-align-left', + 'object-align-right', + 'object-align-top', + 'objects-align-bottom', + 'objects-align-center-horizontal', + 'objects-align-center-vertical', + 'objects-align-justify-horizontal', + 'objects-align-justify-vertical', + 'objects-align-left', + 'objects-align-right', + 'objects-align-top', + 'octagon-xmark', + 'office-badge', + 'palette', + 'paper-plane', + 'paperclip', + 'passport', + 'pause', + 'pause-fill', + 'pencil', + 'pencil-to-line', + 'pencil-to-square', + 'percent', + 'person', + 'person-gear', + 'person-magnifier', + 'person-nut-hex', + 'person-pencil', + 'person-planet-earth', + 'person-plus', + 'person-speaker', + 'person-worker', + 'person-xmark', + 'persons', + 'persons-lock', + 'picture', + 'pill', + 'pin', + 'pin-fill', + 'pin-slash', + 'pin-slash-fill', + 'pipeline', + 'planet-earth', + 'play', + 'play-fill', + 'plug-connection', + 'plug-wire', + 'plus', + 'power', + 'printer', + 'pulse', + 'puzzle', + 'qr-code', + 'quote-close', + 'quote-open', + 'receipt', + 'rectangle-pulse', + 'rectangles-4', + 'rocket', + 'round-brackets', + 'route', + 'sack', + 'scales-balanced', + 'scales-unbalanced', + 'scissors', + 'seal-check', + 'seal-percent', + 'server', + 'shapes-3', + 'shapes-4', + 'shield', + 'shield-check', + 'shield-exclamation', + 'shield-keyhole', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shuffle', + 'signal', + 'sliders', + 'sliders-vertical', + 'smartphone', + 'snail', + 'snowflake', + 'sphere', + 'square', + 'square-article', + 'square-bars', + 'square-bars-vertical', + 'square-brackets', + 'square-brackets-bars-vertical', + 'square-brackets-letter-a', + 'square-chart-bar', + 'square-chart-column', + 'square-check', + 'square-dashed', + 'square-dashed-circle', + 'square-dashed-letter-a', + 'square-dashed-letter-t', + 'square-dashed-text', + 'square-dot', + 'square-exclamation', + 'square-fill', + 'square-hashtag', + 'square-letter-p', + 'square-letter-t', + 'square-list-ul', + 'square-minus', + 'square-plus', + 'square-xmark', + 'star', + 'star-fill', + 'stethoscope', + 'sticker', + 'stop', + 'stop-fill', + 'stopwatch', + 'strikethrough', + 'suitcase', + 'sun', + 't-shirt', + 'tag', + 'tag-dollar', + 'tag-ruble', + 'tags', + 'target', + 'target-dart', + 'terminal', + 'terminal-line', + 'text', + 'text-align-center', + 'text-align-justify', + 'text-align-left', + 'text-align-right', + 'text-indent', + 'text-outdent', + 'thumbs-down', + 'thumbs-down-fill', + 'thumbs-up', + 'thumbs-up-2', + 'thumbs-up-fill', + 'thunderbolt', + 'thunderbolt-fill', + 'ticket', + 'timeline', + 'timestamps', + 'traffic-light', + 'trash-bin', + 'tray', + 'triangle-down', + 'triangle-down-fill', + 'triangle-exclamation', + 'triangle-exclamation-fill', + 'triangle-left', + 'triangle-left-fill', + 'triangle-right', + 'triangle-right-fill', + 'triangle-thunderbolt', + 'triangle-up', + 'triangle-up-fill', + 'trolley', + 'tv', + 'tv-retro', + 'umbrella', + 'underline', + 'vault', + 'vector-circle', + 'vector-square', + 'video', + 'volume', + 'volume-fill', + 'volume-low', + 'volume-off', + 'volume-xmark', + 'weight-hanging', + 'wrench', + 'xmark', + ], + 'codicon:': [ + 'account', + 'activate-breakpoints', + 'add', + 'archive', + 'arrow-both', + 'arrow-circle-down', + 'arrow-circle-left', + 'arrow-circle-right', + 'arrow-circle-up', + 'arrow-down', + 'arrow-left', + 'arrow-right', + 'arrow-small-down', + 'arrow-small-left', + 'arrow-small-right', + 'arrow-small-up', + 'arrow-swap', + 'arrow-up', + 'attach', + 'azure', + 'azure-devops', + 'beaker', + 'beaker-stop', + 'bell', + 'bell-dot', + 'bell-slash', + 'bell-slash-dot', + 'bold', + 'book', + 'bookmark', + 'bracket-dot', + 'bracket-error', + 'briefcase', + 'broadcast', + 'browser', + 'bug', + 'calendar', + 'call-incoming', + 'call-outgoing', + 'case-sensitive', + 'check', + 'check-all', + 'checklist', + 'chevron-down', + 'chevron-left', + 'chevron-right', + 'chevron-up', + 'chip', + 'chrome-close', + 'chrome-maximize', + 'chrome-minimize', + 'chrome-restore', + 'circle', + 'circle-filled', + 'circle-large', + 'circle-large-filled', + 'circle-slash', + 'circle-small', + 'circle-small-filled', + 'circuit-board', + 'clear-all', + 'clippy', + 'close', + 'close-all', + 'cloud', + 'cloud-download', + 'cloud-upload', + 'code', + 'code-oss', + 'coffee', + 'collapse-all', + 'color-mode', + 'combine', + 'comment', + 'comment-discussion', + 'comment-draft', + 'comment-unresolved', + 'compass', + 'compass-active', + 'compass-dot', + 'copilot', + 'copy', + 'coverage', + 'credit-card', + 'dash', + 'dashboard', + 'database', + 'debug', + 'debug-all', + 'debug-alt', + 'debug-alt-small', + 'debug-breakpoint-conditional', + 'debug-breakpoint-conditional-unverified', + 'debug-breakpoint-data', + 'debug-breakpoint-data-unverified', + 'debug-breakpoint-function', + 'debug-breakpoint-function-unverified', + 'debug-breakpoint-log', + 'debug-breakpoint-log-unverified', + 'debug-breakpoint-unsupported', + 'debug-console', + 'debug-continue', + 'debug-continue-small', + 'debug-coverage', + 'debug-disconnect', + 'debug-line-by-line', + 'debug-pause', + 'debug-rerun', + 'debug-restart', + 'debug-restart-frame', + 'debug-reverse-continue', + 'debug-stackframe', + 'debug-stackframe-active', + 'debug-start', + 'debug-step-back', + 'debug-step-into', + 'debug-step-out', + 'debug-step-over', + 'debug-stop', + 'desktop-download', + 'device-camera', + 'device-camera-video', + 'device-mobile', + 'diff', + 'diff-added', + 'diff-ignored', + 'diff-modified', + 'diff-multiple', + 'diff-removed', + 'diff-renamed', + 'diff-single', + 'discard', + 'edit', + 'editor-layout', + 'ellipsis', + 'empty-window', + 'error', + 'error-small', + 'exclude', + 'expand-all', + 'export', + 'extensions', + 'eye', + 'eye-closed', + 'feedback', + 'file', + 'file-binary', + 'file-code', + 'file-media', + 'file-pdf', + 'file-submodule', + 'file-symlink-directory', + 'file-symlink-file', + 'file-zip', + 'files', + 'filter', + 'filter-filled', + 'flame', + 'fold', + 'fold-down', + 'fold-up', + 'folder', + 'folder-active', + 'folder-library', + 'folder-opened', + 'game', + 'gear', + 'gift', + 'gist', + 'gist-secret', + 'git-commit', + 'git-compare', + 'git-fetch', + 'git-merge', + 'git-pull-request', + 'git-pull-request-closed', + 'git-pull-request-create', + 'git-pull-request-draft', + 'git-pull-request-go-to-changes', + 'git-pull-request-new-changes', + 'git-stash', + 'git-stash-apply', + 'git-stash-pop', + 'github', + 'github-action', + 'github-alt', + 'github-inverted', + 'github-project', + 'globe', + 'go-to-file', + 'go-to-search', + 'grabber', + 'graph', + 'graph-left', + 'graph-line', + 'graph-scatter', + 'gripper', + 'group-by-ref-type', + 'heart', + 'heart-filled', + 'history', + 'home', + 'horizontal-rule', + 'hubot', + 'inbox', + 'indent', + 'info', + 'insert', + 'inspect', + 'issue-draft', + 'issue-reopened', + 'issues', + 'italic', + 'jersey', + 'json', + 'kebab-vertical', + 'key', + 'law', + 'layers', + 'layers-active', + 'layers-dot', + 'layout', + 'layout-activitybar-left', + 'layout-activitybar-right', + 'layout-centered', + 'layout-menubar', + 'layout-panel', + 'layout-panel-center', + 'layout-panel-justify', + 'layout-panel-left', + 'layout-panel-off', + 'layout-panel-right', + 'layout-sidebar-left', + 'layout-sidebar-left-off', + 'layout-sidebar-right', + 'layout-sidebar-right-off', + 'layout-statusbar', + 'library', + 'lightbulb', + 'lightbulb-autofix', + 'link', + 'link-external', + 'list-filter', + 'list-flat', + 'list-ordered', + 'list-selection', + 'list-tree', + 'list-unordered', + 'live-share', + 'loading', + 'location', + 'lock', + 'lock-small', + 'magnet', + 'mail', + 'mail-read', + 'map', + 'map-filled', + 'map-vertical', + 'map-vertical-filled', + 'markdown', + 'megaphone', + 'mention', + 'menu', + 'merge', + 'mic', + 'mic-filled', + 'milestone', + 'mirror', + 'mortar-board', + 'move', + 'multiple-windows', + 'music', + 'mute', + 'new-file', + 'new-folder', + 'newline', + 'no-newline', + 'note', + 'notebook', + 'notebook-template', + 'octoface', + 'open-preview', + 'organization', + 'output', + 'package', + 'paintcan', + 'pass', + 'pass-filled', + 'percentage', + 'person', + 'person-add', + 'piano', + 'pie-chart', + 'pin', + 'pinned', + 'pinned-dirty', + 'play', + 'play-circle', + 'plug', + 'preserve-case', + 'preview', + 'primitive-square', + 'project', + 'pulse', + 'question', + 'quote', + 'radio-tower', + 'reactions', + 'record', + 'record-keys', + 'record-small', + 'redo', + 'references', + 'refresh', + 'regex', + 'remote', + 'remote-explorer', + 'remove', + 'replace', + 'replace-all', + 'reply', + 'repo', + 'repo-clone', + 'repo-fetch', + 'repo-force-push', + 'repo-forked', + 'repo-pull', + 'repo-push', + 'report', + 'request-changes', + 'robot', + 'rocket', + 'root-folder', + 'root-folder-opened', + 'rss', + 'ruby', + 'run-above', + 'run-all', + 'run-all-coverage', + 'run-below', + 'run-coverage', + 'run-errors', + 'save', + 'save-all', + 'save-as', + 'screen-full', + 'screen-normal', + 'search', + 'search-fuzzy', + 'search-stop', + 'send', + 'server', + 'server-environment', + 'server-process', + 'settings', + 'settings-gear', + 'share', + 'shield', + 'sign-in', + 'sign-out', + 'smiley', + 'snake', + 'sort-precedence', + 'source-control', + 'sparkle', + 'sparkle-filled', + 'split-horizontal', + 'split-vertical', + 'squirrel', + 'star-empty', + 'star-full', + 'star-half', + 'stop-circle', + 'surround-with', + 'symbol-array', + 'symbol-boolean', + 'symbol-class', + 'symbol-color', + 'symbol-constant', + 'symbol-enum', + 'symbol-enum-member', + 'symbol-event', + 'symbol-field', + 'symbol-file', + 'symbol-interface', + 'symbol-key', + 'symbol-keyword', + 'symbol-method', + 'symbol-misc', + 'symbol-namespace', + 'symbol-numeric', + 'symbol-operator', + 'symbol-parameter', + 'symbol-property', + 'symbol-ruler', + 'symbol-snippet', + 'symbol-string', + 'symbol-structure', + 'symbol-variable', + 'sync', + 'sync-ignored', + 'table', + 'tag', + 'target', + 'tasklist', + 'telescope', + 'terminal', + 'terminal-bash', + 'terminal-cmd', + 'terminal-debian', + 'terminal-linux', + 'terminal-powershell', + 'terminal-tmux', + 'terminal-ubuntu', + 'text-size', + 'three-bars', + 'thumbsdown', + 'thumbsdown-filled', + 'thumbsup', + 'thumbsup-filled', + 'tools', + 'trash', + 'triangle-down', + 'triangle-left', + 'triangle-right', + 'triangle-up', + 'twitter', + 'type-hierarchy', + 'type-hierarchy-sub', + 'type-hierarchy-super', + 'unfold', + 'ungroup-by-ref-type', + 'unlock', + 'unmute', + 'unverified', + 'variable-group', + 'verified', + 'verified-filled', + 'versions', + 'vm', + 'vm-active', + 'vm-connect', + 'vm-outline', + 'vm-running', + 'vr', + 'vscode', + 'vscode-insiders', + 'wand', + 'warning', + 'watch', + 'whitespace', + 'whole-word', + 'window', + 'word-wrap', + 'workspace-trusted', + 'workspace-unknown', + 'workspace-untrusted', + 'zoom-in', + 'zoom-out', + ], + 'ph:': [ + 'map-pin-area', + 'map-pin-area-bold', + 'map-pin', + 'map-pin-line', + 'map-pin-simple-area', + ], +} diff --git a/src/components/dashboard/ImageViewer/index.ts b/src/components/dashboard/ImageViewer/index.ts new file mode 100644 index 0000000..6c35a81 --- /dev/null +++ b/src/components/dashboard/ImageViewer/index.ts @@ -0,0 +1,33 @@ +import ImageViewer from './src/ImageViewer.vue' +import { isClient } from '@/utils/is' +import { createVNode, render, type VNode } from 'vue' +import type { ImageViewerProps } from './src/types' + +let instance: Nullable = null + +export function createImageViewer(options: ImageViewerProps) { + if (!isClient) return + const { + urlList, + initialIndex = 0, + infinite = true, + hideOnClickModal = false, + teleported = false, + zIndex = 2000, + show = true + } = options + + const propsData: Partial = {} + const container = document.createElement('div') + propsData.urlList = urlList + propsData.initialIndex = initialIndex + propsData.infinite = infinite + propsData.hideOnClickModal = hideOnClickModal + propsData.teleported = teleported + propsData.zIndex = zIndex + propsData.show = show + + document.body.appendChild(container) + instance = createVNode(ImageViewer, propsData) + render(instance, container) +} diff --git a/src/components/dashboard/ImageViewer/src/ImageViewer.vue b/src/components/dashboard/ImageViewer/src/ImageViewer.vue new file mode 100644 index 0000000..45dcbfd --- /dev/null +++ b/src/components/dashboard/ImageViewer/src/ImageViewer.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/dashboard/ImageViewer/src/types.ts b/src/components/dashboard/ImageViewer/src/types.ts new file mode 100644 index 0000000..2fff4c0 --- /dev/null +++ b/src/components/dashboard/ImageViewer/src/types.ts @@ -0,0 +1,9 @@ +export interface ImageViewerProps { + urlList?: string[] + zIndex?: number + initialIndex?: number + infinite?: boolean + hideOnClickModal?: boolean + teleported?: boolean + show?: boolean +} diff --git a/src/components/dashboard/InputPassword/index.ts b/src/components/dashboard/InputPassword/index.ts new file mode 100644 index 0000000..1dcc38e --- /dev/null +++ b/src/components/dashboard/InputPassword/index.ts @@ -0,0 +1,3 @@ +import InputPassword from './src/InputPassword.vue' + +export { InputPassword } diff --git a/src/components/dashboard/InputPassword/src/InputPassword.vue b/src/components/dashboard/InputPassword/src/InputPassword.vue new file mode 100644 index 0000000..b4e0dde --- /dev/null +++ b/src/components/dashboard/InputPassword/src/InputPassword.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/components/dashboard/Summary.vue b/src/components/dashboard/Summary.vue new file mode 100644 index 0000000..648972b --- /dev/null +++ b/src/components/dashboard/Summary.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/src/components/dashboard/Tooltip/index.ts b/src/components/dashboard/Tooltip/index.ts new file mode 100644 index 0000000..ab66ddf --- /dev/null +++ b/src/components/dashboard/Tooltip/index.ts @@ -0,0 +1,3 @@ +import Tooltip from './src/Tooltip.vue' + +export { Tooltip } diff --git a/src/components/dashboard/Tooltip/src/Tooltip.vue b/src/components/dashboard/Tooltip/src/Tooltip.vue new file mode 100644 index 0000000..81c3ea8 --- /dev/null +++ b/src/components/dashboard/Tooltip/src/Tooltip.vue @@ -0,0 +1,18 @@ + + diff --git a/src/components/dashboard/UploadFile/index.ts b/src/components/dashboard/UploadFile/index.ts new file mode 100644 index 0000000..97c1d66 --- /dev/null +++ b/src/components/dashboard/UploadFile/index.ts @@ -0,0 +1,5 @@ +import UploadImg from './src/UploadImg.vue' +import UploadImgs from './src/UploadImgs.vue' +import UploadFile from './src/UploadFile.vue' + +export { UploadImg, UploadImgs, UploadFile } diff --git a/src/components/dashboard/UploadFile/src/UploadFile.vue b/src/components/dashboard/UploadFile/src/UploadFile.vue new file mode 100644 index 0000000..b4341eb --- /dev/null +++ b/src/components/dashboard/UploadFile/src/UploadFile.vue @@ -0,0 +1,225 @@ + + + diff --git a/src/components/dashboard/UploadFile/src/UploadImg.vue b/src/components/dashboard/UploadFile/src/UploadImg.vue new file mode 100644 index 0000000..eafe9ee --- /dev/null +++ b/src/components/dashboard/UploadFile/src/UploadImg.vue @@ -0,0 +1,271 @@ + + + + diff --git a/src/components/dashboard/UploadFile/src/UploadImgs.vue b/src/components/dashboard/UploadFile/src/UploadImgs.vue new file mode 100644 index 0000000..50ca1f8 --- /dev/null +++ b/src/components/dashboard/UploadFile/src/UploadImgs.vue @@ -0,0 +1,323 @@ + + + + diff --git a/src/components/dashboard/UploadFile/src/useUpload.ts b/src/components/dashboard/UploadFile/src/useUpload.ts new file mode 100644 index 0000000..3903d54 --- /dev/null +++ b/src/components/dashboard/UploadFile/src/useUpload.ts @@ -0,0 +1,110 @@ +import * as FileApi from '@/api/module/system/file' +import CryptoJS from 'crypto-js' +import type { + UploadRawFile, + UploadRequestOptions, +} from 'element-plus/es/components/upload/src/upload' +import axios from 'axios' +import { isResError } from '@/hooks/useMessage' + +export const useUpload = () => { + // 后端上传地址 + const uploadUrl = import.meta.env.VITE_UPLOAD_URL + // 是否使用前端直连上传 + const isClientUpload = UPLOAD_TYPE.CLIENT === import.meta.env.VITE_UPLOAD_TYPE + // 重写ElUpload上传方法 + const httpRequest = async (options: UploadRequestOptions) => { + // 模式一:前端上传 + if (isClientUpload) { + // 1.1 生成文件名称 + const fileName = await generateFileName(options.file) + // 1.2 获取文件预签名地址 + const presignedInfo = await FileApi.getFilePresignedUrl(fileName) + if (isResError(presignedInfo)) { + return Promise.reject(presignedInfo) + } + // 1.3 上传文件(不能使用 ElUpload 的 ajaxUpload 方法的原因:其使用的是 FormData 上传,Minio 不支持) + return axios + .put(presignedInfo.data.uploadUrl, options.file, { + headers: { + 'Content-Type': options.file.type, + }, + }) + .then(() => { + // 1.4. 记录文件信息到后端(异步) + createFile(presignedInfo.data, fileName, options.file) + // 通知成功,数据格式保持与后端上传的返回结果一致 + return { data: presignedInfo.data.url } + }) + } else { + // 模式二:后端上传 + // 重写 el-upload httpRequest 文件上传成功会走成功的钩子,失败走失败的钩子 + return new Promise((resolve, reject) => { + FileApi.updateFile({ file: options.file }) + .then(res => { + if (res.code === 0) { + resolve(res) + } else { + reject(res) + } + }) + .catch(res => { + reject(res) + }) + }) + } + } + + return { + uploadUrl, + httpRequest, + } +} + +/** + * 创建文件信息 + * @param vo 文件预签名信息 + * @param name 文件名称 + * @param file 文件 + */ +function createFile( + vo: FileApi.FilePresignedUrlRespVO, + name: string, + file: UploadRawFile +) { + const fileVo = { + configId: vo.configId, + url: vo.url, + path: name, + name: file.name, + type: file.type, + size: file.size, + } + FileApi.createFile(fileVo) + return fileVo +} + +/** + * 生成文件名称(使用算法SHA256) + * @param file 要上传的文件 + */ +async function generateFileName(file: UploadRawFile) { + // 读取文件内容 + const data = await file.arrayBuffer() + const wordArray = CryptoJS.lib.WordArray.create(data) + // 计算SHA256 + const sha256 = CryptoJS.SHA256(wordArray).toString() + // 拼接后缀 + const ext = file.name.substring(file.name.lastIndexOf('.')) + return `${sha256}${ext}` +} + +/** + * 上传类型 + */ +enum UPLOAD_TYPE { + // 客户端直接上传(只支持S3服务) + CLIENT = 'client', + // 客户端发送到后端上传 + SERVER = 'server', +} diff --git a/src/components/dashboard/XButton/index.ts b/src/components/dashboard/XButton/index.ts new file mode 100644 index 0000000..be0f0d4 --- /dev/null +++ b/src/components/dashboard/XButton/index.ts @@ -0,0 +1,4 @@ +import XButton from './src/XButton.vue' +import XTextButton from './src/XTextButton.vue' + +export { XButton, XTextButton } diff --git a/src/components/dashboard/XButton/src/XButton.vue b/src/components/dashboard/XButton/src/XButton.vue new file mode 100644 index 0000000..f35fd38 --- /dev/null +++ b/src/components/dashboard/XButton/src/XButton.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/components/dashboard/XButton/src/XTextButton.vue b/src/components/dashboard/XButton/src/XTextButton.vue new file mode 100644 index 0000000..76fbcb9 --- /dev/null +++ b/src/components/dashboard/XButton/src/XTextButton.vue @@ -0,0 +1,52 @@ + + + + diff --git a/src/components/map_baidu/BdMap.vue b/src/components/map_baidu/BdMap.vue new file mode 100644 index 0000000..e8cb59c --- /dev/null +++ b/src/components/map_baidu/BdMap.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/components/map_baidu/c_overlays/BaseLayer.js b/src/components/map_baidu/c_overlays/BaseLayer.js new file mode 100644 index 0000000..36e156a --- /dev/null +++ b/src/components/map_baidu/c_overlays/BaseLayer.js @@ -0,0 +1,167 @@ + +import DataSet from './data/DataSet' +// import pathSimple from './canvas/path/simple'; +import drawText from './canvas/draw/text'; +import drawIcon from './canvas/draw/icon'; +import drawSimple from './canvas/draw/simple'; +import drawArrow from './canvas/draw/arrow'; + +class BaseLayer { + constructor(map, dataSet, options) { + if (!(dataSet instanceof DataSet)) { + dataSet = new DataSet(dataSet); + } + + this.dataSet = dataSet; + this.map = map; + } + + getDefaultContextConfig() { + return { + globalAlpha: 1, + globalCompositeOperation: 'source-over', + imageSmoothingEnabled: true, + strokeStyle: '#000000', + fillStyle: '#000000', + shadowOffsetX: 0, + shadowOffsetY: 0, + shadowBlur: 0, + shadowColor: 'rgba(0, 0, 0, 0)', + lineWidth: 1, + lineCap: 'butt', + lineJoin: 'miter', + miterLimit: 10, + lineDashOffset: 0, + font: '10px sans-serif', + textAlign: 'start', + textBaseline: 'alphabetic' + }; + } + + drawContext(context, dataSet, options, nwPixel) { + var self = this; + switch (self.options.draw) { + case 'text': + drawText.draw(context, dataSet, self.options); + break; + case 'icon': + drawIcon.draw(context, dataSet, self.options); + break; + default: + drawSimple.draw(context, dataSet, self.options); + + } + if (self.options.arrow && self.options.arrow.show !== false) { + drawArrow.draw(context, dataSet, self.options); + } + } + + // isPointInPath(context, pixel) { + // var context = this.canvasLayer.canvas.getContext(this.context); + // var data; + // if ( + // this.options.draw === 'cluster' && + // (!this.options.maxClusterZoom || this.options.maxClusterZoom >= this.getZoom()) + // ) { + // data = this.clusterDataSet.get(); + // } else { + // data = this.dataSet.get(); + // } + // for (var i = 0; i < data.length; i++) { + // context.beginPath(); + // let options = this.options; + // var x = pixel.x * this.canvasLayer.devicePixelRatio; + // var y = pixel.y * this.canvasLayer.devicePixelRatio; + // // var x = pixel.x; + // // var y = pixel.y; + + // options.multiPolygonDraw = function () { + // if (context.isPointInPath(x, y)) { + // return data[i]; + // } + // }; + // //判断过程中进行数据绘制?????? + // pathSimple.draw(context, data[i], options); + + // var geoType = data[i].geometry && data[i].geometry.type; + // if (geoType.indexOf('LineString') > -1) { + // if (context.isPointInStroke && context.isPointInStroke(x, y)) { + // return data[i]; + // } + // } else { + // if (context.isPointInPath(x, y)) { + // return data[i]; + // } + // } + // } + // } + + processData(data) { + var self = this; + var draw = self.options.draw; + if (draw == 'simple') { + for (var i = 0; i < data.length; i++) { + // var item = data[i]; + + data[i]._size = undefined; + + + var styleType = '_fillStyle'; + + if (data[i].geometry.type === 'LineString' || self.options.styleType === 'stroke') { + styleType = '_strokeStyle'; + } + } + } + } + + // clickEvent(pixel, e) { + // if (!this.options.methods) { + // return; + // } + // var dataItem = this.isPointInPath(this.getContext(), pixel); + + // if (dataItem) { + // if (this.options.draw === 'cluster') { + // let children = this.getClusterPoints(dataItem); + // dataItem.children = children; + // } + // this.options.methods.click(dataItem, e); + // } else { + // this.options.methods.click(null, e); + // } + // } + + /** + * obj.options + */ + update(obj, isDraw) { + var self = this; + var _options = obj.options; + var options = self.options; + for (var i in _options) { + options[i] = _options[i]; + } + self.init(options); + if (isDraw !== false) { + self.draw(); + } + } + + setOptions(options) { + var self = this; + self.dataSet.reset(); + // console.log('xxx1') + self.init(options); + // console.log('xxx') + self.draw(); + } + + destroy() { + this.unbindEvent(); + this.hide(); + } +} + + +export default BaseLayer; \ No newline at end of file diff --git a/src/components/map_baidu/c_overlays/CanvasLayer.js b/src/components/map_baidu/c_overlays/CanvasLayer.js new file mode 100644 index 0000000..9ccc418 --- /dev/null +++ b/src/components/map_baidu/c_overlays/CanvasLayer.js @@ -0,0 +1,116 @@ + +class CanvasLayer extends BMapGL.Overlay { + constructor(options) { + super(); + this.options = options || {}; + this.paneName = this.options.paneName || 'markerPane'; + this.context = this.options.context || '2d'; + this.zIndex = this.options.zIndex || 0; + this.mixBlendMode = this.options.mixBlendMode || 'normal'; + this.enableMassClear = this.options.enableMassClear; + this._map = options.map; + this._lastDrawTime = null; + this.show(); + } + + initialize(map) { + this._map = map; + var canvas = this.canvas = document.createElement("canvas"); + canvas.style.cssText = "position:absolute;" + "left:0;" + "top:0;" + "z-index:" + this.zIndex + ";user-select:none;"; + canvas.style.mixBlendMode = this.mixBlendMode; + this.adjustSize(); + var pane = map.getPanes()[this.paneName]; + if (!pane) { + pane = map.getPanes().floatShadow; + } + pane.appendChild(canvas); + var that = this; + map.addEventListener('resize', function () { + that.adjustSize(); + that._draw(); + }); + map.addEventListener('update', function () { + that._draw(); + }); + /* + map.addEventListener('moving', function() { + that._draw(); + }); + */ + if (this.options.updateImmediate) { + setTimeout(function () { + that._draw(); + }, 100); + } + return this.canvas; + } + + adjustSize() { + var global = typeof window === 'undefined' ? {} : window; + var size = this._map.getSize(); + var canvas = this.canvas; + + var devicePixelRatio = this.devicePixelRatio = global.devicePixelRatio || 1; + + canvas.width = size.width * devicePixelRatio; + canvas.height = size.height * devicePixelRatio; + if (this.context == '2d') { + canvas.getContext(this.context).scale(devicePixelRatio, devicePixelRatio); + } + + canvas.style.width = size.width + "px"; + canvas.style.height = size.height + "px"; + } + + draw() { + var self = this; + if (this.options.updateImmediate) { + self._draw(); + } else { + clearTimeout(self.timeoutID); + self.timeoutID = setTimeout(function () { + self._draw(); + }, 15); + } + } + + _draw() { + var map = this._map; + var size = map.getSize(); + var center = map.getCenter(); + if (center) { + var pixel = map.pointToOverlayPixel(center); + this.canvas.style.left = pixel.x - size.width / 2 + 'px'; + this.canvas.style.top = pixel.y - size.height / 2 + 'px'; + this.dispatchEvent('draw'); + this.options.update && this.options.update.call(this); + } + } + + getContainer() { + return this.canvas; + } + + show() { + if (!this.canvas) { + this._map.addOverlay(this); + } + this.canvas.style.display = "block"; + } + + hide() { + this.canvas.style.display = "none"; + //this._map.removeOverlay(this); + } + + setZIndex(zIndex) { + this.zIndex = zIndex; + this.canvas.style.zIndex = this.zIndex; + } + + getZIndex() { + return this.zIndex; + } +} + +export default CanvasLayer \ No newline at end of file diff --git a/src/components/map_baidu/c_overlays/Layer.js b/src/components/map_baidu/c_overlays/Layer.js new file mode 100644 index 0000000..6bfe041 --- /dev/null +++ b/src/components/map_baidu/c_overlays/Layer.js @@ -0,0 +1,312 @@ +import BaseLayer from "./BaseLayer" +import CanvasLayer from "./CanvasLayer" +import clear from './canvas/clear'; + +class Layer extends BaseLayer { + constructor(map, dataSet, options) { + super(map, dataSet, options); + + var self = this; + options = options || {}; + + this.clickEvent = this.clickEvent.bind(this); + this.rightClickEvent = this.rightClickEvent.bind(this); + // this.mousemoveEvent = this.mousemoveEvent.bind(this); + // this.tapEvent = this.tapEvent.bind(this); + + self.init(options); + + var canvasLayer = (this.canvasLayer = new CanvasLayer({ + map: map, + context: this.context, + updateImmediate: options.updateImmediate, + paneName: options.paneName, + mixBlendMode: options.mixBlendMode, + enableMassClear: options.enableMassClear, + zIndex: options.zIndex, + update() { + self._canvasUpdate(); + } + })); + dataSet.on('change', function () { + canvasLayer.draw(); + }); + } + + clickEvent(e) { + // var pixel = e.pixel; + // super.clickEvent(pixel, e); + } + + rightClickEvent(e) { } + + bindEvent(e) { + this.unbindEvent(); + var map = this.map; + // var timer = 0; + // var that = this; + + if (this.options.methods) { + if (this.options.methods.click) { + map.setDefaultCursor('default'); + map.addEventListener('click', this.clickEvent); + } + + if (this.options.methods.rightClick) { + map.setDefaultCursor('default'); + map.addEventListener('rightclick', this.rightClickEvent); + } + + // if (this.options.methods.mousemove) { + // map.addEventListener('mousemove', this.mousemoveEvent); + // } + + // if ('ontouchend' in window.document && this.options.methods.tap) { + // map.addEventListener('touchstart', function (e) { + // timer = new Date(); + // }); + // map.addEventListener('touchend', function (e) { + // if (new Date() - timer < 300) { + // that.tapEvent(e); + // } + // }); + // } + } + } + + unbindEvent(e) { + var map = this.map; + + if (this.options.methods) { + if (this.options.methods.click) { + map.removeEventListener('click', this.clickEvent); + } + } + } + + getContext() { + return this.canvasLayer.canvas.getContext(this.context); + } + + _canvasUpdate(time) { } + + generateData(time) { + if (!this.canvasLayer) { + return; + } + var self = this; + var map = this.canvasLayer._map; + // var projection; + var mcCenter; + // if (map.getMapType().getProjection) { + // projection = map.getMapType().getProjection(); + // mcCenter = projection.lngLatToPoint(map.getCenter()); + // } else { + mcCenter = { + x: map.getCenter().lng, + y: map.getCenter().lat + }; + if (mcCenter.x > -180 && mcCenter.x < 180) { + mcCenter = map.lnglatToMercator(mcCenter.x, mcCenter.y); + mcCenter = { x: mcCenter[0], y: mcCenter[1] }; + } + // projection = { + // lngLatToPoint: function (point) { + // var mc = map.lnglatToMercator(point.lng, point.lat); + // return { + // x: mc[0], + // y: mc[1] + // }; + // } + // }; + // } + var zoomUnit = map.getZoomUnits(); + // if (projection.getZoomUnits) { + // zoomUnit = projection.getZoomUnits(map.getZoom()); + // } else { + // zoomUnit = Math.pow(2, 18 - map.getZoom()); + // } + //左上角墨卡托坐标 + var nwMc = new BMapGL.Pixel( + mcCenter.x - (map.getSize().width / 2) * zoomUnit, + mcCenter.y + (map.getSize().height / 2) * zoomUnit + ); + + var context = this.getContext(); + // if (this.isEnabledTime()) { + // if (time === undefined) { + // clear(context); + // return; + // } + // if (this.context == '2d') { + // context.save(); + // context.globalCompositeOperation = 'destination-out'; + // context.fillStyle = 'rgba(0, 0, 0, .1)'; + // context.fillRect(0, 0, context.canvas.width, context.canvas.height); + // context.restore(); + // } + // } else { + clear(context); + // } + + if (this.context == '2d') { + for (var key in this.options) { + context[key] = this.options[key]; + } + } else { + context.clear(context.COLOR_BUFFER_BIT); + } + + if ( + (this.options.minZoom && map.getZoom() < this.options.minZoom) || + (this.options.maxZoom && map.getZoom() > this.options.maxZoom) + ) { + return; + } + + var scale = 1; + if (this.context != '2d') { + scale = this.canvasLayer.devicePixelRatio; + } + + var dataGetOptions = { + fromColumn: this.options.coordType == 'bd09mc' ? 'coordinates_mercator' : 'coordinates', + transferCoordinate: function (coordinate) { + if (coordinate[0] > -180 && coordinate[0] < 180) { + coordinate = map.lnglatToMercator(coordinate[0], coordinate[1]); + } + var x = ((coordinate[0] - nwMc.x) / zoomUnit) * scale; + var y = ((nwMc.y - coordinate[1]) / zoomUnit) * scale; + return [x, y]; + } + }; + + // if (time !== undefined) { + // dataGetOptions.filter = function (item) { + // var trails = animationOptions.trails || 10; + // if (time && item.time > time - trails && item.time < time) { + // return true; + // } else { + // return false; + // } + // }; + // } + + // get data from data set + var data; + // var zoom = this.getZoom(); + // if (this.options.draw === 'cluster' && (!this.options.maxClusterZoom || this.options.maxClusterZoom >= zoom)) { + // var bounds = this.map.getBounds(); + // var ne = bounds.getNorthEast(); + // var sw = bounds.getSouthWest(); + // var clusterData = this.supercluster.getClusters([sw.lng, sw.lat, ne.lng, ne.lat], zoom); + // this.pointCountMax = this.supercluster.trees[zoom].max; + // this.pointCountMin = this.supercluster.trees[zoom].min; + // var intensity = {}; + // var color = null; + // var size = null; + // if (this.pointCountMax === this.pointCountMin) { + // color = this.options.fillStyle; + // size = this.options.minSize || 8; + // } else { + // intensity = new Intensity({ + // min: this.pointCountMin, + // max: this.pointCountMax, + // minSize: this.options.minSize || 8, + // maxSize: this.options.maxSize || 30, + // gradient: this.options.gradient + // }); + // } + // for (var i = 0; i < clusterData.length; i++) { + // var item = clusterData[i]; + // if (item.properties && item.properties.cluster_id) { + // clusterData[i].size = size || intensity.getSize(item.properties.point_count); + // clusterData[i].fillStyle = color || intensity.getColor(item.properties.point_count); + // } else { + // clusterData[i].size = self.options.size; + // } + // } + + // this.clusterDataSet.set(clusterData); + // this.transferToMercator(this.clusterDataSet); + // data = self.clusterDataSet.get(dataGetOptions); + // } else { + data = self.dataSet.get(dataGetOptions); + // } + + this.processData(data); + + var nwPixel = map.pointToPixel(new BMapGL.Point(0, 0)); + + if (self.options.unit == 'm') { + self.options._zoomUnit = zoomUnit; + // if (self.options.size) { + // self.options._size = self.options.size / zoomUnit; + // } + // if (self.options.width) { + // self.options._width = self.options.width / zoomUnit; + // console.log("-----self option width----" + self.options._width) + // } + // if (self.options.height) { + // self.options._height = self.options.height / zoomUnit; + // } + } else { + self.options._size = self.options.size; + self.options._height = self.options.height; + self.options._width = self.options.width; + } + + return data; + // this.drawContext(context, data, self.options, nwPixel); + + //console.timeEnd('draw'); + + //console.timeEnd('update') + // self.options.updateCallback && self.options.updateCallback(time); + } + + init(options) { + var self = this; + self.options = options; + this.context = self.options.context || '2d'; + + if (self.options.zIndex) { + this.canvasLayer && this.canvasLayer.setZIndex(self.options.zIndex); + } + // this.bindEvent(); + } + + getZoom() { + return this.map.getZoom(); + } + + show() { + this.map.addOverlay(this.canvasLayer); + this.bindEvent(); + } + + hide() { + this.unbindEvent(); + this.map.removeOverlay(this.canvasLayer); + } + + draw() { + this.canvasLayer && this.canvasLayer.draw(); + } + + clearData() { + this.dataSet && this.dataSet.clear(); + this.update({ + options: null + }); + } + + destroy() { + this.unbindEvent(); + this.clearData(); + this.map.removeOverlay(this.canvasLayer); + this.canvasLayer = null; + } +} + +export default Layer; \ No newline at end of file diff --git a/src/components/map_baidu/c_overlays/MarkLayer.js b/src/components/map_baidu/c_overlays/MarkLayer.js new file mode 100644 index 0000000..4f7edba --- /dev/null +++ b/src/components/map_baidu/c_overlays/MarkLayer.js @@ -0,0 +1,130 @@ +import pathSimple from './canvas/path/simple'; +import Layer from './Layer'; + + + +class RealLayer extends Layer { + constructor(map, dataSet, options) { + super(map, dataSet, options); + } + + _canvasUpdate(time) { + // super(time); + let data = this.generateData(time); + this.drawContext(this.getContext(), data, this.options, null); + } + + + +} + + + +class VirtualLayer extends Layer { + constructor(map, dataSet, options) { + super(map, dataSet, options); + this.pointData = {}; + // this.lineData = []; + } + + static getInstance(map, dataSet, options) { + if (!VirtualLayer.instance) { + VirtualLayer.instance = new VirtualLayer(map, dataSet, options) + } + return VirtualLayer.instance; + } + + clickEvent(e) { + if (!this.options.methods) { + return; + } + + let pixel = e.pixel; + let dataItem = null; + let points = []; + for (var key in this.pointData) { + points = points.concat(this.pointData[key]); + } + if (points.length > 0) { + this.dataSet._set(points); + dataItem = this.findClickItem(pixel); + } + if (dataItem == null) { + if (this.lineData && this.lineData.length > 0) { + this.dataSet._set(this.lineData); + dataItem = this.findClickItem(pixel); + } + } + this.options.methods.click(dataItem, e); + } + + rightClickEvent(e) { + if (!this.options.methods) { + return; + } + let pixel = e.pixel; + let dataItem = null; + let points = []; + for (var key in this.pointData) { + points = points.concat(this.pointData[key]); + } + if (points.length > 0) { + this.dataSet._set(points); + dataItem = this.findClickItem(pixel); + } + if (dataItem == null) { + if (this.lineData && this.lineData.length > 0) { + this.dataSet._set(this.lineData); + dataItem = this.findClickItem(pixel); + } + } + this.options.methods.rightClick(dataItem, e); + } + + findClickItem(pixel) { + let data = this.generateData(); + let context = this.getContext(); + let dataItem = null; + for (var i = 0; i < data.length; i++) { + context.beginPath(); + let options = this.options; + var x = pixel.x * this.canvasLayer.devicePixelRatio; + var y = pixel.y * this.canvasLayer.devicePixelRatio; + + + pathSimple.draw(context, data[i], options); + + var geoType = data[i].geometry && data[i].geometry.type; + if (geoType.indexOf('LineString') > -1) { + if (context.isPointInStroke && context.isPointInStroke(x, y)) { + dataItem = data[i]; + break; + } + } else { + if (context.isPointInPath(x, y)) { + dataItem = data[i]; + break; + } + } + } + return dataItem; + + } + + + pushData(type, data) { + if (type != 'line') { + this.pointData[type] = data; + } else { + this.lineData = data; + } + } + + + init(options) { + super.init(options); + this.bindEvent(); + } +} + +export default { VirtualLayer, RealLayer } \ No newline at end of file diff --git a/src/components/map_baidu/c_overlays/canvas/clear.js b/src/components/map_baidu/c_overlays/canvas/clear.js new file mode 100644 index 0000000..965dd02 --- /dev/null +++ b/src/components/map_baidu/c_overlays/canvas/clear.js @@ -0,0 +1,9 @@ +/** + * @author kyle / http://nikai.us/ + */ + +export default function (context) { + context && context.clearRect && context.clearRect(0, 0, context.canvas.width, context.canvas.height); + //context.canvas.width = context.canvas.width; + //context.canvas.height = context.canvas.height; +} diff --git a/src/components/map_baidu/c_overlays/canvas/draw/arrow.js b/src/components/map_baidu/c_overlays/canvas/draw/arrow.js new file mode 100644 index 0000000..b08cadb --- /dev/null +++ b/src/components/map_baidu/c_overlays/canvas/draw/arrow.js @@ -0,0 +1,175 @@ +/** + * 绘制沿线箭头 + */ + +import DataSet from "../../data/DataSet"; +import { DEFAULT_CONFIG } from '../../config' +import { getAngle } from "../../utils/geo" + +var imageCache = {}; + +var object = { + draw: function (context, dataSet, options) { + // var imageCacheKey = 'http://huiyan.baidu.com/github/tools/gis-drawing/static/images/direction.png'; + // if (options.arrow && options.arrow.url) { + // imageCacheKey = options.arrow.url; + // } + + // if (!imageCache[imageCacheKey]) { + // imageCache[imageCacheKey] = null; + // } + + // var directionImage = imageCache[imageCacheKey]; + + // if (!directionImage) { + // var args = Array.prototype.slice.call(arguments); + // var image = new Image(); + // image.onload = () => { + // imageCache[imageCacheKey] = image; + // object.draw.apply(null, args); + // } + // image.src = imageCacheKey; + // return; + // } + + var data = dataSet instanceof DataSet ? dataSet.get() : dataSet; + + // console.log('xxxx',options) + context.save(); + + for (var key in options) { + context[key] = options[key]; + } + + + // var points = []; + // var preCoordinate = null; + for (var i = 0, len = data.length; i < len; i++) { + + var item = data[i]; + + context.save(); + + if (item.fillStyle || item._fillStyle) { + context.fillStyle = item.fillStyle || item._fillStyle; + } + + if (item.strokeStyle || item._strokeStyle) { + context.strokeStyle = item.strokeStyle || item._strokeStyle; + } + + var type = item.geometry.type; + + context.beginPath(); + if (type === 'LineString') { + var coordinates = item.geometry._coordinates || item.geometry.coordinates; + var interval = options.arrow.interval !== undefined ? options.arrow.interval : 1; + for (var j = 0; j < coordinates.length; j += interval) { + if (coordinates[j] && coordinates[j + 1]) { + var fromCoor = coordinates[j]; + let toCoor = coordinates[j + 1] + + if (getDistance(toCoor, fromCoor) < DEFAULT_CONFIG.LINE_MIN_DISTANCE) { + continue; + } + + let centerX = (fromCoor[0] + toCoor[0]) / 2; + let centerY = (fromCoor[1] + toCoor[1]) / 2; + context.save(); + var angle = getAngle(fromCoor, toCoor); + context.translate(centerX, centerY); + context.rotate((angle) * Math.PI / 180); + context.clearRect(-10, -3, 20, 6); + + if (item.options.strokeStyle || options.strokeStyle) { + context.strokeStyle = item.options.strokeStyle || options.strokeStyle; + } + if (options.lineWidth) { + let lineWidth = options.lineWidth; + if (options.unit == 'm') { + context.lineWidth = Math.min(DEFAULT_CONFIG.LINE_MAX_WIDTH, lineWidth / options._zoomUnit); + } + } + if (toCoor[0] >= fromCoor[0]) { + drawArrow(context, -8, 0, 180, options) + } else { + drawArrow(context, 8, 0, 0, options) + } + + context.textAlign = 'left'; + context.textBaseline = 'middle'; + if (item.options.arrow.fillStyle || options.arrow.fillStyle) { + context.fillStyle = item.options.arrow.fillStyle || options.arrow.fillStyle; + } + + var size = options._size || options.size || DEFAULT_CONFIG.FONT_DEFAULT_SIZE; + if (options.unit == 'm') { + size = Math.min(DEFAULT_CONFIG.FONT_MIN_SIZE, size / options._zoomUnit); + } + context.font = "bold " + size + "px Arial"; + if (angle >= 90 && angle <= 270) { + context.rotate(180 * Math.PI / 180); + } + context.fillText(item.options.arrow.label, 0, 0); + // context.fillText(angle, 0, 12); + + // context.drawImage(directionImage, -directionImage.width / 2 / 2, -directionImage.height / 2 / 2, directionImage.width / 2, directionImage.height / 2); + context.restore(); + + // points.push(coordinate); + // preCoordinate = coordinate; + } + } + } + + context.restore(); + + }; + + context.restore(); + + } +} + +function getDistance(coordinateA, coordinateB) { + return Math.sqrt(Math.pow(coordinateA[0] - coordinateB[0], 2) + Math.pow(coordinateA[1] - coordinateB[1], 2)); +} + +/** + * 绘制箭头 + */ +function drawArrow(ctx, x, y, angle, options) { + let headlen = 9; + if (options.unit == 'm') { + headlen = Math.min(9, headlen / options._zoomUnit); + } + var theta = 45, + angle1 = (angle + theta) * Math.PI / 180, + angle2 = (angle - theta) * Math.PI / 180, + topX = headlen * Math.cos(angle1), + topY = headlen * Math.sin(angle1), + botX = headlen * Math.cos(angle2), + botY = headlen * Math.sin(angle2); + ctx.save(); + ctx.beginPath(); + if (options.lineWidth) { + let lineWidth = options.lineWidth; + if (options.unit == 'm') { + ctx.lineWidth = Math.min(5, lineWidth / options._zoomUnit); + } + } + var arrowX, arrowY; + // ctx.moveTo(Math.cos(angle) * (startX - 2), Math.sin(angle) * (startY - 2)); + ctx.moveTo(x, y); + arrowX = x + topX; + arrowY = y + topY; + ctx.moveTo(arrowX, arrowY); + ctx.lineTo(x, y); + arrowX = x + botX; + arrowY = y + botY; + ctx.lineTo(arrowX, arrowY); + ctx.stroke(); + ctx.restore(); +} + +export default object; diff --git a/src/components/map_baidu/c_overlays/canvas/draw/icon.js b/src/components/map_baidu/c_overlays/canvas/draw/icon.js new file mode 100644 index 0000000..06e3428 --- /dev/null +++ b/src/components/map_baidu/c_overlays/canvas/draw/icon.js @@ -0,0 +1,109 @@ +/** + * @author wanghyper + * This file is to draw icon + */ + +import DataSet from '../../data/DataSet'; +import drawLabel from './label' + +const imageMap = {}; +let stacks = {}; +export default { + draw: function (context, dataSet, options) { + var data = dataSet instanceof DataSet ? dataSet.get() : dataSet; + for (var i = 0, len = data.length; i < len; i++) { + const item = data[i]; + if (item.geometry) { + var icon = item.options.icon || options.icon; + if (typeof icon === 'string') { + let url = window.encodeURIComponent(icon); + let img = imageMap[url]; + if (img) { + drawItem(img, options, context, item); + } else { + if (!stacks[url]) { + stacks[url] = []; + getImage( + url, + function (img, src) { + stacks[src] && stacks[src].forEach(fun => fun(img)); + stacks[src] = null; + imageMap[src] = img; + }, + function (src) { + stacks[src] && stacks[src].forEach(fun => fun('error')); + stacks[src] = null; + imageMap[src] = 'error'; + } + ); + } + stacks[url].push(function (img) { + drawItem(img, options, context, item); + }); + } + } else { + drawItem(icon, options, context, item); + } + } + } + } +}; +function drawItem(img, options, context, item) { + if (item.options.label && item.options.label.show) { + drawLabel.draw(context, item, options); + } + + context.save(); + var coordinates = item.geometry._coordinates || item.geometry.coordinates; + var x = coordinates[0]; + var y = coordinates[1]; + var width = item.options.width || options._width || options.width; + var height = item.options.height || options._height || options.height; + if (options.unit == 'm') { + width = Math.min(25, width / options._zoomUnit); + height = Math.min(25, height / options._zoomUnit); + // if (self.options.size) { + // self.options._size = self.options.size / zoomUnit; + // } + // if (self.options.width) { + // self.options._width = self.options.width / zoomUnit; + // console.log("-----self option width----" + self.options._width) + // } + // if (self.options.height) { + // self.options._height = self.options.height / zoomUnit; + // } + } + if (typeof img === 'string') { + context.beginPath(); + context.arc(x, y, options.size || 5, 0, Math.PI * 2); + context.fillStyle = options.fillStyle || 'red'; + context.fill(); + return; + } + context.translate(x, y); + var deg = item.options.deg || options.deg; + if (deg) { + context.rotate((deg * Math.PI) / 180); + // context.translate(-x, -y); + } + + if (options.sx && options.sy && options.swidth && options.sheight && options.width && options.height) { + context.drawImage(img, options.sx, options.sy, options.swidth, options.sheight, x, y, width, height); + } else if (width && height) { + context.drawImage(img, - ~~width / 2, - ~~height / 2, width, height); + } else { + context.drawImage(img, x, y); + } + context.restore(); +} + +function getImage(url, callback, fallback) { + let img = new Image(); + img.onload = function () { + callback && callback(img, url); + }; + img.onerror = function () { + fallback && fallback(url); + }; + img.src = window.decodeURIComponent(url); +} diff --git a/src/components/map_baidu/c_overlays/canvas/draw/label.js b/src/components/map_baidu/c_overlays/canvas/draw/label.js new file mode 100644 index 0000000..0278841 --- /dev/null +++ b/src/components/map_baidu/c_overlays/canvas/draw/label.js @@ -0,0 +1,76 @@ +/** + * 用于点线上的文字标注绘制 + */ + +import { DEFAULT_CONFIG } from '../../config' + +export default { + draw: function (context, data, options) { + context.save(); + var size = options._size || options.size || DEFAULT_CONFIG.FONT_DEFAULT_SIZE; + if (options.unit == 'm') { + size = Math.min(DEFAULT_CONFIG.FONT_MIN_SIZE, size / options._zoomUnit); + } + context.font = "bold " + size + "px Arial"; + + if (!options.textAlign) { + context.textAlign = 'center'; + } + + if (!options.textBaseline) { + context.textBaseline = 'middle'; + } + + let color = data.options.label.color; + if (color) { + context.fillStyle = color; + } + + var offset = data.options.label.offset || options.offset || { + x: 0, + y: 0 + }; + var coordinates = data.geometry._coordinates || data.geometry.coordinates; + + let type = data.geometry.type; + if (type == 'LineString') { + for (let i = 0; i < coordinates.length - 1; i++) { + let centerCoor = []; + centerCoor[0] = (coordinates[i][0] + coordinates[i + 1][0]) / 2; + centerCoor[1] = (coordinates[i][1] + coordinates[i + 1][1]) / 2; + + this.drawLabel(context, centerCoor, offset, data.options.label.text, options._zoomUnit) + } + + } else { + this.drawLabel(context, coordinates, offset, data.options.label.text, options._zoomUnit) + } + + + + + context.restore(); + }, + + drawLabel: function (context, coordinates, offset, text, zoomUnit) { + let x = offset.x, y = offset.y; + if (zoomUnit) { + if (x >= 0) { + x = Math.min(x, x / zoomUnit); + } else { + x = Math.max(x, x / zoomUnit); + } + if (y >= 0) { + y = Math.min(y, y / zoomUnit); + } else { + y = Math.max(y, y / zoomUnit); + } + } + x = coordinates[0] + x; + y = coordinates[1] + y; + context.fillText(text, x, y); + } + + +} + diff --git a/src/components/map_baidu/c_overlays/canvas/draw/simple.js b/src/components/map_baidu/c_overlays/canvas/draw/simple.js new file mode 100644 index 0000000..29862d4 --- /dev/null +++ b/src/components/map_baidu/c_overlays/canvas/draw/simple.js @@ -0,0 +1,142 @@ +/** + * @author kyle / http://nikai.us/ + */ + +import pathSimple from "../path/simple"; +import DataSet from "../../data/DataSet"; +import drawLabel from "./label" +import { DEFAULT_CONFIG } from '../../config' + +export default { + draw: function (context, dataSet, options) { + + var data = dataSet instanceof DataSet ? dataSet.get() : dataSet; + + // console.log('xxxx',options) + context.save(); + + for (var key in options) { + context[key] = options[key]; + } + + + // console.log(data); + if (options.bigData) { + context.save(); + context.beginPath(); + + for (var i = 0, len = data.length; i < len; i++) { + + var item = data[i]; + + pathSimple.draw(context, item, options); + + }; + + var type = options.bigData; + + if (type == 'Point' || type == 'Polygon' || type == 'MultiPolygon') { + + context.fill(); + + if (context.lineDash) { + context.setLineDash(context.lineDash); + } + + if (item.lineDash) { + context.setLineDash(item.lineDash); + } + + if ((item.strokeStyle || options.strokeStyle) && options.lineWidth) { + context.stroke(); + } + + } else if (type == 'LineString' || type == 'MultiLineString') { + context.stroke(); + } + + context.restore(); + } else { + + for (var i = 0, len = data.length; i < len; i++) { + + var item = data[i]; + + if (item.options.label && item.options.label.show) { + drawLabel.draw(context, item, options); + } + + context.save(); + + if (item.fillStyle || item._fillStyle) { + context.fillStyle = item.fillStyle || item._fillStyle; + } + + if (item.options.strokeStyle || item._strokeStyle) { + context.strokeStyle = item.options.strokeStyle || item._strokeStyle; + } + + if (context.lineDash) { + context.setLineDash(context.lineDash); + } + + if (item.lineDash) { + context.setLineDash(item.lineDash); + } + + var type = item.geometry.type; + + context.beginPath(); + + options.multiPolygonDraw = function () { + context.fill(); + + if ((item.strokeStyle || options.strokeStyle) && options.lineWidth) { + context.stroke(); + } + } + // pathSimple.draw(context, item, options); + + if (type == 'Point' || type == 'Polygon' || type == 'MultiPolygon') { + + context.fill(); + + if ((item.strokeStyle || options.strokeStyle) && options.lineWidth) { + context.stroke(); + } + + } else if (type == 'LineString' || type == 'MultiLineString') { + let lineWidth = item.lineWidth || item._lineWidth || options.lineWidth || DEFAULT_CONFIG.LINE_DEFAULT_WIDTH; + if (lineWidth) { + if (options.unit == 'm') { + context.lineWidth = Math.min(DEFAULT_CONFIG.LINE_MAX_WIDTH, lineWidth / options._zoomUnit); + } + } + var coordinates = item.geometry._coordinates || item.geometry.coordinates; + this.drawLineString(context, coordinates) + context.stroke(); + } + + context.restore(); + + }; + } + + context.restore(); + + }, + + drawLineString: function (context, coordinates) { + for (var j = 0; j < coordinates.length; j++) { + var x = coordinates[j][0]; + var y = coordinates[j][1]; + if (j == 0) { + context.moveTo(x, y); + } else { + context.lineTo(x, y); + } + } + // context.strokeStyle = 'red'; + // context.stroke(); + }, +} diff --git a/src/components/map_baidu/c_overlays/canvas/draw/text.js b/src/components/map_baidu/c_overlays/canvas/draw/text.js new file mode 100644 index 0000000..9dd7807 --- /dev/null +++ b/src/components/map_baidu/c_overlays/canvas/draw/text.js @@ -0,0 +1,117 @@ +/** + * This file is to draw text + */ + +import DataSet from "../../data/DataSet"; + +export default { + draw: function (context, dataSet, options) { + + var data = dataSet instanceof DataSet ? dataSet.get() : dataSet; + context.save(); + + // set from options + for (var key in options) { + context[key] = options[key]; + } + + var rects = []; + + var size = options._size || options.size; + if (size) { + context.font = "bold " + size + "px Arial"; + } else { + size = 12; + } + + var textKey = options.textKey || 'text'; + + if (!options.textAlign) { + context.textAlign = 'center'; + } + + if (!options.textBaseline) { + context.textBaseline = 'middle'; + } + + if (options.avoid) { // 标注避让 + for (var i = 0, len = data.length; i < len; i++) { + + var offset = data[i].offset || options.offset || { + x: 0, + y: 0 + }; + + var coordinates = data[i].geometry._coordinates || data[i].geometry.coordinates; + var x = coordinates[0] + offset.x; + var y = coordinates[1] + offset.y; + var text = data[i][textKey]; + var textWidth = context.measureText(text).width; + + // 根据文本宽度和高度调整x,y位置,使得绘制文本时候坐标点在文本中心点,这个计算出的是左上角坐标 + var px = x - textWidth / 2; + var py = y - size / 2; + + var rect = { + sw: { + x: px, + y: py + size + }, + ne: { + x: px + textWidth, + y: py + } + } + + if (!hasOverlay(rects, rect)) { + rects.push(rect); + px = px + textWidth / 2; + py = py + size / 2; + context.fillText(text, px, py); + } + + }; + } else { + for (var i = 0, len = data.length; i < len; i++) { + var offset = data[i].offset || options.offset || { + x: 0, + y: 0 + }; + var coordinates = data[i].geometry._coordinates || data[i].geometry.coordinates; + var x = coordinates[0] + offset.x; + var y = coordinates[1] + offset.y; + var text = data[i][textKey]; + context.fillText(text, x, y); + }; + } + + context.restore(); + } + +} + +/* + * 当前文字区域和已有的文字区域是否有重叠部分 + */ +function hasOverlay(rects, overlay) { + for (var i = 0; i < rects.length; i++) { + if (isRectOverlay(rects[i], overlay)) { + return true; + } + } + return false; +} + +//判断2个矩形是否有重叠部分 +function isRectOverlay(rect1, rect2) { + //minx、miny 2个矩形右下角最小的x和y + //maxx、maxy 2个矩形左上角最大的x和y + var minx = Math.min(rect1.ne.x, rect2.ne.x); + var miny = Math.min(rect1.sw.y, rect2.sw.y); + var maxx = Math.max(rect1.sw.x, rect2.sw.x); + var maxy = Math.max(rect1.ne.y, rect2.ne.y); + if (minx > maxx && miny > maxy) { + return true; + } + return false; +} diff --git a/src/components/map_baidu/c_overlays/canvas/path/simple.js b/src/components/map_baidu/c_overlays/canvas/path/simple.js new file mode 100644 index 0000000..d5f9e96 --- /dev/null +++ b/src/components/map_baidu/c_overlays/canvas/path/simple.js @@ -0,0 +1,101 @@ +/** + * 点击事件发生后,对所有图形进行重绘,以判断是否点击在某一个图形上 + */ + +import DataSet from "../../data/DataSet"; + +export default { + drawDataSet: function (context, dataSet, options) { + + var data = dataSet instanceof DataSet ? dataSet.get() : dataSet; + + for (var i = 0, len = data.length; i < len; i++) { + var item = data[i]; + this.draw(context, item, options); + } + + }, + draw: function (context, data, options) { + var type = data.geometry.type; + var coordinates = data.geometry._coordinates || data.geometry.coordinates; + var symbol = data.symbol || options.symbol || 'circle'; + + switch (type) { + case 'Point': + var x = coordinates[0]; + var y = coordinates[1]; + var size = data._size || data.options.size || options._size || options.pointSize || 5; + if (symbol === 'circle') { + if (options.bigData === 'Point') { + context.moveTo(coordinates[0], coordinates[1]); + } + context.arc(x, y, size, 0, Math.PI * 2); + // context.strokeStyle = 'red'; + // context.stroke(); + } else if (symbol === 'rect') { + context.rect(coordinates[0] - size / 2, coordinates[1] - size / 2, size, size); + } + break; + case 'LineString': + var size = data._size || data.size || options._size || options.lineSize || 5; + this.drawLineString(context, coordinates, size); + break; + case 'MultiLineString': + for (var i = 0; i < coordinates.length; i++) { + var lineString = coordinates[i]; + this.drawLineString(context, lineString); + } + break; + case 'Polygon': + this.drawPolygon(context, coordinates); + break; + case 'MultiPolygon': + for (var i = 0; i < coordinates.length; i++) { + var polygon = coordinates[i]; + this.drawPolygon(context, polygon); + if (options.multiPolygonDraw) { + var flag = options.multiPolygonDraw(); + if (flag) { + return flag; + } + } + } + break; + default: + console.error('type' + type + 'is not support now!'); + break; + } + }, + + drawLineString: function (context, coordinates, size) { + for (var j = 0; j < coordinates.length; j++) { + var x = coordinates[j][0]; + var y = coordinates[j][1]; + if (j == 0) { + context.moveTo(x, y); + } else { + context.lineTo(x, y); + } + } + context.lineWidth = size; + // context.strokeStyle = 'green'; + // context.stroke(); + }, + + drawPolygon: function (context, coordinates) { + context.beginPath(); + + for (var i = 0; i < coordinates.length; i++) { + var coordinate = coordinates[i]; + + context.moveTo(coordinate[0][0], coordinate[0][1]); + for (var j = 1; j < coordinate.length; j++) { + context.lineTo(coordinate[j][0], coordinate[j][1]); + } + context.lineTo(coordinate[0][0], coordinate[0][1]); + context.closePath(); + } + + } + +} diff --git a/src/components/map_baidu/c_overlays/config.js b/src/components/map_baidu/c_overlays/config.js new file mode 100644 index 0000000..60e2455 --- /dev/null +++ b/src/components/map_baidu/c_overlays/config.js @@ -0,0 +1,10 @@ +const DEFAULT_CONFIG = { + FONT_DEFAULT_SIZE: 14, + FONT_MIN_SIZE: 12, + LINE_MIN_DISTANCE: 60, + LINE_DEFAULT_WIDTH: 5, + LINE_MAX_WIDTH: 5, +} + +export { DEFAULT_CONFIG } + diff --git a/src/components/map_baidu/c_overlays/data/DataSet.js b/src/components/map_baidu/c_overlays/data/DataSet.js new file mode 100644 index 0000000..b20d4ef --- /dev/null +++ b/src/components/map_baidu/c_overlays/data/DataSet.js @@ -0,0 +1,365 @@ +/** + * 数据格式定义 + */ +import Event from "../utils/Event"; +import cityCenter from "../utils/cityCenter"; + +/** + * DataSet + * + * A data set can: + * - add/remove/update data + * - gives triggers upon changes in the data + * - can import/export data in various data formats + * @param {Array} [data] Optional array with initial data + * the field geometry is like geojson, it can be: + * { + * "type": "Point", + * "coordinates": [125.6, 10.1] + * } + * { + * "type": "LineString", + * "coordinates": [ + * [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] + * ] + * } + * { + * "type": "Polygon", + * "coordinates": [ + * [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], + * [100.0, 1.0], [100.0, 0.0] ] + * ] + * } + * @param {Object} [options] Available options: + * + */ +function DataSet(data, options) { + Event.bind(this)(); + + this._options = options || {}; + this._data = []; // map with data indexed by id + + // add initial data when provided + if (data) { + this.add(data); + } + +} + +DataSet.prototype = Object.create(Event.prototype); + +/** + * Add data. + */ +DataSet.prototype.add = function (data, senderId) { + if (Array.isArray(data)) { + // Array + for (var i = 0, len = data.length; i < len; i++) { + if (data[i]) { + if (data[i].time && data[i].time.length == 14 && data[i].time.substr(0, 2) == '20') { + var time = data[i].time; + data[i].time = new Date(time.substr(0, 4) + '-' + time.substr(4, 2) + '-' + time.substr(6, 2) + ' ' + time.substr(8, 2) + ':' + time.substr(10, 2) + ':' + time.substr(12, 2)).getTime(); + } + this._data.push(data[i]); + } + } + } else if (data instanceof Object) { + // Single item + this._data.push(data); + } else { + throw new Error('Unknown dataType'); + } + + this._dataCache = JSON.parse(JSON.stringify(this._data)); +}; + +DataSet.prototype.reset = function () { + this._data = JSON.parse(JSON.stringify(this._dataCache)); +} + +/** + * get data. + */ +DataSet.prototype.get = function (args) { + args = args || {}; + + //console.time('copy data time') + // TODO: 不修改原始数据,在数据上挂载新的名称,每次修改数据直接修改新名称下的数据,可以省去deepCopy + // var data = deepCopy(this._data); + var data = this._data; + + if (args.filter) { + var newData = []; + for (var i = 0; i < data.length; i++) { + if (args.filter(data[i])) { + newData.push(data[i]); + } + } + data = newData; + } + + if (args.transferCoordinate) { + data = this.transferCoordinate(data, args.transferCoordinate, args.fromColumn, args.toColumn); + } + + // console.timeEnd('transferCoordinate time') + + return data; + +}; + +/** + * set data. + */ +DataSet.prototype.set = function (data) { + this._set(data); + this._trigger('change'); +} + +/** + * set data. + */ +DataSet.prototype._set = function (data) { + this.clear(); + this.add(data); +} + +/** + * clear data. + */ +DataSet.prototype.clear = function (args) { + this._data = []; // map with data indexed by id +} + +/** + * remove data. + */ +DataSet.prototype.remove = function (args) { }; + +/** + * update data. + */ +DataSet.prototype.update = function (cbk, condition) { + + var data = this._data; + + var item = null; + for (var i = 0; i < data.length; i++) { + if (condition) { + var flag = true; + for (var key in condition) { + if (data[i][key] != condition[key]) { + flag = false; + } + } + if (flag) { + cbk && cbk(data[i]); + } + } else { + cbk && cbk(data[i]); + } + } + + this._dataCache = JSON.parse(JSON.stringify(this._data)); + + this._trigger('change'); +}; + +/** + * transfer coordinate. + */ +DataSet.prototype.transferCoordinate = function (data, transferFn, fromColumn, toColumnName) { + + toColumnName = toColumnName || '_coordinates'; + fromColumn = fromColumn || 'coordinates'; + + for (var i = 0; i < data.length; i++) { + + var geometry = data[i].geometry; + var coordinates = geometry[fromColumn]; + switch (geometry.type) { + case 'Point': + geometry[toColumnName] = transferFn(coordinates); + break; + case 'LineString': + var newCoordinates = []; + for (var j = 0; j < coordinates.length; j++) { + newCoordinates.push(transferFn(coordinates[j])); + } + geometry[toColumnName] = newCoordinates; + break; + case 'MultiLineString': + case 'Polygon': + var newCoordinates = getPolygon(coordinates); + geometry[toColumnName] = newCoordinates; + break; + case 'MultiPolygon': + var newCoordinates = []; + for (var c = 0; c < coordinates.length; c++) { + var polygon = coordinates[c]; + var polygon = getPolygon(polygon); + newCoordinates.push(polygon); + } + + geometry[toColumnName] = newCoordinates; + break; + } + + } + + function getPolygon(coordinates) { + var newCoordinates = []; + for (var c = 0; c < coordinates.length; c++) { + var coordinate = coordinates[c]; + var newcoordinate = []; + for (var j = 0; j < coordinate.length; j++) { + newcoordinate.push(transferFn(coordinate[j])); + } + newCoordinates.push(newcoordinate); + } + return newCoordinates; + } + + return data; +}; + +DataSet.prototype.initGeometry = function (transferFn) { + + if (transferFn) { + + this._data.forEach(function (item) { + item.geometry = transferFn(item); + }); + + } else { + + this._data.forEach(function (item) { + if (!item.geometry) { + if (item.lng && item.lat) { + item.geometry = { + type: 'Point', + coordinates: [item.lng, item.lat] + } + } else if (item.city) { + var center = cityCenter.getCenterByCityName(item.city); + if (center) { + item.geometry = { + type: 'Point', + coordinates: [center.lng, center.lat] + } + } + } + } + }); + } + +} + + +DataSet.prototype.isEmpty = function () { + return this._data.length == 0; +} + +/** + * 获取当前列的最大值 + */ +DataSet.prototype.getMax = function (columnName) { + var data = this._data; + + if (!data || data.length <= 0) { + return; + } + + var max = parseFloat(data[0][columnName]); + + for (var i = 1; i < data.length; i++) { + var value = parseFloat(data[i][columnName]); + if (value > max) { + max = value; + } + } + + return max; +} + +/** + * 获取当前列的总和 + */ +DataSet.prototype.getSum = function (columnName) { + var data = this._data; + + if (!data || data.length <= 0) { + return; + } + + var sum = 0; + + for (var i = 0; i < data.length; i++) { + if (data[i][columnName]) { + sum += parseFloat(data[i][columnName]); + } + } + + return sum; +} + +/** + * 获取当前列的最小值 + */ +DataSet.prototype.getMin = function (columnName) { + var data = this._data; + + if (!data || data.length <= 0) { + return; + } + + var min = parseFloat(data[0][columnName]); + + for (var i = 1; i < data.length; i++) { + var value = parseFloat(data[i][columnName]); + if (value < min) { + min = value; + } + } + + return min; +} + +/** + * 获取去重的数据 + */ +DataSet.prototype.getUnique = function (columnName) { + var data = this._data; + + if (!data || data.length <= 0) { + return; + } + + var maps = {}; + + for (var i = 1; i < data.length; i++) { + maps[data[i][columnName]] = true; + } + + var data = []; + for (var key in maps) { + data.push(key); + } + + return data; +} + +function deepCopy(obj) { + var newObj; + if (typeof obj == 'object') { + newObj = obj instanceof Array ? [] : {}; + for (var i in obj) { + newObj[i] = obj[i] instanceof HTMLElement ? obj[i] : deepCopy(obj[i]); + } + } else { + newObj = obj + } + return newObj; +} + +export default DataSet; diff --git a/src/components/map_baidu/c_overlays/utils/Event.js b/src/components/map_baidu/c_overlays/utils/Event.js new file mode 100644 index 0000000..b9a89a9 --- /dev/null +++ b/src/components/map_baidu/c_overlays/utils/Event.js @@ -0,0 +1,72 @@ +function Event() { + this._subscribers = {}; // event subscribers +} + +/** + * Subscribe to an event, add an event listener + * @param {String} event Event name. Available events: 'put', 'update', + * 'remove' + * @param {function} callback Callback method. Called with three parameters: + * {String} event + * {Object | null} params + * {String | Number} senderId + */ +Event.prototype.on = function(event, callback) { + var subscribers = this._subscribers[event]; + if (!subscribers) { + subscribers = []; + this._subscribers[event] = subscribers; + } + + subscribers.push({ + callback: callback + }); +}; + +/** + * Unsubscribe from an event, remove an event listener + * @param {String} event + * @param {function} callback + */ +Event.prototype.off = function(event, callback) { + var subscribers = this._subscribers[event]; + if (subscribers) { + //this._subscribers[event] = subscribers.filter(listener => listener.callback != callback); + for (var i = 0; i < subscribers.length; i++) { + if (subscribers[i].callback == callback) { + subscribers.splice(i, 1); + i--; + } + } + } +}; + +/** + * Trigger an event + * @param {String} event + * @param {Object | null} params + * @param {String} [senderId] Optional id of the sender. + * @private + */ +Event.prototype._trigger = function (event, params, senderId) { + if (event == '*') { + throw new Error('Cannot trigger event *'); + } + + var subscribers = []; + if (event in this._subscribers) { + subscribers = subscribers.concat(this._subscribers[event]); + } + if ('*' in this._subscribers) { + subscribers = subscribers.concat(this._subscribers['*']); + } + + for (var i = 0, len = subscribers.length; i < len; i++) { + var subscriber = subscribers[i]; + if (subscriber.callback) { + subscriber.callback(event, params, senderId || null); + } + } +}; + +export default Event; diff --git a/src/components/map_baidu/c_overlays/utils/cityCenter.js b/src/components/map_baidu/c_overlays/utils/cityCenter.js new file mode 100644 index 0000000..0f8c6e9 --- /dev/null +++ b/src/components/map_baidu/c_overlays/utils/cityCenter.js @@ -0,0 +1,58 @@ +/** + * get the center by the city name + */ + +var citycenter = { municipalities: [{ n: "北京", g: "116.395645,39.929986|12" }, { n: "上海", g: "121.487899,31.249162|12" }, { n: "天津", g: "117.210813,39.14393|12" }, { n: "重庆", g: "106.530635,29.544606|12" }], provinces: [{ n: "安徽", g: "117.216005,31.859252|8", cities: [{ n: "合肥", g: "117.282699,31.866942|12" }, { n: "安庆", g: "117.058739,30.537898|13" }, { n: "蚌埠", g: "117.35708,32.929499|13" }, { n: "亳州", g: "115.787928,33.871211|13" }, { n: "巢湖", g: "117.88049,31.608733|13" }, { n: "池州", g: "117.494477,30.660019|14" }, { n: "滁州", g: "118.32457,32.317351|13" }, { n: "阜阳", g: "115.820932,32.901211|13" }, { n: "淮北", g: "116.791447,33.960023|13" }, { n: "淮南", g: "117.018639,32.642812|13" }, { n: "黄山", g: "118.29357,29.734435|13" }, { n: "六安", g: "116.505253,31.755558|13" }, { n: "马鞍山", g: "118.515882,31.688528|13" }, { n: "宿州", g: "116.988692,33.636772|13" }, { n: "铜陵", g: "117.819429,30.94093|14" }, { n: "芜湖", g: "118.384108,31.36602|12" }, { n: "宣城", g: "118.752096,30.951642|13" }] }, { n: "福建", g: "117.984943,26.050118|8", cities: [{ n: "福州", g: "119.330221,26.047125|12" }, { n: "龙岩", g: "117.017997,25.078685|13" }, { n: "南平", g: "118.181883,26.643626|13" }, { n: "宁德", g: "119.542082,26.656527|14" }, { n: "莆田", g: "119.077731,25.44845|13" }, { n: "泉州", g: "118.600362,24.901652|12" }, { n: "三明", g: "117.642194,26.270835|14" }, { n: "厦门", g: "118.103886,24.489231|12" }, { n: "漳州", g: "117.676205,24.517065|12" }] }, { n: "甘肃", g: "102.457625,38.103267|6", cities: [{ n: "兰州", g: "103.823305,36.064226|12" }, { n: "白银", g: "104.171241,36.546682|13" }, { n: "定西", g: "104.626638,35.586056|13" }, { n: "甘南州", g: "102.917442,34.992211|14" }, { n: "嘉峪关", g: "98.281635,39.802397|13" }, { n: "金昌", g: "102.208126,38.516072|13" }, { n: "酒泉", g: "98.508415,39.741474|13" }, { n: "临夏州", g: "103.215249,35.598514|13" }, { n: "陇南", g: "104.934573,33.39448|14" }, { n: "平凉", g: "106.688911,35.55011|13" }, { n: "庆阳", g: "107.644227,35.726801|13" }, { n: "天水", g: "105.736932,34.584319|13" }, { n: "武威", g: "102.640147,37.933172|13" }, { n: "张掖", g: "100.459892,38.93932|13" }] }, { n: "广东", g: "113.394818,23.408004|8", cities: [{ n: "广州", g: "113.30765,23.120049|12" }, { n: "潮州", g: "116.630076,23.661812|13" }, { n: "东莞", g: "113.763434,23.043024|12" }, { n: "佛山", g: "113.134026,23.035095|13" }, { n: "河源", g: "114.713721,23.757251|12" }, { n: "惠州", g: "114.410658,23.11354|12" }, { n: "江门", g: "113.078125,22.575117|13" }, { n: "揭阳", g: "116.379501,23.547999|13" }, { n: "茂名", g: "110.931245,21.668226|13" }, { n: "梅州", g: "116.126403,24.304571|13" }, { n: "清远", g: "113.040773,23.698469|13" }, { n: "汕头", g: "116.72865,23.383908|13" }, { n: "汕尾", g: "115.372924,22.778731|14" }, { n: "韶关", g: "113.594461,24.80296|13" }, { n: "深圳", g: "114.025974,22.546054|12" }, { n: "阳江", g: "111.97701,21.871517|14" }, { n: "云浮", g: "112.050946,22.937976|13" }, { n: "湛江", g: "110.365067,21.257463|13" }, { n: "肇庆", g: "112.479653,23.078663|13" }, { n: "中山", g: "113.42206,22.545178|12" }, { n: "珠海", g: "113.562447,22.256915|13" }] }, { n: "广西", g: "108.924274,23.552255|7", cities: [{ n: "南宁", g: "108.297234,22.806493|12" }, { n: "百色", g: "106.631821,23.901512|13" }, { n: "北海", g: "109.122628,21.472718|13" }, { n: "崇左", g: "107.357322,22.415455|14" }, { n: "防城港", g: "108.351791,21.617398|15" }, { n: "桂林", g: "110.26092,25.262901|12" }, { n: "贵港", g: "109.613708,23.103373|13" }, { n: "河池", g: "108.069948,24.699521|14" }, { n: "贺州", g: "111.552594,24.411054|14" }, { n: "来宾", g: "109.231817,23.741166|14" }, { n: "柳州", g: "109.422402,24.329053|12" }, { n: "钦州", g: "108.638798,21.97335|13" }, { n: "梧州", g: "111.305472,23.485395|13" }, { n: "玉林", g: "110.151676,22.643974|14" }] }, { n: "贵州", g: "106.734996,26.902826|8", cities: [{ n: "贵阳", g: "106.709177,26.629907|12" }, { n: "安顺", g: "105.92827,26.228595|13" }, { n: "毕节地区", g: "105.300492,27.302612|14" }, { n: "六盘水", g: "104.852087,26.591866|13" }, { n: "铜仁地区", g: "109.196161,27.726271|14" }, { n: "遵义", g: "106.93126,27.699961|13" }, { n: "黔西南州", g: "104.900558,25.095148|11" }, { n: "黔东南州", g: "107.985353,26.583992|11" }, { n: "黔南州", g: "107.523205,26.264536|11" }] }, { n: "海南", g: "109.733755,19.180501|9", cities: [{ n: "海口", g: "110.330802,20.022071|13" }, { n: "白沙", g: "109.358586,19.216056|12" }, { n: "保亭", g: "109.656113,18.597592|12" }, { n: "昌江", g: "109.0113,19.222483|12" }, { n: "儋州", g: "109.413973,19.571153|13" }, { n: "澄迈", g: "109.996736,19.693135|13" }, { n: "东方", g: "108.85101,18.998161|13" }, { n: "定安", g: "110.32009,19.490991|13" }, { n: "琼海", g: "110.414359,19.21483|13" }, { n: "琼中", g: "109.861849,19.039771|12" }, { n: "乐东", g: "109.062698,18.658614|12" }, { n: "临高", g: "109.724101,19.805922|13" }, { n: "陵水", g: "109.948661,18.575985|12" }, { n: "三亚", g: "109.522771,18.257776|12" }, { n: "屯昌", g: "110.063364,19.347749|13" }, { n: "万宁", g: "110.292505,18.839886|13" }, { n: "文昌", g: "110.780909,19.750947|13" }, { n: "五指山", g: "109.51775,18.831306|13" }] }, { n: "河北", g: "115.661434,38.61384|7", cities: [{ n: "石家庄", g: "114.522082,38.048958|12" }, { n: "保定", g: "115.49481,38.886565|13" }, { n: "沧州", g: "116.863806,38.297615|13" }, { n: "承德", g: "117.933822,40.992521|14" }, { n: "邯郸", g: "114.482694,36.609308|13" }, { n: "衡水", g: "115.686229,37.746929|13" }, { n: "廊坊", g: "116.703602,39.518611|13" }, { n: "秦皇岛", g: "119.604368,39.945462|12" }, { n: "唐山", g: "118.183451,39.650531|13" }, { n: "邢台", g: "114.520487,37.069531|13" }, { n: "张家口", g: "114.893782,40.811188|13" }] }, { n: "河南", g: "113.486804,34.157184|7", cities: [{ n: "郑州", g: "113.649644,34.75661|12" }, { n: "安阳", g: "114.351807,36.110267|12" }, { n: "鹤壁", g: "114.29777,35.755426|13" }, { n: "焦作", g: "113.211836,35.234608|13" }, { n: "开封", g: "114.351642,34.801854|13" }, { n: "洛阳", g: "112.447525,34.657368|12" }, { n: "漯河", g: "114.046061,33.576279|13" }, { n: "南阳", g: "112.542842,33.01142|13" }, { n: "平顶山", g: "113.300849,33.745301|13" }, { n: "濮阳", g: "115.026627,35.753298|12" }, { n: "三门峡", g: "111.181262,34.78332|13" }, { n: "商丘", g: "115.641886,34.438589|13" }, { n: "新乡", g: "113.91269,35.307258|13" }, { n: "信阳", g: "114.085491,32.128582|13" }, { n: "许昌", g: "113.835312,34.02674|13" }, { n: "周口", g: "114.654102,33.623741|13" }, { n: "驻马店", g: "114.049154,32.983158|13" }] }, { n: "黑龙江", g: "128.047414,47.356592|6", cities: [{ n: "哈尔滨", g: "126.657717,45.773225|12" }, { n: "大庆", g: "125.02184,46.596709|12" }, { n: "大兴安岭地区", g: "124.196104,51.991789|10" }, { n: "鹤岗", g: "130.292472,47.338666|13" }, { n: "黑河", g: "127.50083,50.25069|14" }, { n: "鸡西", g: "130.941767,45.32154|13" }, { n: "佳木斯", g: "130.284735,46.81378|12" }, { n: "牡丹江", g: "129.608035,44.588521|13" }, { n: "七台河", g: "131.019048,45.775005|14" }, { n: "齐齐哈尔", g: "123.987289,47.3477|13" }, { n: "双鸭山", g: "131.171402,46.655102|13" }, { n: "绥化", g: "126.989095,46.646064|13" }, { n: "伊春", g: "128.910766,47.734685|14" }] }, { n: "湖北", g: "112.410562,31.209316|8", cities: [{ n: "武汉", g: "114.3162,30.581084|12" }, { n: "鄂州", g: "114.895594,30.384439|14" }, { n: "恩施", g: "109.517433,30.308978|14" }, { n: "黄冈", g: "114.906618,30.446109|14" }, { n: "黄石", g: "115.050683,30.216127|13" }, { n: "荆门", g: "112.21733,31.042611|13" }, { n: "荆州", g: "112.241866,30.332591|12" }, { n: "潜江", g: "112.768768,30.343116|13" }, { n: "神农架林区", g: "110.487231,31.595768|13" }, { n: "十堰", g: "110.801229,32.636994|13" }, { n: "随州", g: "113.379358,31.717858|13" }, { n: "天门", g: "113.12623,30.649047|13" }, { n: "仙桃", g: "113.387448,30.293966|13" }, { n: "咸宁", g: "114.300061,29.880657|13" }, { n: "襄阳", g: "112.176326,32.094934|12" }, { n: "孝感", g: "113.935734,30.927955|13" }, { n: "宜昌", g: "111.310981,30.732758|13" }] }, { n: "湖南", g: "111.720664,27.695864|7", cities: [{ n: "长沙", g: "112.979353,28.213478|12" }, { n: "常德", g: "111.653718,29.012149|12" }, { n: "郴州", g: "113.037704,25.782264|13" }, { n: "衡阳", g: "112.583819,26.898164|13" }, { n: "怀化", g: "109.986959,27.557483|13" }, { n: "娄底", g: "111.996396,27.741073|13" }, { n: "邵阳", g: "111.461525,27.236811|13" }, { n: "湘潭", g: "112.935556,27.835095|13" }, { n: "湘西州", g: "109.745746,28.317951|14" }, { n: "益阳", g: "112.366547,28.588088|13" }, { n: "永州", g: "111.614648,26.435972|13" }, { n: "岳阳", g: "113.146196,29.378007|13" }, { n: "张家界", g: "110.48162,29.124889|13" }, { n: "株洲", g: "113.131695,27.827433|13" }] }, { n: "江苏", g: "119.368489,33.013797|8", cities: [{ n: "南京", g: "118.778074,32.057236|12" }, { n: "常州", g: "119.981861,31.771397|12" }, { n: "淮安", g: "119.030186,33.606513|12" }, { n: "连云港", g: "119.173872,34.601549|12" }, { n: "南通", g: "120.873801,32.014665|12" }, { n: "苏州", g: "120.619907,31.317987|12" }, { n: "宿迁", g: "118.296893,33.95205|13" }, { n: "泰州", g: "119.919606,32.476053|13" }, { n: "无锡", g: "120.305456,31.570037|12" }, { n: "徐州", g: "117.188107,34.271553|12" }, { n: "盐城", g: "120.148872,33.379862|12" }, { n: "扬州", g: "119.427778,32.408505|13" }, { n: "镇江", g: "119.455835,32.204409|13" }] }, { n: "江西", g: "115.676082,27.757258|7", cities: [{ n: "南昌", g: "115.893528,28.689578|12" }, { n: "抚州", g: "116.360919,27.954545|13" }, { n: "赣州", g: "114.935909,25.845296|13" }, { n: "吉安", g: "114.992039,27.113848|13" }, { n: "景德镇", g: "117.186523,29.303563|12" }, { n: "九江", g: "115.999848,29.71964|13" }, { n: "萍乡", g: "113.859917,27.639544|13" }, { n: "上饶", g: "117.955464,28.457623|13" }, { n: "新余", g: "114.947117,27.822322|13" }, { n: "宜春", g: "114.400039,27.81113|13" }, { n: "鹰潭", g: "117.03545,28.24131|13" }] }, { n: "吉林", g: "126.262876,43.678846|7", cities: [{ n: "长春", g: "125.313642,43.898338|12" }, { n: "白城", g: "122.840777,45.621086|13" }, { n: "白山", g: "126.435798,41.945859|13" }, { n: "吉林", g: "126.564544,43.871988|12" }, { n: "辽源", g: "125.133686,42.923303|13" }, { n: "四平", g: "124.391382,43.175525|12" }, { n: "松原", g: "124.832995,45.136049|13" }, { n: "通化", g: "125.94265,41.736397|13" }, { n: "延边", g: "129.485902,42.896414|13" }] }, { n: "辽宁", g: "122.753592,41.6216|8", cities: [{ n: "沈阳", g: "123.432791,41.808645|12" }, { n: "鞍山", g: "123.007763,41.118744|13" }, { n: "本溪", g: "123.778062,41.325838|12" }, { n: "朝阳", g: "120.446163,41.571828|13" }, { n: "大连", g: "121.593478,38.94871|12" }, { n: "丹东", g: "124.338543,40.129023|12" }, { n: "抚顺", g: "123.92982,41.877304|12" }, { n: "阜新", g: "121.660822,42.01925|14" }, { n: "葫芦岛", g: "120.860758,40.74303|13" }, { n: "锦州", g: "121.147749,41.130879|13" }, { n: "辽阳", g: "123.172451,41.273339|14" }, { n: "盘锦", g: "122.073228,41.141248|13" }, { n: "铁岭", g: "123.85485,42.299757|13" }, { n: "营口", g: "122.233391,40.668651|13" }] }, { n: "内蒙古", g: "114.415868,43.468238|5", cities: [{ n: "呼和浩特", g: "111.660351,40.828319|12" }, { n: "阿拉善盟", g: "105.695683,38.843075|14" }, { n: "包头", g: "109.846239,40.647119|12" }, { n: "巴彦淖尔", g: "107.423807,40.76918|12" }, { n: "赤峰", g: "118.930761,42.297112|12" }, { n: "鄂尔多斯", g: "109.993706,39.81649|12" }, { n: "呼伦贝尔", g: "119.760822,49.201636|12" }, { n: "通辽", g: "122.260363,43.633756|12" }, { n: "乌海", g: "106.831999,39.683177|13" }, { n: "乌兰察布", g: "113.112846,41.022363|12" }, { n: "锡林郭勒盟", g: "116.02734,43.939705|11" }, { n: "兴安盟", g: "122.048167,46.083757|11" }] }, { n: "宁夏", g: "106.155481,37.321323|8", cities: [{ n: "银川", g: "106.206479,38.502621|12" }, { n: "固原", g: "106.285268,36.021523|13" }, { n: "石嘴山", g: "106.379337,39.020223|13" }, { n: "吴忠", g: "106.208254,37.993561|14" }, { n: "中卫", g: "105.196754,37.521124|14" }] }, { n: "青海", g: "96.202544,35.499761|7", cities: [{ n: "西宁", g: "101.767921,36.640739|12" }, { n: "果洛州", g: "100.223723,34.480485|11" }, { n: "海东地区", g: "102.085207,36.51761|11" }, { n: "海北州", g: "100.879802,36.960654|11" }, { n: "海南州", g: "100.624066,36.284364|11" }, { n: "海西州", g: "97.342625,37.373799|11" }, { n: "黄南州", g: "102.0076,35.522852|11" }, { n: "玉树州", g: "97.013316,33.00624|14" }] }, { n: "山东", g: "118.527663,36.09929|8", cities: [{ n: "济南", g: "117.024967,36.682785|12" }, { n: "滨州", g: "117.968292,37.405314|12" }, { n: "东营", g: "118.583926,37.487121|12" }, { n: "德州", g: "116.328161,37.460826|12" }, { n: "菏泽", g: "115.46336,35.26244|13" }, { n: "济宁", g: "116.600798,35.402122|13" }, { n: "莱芜", g: "117.684667,36.233654|13" }, { n: "聊城", g: "115.986869,36.455829|12" }, { n: "临沂", g: "118.340768,35.072409|12" }, { n: "青岛", g: "120.384428,36.105215|12" }, { n: "日照", g: "119.50718,35.420225|12" }, { n: "泰安", g: "117.089415,36.188078|13" }, { n: "威海", g: "122.093958,37.528787|13" }, { n: "潍坊", g: "119.142634,36.716115|12" }, { n: "烟台", g: "121.309555,37.536562|12" }, { n: "枣庄", g: "117.279305,34.807883|13" }, { n: "淄博", g: "118.059134,36.804685|12" }] }, { n: "山西", g: "112.515496,37.866566|7", cities: [{ n: "太原", g: "112.550864,37.890277|12" }, { n: "长治", g: "113.120292,36.201664|12" }, { n: "大同", g: "113.290509,40.113744|12" }, { n: "晋城", g: "112.867333,35.499834|13" }, { n: "晋中", g: "112.738514,37.693362|13" }, { n: "临汾", g: "111.538788,36.099745|13" }, { n: "吕梁", g: "111.143157,37.527316|14" }, { n: "朔州", g: "112.479928,39.337672|13" }, { n: "忻州", g: "112.727939,38.461031|12" }, { n: "阳泉", g: "113.569238,37.869529|13" }, { n: "运城", g: "111.006854,35.038859|13" }] }, { n: "陕西", g: "109.503789,35.860026|7", cities: [{ n: "西安", g: "108.953098,34.2778|12" }, { n: "安康", g: "109.038045,32.70437|13" }, { n: "宝鸡", g: "107.170645,34.364081|12" }, { n: "汉中", g: "107.045478,33.081569|13" }, { n: "商洛", g: "109.934208,33.873907|13" }, { n: "铜川", g: "108.968067,34.908368|13" }, { n: "渭南", g: "109.483933,34.502358|13" }, { n: "咸阳", g: "108.707509,34.345373|13" }, { n: "延安", g: "109.50051,36.60332|13" }, { n: "榆林", g: "109.745926,38.279439|12" }] }, { n: "四川", g: "102.89916,30.367481|7", cities: [{ n: "成都", g: "104.067923,30.679943|12" }, { n: "阿坝州", g: "102.228565,31.905763|15" }, { n: "巴中", g: "106.757916,31.869189|14" }, { n: "达州", g: "107.494973,31.214199|14" }, { n: "德阳", g: "104.402398,31.13114|13" }, { n: "甘孜州", g: "101.969232,30.055144|15" }, { n: "广安", g: "106.63572,30.463984|13" }, { n: "广元", g: "105.819687,32.44104|13" }, { n: "乐山", g: "103.760824,29.600958|13" }, { n: "凉山州", g: "102.259591,27.892393|14" }, { n: "泸州", g: "105.44397,28.89593|14" }, { n: "南充", g: "106.105554,30.800965|13" }, { n: "眉山", g: "103.84143,30.061115|13" }, { n: "绵阳", g: "104.705519,31.504701|12" }, { n: "内江", g: "105.073056,29.599462|13" }, { n: "攀枝花", g: "101.722423,26.587571|14" }, { n: "遂宁", g: "105.564888,30.557491|12" }, { n: "雅安", g: "103.009356,29.999716|13" }, { n: "宜宾", g: "104.633019,28.769675|13" }, { n: "资阳", g: "104.63593,30.132191|13" }, { n: "自贡", g: "104.776071,29.359157|13" }] }, { n: "西藏", g: "89.137982,31.367315|6", cities: [{ n: "拉萨", g: "91.111891,29.662557|13" }, { n: "阿里地区", g: "81.107669,30.404557|11" }, { n: "昌都地区", g: "97.185582,31.140576|15" }, { n: "林芝地区", g: "94.349985,29.666941|11" }, { n: "那曲地区", g: "92.067018,31.48068|14" }, { n: "日喀则地区", g: "88.891486,29.269023|14" }, { n: "山南地区", g: "91.750644,29.229027|11" }] }, { n: "新疆", g: "85.614899,42.127001|6", cities: [{ n: "乌鲁木齐", g: "87.564988,43.84038|12" }, { n: "阿拉尔", g: "81.291737,40.61568|13" }, { n: "阿克苏地区", g: "80.269846,41.171731|12" }, { n: "阿勒泰地区", g: "88.137915,47.839744|13" }, { n: "巴音郭楞", g: "86.121688,41.771362|12" }, { n: "博尔塔拉州", g: "82.052436,44.913651|11" }, { n: "昌吉州", g: "87.296038,44.007058|13" }, { n: "哈密地区", g: "93.528355,42.858596|13" }, { n: "和田地区", g: "79.930239,37.116774|13" }, { n: "喀什地区", g: "75.992973,39.470627|12" }, { n: "克拉玛依", g: "84.88118,45.594331|13" }, { n: "克孜勒苏州", g: "76.137564,39.750346|11" }, { n: "石河子", g: "86.041865,44.308259|13" }, { n: "塔城地区", g: "82.974881,46.758684|12" }, { n: "图木舒克", g: "79.198155,39.889223|13" }, { n: "吐鲁番地区", g: "89.181595,42.96047|13" }, { n: "五家渠", g: "87.565449,44.368899|13" }, { n: "伊犁州", g: "81.297854,43.922248|11" }] }, { n: "云南", g: "101.592952,24.864213|7", cities: [{ n: "昆明", g: "102.714601,25.049153|12" }, { n: "保山", g: "99.177996,25.120489|13" }, { n: "楚雄州", g: "101.529382,25.066356|13" }, { n: "大理州", g: "100.223675,25.5969|14" }, { n: "德宏州", g: "98.589434,24.44124|14" }, { n: "迪庆州", g: "99.713682,27.831029|14" }, { n: "红河州", g: "103.384065,23.367718|11" }, { n: "丽江", g: "100.229628,26.875351|13" }, { n: "临沧", g: "100.092613,23.887806|14" }, { n: "怒江州", g: "98.859932,25.860677|14" }, { n: "普洱", g: "100.980058,22.788778|14" }, { n: "曲靖", g: "103.782539,25.520758|12" }, { n: "昭通", g: "103.725021,27.340633|13" }, { n: "文山", g: "104.089112,23.401781|14" }, { n: "西双版纳", g: "100.803038,22.009433|13" }, { n: "玉溪", g: "102.545068,24.370447|13" }] }, { n: "浙江", g: "119.957202,29.159494|8", cities: [{ n: "杭州", g: "120.219375,30.259244|12" }, { n: "湖州", g: "120.137243,30.877925|12" }, { n: "嘉兴", g: "120.760428,30.773992|13" }, { n: "金华", g: "119.652576,29.102899|12" }, { n: "丽水", g: "119.929576,28.4563|13" }, { n: "宁波", g: "121.579006,29.885259|12" }, { n: "衢州", g: "118.875842,28.95691|12" }, { n: "绍兴", g: "120.592467,30.002365|13" }, { n: "台州", g: "121.440613,28.668283|13" }, { n: "温州", g: "120.690635,28.002838|12" }, { n: "舟山", g: "122.169872,30.03601|13" }] }], other: [{ n: "香港", g: "114.186124,22.293586|11" }, { n: "澳门", g: "113.557519,22.204118|13" }, { n: "台湾", g: "120.961454,23.80406|8" }] }; + +function getCenter(g) { + var item = g.split("|"); + item[0] = item[0].split(","); + return { + lng: parseFloat(item[0][0]), + lat: parseFloat(item[0][1]) + } +} + +export default { + getProvinceNameByCityName: function (name) { + var provinces = citycenter.provinces; + for (var i = 0; i < provinces.length; i++) { + var provinceName = provinces[i].n; + var cities = provinces[i].cities; + for (var j = 0; j < cities.length; j++) { + if (cities[j].n == name) { + return provinceName; + } + } + } + return null; + }, + getCenterByCityName: function (name) { + name = name.replace('市', ''); + for (var i = 0; i < citycenter.municipalities.length; i++) { + if (citycenter.municipalities[i].n == name) { + return getCenter(citycenter.municipalities[i].g); + } + } + + for (var i = 0; i < citycenter.other.length; i++) { + if (citycenter.other[i].n == name) { + return getCenter(citycenter.other[i].g); + } + } + + var provinces = citycenter.provinces; + for (var i = 0; i < provinces.length; i++) { + if (provinces[i].n == name) { + return getCenter(provinces[i].g); + } + var cities = provinces[i].cities; + for (var j = 0; j < cities.length; j++) { + if (cities[j].n == name) { + return getCenter(cities[j].g); + } + } + } + return null; + } +} diff --git a/src/components/map_baidu/c_overlays/utils/geo.js b/src/components/map_baidu/c_overlays/utils/geo.js new file mode 100644 index 0000000..8021d4e --- /dev/null +++ b/src/components/map_baidu/c_overlays/utils/geo.js @@ -0,0 +1,17 @@ +/** + * 根据2点获取角度 + * @param Array [123, 23] 点1 + * @param Array [123, 23] 点2 + * @return angle 角度,不是弧度 [-90,270] + */ +function getAngle(start, end) { + var diff_x = end[0] - start[0]; + var diff_y = end[1] - start[1]; + var deg = 360 * Math.atan(diff_y / diff_x) / (2 * Math.PI); + if (end[0] < start[0]) { + deg = deg + 180; + } + return deg; +} + +export { getAngle }; \ No newline at end of file diff --git a/src/components/map_baidu/overlays/CanvasOverlay.js b/src/components/map_baidu/overlays/CanvasOverlay.js new file mode 100644 index 0000000..32c6913 --- /dev/null +++ b/src/components/map_baidu/overlays/CanvasOverlay.js @@ -0,0 +1,114 @@ + +function CanvasLayer(options) { + this.options = options || {}; + this.paneName = this.options.paneName || 'labelPane'; + this.zIndex = this.options.zIndex || 0; + this._map = options.map; + this._lastDrawTime = null; + this.show(); + +} + +CanvasLayer.prototype = new BMapGL.Overlay(); + +CanvasLayer.prototype.initialize = function (map) { + this._map = map; + var canvas = this.canvas = document.createElement('canvas'); + var ctx = this.ctx = this.canvas.getContext('2d'); + canvas.style.cssText = 'position:absolute;' + + 'left:0;' + + 'top:0;' + + 'z-index:' + this.zIndex + ';'; + this.adjustSize(); + this.adjustRatio(ctx); + map.getPanes()[this.paneName].appendChild(canvas); + var that = this; + map.addEventListener('resize', function () { + that.adjustSize(); + that._draw(); + }); + return this.canvas; +} + +CanvasLayer.prototype.adjustSize = function () { + var size = this._map.getSize(); + var canvas = this.canvas; + canvas.width = size.width; + canvas.height = size.height; + canvas.style.width = canvas.width + 'px'; + canvas.style.height = canvas.height + 'px'; +} + +CanvasLayer.prototype.adjustRatio = function (ctx) { + var backingStore = ctx.backingStorePixelRatio || + ctx.webkitBackingStorePixelRatio || + ctx.mozBackingStorePixelRatio || + ctx.msBackingStorePixelRatio || + ctx.oBackingStorePixelRatio || + ctx.backingStorePixelRatio || 1; + var pixelRatio = (window.devicePixelRatio || 1) / backingStore; + var canvasWidth = ctx.canvas.width; + var canvasHeight = ctx.canvas.height; + ctx.canvas.width = canvasWidth * pixelRatio; + ctx.canvas.height = canvasHeight * pixelRatio; + ctx.canvas.style.width = canvasWidth + 'px'; + ctx.canvas.style.height = canvasHeight + 'px'; + // console.log(ctx.canvas.height, canvasHeight); + ctx.scale(pixelRatio, pixelRatio); +} + +CanvasLayer.prototype.draw = function () { + var self = this; + if (self.timeoutID) { + clearTimeout(self.timeoutID); + self._draw(); + } else { + self.timeoutID = setTimeout(function () { + self._draw(); + }, 15); + } + + +} + +CanvasLayer.prototype._draw = function () { + var map = this._map; + var size = map.getSize(); + var center = map.getCenter(); + if (center) { + var pixel = map.pointToOverlayPixel(center); + this.canvas.style.left = pixel.x - size.width / 2 + 'px'; + this.canvas.style.top = pixel.y - size.height / 2 + 'px'; + this.dispatchEvent('draw'); + this.options.update && this.options.update.call(this); + } +} + +CanvasLayer.prototype.getContainer = function () { + return this.canvas; +} + +CanvasLayer.prototype.show = function () { + + if (!this.canvas) { + this._map.addOverlay(this); + } + this.canvas.style.display = 'block'; +} + +CanvasLayer.prototype.hide = function () { + this.canvas.style.display = 'none'; + //this._map.removeOverlay(this); +} + +CanvasLayer.prototype.setZIndex = function (zIndex) { + this.canvas.style.zIndex = zIndex; +} + +CanvasLayer.prototype.getZIndex = function () { + return this.zIndex; +} + + + +export default CanvasLayer; \ No newline at end of file diff --git a/src/components/map_baidu/overlays/LineOverlay.js b/src/components/map_baidu/overlays/LineOverlay.js new file mode 100644 index 0000000..8825091 --- /dev/null +++ b/src/components/map_baidu/overlays/LineOverlay.js @@ -0,0 +1,272 @@ +import { mergeOpt, containStroke } from "../utils/tools" +import CanvasLayer from './CanvasOverlay'; + + +var WSLib = WSLib || {}; + + + +var LineOverlay = function (map, userOptions) { + if (!map) { + return; + } + let self = this; + self.map = map; + self.lines = []; + self.pixelList = []; + //默认配置项 + let options = { + lineWidth: 5, + lineColor: "#F9815C", + + } + let ctxWidth = map.getSize().width; + let ctxHeight = map.getSize().height; + + self.init(userOptions, options); + + + //定义基础线 + function Line(opts) { + this.path = opts.path; + this.properties = opts.properties; + } + Line.prototype.draw = function (context) { + var pointList = this.pixelList || this.getPointList(); + + //基础线条绘制 + context.save(); + context.beginPath(); + context.lineWidth = options.lineWidth; + let type = this.properties.topCategory; + if (type == '2') { + context.strokeStyle = "#fff"; + } else if (this.properties.topCategory == '3') { + context.strokeStyle = "#841D28"; + } + context.moveTo(pointList[0].pixel.x, pointList[0].pixel.y); + context.lineTo(pointList[1].pixel.x, pointList[1].pixel.y); + context.stroke(); + context.closePath(); + context.restore(); + + let fromX = pointList[0].pixel.x, + fromY = pointList[0].pixel.y, + toX = pointList[1].pixel.x, + toY = pointList[1].pixel.y; + let angle = Math.atan2(fromY - toY, fromX - toX) * 180 / Math.PI, + startX = (toX - fromX) / 2 + fromX, + startY = (toY - fromY) / 2 + fromY; + context.save(); + context.translate(startX, startY) + if (toX >= fromX) { + if (angle >= 0) { + angle = angle - 180 + } else { + angle = 180 + angle + } + context.rotate(angle * Math.PI / 180) + context.translate(12, 0); + context.clearRect(-5, -3, 20, 6) + } else { + context.rotate(angle * Math.PI / 180) + context.translate(-12, 0); + context.clearRect(-5, -3, 18, 6) + } + context.restore(); + + this.drawTag(context, fromX, fromY, toX, toY, type) + // var lastpoint = pointList[pointList.length - 1]; + // context.font = 'bold 14px Arial'; + // context.textAlign = 'left'; + // context.textBaseline = 'middle'; + // context.fillStyle = this.labelColor; + // context.fillText(this.label, lastpoint.pixel.x, lastpoint.pixel.y); + } + Line.prototype.drawArrow = function (ctx, x, y, angle, color) { + var theta = 45, + headlen = 9, + width = 3, + angle1 = (angle + theta) * Math.PI / 180, + angle2 = (angle - theta) * Math.PI / 180, + topX = headlen * Math.cos(angle1), + topY = headlen * Math.sin(angle1), + botX = headlen * Math.cos(angle2), + botY = headlen * Math.sin(angle2); + ctx.save(); + ctx.beginPath(); + var arrowX, arrowY; + // ctx.moveTo(Math.cos(angle) * (startX - 2), Math.sin(angle) * (startY - 2)); + ctx.moveTo(x, y); + arrowX = x + topX; + arrowY = y + topY; + ctx.moveTo(arrowX, arrowY); + ctx.lineTo(x, y); + arrowX = x + botX; + arrowY = y + botY; + ctx.lineTo(arrowX, arrowY); + ctx.strokeStyle = color; + ctx.lineWidth = width; + ctx.stroke(); + ctx.restore(); + } + Line.prototype.drawTag = function (ctx, fromX, fromY, toX, toY, type) { + // var lastpoint = pointList[pointList.length - 1]; + let color = '#fff', + str = ''; + if (type == '2') { + color = '#3232C8' + str = 'Y' + } else if (type == '3') { + color = '#841D28' + str = 'W' + } + + let angle = Math.atan2(fromY - toY, fromX - toX) * 180 / Math.PI, + startX = (toX - fromX) / 2 + fromX, + startY = (toY - fromY) / 2 + fromY; + ctx.save(); + ctx.translate(startX, startY) + ctx.textAlign = 'left'; + ctx.textBaseline = 'middle'; + ctx.fillStyle = color; + ctx.font = 'bold 14px Arial'; + if (toX >= fromX) { + if (angle >= 0) { + angle = angle - 180 + } else { + angle = 180 + angle + } + ctx.rotate(angle * Math.PI / 180) + ctx.translate(12, 0); + ctx.fillText(str, 0, 0); + this.drawArrow(ctx, -3, 0, 180, color) + } else { + ctx.rotate(angle * Math.PI / 180) + ctx.translate(-12, 0); + ctx.fillText(str, 0, 0); + this.drawArrow(ctx, 12, 0, 0, color) + } + ctx.restore(); + } + + + Line.prototype.getPointList = function () { + var points = [], + path = this.path; + if (path && path.length > 0) { + path.forEach(function (p) { + points.push({ + pixel: map.pointToPixel(p.location) + }); + }) + } + return points; + } + + + + + //底层canvas渲染,标注,线条 + var brush = function () { + let baseCtx = baseLayer.canvas.getContext('2d'); + if (!baseCtx) { + return; + } + + addLine(); + + baseCtx.clearRect(0, 0, ctxWidth, ctxHeight); + + self.pixelList = []; + self.lines.forEach(function (line) { + self.pixelList.push({ + properties: line.properties, + data: line.getPointList() + }) + line.draw(baseCtx); + }); + } + + this.update = function () { + brush() + } + + let baseLayer = new CanvasLayer({ + map: map, + update: brush + }); + + + + var addLine = function () { + if (self.lines && self.lines.length > 0) return; + var dataset = options.data; + + dataset.forEach(function (l, i) { + var line = new Line({ + properties: l.properties, + path: [] + }); + l.geometry.coordinates.forEach(function (p, j) { + line.path.push({ + location: new BMapGL.Point(p[0], p[1]) + }); + }); + self.lines.push(line); + }); + } + + this.clickEvent = this.clickEvent.bind(this); + + this.bindEvent(); +} + +LineOverlay.prototype.init = function (settings, defaults) { + //合并参数 + mergeOpt(settings, defaults); + this.options = defaults; +} + +LineOverlay.prototype.setData = function (lines) { + this.lines = []; + this.pixelList = []; + this.options.data = lines; + this.update(); +} + +LineOverlay.prototype.bindEvent = function (e) { + var map = this.map; + if (this.options.methods) { + if (this.options.methods.click) { + map.setDefaultCursor("default"); + map.addEventListener('click', this.clickEvent); + } + } +} + +LineOverlay.prototype.clickEvent = function (e) { + var self = this, + lines = self.pixelList; + if (lines.length > 0) { + lines.forEach(function (line, i) { + for (var j = 0; j < line.data.length; j++) { + var beginPt = line.data[j].pixel; + if (line.data[j + 1] == undefined) { + return; + } + var endPt = line.data[j + 1].pixel; + var curPt = e.pixel; + var isOnLine = containStroke(beginPt.x, beginPt.y, endPt.x, endPt.y, self.options.lineWidth * 2, curPt.x, curPt.y); + if (isOnLine) { + self.options.methods.click(e, line.properties); + return; + } + } + + }); + } +} + +export { LineOverlay }; +// export default WSLib; diff --git a/src/components/map_baidu/utils/tools.js b/src/components/map_baidu/utils/tools.js new file mode 100644 index 0000000..7c49cda --- /dev/null +++ b/src/components/map_baidu/utils/tools.js @@ -0,0 +1,95 @@ + +//去重重复坐标 +export function dereplicationPoint(points) { + var result = []; + var obj = {}; + for (var i = 0; i < points.length; i++) { + let key = points[i].lng + "" + points[i].lat; + if (!obj[key]) { + result.push(points[i]); + obj[key] = true; + } + } + return result; +} + +//获取多边形中心点 +export function centerPoint(points) { + var x = 0.0; + var y = 0.0; + for (var i = 0; i < points.length; i++) { + x = x + parseFloat(points[i].lng); + y = y + parseFloat(points[i].lat); + } + x = x / points.length; + y = y / points.length; + return [x, y]; +} + +//计算两个坐标旋转角度 +// export function getAngle(x1, y1, x2, y2) { +// let angle = Math.atan2(Math.abs(y2 - y1), Math.abs(x2 - x1)); +// angle = angle * 180 / Math.PI; +// let rate = Math.min(angle, 90 - angle); +// rate = rate * 0.6; +// if (x2 >= x1) { +// if (y2 > y1) { +// angle = 90 - angle - rate; +// } else { +// angle = angle + 90 + rate; +// } +// // angle = angle + rate; +// } else { +// if (y2 > y1) { +// angle = angle - 90 + rate; +// } else { +// angle = -angle - 90 - rate; +// } +// // angle = angle - rate; +// } + +// return angle; +// } + +export function getAngle(x1, y1, x2, y2) { + let angle = Math.atan2(y1 - y2, x1 - x2); + angle = angle * 180 / Math.PI; + return angle; +} + +export function mergeOpt(settings, defaults) { + Object.keys(settings).forEach(function (key) { + defaults[key] = settings[key]; + }); +} + +//判断点是否在线段上 +export function containStroke(x0, y0, x1, y1, lineWidth, x, y) { + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + var _a = 0; + var _b = x0; + // Quick reject + if ( + (y > y0 + _l && y > y1 + _l) || + (y < y0 - _l && y < y1 - _l) || + (x > x0 + _l && x > x1 + _l) || + (x < x0 - _l && x < x1 - _l) + ) { + return false; + } + + if (x0 !== x1) { + _a = (y0 - y1) / (x0 - x1); + _b = (x0 * y1 - x1 * y0) / (x0 - x1); + } else { + return Math.abs(x - x0) <= _l / 2; + } + var tmp = _a * x - y + _b; + var _s = tmp * tmp / (_a * _a + 1); + return _s <= _l / 2 * _l / 2; +} + + diff --git a/src/components/map_tool/control/Search.vue b/src/components/map_tool/control/Search.vue new file mode 100644 index 0000000..459af0d --- /dev/null +++ b/src/components/map_tool/control/Search.vue @@ -0,0 +1,104 @@ + + + + + \ No newline at end of file diff --git a/src/components/map_tool/control/SizeAndType.vue b/src/components/map_tool/control/SizeAndType.vue new file mode 100644 index 0000000..a473284 --- /dev/null +++ b/src/components/map_tool/control/SizeAndType.vue @@ -0,0 +1,69 @@ + + + + + + \ No newline at end of file diff --git a/src/components/map_tool/legend/LegendItem.vue b/src/components/map_tool/legend/LegendItem.vue new file mode 100644 index 0000000..bcdbf86 --- /dev/null +++ b/src/components/map_tool/legend/LegendItem.vue @@ -0,0 +1,114 @@ + + + + + \ No newline at end of file diff --git a/src/components/map_tool/menu/Option.vue b/src/components/map_tool/menu/Option.vue new file mode 100644 index 0000000..6d342a0 --- /dev/null +++ b/src/components/map_tool/menu/Option.vue @@ -0,0 +1,322 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/components/map_tool/menu/Tool.vue b/src/components/map_tool/menu/Tool.vue new file mode 100644 index 0000000..167cc28 --- /dev/null +++ b/src/components/map_tool/menu/Tool.vue @@ -0,0 +1,389 @@ + + + + + + + + \ No newline at end of file diff --git a/src/directives/index.ts b/src/directives/index.ts new file mode 100644 index 0000000..c25887e --- /dev/null +++ b/src/directives/index.ts @@ -0,0 +1,15 @@ +import type { App } from 'vue' +import { hasRole } from './permission/hasRole' +import { hasPermi } from './permission/hasPermi' +import { setItem } from './permission/setItem' + +/** + * 导出指令:v-xxx + * @methods hasRole 用户权限,用法: v-hasRole + * @methods hasPermi 按钮权限,用法: v-hasPermi + */ +export const setupAuth = (app: App) => { + hasRole(app) + hasPermi(app) + setItem(app) +} diff --git a/src/directives/permission/hasPermi.ts b/src/directives/permission/hasPermi.ts new file mode 100644 index 0000000..5f3dd5d --- /dev/null +++ b/src/directives/permission/hasPermi.ts @@ -0,0 +1,27 @@ +import type { App } from 'vue' +import { useCache } from '@/hooks/useCache' +import Keys from '@/api/Keys' + + +export function hasPermi(app: App) { + app.directive('hasPermi', (el, binding) => { + const { wsCache } = useCache() + const { value } = binding + const all_permission = '*:*:*' + const permissions = wsCache.get(Keys.STORAGE_USER_INFO).permissions + + if (value && value instanceof Array && value.length > 0) { + const permissionFlag = value + + const hasPermissions = permissions.some((permission: string) => { + return all_permission === permission || permissionFlag.includes(permission) + }) + + if (!hasPermissions) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error('请设置操作权限标签值') + } + }) +} diff --git a/src/directives/permission/hasRole.ts b/src/directives/permission/hasRole.ts new file mode 100644 index 0000000..cb1feb7 --- /dev/null +++ b/src/directives/permission/hasRole.ts @@ -0,0 +1,26 @@ +import type { App } from 'vue' +import { useCache } from '@/hooks/useCache' +import Keys from '@/api/Keys' + +export function hasRole(app: App) { + app.directive('hasRole', (el, binding) => { + const { wsCache } = useCache() + const { value } = binding + const super_admin = 'admin' + const roles = wsCache.get(Keys.STORAGE_USER_INFO).roles + + if (value && value instanceof Array && value.length > 0) { + const roleFlag = value + + const hasRole = roles.some((role: string) => { + return super_admin === role || roleFlag.includes(role) + }) + + if (!hasRole) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error('请设置角色权限标签值') + } + }) +} diff --git a/src/directives/permission/setItem.ts b/src/directives/permission/setItem.ts new file mode 100644 index 0000000..48f58f2 --- /dev/null +++ b/src/directives/permission/setItem.ts @@ -0,0 +1,12 @@ +import type { App } from 'vue' + +export function setItem(app: App) { + app.directive('setItem', { + beforeMount(el, binding) { + el._vItem = binding.value + }, + unmounted(el) { + delete el._vItem + }, + }) +} diff --git a/src/global.d.ts b/src/global.d.ts new file mode 100644 index 0000000..9216a10 --- /dev/null +++ b/src/global.d.ts @@ -0,0 +1,70 @@ +export {} +declare global { + interface Fn { + (...arg: T[]): T + } + declare module 'element-plus/dist/locale/zh-cn.mjs' + + type Nullable = T | null + + type ElRef = Nullable + + type Recordable = Record< + K extends null | undefined ? string : K, + T + > + + type ComponentRef = InstanceType + + type LocaleType = 'zh-CN' | 'en' + + declare type TimeoutHandle = ReturnType + declare type IntervalHandle = ReturnType + + type AxiosHeaders = + | 'application/json' + | 'application/x-www-form-urlencoded' + | 'multipart/form-data' + + type AxiosMethod = 'get' | 'post' | 'delete' | 'put' | 'GET' | 'POST' | 'DELETE' | 'PUT' + + type AxiosResponseType = + | 'arraybuffer' + | 'blob' + | 'document' + | 'json' + | 'text' + | 'stream' + + interface AxiosConfig { + params?: any + data?: any + url?: string + method?: AxiosMethod + headersType?: string + responseType?: AxiosResponseType + } + + interface IResponse { + code: string + data: T extends any ? T : T & any + } + + interface PageParam { + pageSize?: number + pageNo?: number + } + + interface deviceParam { + deviceId: string + siteId: string + } + + type OperantAction = 'create' | 'update' | 'delete' + + interface Tree { + id: number + name: string + children?: Tree[] | any[] + } +} diff --git a/src/hooks/useCache.ts b/src/hooks/useCache.ts new file mode 100644 index 0000000..1902b8d --- /dev/null +++ b/src/hooks/useCache.ts @@ -0,0 +1,38 @@ +/** + * 配置浏览器本地存储的方式,可直接存储对象数组。 + */ + +import Keys from '@/api/Keys' +import WebStorageCache from 'web-storage-cache' + +type CacheType = 'localStorage' | 'sessionStorage' + +export const useCache = (type: CacheType = 'localStorage') => { + const wsCache: WebStorageCache = new WebStorageCache({ + storage: type, + }) + + return { + wsCache, + } +} + +export const deleteUserCache = () => { + const { wsCache } = useCache() + wsCache.delete(Keys.STORAGE_USER_INFO) + wsCache.delete(Keys.STORAGE_ROLE_ROUTERS) + wsCache.delete(Keys.STORAGE_STATIONID) +} + +export function getCacheStationId( + stationId: number | string, + type: 'get' | 'set' = 'get' +) { + const { wsCache } = useCache() + const id = wsCache.get(Keys.STORAGE_STATIONID) + if (!id || type === 'set') { + wsCache.set(Keys.STORAGE_STATIONID, stationId) + return Number(stationId) + } + return Number(id) +} diff --git a/src/hooks/useConfigGlobal.ts b/src/hooks/useConfigGlobal.ts new file mode 100644 index 0000000..702f8ab --- /dev/null +++ b/src/hooks/useConfigGlobal.ts @@ -0,0 +1,9 @@ +import type { ConfigGlobalTypes } from '@/types/configGlobal' + +export const useConfigGlobal = () => { + const configGlobal = inject('configGlobal', {}) as ConfigGlobalTypes + + return { + configGlobal + } +} diff --git a/src/hooks/useDesign.ts b/src/hooks/useDesign.ts new file mode 100644 index 0000000..8ee3b38 --- /dev/null +++ b/src/hooks/useDesign.ts @@ -0,0 +1,18 @@ +import variables from '@/styles/global.module.scss' + +export const useDesign = () => { + const scssVariables = variables + + /** + * @param scope 类名 + * @returns 返回空间名-类名 + */ + const getPrefixCls = (scope: string) => { + return `${scssVariables.namespace}-${scope}` + } + + return { + variables: scssVariables, + getPrefixCls + } +} diff --git a/src/hooks/useMessage.ts b/src/hooks/useMessage.ts new file mode 100644 index 0000000..24c7d12 --- /dev/null +++ b/src/hooks/useMessage.ts @@ -0,0 +1,136 @@ +import Keys from '@/api/Keys' +import type { Result } from '@/api/basic/httpTypes' +import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' +export const useMessage = () => { + return { + // 消息提示 + info(content: string) { + ElMessage.info(content) + }, + // 错误消息 + error(content: string) { + ElMessage.error(content) + }, + // 成功消息 + success(content: string) { + ElMessage.success(content) + }, + // 警告消息 + warning(content: string) { + ElMessage.warning(content) + }, + // 弹出提示 + alert(content: string) { + ElMessageBox.alert(content, '系统提示') + }, + // 错误提示 + alertError(content: string) { + ElMessageBox.alert(content, '系统提示', { type: 'error' }) + }, + // 成功提示 + alertSuccess(content: string) { + ElMessageBox.alert(content, '系统提示', { type: 'success' }) + }, + // 警告提示 + alertWarning(content: string) { + ElMessageBox.alert(content, '系统提示', { type: 'warning' }) + }, + // 通知提示 + notify(content: string) { + ElNotification.info(content) + }, + // 错误通知 + notifyError(content: string, tip?: string) { + ElNotification.error({ + title: tip ? tip : '系统提示', + message: content, + }) + }, + // 成功通知 + notifySuccess(content: string) { + ElNotification.success(content) + }, + // 警告通知 + notifyWarning(content: string) { + ElNotification.warning(content) + }, + // 确认窗体 + confirm(content: string, tip?: string) { + return ElMessageBox.confirm(content, tip ? tip : '系统提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }) + }, + forceConfirm(content: string, tip?: string, buttonText?: string) { + return ElMessageBox.confirm(content, tip ? tip : '系统提示', { + confirmButtonText: buttonText ?? '确定', + showCancelButton: false, + closeOnClickModal: false, + closeOnPressEscape: false, + showClose: false, + type: 'warning', + }) + }, + // 删除窗体 + delConfirm(content?: string, tip?: string) { + return new Promise((resolve, reject) => { + ElMessageBox.confirm( + content ? content : '是否确认删除数据项?', + tip ? tip : '系统提示', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + } + ) + .then(() => { + resolve('') + }) + .catch(() => { + reject('') + }) + }) + }, + // 导出窗体 + exportConfirm(content?: string, tip?: string) { + return ElMessageBox.confirm( + content ? content : '是否确认导出数据项?', + tip ? tip : '系统提示', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + } + ) + }, + // 提交内容 + prompt(content: string, tip: string) { + return ElMessageBox.prompt(content, tip, { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }) + }, + + promptVerify(content: string, tip: string, pattern: string, inputErrorMessage = '') { + const PatternRegExp = new RegExp( + `^${pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')}$` + ) + return ElMessageBox.prompt(content, tip, { + confirmButtonText: '确定', + cancelButtonText: '取消', + inputPattern: PatternRegExp, + inputErrorMessage: inputErrorMessage, + type: 'warning', + }) + }, + } +} + +export function isResError(res: Result, msg?: string) { + if (res.code === Keys.CODE_SUCCEED || res.status === 200 || res.code === 200) + return false + ElMessage.error(res?.msg ?? msg) + return true +} diff --git a/src/locales/en.ts b/src/locales/en.ts new file mode 100644 index 0000000..6562c9b --- /dev/null +++ b/src/locales/en.ts @@ -0,0 +1,457 @@ +export default { + common: { + inputText: 'Please input', + selectText: 'Please select', + startTimeText: 'Start time', + endTimeText: 'End time', + login: 'Login', + required: 'This is required', + loginOut: 'Login out', + document: 'Document', + profile: 'User Center', + reminder: 'Reminder', + loginOutMessage: 'Exit the system?', + back: 'Back', + ok: 'OK', + save: 'Save', + cancel: 'Cancel', + close: 'Close', + reload: 'Reload current', + success: 'Success', + closeTab: 'Close current', + closeTheLeftTab: 'Close left', + closeTheRightTab: 'Close right', + closeOther: 'Close other', + closeAll: 'Close all', + prevLabel: 'Prev', + nextLabel: 'Next', + skipLabel: 'Jump', + doneLabel: 'End', + menu: 'Menu', + menuDes: 'Menu bar rendered in routed structure', + collapse: 'Collapse', + collapseDes: 'Expand and zoom the menu bar', + tagsView: 'Tags view', + tagsViewDes: 'Used to record routing history', + tool: 'Tool', + toolDes: 'Used to set up custom systems', + query: 'Query', + reset: 'Reset', + shrink: 'Put away', + expand: 'Expand', + confirmTitle: 'System Hint', + exportMessage: 'Whether to confirm export data item?', + importMessage: 'Whether to confirm import data item?', + createSuccess: 'Create Success', + updateSuccess: 'Update Success', + delMessage: 'Delete the selected data?', + delDataMessage: 'Delete the data?', + delNoData: 'Please select the data to delete', + delSuccess: 'Deleted successfully', + index: 'Index', + status: 'Status', + createTime: 'Create Time', + updateTime: 'Update Time', + copy: 'Copy', + copySuccess: 'Copy Success', + copyError: 'Copy Error' + }, + lock: { + lockScreen: 'Lock screen', + lock: 'Lock', + lockPassword: 'Lock screen password', + unlock: 'Click to unlock', + backToLogin: 'Back to login', + entrySystem: 'Entry the system', + placeholder: 'Please enter the lock screen password', + message: 'Lock screen password error' + }, + error: { + noPermission: `Sorry, you don't have permission to access this page.`, + pageError: 'Sorry, the page you visited does not exist.', + networkError: 'Sorry, the server reported an error.', + returnToHome: 'Return to home' + }, + permission: { + hasPermission: `Please set the operation permission label value`, + hasRole: `Please set the role permission tag value` + }, + setting: { + projectSetting: 'Project setting', + theme: 'Theme', + layout: 'Layout', + systemTheme: 'System theme', + menuTheme: 'Menu theme', + interfaceDisplay: 'Interface display', + breadcrumb: 'Breadcrumb', + breadcrumbIcon: 'Breadcrumb icon', + collapseMenu: 'Collapse menu', + hamburgerIcon: 'Hamburger icon', + screenfullIcon: 'Screenfull icon', + sizeIcon: 'Size icon', + localeIcon: 'Locale icon', + messageIcon: 'Message icon', + tagsView: 'Tags view', + logo: 'Logo', + greyMode: 'Grey mode', + fixedHeader: 'Fixed header', + headerTheme: 'Header theme', + cutMenu: 'Cut Menu', + copy: 'Copy', + clearAndReset: 'Clear cache and reset', + copySuccess: 'Copy success', + copyFailed: 'Copy failed', + footer: 'Footer', + uniqueOpened: 'Unique opened', + tagsViewIcon: 'Tags view icon', + reExperienced: 'Please exit the login experience again', + fixedMenu: 'Fixed menu' + }, + size: { + default: 'Default', + large: 'Large', + small: 'Small' + }, + login: { + welcome: 'Welcome to the system', + message: 'Backstage management system', + tenantname: 'TenantName', + username: 'Username', + password: 'Password', + code: 'verification code', + login: 'Sign in', + relogin: 'Sign in again', + otherLogin: 'Sign in with', + register: 'Register', + checkPassword: 'Confirm password', + remember: 'Remember me', + hasUser: 'Existing account? Go to login', + forgetPassword: 'Forget password?', + tenantNamePlaceholder: 'Please Enter Tenant Name', + usernamePlaceholder: 'Please Enter Username', + passwordPlaceholder: 'Please Enter Password', + codePlaceholder: 'Please Enter Verification Code', + mobileTitle: 'Mobile sign in', + mobileNumber: 'Mobile Number', + mobileNumberPlaceholder: 'Plaease Enter Mobile Number', + backLogin: 'back', + getSmsCode: 'Get SMS Code', + btnMobile: 'Mobile sign in', + btnQRCode: 'QR code sign in', + qrcode: 'Scan the QR code to log in', + btnRegister: 'Sign up', + SmsSendMsg: 'code has been sent' + }, + captcha: { + verification: 'Please complete security verification', + slide: 'Swipe right to complete verification', + point: 'Please click', + success: 'Verification succeeded', + fail: 'verification failed' + }, + router: { + login: 'Login', + home: 'Home', + analysis: 'Analysis', + workplace: 'Workplace' + }, + analysis: { + newUser: 'New user', + unreadInformation: 'Unread information', + transactionAmount: 'Transaction amount', + totalShopping: 'Total Shopping', + monthlySales: 'Monthly sales', + userAccessSource: 'User access source', + january: 'January', + february: 'February', + march: 'March', + april: 'April', + may: 'May', + june: 'June', + july: 'July', + august: 'August', + september: 'September', + october: 'October', + november: 'November', + december: 'December', + estimate: 'Estimate', + actual: 'Actual', + directAccess: 'Airect access', + mailMarketing: 'Mail marketing', + allianceAdvertising: 'Alliance advertising', + videoAdvertising: 'Video advertising', + searchEngines: 'Search engines', + weeklyUserActivity: 'Weekly user activity', + activeQuantity: 'Active quantity', + monday: 'Monday', + tuesday: 'Tuesday', + wednesday: 'Wednesday', + thursday: 'Thursday', + friday: 'Friday', + saturday: 'Saturday', + sunday: 'Sunday' + }, + workplace: { + welcome: 'Hello', + happyDay: 'Wish you happy every day!', + toady: `It's sunny today`, + notice: 'Announcement', + project: 'Project', + access: 'Project access', + toDo: 'To do', + introduction: 'A serious introduction', + shortcutOperation: 'Quick entry', + operation: 'Operation', + index: 'Index', + personal: 'Personal', + team: 'Team', + quote: 'Quote', + contribution: 'Contribution', + hot: 'Hot', + yield: 'Yield', + dynamic: 'Dynamic', + push: 'push', + follow: 'Follow' + }, + form: { + input: 'Input', + inputNumber: 'InputNumber', + default: 'Default', + icon: 'Icon', + mixed: 'Mixed', + textarea: 'Textarea', + slot: 'Slot', + position: 'Position', + autocomplete: 'Autocomplete', + select: 'Select', + selectGroup: 'Select Group', + selectV2: 'SelectV2', + cascader: 'Cascader', + switch: 'Switch', + rate: 'Rate', + colorPicker: 'Color Picker', + transfer: 'Transfer', + render: 'Render', + radio: 'Radio', + button: 'Button', + checkbox: 'Checkbox', + slider: 'Slider', + datePicker: 'Date Picker', + shortcuts: 'Shortcuts', + today: 'Today', + yesterday: 'Yesterday', + aWeekAgo: 'A week ago', + week: 'Week', + year: 'Year', + month: 'Month', + dates: 'Dates', + daterange: 'Date Range', + monthrange: 'Month Range', + dateTimePicker: 'DateTimePicker', + dateTimerange: 'Datetime Range', + timePicker: 'Time Picker', + timeSelect: 'Time Select', + inputPassword: 'input Password', + passwordStrength: 'Password Strength', + operate: 'operate', + change: 'Change', + restore: 'Restore', + disabled: 'Disabled', + disablement: 'Disablement', + delete: 'Delete', + add: 'Add', + setValue: 'Set value', + resetValue: 'Reset value', + set: 'Set', + subitem: 'Subitem', + formValidation: 'Form validation', + verifyReset: 'Verify reset', + remark: 'Remark' + }, + watermark: { + watermark: 'Watermark' + }, + table: { + table: 'Table', + index: 'Index', + title: 'Title', + author: 'Author', + createTime: 'Create time', + action: 'Action', + pagination: 'pagination', + reserveIndex: 'Reserve index', + restoreIndex: 'Restore index', + showSelections: 'Show selections', + hiddenSelections: 'Restore selections', + showExpandedRows: 'Show expanded rows', + hiddenExpandedRows: 'Hidden expanded rows', + header: 'Header' + }, + action: { + create: 'Create', + add: 'Add', + del: 'Delete', + delete: 'Delete', + edit: 'Edit', + update: 'Update', + preview: 'Preview', + more: 'More', + sync: 'Sync', + save: 'Save', + detail: 'Detail', + export: 'Export', + import: 'Import', + generate: 'Generate', + logout: 'Login Out', + test: 'Test', + typeCreate: 'Dict Type Create', + typeUpdate: 'Dict Type Eidt', + dataCreate: 'Dict Data Create', + dataUpdate: 'Dict Data Eidt', + fileUpload: 'File Upload' + }, + dialog: { + dialog: 'Dialog', + open: 'Open', + close: 'Close' + }, + sys: { + api: { + operationFailed: 'Operation failed', + errorTip: 'Error Tip', + errorMessage: 'The operation failed, the system is abnormal!', + timeoutMessage: 'Login timed out, please log in again!', + apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!', + apiRequestFailed: 'The interface request failed, please try again later!', + networkException: 'network anomaly', + networkExceptionMsg: + 'Please check if your network connection is normal! The network is abnormal', + + errMsg401: 'The user does not have permission (token, user name, password error)!', + errMsg403: 'The user is authorized, but access is forbidden!', + errMsg404: 'Network request error, the resource was not found!', + errMsg405: 'Network request error, request method not allowed!', + errMsg408: 'Network request timed out!', + errMsg500: 'Server error, please contact the administrator!', + errMsg501: 'The network is not implemented!', + errMsg502: 'Network Error!', + errMsg503: 'The service is unavailable, the server is temporarily overloaded or maintained!', + errMsg504: 'Network timeout!', + errMsg505: 'The http version does not support the request!', + errMsg901: 'Demo mode, no write operations are possible!' + }, + app: { + logoutTip: 'Reminder', + logoutMessage: 'Confirm to exit the system?', + menuLoading: 'Menu loading...' + }, + exception: { + backLogin: 'Back Login', + backHome: 'Back Home', + subTitle403: "Sorry, you don't have access to this page.", + subTitle404: 'Sorry, the page you visited does not exist.', + subTitle500: 'Sorry, the server is reporting an error.', + noDataTitle: 'No data on the current page.', + networkErrorTitle: 'Network Error', + networkErrorSubTitle: + 'Sorry, Your network connection has been disconnected, please check your network!' + }, + lock: { + unlock: 'Click to unlock', + alert: 'Lock screen password error', + backToLogin: 'Back to login', + entry: 'Enter the system', + placeholder: 'Please enter the lock screen password or user password' + }, + login: { + backSignIn: 'Back sign in', + mobileSignInFormTitle: 'Mobile sign in', + qrSignInFormTitle: 'Qr code sign in', + signInFormTitle: 'Sign in', + signUpFormTitle: 'Sign up', + forgetFormTitle: 'Reset password', + + signInTitle: 'Backstage management system', + signInDesc: 'Enter your personal details and get started!', + policy: 'I agree to the xxx Privacy Policy', + scanSign: `scanning the code to complete the login`, + + loginButton: 'Sign in', + registerButton: 'Sign up', + rememberMe: 'Remember me', + forgetPassword: 'Forget Password?', + otherSignIn: 'Sign in with', + + // notify + loginSuccessTitle: 'Login successful', + loginSuccessDesc: 'Welcome back', + + // placeholder + accountPlaceholder: 'Please input username', + passwordPlaceholder: 'Please input password', + smsPlaceholder: 'Please input sms code', + mobilePlaceholder: 'Please input mobile', + policyPlaceholder: 'Register after checking', + diffPwd: 'The two passwords are inconsistent', + + userName: 'Username', + password: 'Password', + confirmPassword: 'Confirm Password', + email: 'Email', + smsCode: 'SMS code', + mobile: 'Mobile' + } + }, + profile: { + user: { + title: 'Personal Information', + username: 'User Name', + nickname: 'Nick Name', + mobile: 'Phone Number', + email: 'User Mail', + dept: 'Department', + posts: 'Position', + roles: 'Own Role', + sex: 'Sex', + man: 'Man', + woman: 'Woman', + createTime: 'Created Date' + }, + info: { + title: 'Basic Information', + basicInfo: 'Basic Information', + resetPwd: 'Reset Password', + userSocial: 'Social Information' + }, + rules: { + nickname: 'Please Enter User Nickname', + mail: 'Please Input The Email Address', + truemail: 'Please Input The Correct Email Address', + phone: 'Please Enter The Phone Number', + truephone: 'Please Enter The Correct Phone Number' + }, + password: { + oldPassword: 'Old PassWord', + newPassword: 'New Password', + confirmPassword: 'Confirm Password', + oldPwdMsg: 'Please Enter Old Password', + newPwdMsg: 'Please Enter New Password', + cfPwdMsg: 'Please Enter Confirm Password', + diffPwd: 'The Passwords Entered Twice No Match' + } + }, + cropper: { + selectImage: 'Select Image', + uploadSuccess: 'Uploaded success!', + modalTitle: 'Avatar upload', + okText: 'Confirm and upload', + btn_reset: 'Reset', + btn_rotate_left: 'Counterclockwise rotation', + btn_rotate_right: 'Clockwise rotation', + btn_scale_x: 'Flip horizontal', + btn_scale_y: 'Flip vertical', + btn_zoom_in: 'Zoom in', + btn_zoom_out: 'Zoom out', + preview: 'Preivew' + } +} diff --git a/src/locales/index.ts b/src/locales/index.ts new file mode 100644 index 0000000..19e79ee --- /dev/null +++ b/src/locales/index.ts @@ -0,0 +1,17 @@ +import { createI18n } from 'vue-i18n' +import zh from './zh-CN' +import en from './en' + +const messages = { + en, + zh, +} +const language = (navigator.language || 'en').toLocaleLowerCase() +const i18n = createI18n({ + legacy: false, + locale: localStorage.getItem('lang') || language.split('-')[0] || 'en', + fallbackLocale: 'en', + messages, +}) + +export default i18n diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts new file mode 100644 index 0000000..0721651 --- /dev/null +++ b/src/locales/zh-CN.ts @@ -0,0 +1,452 @@ +export default { + common: { + inputText: '请输入', + selectText: '请选择', + startTimeText: '开始时间', + endTimeText: '结束时间', + login: '登录', + required: '该项为必填项', + loginOut: '退出系统', + document: '项目文档', + profile: '个人中心', + reminder: '温馨提示', + loginOutMessage: '是否退出本系统?', + back: '返回', + ok: '确定', + save: '保存', + cancel: '取消', + close: '关闭', + reload: '重新加载', + success: '成功', + closeTab: '关闭标签页', + closeTheLeftTab: '关闭左侧标签页', + closeTheRightTab: '关闭右侧标签页', + closeOther: '关闭其他标签页', + closeAll: '关闭全部标签页', + prevLabel: '上一步', + nextLabel: '下一步', + skipLabel: '跳过', + doneLabel: '结束', + menu: '菜单', + menuDes: '以路由的结构渲染的菜单栏', + collapse: '展开缩收', + collapseDes: '展开和缩放菜单栏', + tagsView: '标签页', + tagsViewDes: '用于记录路由历史记录', + tool: '工具', + toolDes: '用于设置定制系统', + query: '查询', + reset: '重置', + shrink: '收起', + expand: '展开', + confirmTitle: '系统提示', + exportMessage: '是否确认导出数据项?', + importMessage: '是否确认导入数据项?', + createSuccess: '新增成功', + updateSuccess: '修改成功', + delMessage: '是否删除所选中数据?', + delDataMessage: '是否删除数据?', + delNoData: '请选择需要删除的数据', + delSuccess: '删除成功', + index: '序号', + status: '状态', + createTime: '创建时间', + updateTime: '更新时间', + copy: '复制', + copySuccess: '复制成功', + copyError: '复制失败' + }, + lock: { + lockScreen: '锁定屏幕', + lock: '锁定', + lockPassword: '锁屏密码', + unlock: '点击解锁', + backToLogin: '返回登录', + entrySystem: '进入系统', + placeholder: '请输入锁屏密码', + message: '锁屏密码错误' + }, + error: { + noPermission: `抱歉,您无权访问此页面。`, + pageError: '抱歉,您访问的页面不存在。', + networkError: '抱歉,服务器报告错误。', + returnToHome: '返回首页' + }, + permission: { + hasPermission: `请设置操作权限标签值`, + hasRole: `请设置角色权限标签值` + }, + setting: { + projectSetting: '项目配置', + theme: '主题', + layout: '布局', + systemTheme: '系统主题', + menuTheme: '菜单主题', + interfaceDisplay: '界面显示', + breadcrumb: '面包屑', + breadcrumbIcon: '面包屑图标', + collapseMenu: '折叠菜单', + hamburgerIcon: '折叠图标', + screenfullIcon: '全屏图标', + sizeIcon: '尺寸图标', + localeIcon: '多语言图标', + messageIcon: '消息图标', + tagsView: '标签页', + logo: '标志', + greyMode: '灰色模式', + fixedHeader: '固定头部', + headerTheme: '头部主题', + cutMenu: '切割菜单', + copy: '拷贝', + clearAndReset: '清除缓存并且重置', + copySuccess: '拷贝成功', + copyFailed: '拷贝失败', + footer: '页脚', + uniqueOpened: '菜单手风琴', + tagsViewIcon: '标签页图标', + reExperienced: '请重新退出登录体验', + fixedMenu: '固定菜单' + }, + size: { + default: '默认', + large: '大', + small: '小' + }, + login: { + welcome: '欢迎使用本系统', + message: '开箱即用的中后台管理系统', + tenantname: '租户名称', + username: '用户名', + password: '密码', + code: '验证码', + login: '登录', + relogin: '重新登录', + otherLogin: '其他登录方式', + register: '注册', + checkPassword: '确认密码', + remember: '记住我', + hasUser: '已有账号?去登录', + forgetPassword: '忘记密码?', + tenantNamePlaceholder: '请输入租户名称', + usernamePlaceholder: '请输入用户名', + passwordPlaceholder: '请输入密码', + codePlaceholder: '请输入验证码', + mobileTitle: '手机登录', + mobileNumber: '手机号码', + mobileNumberPlaceholder: '请输入手机号码', + backLogin: '返回', + getSmsCode: '获取验证码', + btnMobile: '手机登录', + btnQRCode: '二维码登录', + qrcode: '扫描二维码登录', + btnRegister: '注册', + SmsSendMsg: '验证码已发送' + }, + captcha: { + verification: '请完成安全验证', + slide: '向右滑动完成验证', + point: '请依次点击', + success: '验证成功', + fail: '验证失败' + }, + router: { + login: '登录', + socialLogin: '社交登录', + home: '首页', + analysis: '分析页', + workplace: '工作台' + }, + analysis: { + newUser: '新增用户', + unreadInformation: '未读消息', + transactionAmount: '成交金额', + totalShopping: '购物总量', + monthlySales: '每月销售额', + userAccessSource: '用户访问来源', + january: '一月', + february: '二月', + march: '三月', + april: '四月', + may: '五月', + june: '六月', + july: '七月', + august: '八月', + september: '九月', + october: '十月', + november: '十一月', + december: '十二月', + estimate: '预计', + actual: '实际', + directAccess: '直接访问', + mailMarketing: '邮件营销', + allianceAdvertising: '联盟广告', + videoAdvertising: '视频广告', + searchEngines: '搜索引擎', + weeklyUserActivity: '每周用户活跃量', + activeQuantity: '活跃量', + monday: '周一', + tuesday: '周二', + wednesday: '周三', + thursday: '周四', + friday: '周五', + saturday: '周六', + sunday: '周日' + }, + workplace: { + welcome: '你好', + happyDay: '祝你开心每一天!', + toady: '今日晴', + notice: '通知公告', + project: '项目数', + access: '项目访问', + toDo: '待办', + introduction: '一个正经的简介', + shortcutOperation: '快捷入口', + operation: '操作', + index: '指数', + personal: '个人', + team: '团队', + quote: '引用', + contribution: '贡献', + hot: '热度', + yield: '产量', + dynamic: '动态', + push: '推送', + follow: '关注' + }, + form: { + input: '输入框', + inputNumber: '数字输入框', + default: '默认', + icon: '图标', + mixed: '复合型', + textarea: '多行文本', + slot: '插槽', + position: '位置', + autocomplete: '自动补全', + select: '选择器', + selectGroup: '选项分组', + selectV2: '虚拟列表选择器', + cascader: '级联选择器', + switch: '开关', + rate: '评分', + colorPicker: '颜色选择器', + transfer: '穿梭框', + render: '渲染器', + radio: '单选框', + button: '按钮', + checkbox: '多选框', + slider: '滑块', + datePicker: '日期选择器', + shortcuts: '快捷选项', + today: '今天', + yesterday: '昨天', + aWeekAgo: '一周前', + week: '周', + year: '年', + month: '月', + dates: '日期', + daterange: '日期范围', + monthrange: '月份范围', + dateTimePicker: '日期时间选择器', + dateTimerange: '日期时间范围', + timePicker: '时间选择器', + timeSelect: '时间选择', + inputPassword: '密码输入框', + passwordStrength: '密码强度', + operate: '操作', + change: '更改', + restore: '还原', + disabled: '禁用', + disablement: '解除禁用', + delete: '删除', + add: '添加', + setValue: '设置值', + resetValue: '重置值', + set: '设置', + subitem: '子项', + formValidation: '表单验证', + verifyReset: '验证重置', + remark: '备注' + }, + watermark: { + watermark: '水印' + }, + table: { + table: '表格', + index: '序号', + title: '标题', + author: '作者', + createTime: '创建时间', + action: '操作', + pagination: '分页', + reserveIndex: '叠加序号', + restoreIndex: '还原序号', + showSelections: '显示多选', + hiddenSelections: '隐藏多选', + showExpandedRows: '显示展开行', + hiddenExpandedRows: '隐藏展开行', + header: '头部' + }, + action: { + create: '新增', + add: '新增', + del: '删除', + delete: '删除', + edit: '编辑', + update: '编辑', + preview: '预览', + more: '更多', + sync: '同步', + save: '保存', + detail: '详情', + export: '导出', + import: '导入', + generate: '生成', + logout: '强制退出', + test: '测试', + typeCreate: '字典类型新增', + typeUpdate: '字典类型编辑', + dataCreate: '字典数据新增', + dataUpdate: '字典数据编辑' + }, + dialog: { + dialog: '弹窗', + open: '打开', + close: '关闭' + }, + sys: { + api: { + operationFailed: '操作失败', + errorTip: '错误提示', + errorMessage: '操作失败,系统异常!', + timeoutMessage: '登录超时,请重新登录!', + apiTimeoutMessage: '接口请求超时,请刷新页面重试!', + apiRequestFailed: '请求出错,请稍候重试', + networkException: '网络异常', + networkExceptionMsg: '网络异常,请检查您的网络连接是否正常!', + errMsg401: '用户没有权限(令牌、用户名、密码错误)!', + errMsg403: '用户得到授权,但是访问是被禁止的。!', + errMsg404: '网络请求错误,未找到该资源!', + errMsg405: '网络请求错误,请求方法未允许!', + errMsg408: '网络请求超时!', + errMsg500: '服务器错误,请联系管理员!', + errMsg501: '网络未实现!', + errMsg502: '网络错误!', + errMsg503: '服务不可用,服务器暂时过载或维护!', + errMsg504: '网络超时!', + errMsg505: 'http版本不支持该请求!', + errMsg901: '演示模式,无法进行写操作!' + }, + app: { + logoutTip: '温馨提醒', + logoutMessage: '是否确认退出系统?', + menuLoading: '菜单加载中...' + }, + exception: { + backLogin: '返回登录', + backHome: '返回首页', + subTitle403: '抱歉,您无权访问此页面。', + subTitle404: '抱歉,您访问的页面不存在。', + subTitle500: '抱歉,服务器报告错误。', + noDataTitle: '当前页无数据', + networkErrorTitle: '网络错误', + networkErrorSubTitle: '抱歉,您的网络连接已断开,请检查您的网络!' + }, + lock: { + unlock: '点击解锁', + alert: '锁屏密码错误', + backToLogin: '返回登录', + entry: '进入系统', + placeholder: '请输入锁屏密码或者用户密码' + }, + login: { + backSignIn: '返回', + signInFormTitle: '登录', + ssoFormTitle: '三方授权', + mobileSignInFormTitle: '手机登录', + qrSignInFormTitle: '二维码登录', + signUpFormTitle: '注册', + forgetFormTitle: '重置密码', + signInTitle: '开箱即用的中后台管理系统', + signInDesc: '输入您的个人详细信息开始使用!', + policy: '我同意xxx隐私政策', + scanSign: `扫码后点击"确认",即可完成登录`, + loginButton: '登录', + registerButton: '注册', + rememberMe: '记住我', + forgetPassword: '忘记密码?', + otherSignIn: '其他登录方式', + // notify + loginSuccessTitle: '登录成功', + loginSuccessDesc: '欢迎回来', + // placeholder + accountPlaceholder: '请输入账号', + passwordPlaceholder: '请输入密码', + smsPlaceholder: '请输入验证码', + mobilePlaceholder: '请输入手机号码', + policyPlaceholder: '勾选后才能注册', + diffPwd: '两次输入密码不一致', + userName: '账号', + password: '密码', + confirmPassword: '确认密码', + email: '邮箱', + smsCode: '短信验证码', + mobile: '手机号码' + } + }, + profile: { + user: { + title: '个人信息', + username: '用户名称', + nickname: '用户昵称', + mobile: '手机号码', + email: '用户邮箱', + dept: '所属部门', + posts: '所属岗位', + roles: '所属角色', + sex: '性别', + man: '男', + woman: '女', + createTime: '创建日期' + }, + info: { + title: '基本信息', + basicInfo: '基本资料', + resetPwd: '修改密码', + userSocial: '社交信息' + }, + rules: { + nickname: '请输入用户昵称', + mail: '请输入邮箱地址', + truemail: '请输入正确的邮箱地址', + phone: '请输入正确的手机号码', + truephone: '请输入正确的手机号码' + }, + password: { + oldPassword: '旧密码', + newPassword: '新密码', + confirmPassword: '确认密码', + oldPwdMsg: '请输入旧密码', + newPwdMsg: '请输入新密码', + cfPwdMsg: '请输入确认密码', + pwdRules: '长度在 6 到 20 个字符', + diffPwd: '两次输入密码不一致' + } + }, + cropper: { + selectImage: '选择图片', + uploadSuccess: '上传成功', + modalTitle: '头像上传', + okText: '确认并上传', + btn_reset: '重置', + btn_rotate_left: '逆时针旋转', + btn_rotate_right: '顺时针旋转', + btn_scale_x: '水平翻转', + btn_scale_y: '垂直翻转', + btn_zoom_in: '放大', + btn_zoom_out: '缩小', + preview: '预览' + }, + 'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错 +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..db06f44 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,20 @@ +import './styles/index.scss' +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from '@/pages/App.vue' +import router from '@/router' +import i18n from '@/locales/index' +import 'element-plus/dist/index.css' + +// 权限 +import { setupAuth } from '@/directives' + +const app = createApp(App) +setupAuth(app) + +app.use(createPinia()) +app.use(router) +app.use(i18n) + +app.mount('#app') diff --git a/src/pages/App.vue b/src/pages/App.vue new file mode 100644 index 0000000..b689fbf --- /dev/null +++ b/src/pages/App.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/src/pages/Error/404.vue b/src/pages/Error/404.vue new file mode 100644 index 0000000..44d07a5 --- /dev/null +++ b/src/pages/Error/404.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/src/pages/Profile/components/BasicInfo.vue b/src/pages/Profile/components/BasicInfo.vue new file mode 100644 index 0000000..7852e26 --- /dev/null +++ b/src/pages/Profile/components/BasicInfo.vue @@ -0,0 +1,100 @@ + + diff --git a/src/pages/Profile/components/ProfileUser.vue b/src/pages/Profile/components/ProfileUser.vue new file mode 100644 index 0000000..a1b0b3c --- /dev/null +++ b/src/pages/Profile/components/ProfileUser.vue @@ -0,0 +1,104 @@ + + + + diff --git a/src/pages/Profile/components/ResetPwd.vue b/src/pages/Profile/components/ResetPwd.vue new file mode 100644 index 0000000..5b0d5e2 --- /dev/null +++ b/src/pages/Profile/components/ResetPwd.vue @@ -0,0 +1,77 @@ + + diff --git a/src/pages/Profile/components/UserAvatar.vue b/src/pages/Profile/components/UserAvatar.vue new file mode 100644 index 0000000..6e355fa --- /dev/null +++ b/src/pages/Profile/components/UserAvatar.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/pages/Profile/components/UserSocial.vue b/src/pages/Profile/components/UserSocial.vue new file mode 100644 index 0000000..5557816 --- /dev/null +++ b/src/pages/Profile/components/UserSocial.vue @@ -0,0 +1,126 @@ + + diff --git a/src/pages/Profile/components/index.ts b/src/pages/Profile/components/index.ts new file mode 100644 index 0000000..9e1883c --- /dev/null +++ b/src/pages/Profile/components/index.ts @@ -0,0 +1,7 @@ +import BasicInfo from './BasicInfo.vue' +import ProfileUser from './ProfileUser.vue' +import ResetPwd from './ResetPwd.vue' +import UserAvatarVue from './UserAvatar.vue' +import UserSocial from './UserSocial.vue' + +export { BasicInfo, ProfileUser, ResetPwd, UserAvatarVue, UserSocial } diff --git a/src/pages/Profile/index.vue b/src/pages/Profile/index.vue new file mode 100644 index 0000000..b638892 --- /dev/null +++ b/src/pages/Profile/index.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/pages/auto-imports.d.ts b/src/pages/auto-imports.d.ts new file mode 100644 index 0000000..f1e4987 --- /dev/null +++ b/src/pages/auto-imports.d.ts @@ -0,0 +1,70 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const ElLoading: typeof import('element-plus/es')['ElLoading'] + const ElMessage: typeof import('element-plus/es')['ElMessage'] + const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] + const ElNotification: typeof import('element-plus/es')['ElNotification'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const effectScope: typeof import('vue')['effectScope'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useSlots: typeof import('vue')['useSlots'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/src/pages/avatar.png b/src/pages/avatar.png new file mode 100644 index 0000000..720f7d2 Binary files /dev/null and b/src/pages/avatar.png differ diff --git a/src/pages/components.d.ts b/src/pages/components.d.ts new file mode 100644 index 0000000..bfcd1d0 --- /dev/null +++ b/src/pages/components.d.ts @@ -0,0 +1,64 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElEmpty: typeof import('element-plus/es')['ElEmpty'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElHeader: typeof import('element-plus/es')['ElHeader'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImage: typeof import('element-plus/es')['ElImage'] + ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElLink: typeof import('element-plus/es')['ElLink'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSpace: typeof import('element-plus/es')['ElSpace'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/src/pages/deviceInfo/components/BasicInfo.vue b/src/pages/deviceInfo/components/BasicInfo.vue new file mode 100644 index 0000000..208ecf4 --- /dev/null +++ b/src/pages/deviceInfo/components/BasicInfo.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/pages/deviceInfo/components/DeliveryInfo.vue b/src/pages/deviceInfo/components/DeliveryInfo.vue new file mode 100644 index 0000000..3e3fe20 --- /dev/null +++ b/src/pages/deviceInfo/components/DeliveryInfo.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/pages/deviceInfo/components/MaintainInfo.vue b/src/pages/deviceInfo/components/MaintainInfo.vue new file mode 100644 index 0000000..90bdcc0 --- /dev/null +++ b/src/pages/deviceInfo/components/MaintainInfo.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/pages/deviceInfo/components/TestInfo.vue b/src/pages/deviceInfo/components/TestInfo.vue new file mode 100644 index 0000000..8431a82 --- /dev/null +++ b/src/pages/deviceInfo/components/TestInfo.vue @@ -0,0 +1,86 @@ + + + + diff --git a/src/pages/deviceInfo/index.vue b/src/pages/deviceInfo/index.vue new file mode 100644 index 0000000..c3a332f --- /dev/null +++ b/src/pages/deviceInfo/index.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/src/pages/deviceInfo/info.vue b/src/pages/deviceInfo/info.vue new file mode 100644 index 0000000..d51298e --- /dev/null +++ b/src/pages/deviceInfo/info.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/pages/deviceTest/testPlan/components/CaseDlg.vue b/src/pages/deviceTest/testPlan/components/CaseDlg.vue new file mode 100644 index 0000000..d4f7af7 --- /dev/null +++ b/src/pages/deviceTest/testPlan/components/CaseDlg.vue @@ -0,0 +1,199 @@ + + + + + diff --git a/src/pages/deviceTest/testPlan/components/InfoDlg.vue b/src/pages/deviceTest/testPlan/components/InfoDlg.vue new file mode 100644 index 0000000..71a500c --- /dev/null +++ b/src/pages/deviceTest/testPlan/components/InfoDlg.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/pages/deviceTest/testPlan/index.vue b/src/pages/deviceTest/testPlan/index.vue new file mode 100644 index 0000000..591b828 --- /dev/null +++ b/src/pages/deviceTest/testPlan/index.vue @@ -0,0 +1,301 @@ + + + + diff --git a/src/pages/index.html b/src/pages/index.html new file mode 100644 index 0000000..3fce1b1 --- /dev/null +++ b/src/pages/index.html @@ -0,0 +1,13 @@ + + + + + + + 平高储能平台 + + +
+ + + diff --git a/src/pages/layout.vue b/src/pages/layout.vue new file mode 100644 index 0000000..72dddae --- /dev/null +++ b/src/pages/layout.vue @@ -0,0 +1,418 @@ + + + + + diff --git a/src/pages/socket_server/AppSocketServer.ts b/src/pages/socket_server/AppSocketServer.ts new file mode 100644 index 0000000..24d4719 --- /dev/null +++ b/src/pages/socket_server/AppSocketServer.ts @@ -0,0 +1,42 @@ +import { WorkerCMD, type WorkerReqEvent } from './IWorker' +import { SocketServer } from './SocketServer' +const VITE_BASE_URL = import.meta.env.VITE_BASE_URL +const VITE_SOCKET_SERVER = import.meta.env.VITE_SOCKET_SERVER +// let server = "ws://127.0.0.1:48080/infra/ws?token="; +let server: string + +if (import.meta.env.PROD) { + // 生产环境 + server = `${VITE_SOCKET_SERVER}/infra/ws?token=` +} else { + // 开发环境 + server = `${VITE_BASE_URL}/infra/ws?token=` +} + +const onMessage = (data: any) => { + if (!data.type || !data.stationId) { + return + } + postMessage(data) +} + +let socketServer: SocketServer | undefined + +self.onmessage = function (e) { + const req: WorkerReqEvent = e.data + switch (req.cmd) { + case WorkerCMD.START: + if (socketServer) { + socketServer.close() + } + socketServer = new SocketServer(server, req.msg.token, onMessage) + socketServer.open() + break + case WorkerCMD.STOP: + if (socketServer) { + socketServer.close() + socketServer = undefined + } + break + } +} diff --git a/src/pages/socket_server/IWorker.ts b/src/pages/socket_server/IWorker.ts new file mode 100644 index 0000000..22aed25 --- /dev/null +++ b/src/pages/socket_server/IWorker.ts @@ -0,0 +1,9 @@ +export enum WorkerCMD { + START, + STOP, +} + +export interface WorkerReqEvent { + cmd: WorkerCMD + msg?: any +} diff --git a/src/pages/socket_server/SocketServer.ts b/src/pages/socket_server/SocketServer.ts new file mode 100644 index 0000000..78e4367 --- /dev/null +++ b/src/pages/socket_server/SocketServer.ts @@ -0,0 +1,116 @@ +// export class SocketServer { +// private autoReconnect = true; +// private retryDelay = 1000; +// private server: string; +// private explicitlyClosed = false; +// private pongTimeoutWait: ReturnType | undefined; +// private msgListener?: Function; + +// constructor(server: string, listener?: Function) { +// this.server = server; +// this.msgListener = listener; +// } + +// open() { +// this.close(); +// this.explicitlyClosed = false; +// this.init(); +// } + +// close() { +// this.explicitlyClosed = true; +// } + +// private init() { +// const self = this; +// if (this.explicitlyClosed) return; +// const ws = new WebSocket(this.server.replace('http', 'ws')); + +// ws.onopen = () => { +// console.log("OPEN"); +// }; + +// ws.onclose = (ev) => { +// console.log("CLOSED"); +// if (!self.explicitlyClosed && self.autoReconnect) { +// setTimeout(() => { +// self.init(); +// }, self.retryDelay); +// } +// }; + +// ws.onerror = (e) => { +// // console.log("WebSocket error: ", e); +// }; + +// ws.onmessage = (e: MessageEvent) => { +// const msg = JSON.parse(e.data); +// console.log(msg) +// if (msg.type === "notice-push" || msg.type === "device") { +// this.msgListener?.(msg.content); +// } +// }; +// } +// } + +export class SocketServer { + private autoReconnect = true + private retryDelay = 10000 + private server: string + private explicitlyClosed = false + private pongTimeoutWait: ReturnType | undefined + private msgListener?: Function + private ws: WebSocket | null = null // WebSocket 实例 + private token: string + + constructor(server: string, token: string, listener?: Function) { + this.server = server + this.msgListener = listener + this.token = token + } + + open() { + this.close() // 先关闭现有连接 + this.explicitlyClosed = false + this.init() + } + + close() { + this.explicitlyClosed = true + if (this.ws) { + this.ws.close() // 手动关闭 WebSocket 连接 + this.ws = null // 清空 ws 实例 + } + } + + private init() { + const self = this + if (this.explicitlyClosed) return + this.ws = new WebSocket(this.server.replace('http', 'ws') + this.token) // 新建 WebSocket 实例 + + this.ws.onopen = () => { + console.log('OPEN') + } + + this.ws.onclose = ev => { + console.log('CLOSED') + if (!self.explicitlyClosed && self.autoReconnect) { + setTimeout(() => { + self.init() + }, self.retryDelay) + } + } + + this.ws.onerror = e => { + // console.log("WebSocket error: ", e); + } + + this.ws.onmessage = (e: MessageEvent) => { + const msg = JSON.parse(e.data) + console.log(msg) + if (msg.type === 'notice-push' || msg.type === 'device') { + this.msgListener?.(msg.content) + } + } + } +} diff --git a/src/pages/socket_server/index.ts b/src/pages/socket_server/index.ts new file mode 100644 index 0000000..d6346e3 --- /dev/null +++ b/src/pages/socket_server/index.ts @@ -0,0 +1,24 @@ +import SocketServer from './AppSocketServer?worker' +import { publish } from '@/tools/event/socketEvent' +import { WorkerCMD } from './IWorker' +import { getToken } from '@/utils/auth' + +const worker = new SocketServer() +worker.onmessage = e => { + const { type, stationId, data, time } = e.data + publish({ type, stationId, data, time }) +} + +export function openSocket() { + worker.postMessage({ + cmd: WorkerCMD.START, + msg: { + token: getToken(), + }, + }) +} + +export function closeSocket() { + worker.postMessage({ cmd: WorkerCMD.STOP }) + // worker.terminate() +} diff --git a/src/pages/system/deviceField/components/CategoryDlg.vue b/src/pages/system/deviceField/components/CategoryDlg.vue new file mode 100644 index 0000000..5496ac1 --- /dev/null +++ b/src/pages/system/deviceField/components/CategoryDlg.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/pages/system/deviceField/components/CategoryTree.vue b/src/pages/system/deviceField/components/CategoryTree.vue new file mode 100644 index 0000000..f291319 --- /dev/null +++ b/src/pages/system/deviceField/components/CategoryTree.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/src/pages/system/deviceField/index.vue b/src/pages/system/deviceField/index.vue new file mode 100644 index 0000000..5b5d4c6 --- /dev/null +++ b/src/pages/system/deviceField/index.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/pages/system/dict/DictTypeForm.vue b/src/pages/system/dict/DictTypeForm.vue new file mode 100644 index 0000000..d69bae2 --- /dev/null +++ b/src/pages/system/dict/DictTypeForm.vue @@ -0,0 +1,129 @@ + + diff --git a/src/pages/system/dict/data/DictDataForm.vue b/src/pages/system/dict/data/DictDataForm.vue new file mode 100644 index 0000000..ca5e2de --- /dev/null +++ b/src/pages/system/dict/data/DictDataForm.vue @@ -0,0 +1,188 @@ + + diff --git a/src/pages/system/dict/data/index.vue b/src/pages/system/dict/data/index.vue new file mode 100644 index 0000000..91ad488 --- /dev/null +++ b/src/pages/system/dict/data/index.vue @@ -0,0 +1,303 @@ + + + diff --git a/src/pages/system/dict/index.vue b/src/pages/system/dict/index.vue new file mode 100644 index 0000000..5108d23 --- /dev/null +++ b/src/pages/system/dict/index.vue @@ -0,0 +1,303 @@ + + + + diff --git a/src/pages/system/login/VerifyCode.vue b/src/pages/system/login/VerifyCode.vue new file mode 100644 index 0000000..ed5d4fc --- /dev/null +++ b/src/pages/system/login/VerifyCode.vue @@ -0,0 +1,134 @@ + + + + + + \ No newline at end of file diff --git a/src/pages/system/login/index.vue b/src/pages/system/login/index.vue new file mode 100644 index 0000000..6c4df8e --- /dev/null +++ b/src/pages/system/login/index.vue @@ -0,0 +1,336 @@ + + + + + + diff --git a/src/pages/system/loginlog/LoginLogDetail.vue b/src/pages/system/loginlog/LoginLogDetail.vue new file mode 100644 index 0000000..477eeab --- /dev/null +++ b/src/pages/system/loginlog/LoginLogDetail.vue @@ -0,0 +1,55 @@ + + + + diff --git a/src/pages/system/loginlog/index.vue b/src/pages/system/loginlog/index.vue new file mode 100644 index 0000000..1236a5a --- /dev/null +++ b/src/pages/system/loginlog/index.vue @@ -0,0 +1,224 @@ + + + diff --git a/src/pages/system/manufacturer/components/manufacturerDlg.vue b/src/pages/system/manufacturer/components/manufacturerDlg.vue new file mode 100644 index 0000000..7a36216 --- /dev/null +++ b/src/pages/system/manufacturer/components/manufacturerDlg.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/src/pages/system/manufacturer/index.vue b/src/pages/system/manufacturer/index.vue new file mode 100644 index 0000000..536761b --- /dev/null +++ b/src/pages/system/manufacturer/index.vue @@ -0,0 +1,292 @@ + + + + diff --git a/src/pages/system/menu/MenuForm.vue b/src/pages/system/menu/MenuForm.vue new file mode 100644 index 0000000..8065220 --- /dev/null +++ b/src/pages/system/menu/MenuForm.vue @@ -0,0 +1,291 @@ + + diff --git a/src/pages/system/menu/index.vue b/src/pages/system/menu/index.vue new file mode 100644 index 0000000..1a65cc9 --- /dev/null +++ b/src/pages/system/menu/index.vue @@ -0,0 +1,280 @@ + + + diff --git a/src/pages/system/operatelog/OperateLogDetail.vue b/src/pages/system/operatelog/OperateLogDetail.vue new file mode 100644 index 0000000..e2c8fe9 --- /dev/null +++ b/src/pages/system/operatelog/OperateLogDetail.vue @@ -0,0 +1,75 @@ + + diff --git a/src/pages/system/operatelog/index.vue b/src/pages/system/operatelog/index.vue new file mode 100644 index 0000000..4382f9c --- /dev/null +++ b/src/pages/system/operatelog/index.vue @@ -0,0 +1,253 @@ + + + diff --git a/src/pages/system/role/RoleAssignMenuForm.vue b/src/pages/system/role/RoleAssignMenuForm.vue new file mode 100644 index 0000000..6b066ec --- /dev/null +++ b/src/pages/system/role/RoleAssignMenuForm.vue @@ -0,0 +1,171 @@ + + + diff --git a/src/pages/system/role/RoleDataPermissionForm.vue b/src/pages/system/role/RoleDataPermissionForm.vue new file mode 100644 index 0000000..6e0daae --- /dev/null +++ b/src/pages/system/role/RoleDataPermissionForm.vue @@ -0,0 +1,182 @@ + + diff --git a/src/pages/system/role/RoleForm.vue b/src/pages/system/role/RoleForm.vue new file mode 100644 index 0000000..d95f0b2 --- /dev/null +++ b/src/pages/system/role/RoleForm.vue @@ -0,0 +1,129 @@ + + diff --git a/src/pages/system/role/index.vue b/src/pages/system/role/index.vue new file mode 100644 index 0000000..9ef7465 --- /dev/null +++ b/src/pages/system/role/index.vue @@ -0,0 +1,332 @@ + + + diff --git a/src/pages/system/tenant/TenantForm.vue b/src/pages/system/tenant/TenantForm.vue new file mode 100644 index 0000000..5496ed6 --- /dev/null +++ b/src/pages/system/tenant/TenantForm.vue @@ -0,0 +1,191 @@ + + diff --git a/src/pages/system/tenant/index.vue b/src/pages/system/tenant/index.vue new file mode 100644 index 0000000..b06a603 --- /dev/null +++ b/src/pages/system/tenant/index.vue @@ -0,0 +1,306 @@ + + + + diff --git a/src/pages/system/tenantPackage/TenantPackageForm.vue b/src/pages/system/tenantPackage/TenantPackageForm.vue new file mode 100644 index 0000000..ec68c62 --- /dev/null +++ b/src/pages/system/tenantPackage/TenantPackageForm.vue @@ -0,0 +1,200 @@ + + + diff --git a/src/pages/system/tenantPackage/index.vue b/src/pages/system/tenantPackage/index.vue new file mode 100644 index 0000000..313cc7c --- /dev/null +++ b/src/pages/system/tenantPackage/index.vue @@ -0,0 +1,245 @@ + + + diff --git a/src/pages/system/user/DeptTree.vue b/src/pages/system/user/DeptTree.vue new file mode 100644 index 0000000..d7610c4 --- /dev/null +++ b/src/pages/system/user/DeptTree.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/pages/system/user/UserAssignRoleForm.vue b/src/pages/system/user/UserAssignRoleForm.vue new file mode 100644 index 0000000..ed9bfe0 --- /dev/null +++ b/src/pages/system/user/UserAssignRoleForm.vue @@ -0,0 +1,109 @@ + + diff --git a/src/pages/system/user/UserForm.vue b/src/pages/system/user/UserForm.vue new file mode 100644 index 0000000..df3e1ad --- /dev/null +++ b/src/pages/system/user/UserForm.vue @@ -0,0 +1,235 @@ + + diff --git a/src/pages/system/user/UserImportForm.vue b/src/pages/system/user/UserImportForm.vue new file mode 100644 index 0000000..24ad597 --- /dev/null +++ b/src/pages/system/user/UserImportForm.vue @@ -0,0 +1,142 @@ + + diff --git a/src/pages/system/user/index.vue b/src/pages/system/user/index.vue new file mode 100644 index 0000000..c78f3ed --- /dev/null +++ b/src/pages/system/user/index.vue @@ -0,0 +1,412 @@ + + + + diff --git a/src/pages/utils.ts b/src/pages/utils.ts new file mode 100644 index 0000000..f490d5c --- /dev/null +++ b/src/pages/utils.ts @@ -0,0 +1,23 @@ +export function transformMenu(menu) { + const newMenu = [] + + function handleChildren(item) { + if (item.children && item.children.length === 1) { + const child = item.children[0] + item.path = `${item.path}${child.path ? '/' : ''}${child.path}` + item.name = child.name + item.meta = { ...item.meta, ...child.meta } + item.children = child.children || [] + } + return item + } + + for (const item of menu) { + const transformedItem = handleChildren(item) + if (!transformedItem.children?.length) { + delete transformedItem.children + } + newMenu.push(transformedItem) + } + return newMenu +} diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..488219c --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,192 @@ +import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router' +import type { RouteRecordRaw } from 'vue-router' +import { useUserStore } from '../stores/user' +import { usePermissionStore } from '@/stores/permission' +import { useDictStore } from '@/stores/dict' +import { getToken } from '@/utils/auth' + +export const defaultRoute = [ + { + path: '/login', + component: () => import('@/pages/system/login/index.vue'), + name: 'Login', + meta: { + hidden: true, + title: '登录', + noTagsView: true, + }, + }, + { + path: '/404', + name: 'NoFound', + component: () => import('@/pages/Error/404.vue'), + meta: { + hidden: true, + title: '404', + }, + }, + { + path: '/user', + component: () => import('@/pages/layout.vue'), + name: 'UserInfo', + meta: { + hidden: true, + }, + children: [ + { + path: 'profile', + component: () => import('@/pages/Profile/index.vue'), + name: 'Profile', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ep:user', + title: '个人中心', + }, + }, + ], + }, + { + path: '/user', + component: () => import('@/pages/layout.vue'), + name: 'UserInfo', + meta: { + canTo: true, + hidden: false, + noTagsView: false, + icon: 'ep:user', + title: '系统管理', + }, + children: [ + { + path: 'deviceField', + component: () => import('@/pages/system/deviceField/index.vue'), + name: 'DeviceField', + meta: { + icon: 'ep:user', + title: '字段管理', + }, + }, + { + path: 'device', + component: () => import('@/pages/deviceInfo/index.vue'), + name: 'Device', + meta: { + icon: 'ep:user', + title: '设备管理', + }, + }, + { + path: 'deviceInfo', + component: () => import('@/pages/deviceInfo/info.vue'), + name: 'DeviceInfo', + meta: { + icon: 'ep:user', + hidden: true, + title: '设备xx', + }, + }, + { + path: 'manufacturer', + component: () => import('@/pages/system/manufacturer/index.vue'), + name: 'Manufacturer', + meta: { + icon: 'ep:user', + title: '厂商管理', + }, + }, + { + path: 'deviceTemplate', + component: () => import('@/pages/deviceTest/testPlan/index.vue'), + name: 'DeviceTemplate', + meta: { + icon: 'ep:user', + title: '模板管理', + }, + } + ], + }, +] + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: defaultRoute, +}) + +const whiteList = ['/login'] + +router.beforeEach(async (to, from, next) => { + if (!getToken()) { + if (whiteList.indexOf(to.path) !== -1) { + next() + } else { + next('/login') + } + return + } + + if (to.path === '/login' || to.path === '/') { + next('/user/device') + return + } + const userStore = useUserStore() + const permissionStore = usePermissionStore() + const dictStore = useDictStore() + if (!dictStore.getIsSetDict) { + await dictStore.setDictMap() + } + + if (!userStore.getIsSetUser) { + await userStore.setUserInfoAction() + // 后端过滤菜单 + await permissionStore.generateRoutes() + permissionStore.getAddRouters.forEach(route => { + router.addRoute(route as unknown as RouteRecordRaw) // 动态添加可访问路由表 + }) + const redirectPath = from.query.redirect || to.path + // 修复跳转时不带参数的问题 + const redirect = decodeURIComponent(redirectPath as string) + const { basePath, paramsObject: query } = parseURL(redirect) + const nextData = + to.path === redirect ? { ...to, replace: true } : { path: redirect, query } + next(nextData) + } else { + next() + } +}) + +export default router + +const parseURL = ( + url: string | null | undefined +): { basePath: string; paramsObject: { [key: string]: string } } => { + // 如果输入为 null 或 undefined,返回空字符串和空对象 + if (url == null) { + return { basePath: '', paramsObject: {} } + } + + // 找到问号 (?) 的位置,它之前是基础路径,之后是查询参数 + const questionMarkIndex = url.indexOf('?') + let basePath = url + const paramsObject: { [key: string]: string } = {} + + // 如果找到了问号,说明有查询参数 + if (questionMarkIndex !== -1) { + // 获取 basePath + basePath = url.substring(0, questionMarkIndex) + + // 从 URL 中获取查询字符串部分 + const queryString = url.substring(questionMarkIndex + 1) + + // 使用 URLSearchParams 遍历参数 + const searchParams = new URLSearchParams(queryString) + searchParams.forEach((value, key) => { + // 封装进 paramsObject 对象 + paramsObject[key] = value + }) + } + + // 返回 basePath 和 paramsObject + return { basePath, paramsObject } +} diff --git a/src/stores/counter.ts b/src/stores/counter.ts new file mode 100644 index 0000000..b6757ba --- /dev/null +++ b/src/stores/counter.ts @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0) + const doubleCount = computed(() => count.value * 2) + function increment() { + count.value++ + } + + return { count, doubleCount, increment } +}) diff --git a/src/stores/dict.ts b/src/stores/dict.ts new file mode 100644 index 0000000..7738f9e --- /dev/null +++ b/src/stores/dict.ts @@ -0,0 +1,110 @@ +import { defineStore } from 'pinia' +// @ts-ignore +import { + getSimpleDictDataList, + type DictDataVO, +} from '@/api/module/system/dict/dict.data' +import { useCache } from '@/hooks/useCache' +import Keys from '@/api/Keys' +import { isResError } from '@/hooks/useMessage' +const { wsCache } = useCache('sessionStorage') + +export interface DictValueType { + value: any + label: string + clorType?: string + cssClass?: string +} +export interface DictTypeType { + dictType: string + dictValue: DictValueType[] +} +export interface DictState { + dictMap: Map + isSetDict: boolean +} + +export const useDictStore = defineStore('dict', () => { + const dictMap = ref(new Map()) + const isSetDict = ref(false) + + const getDictMap = computed(() => { + const cachedDictMap = wsCache.get(Keys.STORAGE_DICT_CACHE) + if (cachedDictMap) { + dictMap.value = cachedDictMap + } + return dictMap.value + }) + + const getIsSetDict = computed(() => isSetDict.value) + + const setDictMap = async () => { + const cachedDictMap = wsCache.get(Keys.STORAGE_DICT_CACHE) + if (cachedDictMap && JSON.stringify(cachedDictMap) !== '{}') { + // cachedDictMap 对象转成 Map + const dictDataMap = new Map() + Object.keys(cachedDictMap).forEach(key => { + dictDataMap.set(key, cachedDictMap[key]) + }) + dictMap.value = dictDataMap + + isSetDict.value = true + } else { + const res = await getSimpleDictDataList() + if (res?.code !== 0) return + const dictDataMap = new Map() + res.data.forEach((dictData: DictDataVO) => { + if (!dictDataMap.get(dictData.dictType)) { + dictDataMap.set(dictData.dictType, []) + } + dictDataMap.get(dictData.dictType).push({ + value: dictData.value, + label: dictData.label, + colorType: dictData.colorType, + cssClass: dictData.cssClass, + }) + }) + dictMap.value = dictDataMap + isSetDict.value = true + wsCache.set(Keys.STORAGE_DICT_CACHE, dictDataMap) + } + } + + const getDictByType = (type: string) => { + if (!isSetDict.value) { + setDictMap() + } + return dictMap.value?.get(type) ?? new Map() + } + + const resetDict = async () => { + wsCache.delete(Keys.STORAGE_DICT_CACHE) + const res = await getSimpleDictDataList() + if (res?.code !== 0) return + const dictDataMap = new Map() + res.data.forEach((dictData: DictDataVO) => { + if (!dictDataMap.get(dictData.dictType)) { + dictDataMap.set(dictData.dictType, []) + } + dictDataMap.get(dictData.dictType).push({ + value: dictData.value, + label: dictData.label, + colorType: dictData.colorType, + cssClass: dictData.cssClass, + }) + }) + dictMap.value = dictDataMap + isSetDict.value = true + wsCache.set(Keys.STORAGE_DICT_CACHE, dictDataMap, { exp: 60 }) + } + + return { + dictMap, + isSetDict, + getDictMap, + getIsSetDict, + setDictMap, + getDictByType, + resetDict, + } +}) diff --git a/src/stores/locale.ts b/src/stores/locale.ts new file mode 100644 index 0000000..cafa621 --- /dev/null +++ b/src/stores/locale.ts @@ -0,0 +1,48 @@ +import { defineStore } from 'pinia' +import zhCn from 'element-plus/es/locale/lang/zh-cn' +import en from 'element-plus/es/locale/lang/en' +import { useCache } from '@/hooks/useCache' +import type { LocaleDropdownType } from '@/types/localeDropdown' +import Keys from '@/api/Keys' + +const { wsCache } = useCache() + +const elLocaleMap: Record = { + 'zh-CN': zhCn, + en: en, +} + +export const useLocaleStore = defineStore('locales', () => { + const currentLocale = ref({ + lang: wsCache.get(Keys.STORAGE_LANG) || 'zh-CN', + elLocale: elLocaleMap[wsCache.get(Keys.STORAGE_LANG) || 'zh-CN'], + }) + + const localeMap = ref([ + { + lang: 'zh-CN', + name: '简体中文', + }, + { + lang: 'en', + name: 'English', + }, + ]) + + const getCurrentLocale = computed(() => currentLocale.value) + const getLocaleMap = computed(() => localeMap.value) + + function setCurrentLocale(localeMap: LocaleDropdownType) { + currentLocale.value.lang = localeMap?.lang + currentLocale.value.elLocale = elLocaleMap[localeMap?.lang] + wsCache.set(Keys.STORAGE_LANG, localeMap?.lang) + } + + return { + currentLocale, + localeMap, + getCurrentLocale, + getLocaleMap, + setCurrentLocale, + } +}) diff --git a/src/stores/permission.ts b/src/stores/permission.ts new file mode 100644 index 0000000..d1bec1b --- /dev/null +++ b/src/stores/permission.ts @@ -0,0 +1,63 @@ +import type { RouteRecordRaw } from 'vue-router' +import { defineStore } from 'pinia' +import { cloneDeep } from 'lodash' +// import remainingRouter from '@/router/modules/remaining' +import { getRoleRouters } from '@/utils/auth' +import { flatMultiLevelRoutes, generateRoute } from '@/utils/routerHelper' +import { defaultRoute } from '@/router' + +export interface PermissionState { + routers: any[] + addRouters: any[] + menuTabRouters: any[] +} + +export const usePermissionStore = defineStore('permission', () => { + const routers = ref([]) + const addRouters = ref([]) + const menuTabRouters = ref([]) + + const getRouters = computed(() => routers.value) + const getAddRouters = computed(() => flatMultiLevelRoutes(cloneDeep(addRouters.value))) + const getMenuTabRouters = computed(() => menuTabRouters.value) + + const generateRoutes = async () => { + return new Promise(async resolve => { + let res = [] + + const roleRouters = getRoleRouters() + if (roleRouters.length > 0) { + res = roleRouters + } + const routerMap = generateRoute(res) + addRouters.value = routerMap.concat([ + { + path: '/:path(.*)*', + redirect: '/404', + name: '404Page', + meta: { + hidden: true, + breadcrumb: false, + }, + }, + ]) + routers.value = cloneDeep(defaultRoute).concat(routerMap) + resolve() + }) + } + + const setMenuTabRouters = newRouters => { + menuTabRouters.value = newRouters + } + + return { + routers, + addRouters, + menuTabRouters, + getRouters, + getAddRouters, + getMenuTabRouters, + generateRoutes, + setMenuTabRouters, + } +}) diff --git a/src/stores/user.ts b/src/stores/user.ts new file mode 100644 index 0000000..0c915ed --- /dev/null +++ b/src/stores/user.ts @@ -0,0 +1,106 @@ +import { defineStore } from 'pinia' +import { + getToken, + removeToken, + getLocalUserInfo, + setUserInfo, + setRoleRouters, + getRoleRouters, +} from '@/utils/auth' +import { getInfo, loginOut } from '@/api/module/system/login' +import { isResError } from '@/hooks/useMessage' +import { deleteUserCache } from '@/hooks/useCache' + +interface UserVO { + id: number + avatar: string + nickname: string + deptId: number +} + +export const useUserStore = defineStore('admin-user', () => { + const permissions = ref([]) + const roles = ref([]) + const isSetUser = ref(false) + const user = ref({ + id: 0, + avatar: '', + nickname: '', + deptId: 0, + }) + + const getPermissions = computed(() => permissions.value) + const getRoles = computed(() => roles.value) + const getIsSetUser = computed(() => isSetUser.value) + const getUser = computed(() => user.value) + + async function resetState() { + permissions.value = [] + roles.value = [] + isSetUser.value = false + user.value = { + id: 0, + avatar: '', + nickname: '', + deptId: 0, + } + } + + async function setUserInfoAction() { + if (!getToken()) { + resetState() + return null + } + let userInfo = getLocalUserInfo() + if (!userInfo) { + const res = await getInfo() + if (isResError(res)) return + userInfo = res.data + } + permissions.value = userInfo.permissions + roles.value = userInfo.roles + user.value = userInfo.user + isSetUser.value = true + setUserInfo(userInfo) + setRoleRouters(userInfo.menus) + } + + async function setUserAvatarAction(avatar: string) { + const userInfo = getLocalUserInfo() + // NOTE: 是否需要像`setUserInfoAction`一样判断`userInfo != null` + user.value.avatar = avatar + userInfo.user.avatar = avatar + setUserInfo(userInfo) + } + + async function setUserNicknameAction(nickname: string) { + const userInfo = getLocalUserInfo() + // NOTE: 是否需要像`setUserInfoAction`一样判断`userInfo != null` + user.value.nickname = nickname + userInfo.user.nickname = nickname + setUserInfo(userInfo) + } + + const loginout = async () => { + await loginOut() + removeToken() + deleteUserCache() // 删除用户缓存 + resetState() + } + + return { + permissions, + roles, + isSetUser, + user, + getPermissions, + getRoles, + getIsSetUser, + getUser, + setUserInfoAction, + setUserAvatarAction, + setUserNicknameAction, + loginout, + resetState, + } +}) diff --git a/src/styles/FormCreate/fonts/fontello.woff b/src/styles/FormCreate/fonts/fontello.woff new file mode 100644 index 0000000..1e00f49 Binary files /dev/null and b/src/styles/FormCreate/fonts/fontello.woff differ diff --git a/src/styles/FormCreate/index.scss b/src/styles/FormCreate/index.scss new file mode 100644 index 0000000..bb62000 --- /dev/null +++ b/src/styles/FormCreate/index.scss @@ -0,0 +1,22 @@ +// 使用字体图标来源 https://fontello.com/ + +@font-face { + font-family: 'fc-icon'; + src: url('@/styles/FormCreate/fonts/fontello.woff') format('woff'); +} + +.icon-doc-text:before { + content: '\f0f6'; +} + +.icon-server:before { + content: '\f233'; +} + +.icon-address-card-o:before { + content: '\f2bc'; +} + +.icon-user-o:before { + content: '\f2c0'; +} diff --git a/src/styles/global.module.scss b/src/styles/global.module.scss new file mode 100644 index 0000000..0f56724 --- /dev/null +++ b/src/styles/global.module.scss @@ -0,0 +1,6 @@ +@use './variables.scss'; +// 导出变量 +:export { + namespace: $namespace; + elNamespace: $elNamespace; +} diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000..a235233 --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,36 @@ +@use '../assets/css/dash-main.css'; +@use './FormCreate/index.scss'; +@use 'element-plus/theme-chalk/dark/css-vars.css'; +@use './var.css'; + + +.reset-margin [class*='el-icon'] + span { + margin-left: 2px !important; +} + +// 解决抽屉弹出时,body宽度变化的问题 +.el-popup-parent--hidden { + width: 100% !important; +} + +// 解决表格内容超过表格总宽度后,横向滚动条前端顶不到表格边缘的问题 +.el-scrollbar__bar { + display: flex; + justify-content: flex-start; +} + +/* nprogress 适配 element-plus 的主题色 */ +#nprogress { + & .bar { + background-color: var(--el-color-primary) !important; + } + + & .peg { + box-shadow: 0 0 10px var(--el-color-primary), 0 0 5px var(--el-color-primary) !important; + } + + & .spinner-icon { + border-top-color: var(--el-color-primary); + border-left-color: var(--el-color-primary); + } +} diff --git a/src/styles/theme.scss b/src/styles/theme.scss new file mode 100644 index 0000000..39b03b3 --- /dev/null +++ b/src/styles/theme.scss @@ -0,0 +1,6 @@ +// .text-color { +// color: var(--el-text-color-regular); +// } +// .dark .dark\:text-color { +// color: rgba(255, 255, 255, var(--dark-text-color)); +// } diff --git a/src/styles/var.css b/src/styles/var.css new file mode 100644 index 0000000..b714d7a --- /dev/null +++ b/src/styles/var.css @@ -0,0 +1,48 @@ +html[data-theme='dark'] { + --bg: #0d0d0d; + --text-color: #ffffff; + --layout-header-bg: #1b1d23; + --layout-menu-bg: #1b1d23; + --warp-bg: #212327; + --table-header-bg: #3b3d40; + --table-header-text-color: #cdcecf; + --pagination-bg: #101115; + --pagination-border-color: rgba(255, 255, 255, 0.13); + --select-header--text-color: #ffffff; + --station-card-bg: #23272f; + --station-card-border-color: #4b5361; + --station-header-bg: #363a40; + --station-header-text-color: #fff; + --station-info-val-text: #fff; + --label-text: #c7c8cb; + --text-desc: #8D9095; +} + +html[data-theme='light'] { + --bg: #f1f2f6; + --text-color: #4d4d4d; + --layout-header-bg: #ffffff; + --layout-menu-bg: #1b1d23; + --warp-bg: #ffffff; + --table-header-bg: #e8e9ee; + --table-header-text-color: #030303; + --pagination-bg: transparent; + --pagination-border-color: rgba(217, 217, 217, 1); + --select-header--text-color: #666; + --station-card-bg: #ffffff; + --station-card-border-color: #e9e9e9; + --station-header-bg: #f1f1f1; + --station-header-text-color: #030303; + --station-info-val-text: #4d4d4d; + --label-text: #4d4d4d; + --text-desc: #a8abb2; +} + +html.dark { + --el-bg-color: #212327; + /* --el-color-primary: #619925; */ + --el-border-color: rgba(255, 255, 255, 0.13); + --el-button-divide-border-color: rgba(255, 255, 255, 0.13); + --el-bg-color-overlay: #212327; + --el-text-color-regular: #c7c8cb; +} diff --git a/src/styles/variables.scss b/src/styles/variables.scss new file mode 100644 index 0000000..8b115ef --- /dev/null +++ b/src/styles/variables.scss @@ -0,0 +1,47 @@ +@use 'sass:math'; + +// 命名空间 +$namespace: v; +// el命名空间 +$elNamespace: el; +$W-scale-ratio-1440: math.div(1440, 1920); +$H-scale-ratio-900: math.div(900, 1080); + +$W-scale-ratio-2560: math.div(2560, 1920); +$H-scale-ratio-1440: math.div(1440, 1080); + +@mixin ResponsiveW($base-width) { + width: $base-width + px; + + @media only screen and (max-width: 1440px) { + width: calc($W-scale-ratio-1440 * #{$base-width}px); + } + + @media only screen and (min-width: 2560px) { + width: calc($W-scale-ratio-2560 * #{$base-width}px); + } +} + +@mixin ResponsiveH($base-height) { + height: $base-height + px; + + @media only screen and (max-width: 1440px) { + height: calc($H-scale-ratio-900 * #{$base-height}px); + } + + @media only screen and (min-width: 2560px) { + height: calc($H-scale-ratio-1440 * #{$base-height}px); + } +} + +@mixin ResponsiveFz($base-font-size) { + font-size: $base-font-size + px; + + @media only screen and (max-width: 1440px) { + font-size: calc($W-scale-ratio-1440 * #{$base-font-size}px); + } + + @media only screen and (min-width: 2560px) { + font-size: calc($W-scale-ratio-2560 * #{$base-font-size}px); + } +} diff --git a/src/tools/common/dialog.ts b/src/tools/common/dialog.ts new file mode 100644 index 0000000..790f4de --- /dev/null +++ b/src/tools/common/dialog.ts @@ -0,0 +1,8 @@ +export function dialogConfirm(content: string) { + return ElMessageBox.confirm(content, '警告', { + confirmButtonText: '是', + cancelButtonText: '否', + type: 'warning', + customClass: 'app-dislog-msg' + }) +} diff --git a/src/tools/common/hooks.ts b/src/tools/common/hooks.ts new file mode 100644 index 0000000..f4a9be3 --- /dev/null +++ b/src/tools/common/hooks.ts @@ -0,0 +1,124 @@ +import { debounce } from 'lodash' +import { onScopeDispose } from 'vue' + +export function useWindowKeyEnter(fn: Function) { + let isComposing = false + + window.addEventListener('compositionstart', () => { + isComposing = true + }) + window.addEventListener('compositionend', () => { + isComposing = false + }) + window.addEventListener('keydown', handleKeyDown) + + function handleKeyDown(e: KeyboardEvent) { + if (!isComposing && e.key === 'Enter') { + fn() + } + } + + onScopeDispose(() => { + window.removeEventListener('compositionstart', () => { + isComposing = true + }) + window.removeEventListener('compositionend', () => { + isComposing = false + }) + window.removeEventListener('keydown', handleKeyDown) + }) +} + +export function useWindowResize(fn: (...args: any[]) => any, delay: number = 300) { + const handleResize = debounce(fn, delay) + + window.addEventListener('resize', handleResize) + + return () => { + window.removeEventListener('resize', handleResize) + } +} + +export function useFlatArray(data: Array, flatKey: string = 'children') { + const result: any[] = [] + + function flat(items: any[]) { + for (const item of items) { + result.push(item) + if (item[flatKey] && item[flatKey].length > 0) { + flat(item[flatKey]) + } + } + } + + flat(data) + return result +} + +export const ipPattern = + /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ + +export function getColor(percentageStr: string) { + let percentage + if (!percentageStr.includes('%')) { + percentage = parseFloat(percentageStr.replace('%', '')) + } else { + percentage = parseFloat(percentageStr) + } + + if (percentage >= 0 && percentage <= 33.33) { + return '#D51B60' + } else if (percentage > 33.33 && percentage <= 66.66) { + return '#FC861B' + } else if (percentage > 66.66 && percentage <= 100) { + return '#00CD35' + } else { + return null // 超出范围 + } +} + +export function useParseHexToJson(hexString: string): object { + // 如果十六进制字符串长度是奇数,则在前面加零 + if (hexString.length % 2 !== 0) { + hexString = '0' + hexString + } + + // 将十六进制字符串转换为 ASCII 字符串 + function hexToAscii(hex: string) { + let asciiStr = '' + for (let i = 0; i < hex.length; i += 2) { + asciiStr += String.fromCharCode(parseInt(hex.substring(i, i + 2), 16)) + } + return asciiStr + } + + // 解析十六进制字符串并转换为 JSON 对象 + const asciiString = hexToAscii(hexString) + return JSON.parse(asciiString) +} + +interface ItemWithChildren { + children?: ItemWithChildren[] +} + +export function useFilterArray( + data: T[], + idToFilter: T[K], + idKey: K +): T[] { + return data + .map(item => { + if (item[idKey] === idToFilter) { + return null + } + + // 递归处理子节点 + const filteredChildren = Array.isArray(item.children) + ? useFilterArray(item.children as T[], idToFilter, idKey) + : null + + // 返回一个新的对象,包含过滤后的子节点 + return { ...item, children: filteredChildren } + }) + .filter(Boolean) as T[] +} diff --git a/src/tools/common/loading.ts b/src/tools/common/loading.ts new file mode 100644 index 0000000..6b3b14b --- /dev/null +++ b/src/tools/common/loading.ts @@ -0,0 +1,11 @@ +let loadingInstance: any +export function loadingShow(text: string) { + loadingInstance = ElLoading.service({ + lock: true, + text: text + }) +} + +export function loadingClose() { + loadingInstance?.close() +} diff --git a/src/tools/common/notify.ts b/src/tools/common/notify.ts new file mode 100644 index 0000000..cf0cb50 --- /dev/null +++ b/src/tools/common/notify.ts @@ -0,0 +1,15 @@ +function notify(type: string, title: string, message: string) { + ElNotification({ + type, + title, + message, + duration: 2000 + }) +} + +export function notifySuc(msg: string) { + notify('success', '成功', msg) +} +export function notifyErr(msg: string) { + notify('error', '失败', msg) +} diff --git a/src/tools/common/toast.ts b/src/tools/common/toast.ts new file mode 100644 index 0000000..bb4b5a4 --- /dev/null +++ b/src/tools/common/toast.ts @@ -0,0 +1,17 @@ +export function toastE(msg: string) { + ElMessage({ + showClose: false, + customClass: 'app-el-msg-icon', + type: 'error', + message: msg + }) +} + +export function toastS(msg: string) { + ElMessage({ + showClose: false, + customClass: 'app-el-msg-icon', + type: 'success', + message: msg + }) +} diff --git a/src/tools/common/workerCMD.ts b/src/tools/common/workerCMD.ts new file mode 100644 index 0000000..63b3c0b --- /dev/null +++ b/src/tools/common/workerCMD.ts @@ -0,0 +1,24 @@ +export enum WorkerCMD { + START, + SUBSCRIBE, + UNSUBSCRIBE, + PUBLISH, + STOP +} + +export interface IWorkerCMD { + cmd: WorkerCMD + topic: string + msg?: string +} + +export enum MainCMD { + MSG, + STATUS +} + +export interface IMainCMD { + cmd: MainCMD + msg: Uint8Array + topic: string +} diff --git a/src/tools/event/eventBus.ts b/src/tools/event/eventBus.ts new file mode 100644 index 0000000..6bb4ed2 --- /dev/null +++ b/src/tools/event/eventBus.ts @@ -0,0 +1,14 @@ +import mitt, { type Emitter } from "mitt"; +import type { ZmqDataEvent } from "./zmqDataEvent"; +import type { ZmqCmdEvent } from "./zmqCmdEvent"; +import type { SocketEvent } from "./socketEvent"; + +type Events = { + zmqData: ZmqDataEvent; + zmqCmd: ZmqCmdEvent; + socketMsg: SocketEvent; +}; + +const emitter: Emitter = mitt(); + +export default emitter; diff --git a/src/tools/event/socketEvent.ts b/src/tools/event/socketEvent.ts new file mode 100644 index 0000000..f4b4e4c --- /dev/null +++ b/src/tools/event/socketEvent.ts @@ -0,0 +1,39 @@ +import Emitter from "./eventBus"; + +export interface SocketEvent { + type: string; + stationId: number; + data?: any; + time?: any; +} + +export interface SocketMsgListener { + onCmdPost(type: string, stationId: number, data?: any, time?:any): void; +} + +let listeners: SocketMsgListener[] = []; + +export function addListener(listener: SocketMsgListener) { + if (listeners.length === 0) { + Emitter.on("socketMsg", (event: SocketEvent) => { + if (!event) { + return; + } + for (const listener of listeners) { + listener.onCmdPost(event.type, event.stationId, event.data, event.time); + } + }); + } + listeners.push(listener); +} + +export function removeListener(listener: SocketMsgListener) { + listeners = listeners.filter((item) => item !== listener); + if (listeners.length === 0) { + Emitter.off("socketMsg"); + } +} + +export function publish(event: SocketEvent) { + Emitter.emit("socketMsg", event); +} diff --git a/src/tools/event/zmqCmdEvent.ts b/src/tools/event/zmqCmdEvent.ts new file mode 100644 index 0000000..fec60a2 --- /dev/null +++ b/src/tools/event/zmqCmdEvent.ts @@ -0,0 +1,38 @@ +import Emitter from './eventBus' + +export interface ZmqCmdEvent { + addr: number + value: number + topic?: string +} + +export interface ZmqCmdListener { + onCmdPost(addr: number, value: number, topic?: string): void +} + +let listeners: ZmqCmdListener[] = [] + +export function addListener(listener: ZmqCmdListener) { + if (listeners.length === 0) { + Emitter.on('zmqCmd', (event: ZmqCmdEvent) => { + if (!event) { + return + } + for (const listener of listeners) { + listener.onCmdPost(event.addr, event.value, event.topic) + } + }) + } + listeners.push(listener) +} + +export function removeListener(listener: ZmqCmdListener) { + listeners = listeners.filter(item => item !== listener) + if (listeners.length === 0) { + Emitter.off('zmqCmd') + } +} + +export function publish(event: ZmqCmdEvent) { + Emitter.emit('zmqCmd', event) +} diff --git a/src/tools/event/zmqDataEvent.ts b/src/tools/event/zmqDataEvent.ts new file mode 100644 index 0000000..8dedee1 --- /dev/null +++ b/src/tools/event/zmqDataEvent.ts @@ -0,0 +1,37 @@ +import Emitter from './eventBus' + +export interface ZmqDataEvent { + date: string + values: Object +} + +export interface ZmqDataListener { + onValuesUpdate(date: string, values: Object): void +} + +let listeners: ZmqDataListener[] = [] + +export function addListener(listener: ZmqDataListener) { + if (listeners.length === 0) { + Emitter.on('zmqData', (event: ZmqDataEvent) => { + if (!event) { + return + } + for (const listener of listeners) { + listener.onValuesUpdate(event.date, event.values) + } + }) + } + listeners.push(listener) +} + +export function removeListener(listener: ZmqDataListener) { + listeners = listeners.filter((item) => item !== listener) + if (listeners.length === 0) { + Emitter.off('zmqData') + } +} + +export function publish(event: ZmqDataEvent) { + Emitter.emit('zmqData', event) +} diff --git a/src/tools/excel/ExcelExport.ts b/src/tools/excel/ExcelExport.ts new file mode 100644 index 0000000..2ef8ae2 --- /dev/null +++ b/src/tools/excel/ExcelExport.ts @@ -0,0 +1,94 @@ +import { utils, writeFile } from 'xlsx' + +export class ExcelExport { + constructor() {} + + exportLog(fileName: string, datas: Array) { + const headMap = [ + { label: '时间', prop: 'date' }, + { label: '类别', prop: 'type' }, + { label: '事件', prop: 'event' }, + { label: '事件标识', prop: 'tag_name' }, + { label: '触发对象', prop: 'trigger_device' }, + { label: '被触发对象', prop: 'triggered_device' } + ] + const heads = [[]] + for (const o of headMap) { + heads[0].push(o.label) + } + const export_data = datas.map((item) => { + const obj = {} + for (const o of headMap) { + obj[o.prop] = item[o.prop] + } + return obj + }) + + const worksheet = utils.json_to_sheet(export_data) + const workbook = utils.book_new() + utils.book_append_sheet(workbook, worksheet, 'sheet1') + //设置头部标题 + utils.sheet_add_aoa(worksheet, heads, { origin: 'A1' }) + writeFile(workbook, fileName, { compression: true }) + } + + exportDevHcistory(fileName: string, datas: Array) { + const headMap = [ + { label: '时间', prop: 'time' }, + // { label: '数据点', prop: 'name' }, + { label: '值', prop: 'value' } + ] + const heads = [[]] + for (const o of headMap) { + heads[0].push(o.label) + } + const workbook = utils.book_new() + let index = 1 + datas.forEach((data) => { + const export_data = data.map((item) => { + const obj = {} + for (const o of headMap) { + obj[o.prop] = item[o.prop] + } + return obj + }) + const worksheet = utils.json_to_sheet(export_data) + utils.book_append_sheet(workbook, worksheet, 'sheet' + index++) + //设置头部标题 + const merge = [{ s: { r: 0, c: 0 }, e: { r: 0, c: 1 } }] + worksheet['!merges'] = merge + worksheet.A1 = { + v: data[0].name + } + utils.sheet_add_aoa(worksheet, heads, { origin: 'A2' }) + }) + + writeFile(workbook, fileName, { compression: true }) + } + + exportDevLast(fileName: string, datas: Array) { + const headMap = [ + { label: '数据点位', prop: 'addrStr' }, + { label: '时间', prop: 'date' }, + { label: '值', prop: 'value' } + ] + const heads = [[]] + for (const o of headMap) { + heads[0].push(o.label) + } + const export_data = datas.map((item) => { + const obj = {} + for (const o of headMap) { + obj[o.prop] = item[o.prop] + } + return obj + }) + + const worksheet = utils.json_to_sheet(export_data) + const workbook = utils.book_new() + utils.book_append_sheet(workbook, worksheet, 'sheet1') + //设置头部标题 + utils.sheet_add_aoa(worksheet, heads, { origin: 'A1' }) + writeFile(workbook, fileName, { compression: true }) + } +} diff --git a/src/tools/excel/ExcelParser.ts b/src/tools/excel/ExcelParser.ts new file mode 100644 index 0000000..846b496 --- /dev/null +++ b/src/tools/excel/ExcelParser.ts @@ -0,0 +1,138 @@ +import { read, utils, type WorkSheet } from 'xlsx' +import type { OnParseListener } from './IListener' + +export enum ParseType { + NONE, + HMI_DEV_POINT, + TEST_DEV_POINT //对点测试电表解析 +} + +export class ExcelParser { + private fileReader: FileReader + private listener?: OnParseListener + private curType: ParseType = ParseType.NONE + /** + * excel文件解析器 + */ + constructor() { + this.fileReader = new FileReader() + + this.fileReader.onload = () => { + this.onFileLoad() + } + this.fileReader.onerror = this.onFileError + } + + private onFileError() { + this.listener?.onError() + } + + private onFileLoad() { + const self = this + new Promise(() => { + const workbook = read(self.fileReader.result) + //获取sheet1 + const worksheet = workbook.Sheets[workbook.SheetNames[0]] + //获取表格数据区域 + const rangeStr = worksheet['!ref'] + if (!rangeStr) { + this.listener?.onError() + return + } + + switch (this.curType) { + case ParseType.HMI_DEV_POINT: + this.parseHmiDevPoint(worksheet, rangeStr) + break + case ParseType.TEST_DEV_POINT: + this.parseTestDevPoint(worksheet, rangeStr) + break + } + }) + } + + //组态部分添加设备时上传的标准点表解析 + private parseHmiDevPoint(worksheet: WorkSheet, rangeStr: string) { + //查找开始行,判断是否有标准表头,即“序号”等信息头部,如果拿不到,则返回错误 + let valid: boolean = false + let startRow = 0 + do { + const cellAddr: string = utils.encode_cell({ r: startRow, c: 0 }) + const cell = worksheet[cellAddr] + // console.log('cell value---' + cellAddr + '---' + cell?.t + '---' + cell?.v) + if (cell && cell.v === '序号') { + valid = true + break + } + } while (startRow++ < 20) + if (!valid) { + this.listener?.onError() + return + } + const endRow = utils.decode_range(rangeStr).e.r + + // console.log('startRow:' + (startRow + 1) + '----endRow---' + endRow) + const range = utils.encode_range({ r: startRow + 1, c: 1 }, { r: endRow, c: 12 }) + + const aoa = utils.sheet_to_json(worksheet, { header: 1, range: range, defval: '-' }) + + this.listener?.onResult(aoa) + } + + //设备对点时上传的标准点表解析 + private parseTestDevPoint(worksheet: WorkSheet, rangeStr: string) { + /** + * sheet表的范围 + * s:开始 + * r:行 c:列 + * e:结束 + * r:行 c:列 + */ + const range = utils.decode_range(rangeStr) + //查找开始行,判断是否有标准表头,即“序号”等信息头部,如果拿不到,则返回错误 + let hasAddr: boolean = false + // let hasAddr:boolean = false + let startRow = 0 + const endRow = Math.min(20, range.e.r) + do { + for (let i = 0; i < range.e.c; i++) { + const cellAddr: string = utils.encode_cell({ r: startRow, c: i }) + const cell = worksheet[cellAddr] + if (cell && (cell.v.includes('地址') || cell.v.includes('addr'))) { + hasAddr = true + break + } + } + } while (!hasAddr && startRow++ < endRow) + if (!hasAddr) { + this.listener?.onError() + return + } + const headers = [ + 'serialNum', + 'name', + 'addr', + 'permission', + 'funcCode', + 'type', + 'ratio', + 'unit', + 'offset', + 'rule', + 'max', + 'min', + 'desc', + // 'isCustom', + // 'addrCustom' + ] + const validRange = utils.encode_range({ r: startRow, c: 0 }, { r: range.e.r, c: range.e.c }) + const aoa = utils.sheet_to_json(worksheet, { header: headers, range: validRange, defval: '-' }) + this.listener?.onResult(aoa) + } + + parse(file: File, type: ParseType, listener: OnParseListener) { + this.curType = type + this.listener = listener + this.fileReader.readAsArrayBuffer(file) + } +} diff --git a/src/tools/excel/IListener.ts b/src/tools/excel/IListener.ts new file mode 100644 index 0000000..e2c55db --- /dev/null +++ b/src/tools/excel/IListener.ts @@ -0,0 +1,4 @@ +export interface OnParseListener { + onResult(result: any): void + onError(): void +} diff --git a/src/tools/excel/preview.html b/src/tools/excel/preview.html new file mode 100644 index 0000000..dae2cff --- /dev/null +++ b/src/tools/excel/preview.html @@ -0,0 +1,302 @@ + + + + SheetJS Table Export + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EMS系统-云端管理器
序号类别说明
1端口号502(可进行修改)
2服务端IP/
3服务端IP/
4功能码 + 读功能码:03 写功能码:06/16 +
5PCS只读数据区地址:4086~4192
6测量电表只读数据区地址:8192~8217
7BMS只读数据区地址:28672~29093
8计量电表只读数据区地址:12288~12367
9液冷机组只读数据去地址:20480~20527
10EMS系统只读数据区地址:0~56
11系统读写参数区地址:40960~41067
12额定参数指令区地址:41216~41218
13PCS参数指令区地址:41728~41736
14BMS参数指令区地址:41472~41474
15环境参数写指令区地址:41984~41987
16动态扩容参数写指令地址:42240~42243
17系统设置写指令地址:42496~42504
18策略事件地址:42752~42760
19EMS系统远控指令地址:45056~45059
20EMS系统信息地址:45312~45315
历史修订记录
序号日期版本修改内容修改人
12023.9V1.151、比塔提供的最新点位信张梦菊
22023.9V1.16 + 1、云EMS平台增加了需求点位
2、增加了事件推送接口 +
张梦菊
32023.10.13V1.17 + 1、增加了 测点信息推送接口 说明
2、修改了事件接口入参内容与接口名称
3、添加了策略推送的流程图 +
闫鹏飞
+ + diff --git a/src/tools/file/opfsOpn.ts b/src/tools/file/opfsOpn.ts new file mode 100644 index 0000000..e80c4c7 --- /dev/null +++ b/src/tools/file/opfsOpn.ts @@ -0,0 +1,35 @@ +let opfsRoot: FileSystemDirectoryHandle + +async function getOpfsRoot() { + if (!opfsRoot) { + opfsRoot = await navigator.storage.getDirectory() + } + + return opfsRoot +} + +async function writeFile(fileName: string, jsonData: any) { + getOpfsRoot() + const dataFile = await opfsRoot.getFileHandle('hmi_data', { + create: true + }) + const ws = await dataFile.createWritable() + const blob = new Blob([JSON.stringify(jsonData)], { type: 'application/json' }) + await ws.write(blob) + await ws.close() + return dataFile +} + +async function delFile(file: string | FileSystemFileHandle) { + if (typeof file === 'string') { + try { + const fileHandle = await opfsRoot.getFileHandle(file) + await fileHandle.remove() + // eslint-disable-next-line no-empty + } catch (error) {} + } else { + await file.remove() + } +} + +export { writeFile, delFile } diff --git a/src/tools/three_models/basic/Confing.ts b/src/tools/three_models/basic/Confing.ts new file mode 100644 index 0000000..95f76ea --- /dev/null +++ b/src/tools/three_models/basic/Confing.ts @@ -0,0 +1,54 @@ +import type { GlRenderer } from './GlRenderer' +import type { LabelRenderer } from './LabelRenderer' +import type { MCamera } from './MCamera' +import { Vector3 } from 'three' +import { _ as lodash } from 'lodash' +import type { Control } from './Control' +import type { OnResizeListener } from '../interface/IListener' + +export class Config { + private container: HTMLElement + private observer: ResizeObserver + private camera: MCamera + private control: Control + + constructor( + container: HTMLElement, + camera: MCamera, + glRenderer: GlRenderer, + control: Control, + listener: OnResizeListener + ) { + this.container = container + this.camera = camera + this.control = control + glRenderer.setSize(container.clientWidth, container.clientHeight) + + const domId = container.id + + this.observer = new ResizeObserver( + lodash.debounce((entries: ResizeObserverEntry[]) => { + for (const entry of entries) { + if (entry.target.id === domId) { + camera.setAspect(container.clientWidth / container.clientHeight) + // update the size of the renderer AND the canvas + glRenderer.setSize(container.clientWidth, container.clientHeight) + listener?.onResize() + } + } + }, 500) + ) + + this.observer.observe(container) + } + + changeCamera(position: typeof Vector3) { + this.camera.position.copy(position) + this.camera.updateProjectionMatrix() + this.control.update() + } + + clear() { + this.observer.unobserve(this.container) + } +} diff --git a/src/tools/three_models/basic/Control.ts b/src/tools/three_models/basic/Control.ts new file mode 100644 index 0000000..ff50da1 --- /dev/null +++ b/src/tools/three_models/basic/Control.ts @@ -0,0 +1,36 @@ +import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' +import type { MCamera } from './MCamera' +export class Control { + private controls + private lockFrame: boolean + constructor(camera: MCamera, canvas: HTMLElement) { + this.controls = new OrbitControls(camera, canvas) + + // this.controls.enableRotate = false + // this.controls.enableZoom = false + this.controls.enablePan = false + + //垂直方向限制 + this.controls.minPolarAngle = 0 // default + this.controls.maxPolarAngle = Math.PI / 2 // default + + this.lockFrame = false + } + + update() { + this.controls.update() + } + + addListener(caller: any, callback: Function) { + this.controls.addEventListener('change', () => { + if (this.lockFrame) { + return + } + this.lockFrame = true + requestAnimationFrame(() => { + callback.call(caller) + this.lockFrame = false + }) + }) + } +} diff --git a/src/tools/three_models/basic/GlRenderer.ts b/src/tools/three_models/basic/GlRenderer.ts new file mode 100644 index 0000000..3191367 --- /dev/null +++ b/src/tools/three_models/basic/GlRenderer.ts @@ -0,0 +1,102 @@ +import { + WebGLRenderer, + PerspectiveCamera, + Scene, + Vector2, + WebGLRenderTarget, +} from "three"; +import { EffectComposer } from "three/addons/postprocessing/EffectComposer.js"; +import { RenderPass } from "three/addons/postprocessing/RenderPass.js"; +import { OutlinePass } from "three/addons/postprocessing/OutlinePass.js"; +import { ShaderPass } from "three/addons/postprocessing/ShaderPass.js"; +import { GammaCorrectionShader } from "three/addons/shaders/GammaCorrectionShader.js"; + +export class GlRenderer { + private renderer: typeof WebGLRenderer; + private composer?: EffectComposer; + private outlinePass?: OutlinePass; + private shaderPass?: ShaderPass; + private renderTarget: typeof WebGLRenderTarget; + + constructor() { + this.renderer = new WebGLRenderer({ + //MSAA抗锯齿,主要靠GPU计算,如果应用其他抗锯齿(SMAA\FXAA,CPU计算),最好关闭,只保留一个 + antialias: true, + //背景透明setClearColor + alpha: true, + }); + this.renderer.setClearColor("#ffffff", 0); + this.renderer.setPixelRatio(window.devicePixelRatio); + + } + + applyProcess( + w: number, + h: number, + scene: typeof Scene, + camera: typeof PerspectiveCamera + ) { + this.renderTarget = new WebGLRenderTarget(w, h, { samples: 4 }); + this.composer = new EffectComposer(this.renderer, this.renderTarget); + this.composer.setPixelRatio(window.devicePixelRatio); + + const renderPass = new RenderPass(scene, camera); + this.composer.addPass(renderPass); + this.outlinePass = new OutlinePass(new Vector2(w / h), scene, camera); + this.outlinePass.edgeGlow = 1.0; // 将轮廓线的强度设置为1.0 + this.outlinePass.edgeThickness = 5.0; // 将轮廓线的宽度设置为5.0 + this.outlinePass.visibleEdgeColor.set("#ffa200"); // 将轮廓线的颜色设置 + this.composer.addPass(this.outlinePass); + this.shaderPass = new ShaderPass(GammaCorrectionShader); + this.composer.addPass(this.shaderPass); + } + + getRenderer() { + return this.renderer; + } + + setOutlineObj(obj: any) { + const selectedObjects = [] + if (obj && obj.name !== 'empty') { + selectedObjects.push(obj) + } + this.outlinePass.selectedObjects = selectedObjects + this.processRender() + } + + normalRender(scene: typeof Scene, camera: typeof PerspectiveCamera) { + this.renderer.render(scene, camera) + } + + processRender() { + this.composer.render() + } + + renderOnce(scene: typeof Scene, camera: typeof PerspectiveCamera) { + if (scene) { + this.renderer.render(scene, camera); + } else { + this.composer?.render(); + } + } + + loop(callback: Function | null) { + this.renderer.setAnimationLoop(callback); + } + + setSize(width: number, height: number) { + this.renderer.setSize(width, height); + } + + release() { + this.renderer.dispose(); + this.renderTarget.dispose(); + this.outlinePass.dispose(); + this.shaderPass.dispose(); + this.composer.dispose(); + } + + debugInfo() { + console.log(this.renderer.info); + } +} diff --git a/src/tools/three_models/basic/LabelRenderer.ts b/src/tools/three_models/basic/LabelRenderer.ts new file mode 100644 index 0000000..5e0dc5a --- /dev/null +++ b/src/tools/three_models/basic/LabelRenderer.ts @@ -0,0 +1,52 @@ +import { CSS3DRenderer, CSS3DObject } from 'three/addons/renderers/CSS3DRenderer.js' + +import { PerspectiveCamera, Scene, MathUtils } from 'three' +import { Group, Box3, Vector3 } from 'three' +import type { ILabel } from '../interface/ILabel' + +export class LabelRenderer { + private renderer: CSS3DRenderer + private labelGroup: typeof Group + constructor() { + this.labelGroup = new Group() + this.renderer = new CSS3DRenderer() + this.renderer.domElement.style.position = 'absolute' + this.renderer.domElement.style.top = '0' + this.renderer.domElement.style.pointerEvents = 'none' + } + + getRenderer() { + return this.renderer + } + + render(scene: typeof Scene, camera: typeof PerspectiveCamera) { + this.renderer.render(scene, camera) + } + + setSize(width: number, height: number) { + this.renderer.setSize(width, height) + } + + addLabels(labels: ILabel[]) { + for (const label of labels) { + const pointLabel = new CSS3DObject(label.dom) + pointLabel.position.copy(label.position) + pointLabel.rotation.y = MathUtils.degToRad(135) + pointLabel.scale.set(0.008, 0.008, 1) + // pointLabel.rotation.y = Math.atan2(5 - pointLabel.position.x, -5 - pointLabel.position.z) + if (label.needReverse) { + pointLabel.position.y -= label.offset.y + } else { + pointLabel.position.y += label.offset.y + } + + this.labelGroup.add(pointLabel) + } + return this.labelGroup + } + + clearLabels() { + this.labelGroup.clear() + return this.labelGroup + } +} diff --git a/src/tools/three_models/basic/Lights.ts b/src/tools/three_models/basic/Lights.ts new file mode 100644 index 0000000..5a03688 --- /dev/null +++ b/src/tools/three_models/basic/Lights.ts @@ -0,0 +1,16 @@ +import { DirectionalLight, AmbientLight } from 'three' + +export class Lights { + private ambientLight + private mainLight + constructor() { + this.ambientLight = new AmbientLight('white', 5) + + this.mainLight = new DirectionalLight('white', 4) + this.mainLight.position.set(10, 10, 10) + } + + getLights() { + return [this.ambientLight] + } +} diff --git a/src/tools/three_models/basic/Loop.ts b/src/tools/three_models/basic/Loop.ts new file mode 100644 index 0000000..dd0843b --- /dev/null +++ b/src/tools/three_models/basic/Loop.ts @@ -0,0 +1,34 @@ +import type { GlRenderer } from './GlRenderer' +import type { LabelRenderer } from './LabelRenderer' +import type { MCamera } from './MCamera' +import type { MScene } from './MScene' + +export class Loop { + private scene: MScene + private camera: MCamera + private glRenderer: GlRenderer + private labelRenderer: LabelRenderer + + constructor( + scene: MScene, + camera: MCamera, + glRenderer: GlRenderer, + labelRenderer: LabelRenderer + ) { + this.scene = scene + this.camera = camera + this.glRenderer = glRenderer + this.labelRenderer = labelRenderer + } + + start() { + this.glRenderer.loop(() => { + this.glRenderer.render(this.scene, this.camera) + // this.labelRenderer.render(this.scene, this.camera) + }) + } + + stop() { + this.glRenderer.loop(null) + } +} diff --git a/src/tools/three_models/basic/MCamera.ts b/src/tools/three_models/basic/MCamera.ts new file mode 100644 index 0000000..599fdad --- /dev/null +++ b/src/tools/three_models/basic/MCamera.ts @@ -0,0 +1,13 @@ +import { PerspectiveCamera } from 'three' + +export class MCamera extends PerspectiveCamera { + constructor() { + super(75, 1, 0.1, 1000) + this.position.set(0, 0, 10) + } + + setAspect(aspect: number) { + this.aspect = aspect + this.updateProjectionMatrix() + } +} diff --git a/src/tools/three_models/basic/MScene.ts b/src/tools/three_models/basic/MScene.ts new file mode 100644 index 0000000..6e6c844 --- /dev/null +++ b/src/tools/three_models/basic/MScene.ts @@ -0,0 +1,11 @@ +import { Color, Scene, AxesHelper } from 'three' + +export class MScene extends Scene { + constructor() { + super() + // this.scene = new Scene() + // // this.scene.background = new Color('skyblue') + // const axesHelper = new AxesHelper(4) + // this.add(axesHelper) + } +} diff --git a/src/tools/three_models/basic/ModelLoader.ts b/src/tools/three_models/basic/ModelLoader.ts new file mode 100644 index 0000000..eb4c46f --- /dev/null +++ b/src/tools/three_models/basic/ModelLoader.ts @@ -0,0 +1,33 @@ +import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js' +import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js' +import { db } from '../helper/db' + +export class ModelLoader { + private loader: GLTFLoader + + constructor() { + const dracoLoader = new DRACOLoader() + dracoLoader.setDecoderPath('/three/draco/') + this.loader = new GLTFLoader() + this.loader.setDRACOLoader(dracoLoader) + } + + async load(path: string) { + let url + try { + const blob = await db.model.get(path) + url = URL.createObjectURL(new Blob([blob?.value])) + } catch (error) { + console.log(error) + url = path + } + // try { + const data = await this.loader.loadAsync(path) + const model = data.scene + return model + // } catch (error) { + // console.log(error) + // throw new Error('model load error') + // } + } +} diff --git a/src/tools/three_models/basic/MouseHelper.ts b/src/tools/three_models/basic/MouseHelper.ts new file mode 100644 index 0000000..74d8850 --- /dev/null +++ b/src/tools/three_models/basic/MouseHelper.ts @@ -0,0 +1,88 @@ +import type { Scene } from "three"; +import type { Camera } from "three"; +import * as THREE from "three"; +import type { OnMouseEventListener } from "../interface/IListener"; +import type { HtmlHTMLAttributes } from "vue"; + +export class MouseHelper { + private camera: typeof Camera; + private scene: typeof Scene; + private pointer: typeof THREE.Vector2; + private raycaster: typeof THREE.raycaster; + private mouseEvtListener?: OnMouseEventListener; + private element: HTMLElement; + + // private rectLeft: number; + // private rectTop: number; + // private offsetW: number; + // private offsetH: number; + + constructor( + scene: typeof Scene, + camera: typeof Camera, + element: HTMLElement + ) { + this.scene = scene; + this.camera = camera; + this.element = element; + this.pointer = new THREE.Vector2(); + this.raycaster = new THREE.Raycaster(); + } + + addMouseEvtListener(listener: OnMouseEventListener) { + this.mouseEvtListener = listener; + } + + onPointerMove = (event: MouseEvent) => { + if (this.mouseEvtListener) { + const obj = this.checkIntersection(event); + if (obj) { + this.mouseEvtListener.onHover(obj); + } + } + }; + + onPointDbClick = (event: MouseEvent) => { + if (this.mouseEvtListener) { + const obj = this.checkIntersection(event); + if (obj) { + this.mouseEvtListener.onDbClick(obj); + } + } + }; + + onRightClick = (event: MouseEvent) => { + if (this.mouseEvtListener && event.button === 2) { + // right-click + /* if you wanted to be less strict about what + counts as a double click you could use + evt.originalEvent.detail > 1 instead */ + if (event.detail === 2) { + const obj = this.checkIntersection(event); + if (obj) { + this.mouseEvtListener.onRightClick(obj); + } + } + } + }; + + private checkIntersection(event: MouseEvent): any { + //没有放在构造函数中,因为v-if隐藏显示后,第一次后取的宽高异常,需要一段时间后正常 + //所以目前暂时每次使用前都获取一遍 + const rect = this.element.getBoundingClientRect(); + const rectLeft = rect.left; + const rectTop = rect.top; + const offsetW = this.element.offsetWidth; + const offsetH = this.element.offsetHeight; + + this.pointer.x = ((event.clientX - rectLeft) / offsetW) * 2 - 1; + this.pointer.y = -((event.clientY - rectTop) / offsetH) * 2 + 1; + this.raycaster.setFromCamera(this.pointer, this.camera); + const intersects = this.raycaster.intersectObject(this.scene, true); + if (intersects.length > 0) { + const selectedObject = intersects[0].object; + return selectedObject; + } + return null; + } +} diff --git a/src/tools/three_models/basic/ResourceTrack.ts b/src/tools/three_models/basic/ResourceTrack.ts new file mode 100644 index 0000000..362337b --- /dev/null +++ b/src/tools/three_models/basic/ResourceTrack.ts @@ -0,0 +1,71 @@ +import * as THREE from 'three' + +export class ResourceTracker { + private resources: Set + + constructor() { + this.resources = new Set() + } + + track(resource: any) { + if (!resource) { + return resource + } + + // handle children and when material is an array of materials or + // uniform is array of textures + if (Array.isArray(resource)) { + resource.forEach((resource) => this.track(resource)) + return resource + } + + if (resource.dispose || resource instanceof THREE.Object3D) { + this.resources.add(resource) + } + + if (resource instanceof THREE.Object3D) { + this.track(resource.geometry) + this.track(resource.material) + this.track(resource.children) + } else if (resource instanceof THREE.Material) { + // We have to check if there are any textures on the material + for (const value of Object.values(resource)) { + if (value instanceof THREE.Texture) { + this.track(value) + } + } + + // We also have to check if any uniforms reference textures or arrays of textures + if (resource.uniforms) { + for (const value of Object.values(resource.uniforms)) { + if (value) { + const uniformValue = value.value + if (uniformValue instanceof THREE.Texture || Array.isArray(uniformValue)) { + this.track(uniformValue) + } + } + } + } + } + + return resource + } + untrack(resource: any) { + this.resources.delete(resource) + } + dispose() { + for (const resource of this.resources) { + if (resource instanceof THREE.Object3D) { + if (resource.parent) { + resource.parent.remove(resource) + } + } + + if (resource.dispose) { + resource.dispose() + } + } + + this.resources.clear() + } +} diff --git a/src/tools/three_models/components/Models.ts b/src/tools/three_models/components/Models.ts new file mode 100644 index 0000000..2f5543a --- /dev/null +++ b/src/tools/three_models/components/Models.ts @@ -0,0 +1,372 @@ +import { MScene } from '../basic/MScene' +import { MCamera } from '../basic/MCamera' +import { GlRenderer } from '../basic/GlRenderer' +// import { Lights } from '../basic/Lights' +import { Config } from '../basic/Confing' +import { Control } from '../basic/Control' +import { ModelLoader } from '../basic/ModelLoader' +import { + Box3, + Vector3, + Group, + Raycaster, + BoxGeometry, + MeshBasicMaterial, + Mesh, + PMREMGenerator, + Object3D +} from 'three' + +import { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js' +import type { + OnFrameUpdateListener, + OnModelLoadListener, + OnMouseEventListener, + OnResizeListener +} from '../interface/IListener' +import { ResourceTracker } from '../basic/ResourceTrack' +import { MouseHelper } from '../basic/MouseHelper' +import { delay, startsWith } from 'lodash' + +export class Models { + private container: HTMLElement + private progress: HTMLElement + private mScene: MScene + private mCamera: MCamera + private glRenderer: GlRenderer + // private lights: Lights + private config: Config + private control: Control + private modelLoader: ModelLoader + private powerStationGroup?: typeof Group + private powerStationModel?: typeof Object3D + private powerStationGround?: typeof Object3D + private containerModel?: typeof Object3D + private psPosition: typeof Vector3 //集装箱切换时保留相机位置 + private psLabelPositions: (typeof Vector3)[] + private containerLabelPositions: (typeof Vector3)[] + private modelLoadListener?: OnModelLoadListener + private frameUpdateListener?: OnFrameUpdateListener + private mouseHelper: MouseHelper + private hoverObjName: string + private curModelName: string + + private track: ResourceTracker + private raycaster: typeof Raycaster + + constructor(container: HTMLElement, progress: HTMLElement) { + this.track = new ResourceTracker() + this.raycaster = new Raycaster() + + this.container = container + this.progress = progress + this.mScene = new MScene() + this.mCamera = new MCamera() + this.glRenderer = new GlRenderer() + this.glRenderer.applyProcess( + this.container.clientWidth, + this.container.clientHeight, + this.mScene, + this.mCamera + ) + const domElement = this.glRenderer.getRenderer().domElement + + this.control = new Control(this.mCamera, domElement) + this.control.addListener(this, this.render) + this.track.track(this.control) + + container.append(domElement) + + const resizeListener: OnResizeListener = { + onResize() { + self.render() + } + } + this.config = new Config(container, this.mCamera, this.glRenderer, this.control, resizeListener) + + this.modelLoader = new ModelLoader() + + const pmremGenerator = new PMREMGenerator(this.glRenderer.getRenderer()) + this.track.track(pmremGenerator) + const roomEnv = new RoomEnvironment() + this.track.track(roomEnv) + const envTexture = pmremGenerator.fromScene(roomEnv, 0.04).texture + this.mScene.environment = envTexture + this.track.track(envTexture) + + this.powerStationGroup = new Group() + + this.psLabelPositions = [] + this.containerLabelPositions = [] + this.psPosition = new Vector3(10, 15, 15) + + this.curModelName = '' + this.hoverObjName = '' + const self = this + const mouseEvtListener: OnMouseEventListener = { + onHover: function (obj: any): void { + // console.log('----mouse move----') + if (obj.parent && obj.parent.name.startsWith('box')) { + if (self.hoverObjName === obj.parent.name) { + return + } + self.hoverObjName = obj.parent.name + self.glRenderer.setOutlineObj(obj.parent) + } else { + if (self.hoverObjName === '') { + return + } + self.hoverObjName = '' + self.glRenderer.setOutlineObj(null) + } + }, + onDbClick: function (obj: any): void { + const name = self.getModelName(obj) + // console.log('----mouse dbclick----' + name) + + if (name && startsWith(name, 'box')) { + const index = name.indexOf('box') + // console.log('--dbclick--' + name.slice(index + 3)) + self.loadContainer(Number(name.slice(index + 3))) + } + }, + onRightClick: function (obj: any): void { + // console.log("----mouse right click----" + obj.parent.name); + } + } + this.mouseHelper = new MouseHelper(this.mScene, this.mCamera, container) + this.mouseHelper.addMouseEvtListener(mouseEvtListener) + + domElement.addEventListener('mousemove', this.mouseHelper.onPointerMove) + domElement.addEventListener('dblclick', this.mouseHelper.onPointDbClick) + // domElement.addEventListener("mouseup", this.mouseHelper.onRightClick); + + //按需渲染,暂时关闭 + // this.control.addListener(this.render) + } + + async loadPowerStation(totalNum: number) { + this.curModelName = 'powerStation' + this.modelLoadListener?.onModelStart(this.curModelName) + this.containerModel?.removeFromParent() + if (this.powerStationModel) { + this.config.changeCamera(this.psPosition) + this.mScene.add(this.powerStationGroup) + this.mScene.add(this.powerStationGround) + this.monitorObj() + return + } + this.progress.style.visibility = 'visible' + await this.loadPowerStationGround() + await this.loadPowerStationModel() + this.powerStationGroup.clear() + + const box = new Box3().setFromObject(this.powerStationModel) + const vector = new Vector3() + box.getSize(vector) + // this.powerStationModel.position.set(0, 0, -vector.z / 2) + const gap = 3 + const count = this.nearestSquareRoot(totalNum) //计算每天边数目 + //总长count*vercor.x 总宽count*vector.z + const startX = -(count * vector.x + (count - 1) * gap) / 2 + const startZ = (count * vector.z + (count - 1) * gap) / 2 - vector.z + + const gBox = new Box3().setFromObject(this.powerStationGround) + const gVector = new Vector3() + gBox.getSize(gVector) + const ratio = (count * vector.x + (count - 1) * gap + 8) / gVector.x + this.powerStationGround.scale.set(ratio, ratio, ratio) + this.powerStationGround.position.set((gVector.x * ratio) / 2, 0, -(gVector.z * ratio) / 6) + this.mScene.add(this.powerStationGround) + + let lineNum = -1 + for (let i = 0; i < totalNum; i++) { + if (i % count === 0) { + lineNum++ + } + const model = this.powerStationModel.clone() + const col = i % count + model.position.set(startX + (vector.x + gap) * col, 0, startZ - (vector.z + gap) * lineNum) + // const label = model.getObjectByName('container') + // console.log(label) + this.psLabelPositions.push( + new Vector3( + startX + (vector.x + gap) * col + vector.x / 2, + (vector.y / 3) * 2, + startZ - (vector.z + gap) * lineNum + vector.z / 2 + ) + ) + // model.userData = { index: i } + // console.log(model.userData) + model.children[0].name = 'box' + i + this.powerStationGroup.add(model) + } + this.psPosition = new Vector3(count * vector.x * 1.5, count * 7, count * vector.x * 1.5) + this.config.changeCamera(this.psPosition) + this.mScene.add(this.powerStationGroup) + this.monitorObj() + } + + async loadPowerStationModel() { + if (!this.powerStationModel) { + this.powerStationModel = await this.modelLoader.load('/three/models/single-v1.glb') + this.track.track(this.powerStationModel) + } + } + async loadPowerStationGround() { + if (!this.powerStationGround) { + this.powerStationGround = await this.modelLoader.load('/three/models/ground-v1.glb') + this.track.track(this.powerStationGround) + } + } + + async loadContainer(index: number) { + this.curModelName = 'container' + index + this.modelLoadListener?.onModelStart(this.curModelName) + this.psPosition.copy(this.mCamera.position) + this.powerStationGround?.removeFromParent() + this.powerStationGroup?.removeFromParent() + if (!this.containerModel) { + this.progress.style.visibility = 'visible' + this.containerModel = await this.modelLoader.load('/three/models/container-v1.glb') + this.track.track(this.containerModel) + const box = new Box3().setFromObject(this.containerModel) + const vector = new Vector3() + box.getSize(vector) + this.containerModel.position.set(-vector.x / 2, -vector.y / 2, (vector.z * 3) / 4) + this.mScene.add(this.containerModel) + this.containerModel.traverse((child: any) => { + if (child.name.startsWith('label')) { + const pos = new Vector3() + child.getWorldPosition(pos) + this.containerLabelPositions.push(pos) + } + }) + } + + this.mScene.add(this.containerModel) + this.config.changeCamera(new Vector3(5, 5, -5)) + this.monitorObj() + } + + render = () => { + if (startsWith(this.curModelName, 'container')) { + this.glRenderer.renderOnce(this.mScene, this.mCamera) + } else { + this.glRenderer.processRender() + } + this.frameUpdateListener?.onFrameUpdate() + } + + addModelLoadListener(listener: OnModelLoadListener) { + this.modelLoadListener = listener + } + + addFrameUpdateListener(listener: OnFrameUpdateListener) { + this.frameUpdateListener = listener + } + + stop() { + // this.loop.stop() + const domElement = this.glRenderer.getRenderer().domElement + domElement.removeEventListener('mousemove', this.mouseHelper.onPointerMove) + domElement.removeEventListener('dblclick', this.mouseHelper.onPointDbClick) + this.config.clear() + this.track.dispose() + this.mScene.clear() + this.glRenderer.release() + } + + getLabelPositions() { + const halfWidth = this.container.clientWidth / 2 + const halfHeigth = this.container.clientHeight / 2 + let positions + if (startsWith(this.curModelName, 'container')) { + positions = this.containerLabelPositions + } else { + positions = this.psLabelPositions + } + return positions.map((item) => { + const tmp = new Vector3() + tmp.copy(item) + this.mCamera.updateMatrixWorld() + const position = tmp.project(this.mCamera) + const x = position.x * halfWidth + halfWidth + const y = -position.y * halfHeigth + halfHeigth + + let z = 0 + if (startsWith(this.curModelName, 'container') && !this.isObjectVisible(tmp)) { + z = -1 + } + return new Vector3(x, y, z) + }) + } + + debugInfo() { + this.glRenderer.debugInfo() + } + + private monitorObj() { + this.glRenderer.loop(this.render) + const geometry = new BoxGeometry(0.0001, 0.0001, 0.0001) + const material = new MeshBasicMaterial({ color: 0x00ff00 }) + const cube = new Mesh(geometry, material) + cube.onAfterRender = () => { + this.mScene.remove(cube) + geometry.dispose() + material.dispose() + this.modelLoadListener?.onModelLoded(this.curModelName) + // requestAnimationFrame(() => { + const ended = () => { + this.glRenderer.loop(null) + this.progress.style.visibility = 'hidden' + } + delay(ended, 2000) + + // }) + } + this.mScene.add(cube) + } + + private isObjectVisible(point: typeof Vector3) { + const screenPos = point.clone() + // screenPos.project(this.mCamera) + this.raycaster.setFromCamera(screenPos, this.mCamera) + const intersects = this.raycaster.intersectObjects(this.mScene.children, true) + let prefix = '' + let prefixNum = 0 + for (const obj of intersects) { + const name: string = obj.object.name + const namePrefix = name.substring(0, name.indexOf('_')) + if (namePrefix === 'label') { + break + } + if (prefix !== namePrefix) { + prefixNum++ + prefix = namePrefix + } + } + return prefixNum < 2 + } + + private nearestSquareRoot(num: number) { + // Check if the number is negative. + if (num < 0) { + throw new Error('The input number must be non-negative.') + } + // Calculate the square root of the number. + const squareRoot = Math.sqrt(num) + // Round the square root to the nearest integer. + const roundedSquareRoot = Math.ceil(squareRoot) + // Return the rounded square root. + return roundedSquareRoot + } + + private getModelName(obj: any): string { + if (obj.parent && obj.parent.name !== 'Scene') { + return this.getModelName(obj.parent) + } else { + return obj.name + } + } +} diff --git a/src/tools/three_models/helper/db.ts b/src/tools/three_models/helper/db.ts new file mode 100644 index 0000000..d6d7e13 --- /dev/null +++ b/src/tools/three_models/helper/db.ts @@ -0,0 +1,22 @@ +// db.ts +import Dexie, { type Table } from 'dexie' + +export interface Model { + url: string + value: Blob +} + +export class MDexie extends Dexie { + // 'friends' is added by dexie when declaring the stores() + // We just tell the typing system this is the case + model!: Table + + constructor() { + super('energy') + this.version(1).stores({ + model: 'url,value' // Primary key and indexed props + }) + } +} + +export const db = new MDexie() diff --git a/src/tools/three_models/interface/ILabel.ts b/src/tools/three_models/interface/ILabel.ts new file mode 100644 index 0000000..f8c736f --- /dev/null +++ b/src/tools/three_models/interface/ILabel.ts @@ -0,0 +1,15 @@ +import { Vector3 } from "three"; + +export interface ILabel { + label: string; + info: string; + position?: typeof Vector3; + offset?: typeof Vector3; + dom?: HTMLElement; + length: number; + canClick: boolean; + needReverse: boolean; + left?: number; + top?: number; + show?: boolean; +} diff --git a/src/tools/three_models/interface/IListener.ts b/src/tools/three_models/interface/IListener.ts new file mode 100644 index 0000000..80df426 --- /dev/null +++ b/src/tools/three_models/interface/IListener.ts @@ -0,0 +1,18 @@ +export interface OnModelLoadListener { + onModelStart(name: string): void + onModelLoded(name: string): void +} + +export interface OnFrameUpdateListener { + onFrameUpdate(): void +} + +export interface OnMouseEventListener { + onHover(obj: any): void + onDbClick(obj: any): void + onRightClick(obj: any): void +} + +export interface OnResizeListener { + onResize(): void +} diff --git a/src/types/auto-components.d.ts b/src/types/auto-components.d.ts new file mode 100644 index 0000000..5e55fcb --- /dev/null +++ b/src/types/auto-components.d.ts @@ -0,0 +1,146 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + '.env': typeof import('./../../.env.dev')['default'] + AddNode: typeof import('./../components/SimpleProcessDesigner/src/addNode.vue')['default'] + AppLinkInput: typeof import('./../components/AppLinkInput/index.vue')['default'] + AppLinkSelectDialog: typeof import('./../components/AppLinkInput/AppLinkSelectDialog.vue')['default'] + Backtop: typeof import('./../components/Backtop/src/Backtop.vue')['default'] + CardTitle: typeof import('./../components/Card/src/CardTitle.vue')['default'] + ColorInput: typeof import('./../components/ColorInput/index.vue')['default'] + ComponentContainer: typeof import('./../components/DiyEditor/components/ComponentContainer.vue')['default'] + ComponentContainerProperty: typeof import('./../components/DiyEditor/components/ComponentContainerProperty.vue')['default'] + ComponentLibrary: typeof import('./../components/DiyEditor/components/ComponentLibrary.vue')['default'] + ConfigGlobal: typeof import('./../components/ConfigGlobal/src/ConfigGlobal.vue')['default'] + ContentDetailWrap: typeof import('./../components/ContentDetailWrap/src/ContentDetailWrap.vue')['default'] + ContentWrap: typeof import('./../components/ContentWrap/src/ContentWrap.vue')['default'] + CopperModal: typeof import('./../components/Cropper/src/CopperModal.vue')['default'] + CountTo: typeof import('./../components/CountTo/src/CountTo.vue')['default'] + Crontab: typeof import('./../components/Crontab/src/Crontab.vue')['default'] + Cropper: typeof import('./../components/Cropper/src/Cropper.vue')['default'] + CropperAvatar: typeof import('./../components/Cropper/src/CropperAvatar.vue')['default'] + Descriptions: typeof import('./../components/Descriptions/src/Descriptions.vue')['default'] + DescriptionsItemLabel: typeof import('./../components/Descriptions/src/DescriptionsItemLabel.vue')['default'] + Dialog: typeof import('./../components/Dialog/src/Dialog.vue')['default'] + DictSelect: typeof import('./../components/FormCreate/src/components/DictSelect.vue')['default'] + DictTag: typeof import('./../components/DictTag/src/DictTag.vue')['default'] + DiyEditor: typeof import('./../components/DiyEditor/index.vue')['default'] + DocAlert: typeof import('./../components/DocAlert/index.vue')['default'] + Draggable: typeof import('./../components/Draggable/index.vue')['default'] + Echart: typeof import('./../components/Echart/src/Echart.vue')['default'] + Editor: typeof import('./../components/Editor/src/Editor.vue')['default'] + ElAlert: typeof import('element-plus/es')['ElAlert'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElBadge: typeof import('element-plus/es')['ElBadge'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElCollapse: typeof import('element-plus/es')['ElCollapse'] + ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElementBaseInfo: typeof import('./../components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue')['default'] + ElementForm: typeof import('./../components/bpmnProcessDesigner/package/penal/form/ElementForm.vue')['default'] + ElementListeners: typeof import('./../components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue')['default'] + ElementMultiInstance: typeof import('./../components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue')['default'] + ElementOtherConfig: typeof import('./../components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue')['default'] + ElementProperties: typeof import('./../components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue')['default'] + ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImage: typeof import('element-plus/es')['ElImage'] + ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElLink: typeof import('element-plus/es')['ElLink'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] + ElSpace: typeof import('element-plus/es')['ElSpace'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElText: typeof import('element-plus/es')['ElText'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + Error: typeof import('./../components/Error/src/Error.vue')['default'] + FlowCondition: typeof import('./../components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue')['default'] + Form: typeof import('./../components/Form/src/Form.vue')['default'] + Highlight: typeof import('./../components/Highlight/src/Highlight.vue')['default'] + Icon: typeof import('./../components/Icon/src/Icon.vue')['default'] + IconSelect: typeof import('./../components/Icon/src/IconSelect.vue')['default'] + IFrame: typeof import('./../components/IFrame/src/IFrame.vue')['default'] + ImageViewer: typeof import('./../components/ImageViewer/src/ImageViewer.vue')['default'] + Infotip: typeof import('./../components/Infotip/src/Infotip.vue')['default'] + InputPassword: typeof import('./../components/InputPassword/src/InputPassword.vue')['default'] + InputWithColor: typeof import('./../components/InputWithColor/index.vue')['default'] + MagicCubeEditor: typeof import('./../components/MagicCubeEditor/index.vue')['default'] + NodeWrap: typeof import('./../components/SimpleProcessDesigner/src/nodeWrap.vue')['default'] + OperateLogV2: typeof import('./../components/OperateLogV2/src/OperateLogV2.vue')['default'] + Pagination: typeof import('./../components/Pagination/index.vue')['default'] + ProcessDesigner: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue')['default'] + ProcessExpressionDialog: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue')['default'] + ProcessListenerDialog: typeof import('./../components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue')['default'] + ProcessPalette: typeof import('./../components/bpmnProcessDesigner/package/palette/ProcessPalette.vue')['default'] + ProcessViewer: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessViewer.vue')['default'] + PropertiesPanel: typeof import('./../components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue')['default'] + Qrcode: typeof import('./../components/Qrcode/src/Qrcode.vue')['default'] + ReceiveTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterSearch: typeof import('./../components/RouterSearch/index.vue')['default'] + RouterView: typeof import('vue-router')['RouterView'] + ScriptTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue')['default'] + Search: typeof import('./../components/Search/src/Search.vue')['default'] + Service: typeof import('./../config/axios/service.ts')['default'] + ShortcutDateRangePicker: typeof import('./../components/ShortcutDateRangePicker/index.vue')['default'] + SignalAndMessage: typeof import('./../components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue')['default'] + Sticky: typeof import('./../components/Sticky/src/Sticky.vue')['default'] + SummaryCard: typeof import('./../components/SummaryCard/index.vue')['default'] + Table: typeof import('./../components/Table/src/Table.vue')['default'] + TableSelectForm: typeof import('./../components/Table/src/TableSelectForm.vue')['default'] + Tooltip: typeof import('./../components/Tooltip/src/Tooltip.vue')['default'] + UploadFile: typeof import('./../components/UploadFile/src/UploadFile.vue')['default'] + UploadImg: typeof import('./../components/UploadFile/src/UploadImg.vue')['default'] + UploadImgs: typeof import('./../components/UploadFile/src/UploadImgs.vue')['default'] + UserTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue')['default'] + UserTaskListeners: typeof import('./../components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue')['default'] + Verify: typeof import('./../components/Verifition/src/Verify.vue')['default'] + VerifyPoints: typeof import('./../components/Verifition/src/Verify/VerifyPoints.vue')['default'] + VerifySlide: typeof import('./../components/Verifition/src/Verify/VerifySlide.vue')['default'] + VerticalButtonGroup: typeof import('./../components/VerticalButtonGroup/index.vue')['default'] + XButton: typeof import('./../components/XButton/src/XButton.vue')['default'] + XTextButton: typeof import('./../components/XButton/src/XTextButton.vue')['default'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts new file mode 100644 index 0000000..e3173ec --- /dev/null +++ b/src/types/auto-imports.d.ts @@ -0,0 +1,77 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE'] + const EffectScope: typeof import('vue')['EffectScope'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const effectScope: typeof import('vue')['effectScope'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] + const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const required: typeof import('@/utils/formRules')['required'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCrudSchemas: typeof import('@/hooks/web/useCrudSchemas')['useCrudSchemas'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useI18n: typeof import('@/hooks/web/useI18n')['useI18n'] + const useLink: typeof import('vue-router')['useLink'] + const useMessage: typeof import('@/hooks/web/useMessage')['useMessage'] + const useRoute: typeof import('vue-router')['useRoute'] + const useRouter: typeof import('vue-router')['useRouter'] + const useSlots: typeof import('vue')['useSlots'] + const useTable: typeof import('@/hooks/web/useTable')['useTable'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/src/types/components.d.ts b/src/types/components.d.ts new file mode 100644 index 0000000..8de1f33 --- /dev/null +++ b/src/types/components.d.ts @@ -0,0 +1,56 @@ +export type ComponentName = + | 'Radio' + | 'RadioButton' + | 'Checkbox' + | 'CheckboxButton' + | 'Input' + | 'Autocomplete' + | 'InputNumber' + | 'Select' + | 'Cascader' + | 'Switch' + | 'Slider' + | 'TimePicker' + | 'DatePicker' + | 'Rate' + | 'ColorPicker' + | 'Transfer' + | 'Divider' + | 'TimeSelect' + | 'SelectV2' + | 'TreeSelect' + | 'InputPassword' + | 'Editor' + | 'UploadImg' + | 'UploadImgs' + | 'UploadFile' + +export type ColProps = { + span?: number + xs?: number + sm?: number + md?: number + lg?: number + xl?: number + tag?: string +} + +export type ComponentOptions = { + label?: string + value?: FormValueType + disabled?: boolean + key?: string | number + children?: ComponentOptions[] + options?: ComponentOptions[] +} & Recordable + +export type ComponentOptionsAlias = { + labelField?: string + valueField?: string +} + +export type ComponentProps = { + optionsAlias?: ComponentOptionsAlias + options?: ComponentOptions[] + optionsSlot?: boolean +} & Recordable diff --git a/src/types/configGlobal.d.ts b/src/types/configGlobal.d.ts new file mode 100644 index 0000000..f6d7b3c --- /dev/null +++ b/src/types/configGlobal.d.ts @@ -0,0 +1,4 @@ +import { ElementPlusSize } from './elementPlus' +export interface ConfigGlobalTypes { + size?: ElementPlusSize +} diff --git a/src/types/contextMenu.d.ts b/src/types/contextMenu.d.ts new file mode 100644 index 0000000..0738d0e --- /dev/null +++ b/src/types/contextMenu.d.ts @@ -0,0 +1,7 @@ +export type contextMenuSchema = { + disabled?: boolean + divided?: boolean + icon?: string + label: string + command?: (item: contextMenuSchema) => void +} diff --git a/src/types/descriptions.d.ts b/src/types/descriptions.d.ts new file mode 100644 index 0000000..af6d68c --- /dev/null +++ b/src/types/descriptions.d.ts @@ -0,0 +1,14 @@ +export interface DescriptionsSchema { + span?: number // 占多少分 + field: string // 字段名 + label?: string // label名 + mappedField?: string // 字段映射 + width?: string | number + minWidth?: string | number + align?: 'left' | 'center' | 'right' + labelAlign?: 'left' | 'center' | 'right' + className?: string + labelClassName?: string + dateFormat?: string // add by 星语:支持时间的格式化 + dictType?: string // add by 星语:支持 dict 字典数据 +} diff --git a/src/types/elementPlus.d.ts b/src/types/elementPlus.d.ts new file mode 100644 index 0000000..2c6b76e --- /dev/null +++ b/src/types/elementPlus.d.ts @@ -0,0 +1,3 @@ +export type ElementPlusSize = 'default' | 'small' | 'large' + +export type ElementPlusInfoType = 'success' | 'info' | 'warning' | 'danger' diff --git a/src/types/form.d.ts b/src/types/form.d.ts new file mode 100644 index 0000000..980c8cc --- /dev/null +++ b/src/types/form.d.ts @@ -0,0 +1,44 @@ +import type { CSSProperties } from 'vue' +import { ColProps, ComponentProps, ComponentName } from '@/types/components' +import type { AxiosPromise } from 'axios' + +export type FormSetPropsType = { + field: string + path: string + value: any +} + +export type FormValueType = string | number | string[] | number[] | boolean | undefined | null + +export type FormItemProps = { + labelWidth?: string | number + required?: boolean + rules?: Recordable + error?: string + showMessage?: boolean + inlineMessage?: boolean + style?: CSSProperties +} + +export type FormSchema = { + // 唯一值 + field: string + // 标题 + label?: string + // 提示 + labelMessage?: string + // col组件属性 + colProps?: ColProps + // 表单组件属性,slots对应的是表单组件的插槽,规则:${field}-xxx,具体可以查看element-plus文档 + componentProps?: { slots?: Recordable } & ComponentProps + // formItem组件属性 + formItemProps?: FormItemProps + // 渲染的组件 + component?: ComponentName + // 初始值 + value?: FormValueType + // 是否隐藏 + hidden?: boolean + // 远程加载下拉项 + api?: () => AxiosPromise +} diff --git a/src/types/icon.d.ts b/src/types/icon.d.ts new file mode 100644 index 0000000..d1ffcdb --- /dev/null +++ b/src/types/icon.d.ts @@ -0,0 +1,5 @@ +export interface IconTypes { + size?: number + color?: string + icon: string +} diff --git a/src/types/infoTip.d.ts b/src/types/infoTip.d.ts new file mode 100644 index 0000000..6eff083 --- /dev/null +++ b/src/types/infoTip.d.ts @@ -0,0 +1,4 @@ +export interface TipSchema { + label: string + keys?: string[] +} diff --git a/src/types/layout.d.ts b/src/types/layout.d.ts new file mode 100644 index 0000000..cad3e2a --- /dev/null +++ b/src/types/layout.d.ts @@ -0,0 +1 @@ +export type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu' diff --git a/src/types/localeDropdown.d.ts b/src/types/localeDropdown.d.ts new file mode 100644 index 0000000..c749dce --- /dev/null +++ b/src/types/localeDropdown.d.ts @@ -0,0 +1,10 @@ +export interface Language { + el: Recordable + name: string +} + +export interface LocaleDropdownType { + lang: LocaleType + name?: string + elLocale?: Language +} diff --git a/src/types/qrcode.d.ts b/src/types/qrcode.d.ts new file mode 100644 index 0000000..86cdf0b --- /dev/null +++ b/src/types/qrcode.d.ts @@ -0,0 +1,9 @@ +export interface QrcodeLogo { + src?: string + logoSize?: number + bgColor?: string + borderSize?: number + crossOrigin?: string + borderRadius?: number + logoRadius?: number +} diff --git a/src/types/table.d.ts b/src/types/table.d.ts new file mode 100644 index 0000000..9cb4205 --- /dev/null +++ b/src/types/table.d.ts @@ -0,0 +1,44 @@ +export type TableColumn = { + field: string + label?: string + width?: number | string + fixed?: 'left' | 'right' + children?: TableColumn[] +} & Recordable + +export type VxeTableColumn = { + field: string + title?: string + children?: TableColumn[] +} & Recordable + +export type TableSlotDefault = { + row: Recordable + column: TableColumn + $index: number +} & Recordable + +export interface Pagination { + small?: boolean + background?: boolean + pageSize?: number + defaultPageSize?: number + total?: number + pageCount?: number + pagerCount?: number + currentPage?: number + defaultCurrentPage?: number + layout?: string + pageSizes?: number[] + popperClass?: string + prevText?: string + nextText?: string + disabled?: boolean + hideOnSinglePage?: boolean +} + +export interface TableSetPropsType { + field: string + path: string + value: any +} diff --git a/src/types/theme.d.ts b/src/types/theme.d.ts new file mode 100644 index 0000000..ad649b0 --- /dev/null +++ b/src/types/theme.d.ts @@ -0,0 +1,16 @@ +export type ThemeTypes = { + elColorPrimary?: string + leftMenuBorderColor?: string + leftMenuBgColor?: string + leftMenuBgLightColor?: string + leftMenuBgActiveColor?: string + leftMenuCollapseBgActiveColor?: string + leftMenuTextColor?: string + leftMenuTextActiveColor?: string + logoTitleTextColor?: string + logoBorderColor?: string + topHeaderBgColor?: string + topHeaderTextColor?: string + topHeaderHoverColor?: string + topToolBorderColor?: string +} diff --git a/src/utils/Debounce.ts b/src/utils/Debounce.ts new file mode 100644 index 0000000..0ad56fc --- /dev/null +++ b/src/utils/Debounce.ts @@ -0,0 +1,29 @@ +export class Debounce { + private delay: number; + private timeoutID: number | null; + private lastExec: number; + private callback: Function; + private args?: any[]; + + constructor(delay: number, callback: Function) { + this.delay = delay; + this.lastExec = 0; + this.timeoutID = null; + this.callback = callback; + } + + exec(...args: any[]) { + if (this.timeoutID) { + // console.log("clear id" + this.timeoutID); + clearTimeout(this.timeoutID); + } + // this.args = args; + this.timeoutID = setTimeout(() => { + this.callback(args); + }, this.delay); + } + + run() { + this.callback(this.args); + } +} diff --git a/src/utils/action.ts b/src/utils/action.ts new file mode 100644 index 0000000..c6f4e0f --- /dev/null +++ b/src/utils/action.ts @@ -0,0 +1,22 @@ +export default { + create: '新增', + add: '新增', + del: '删除', + delete: '删除', + edit: '编辑', + update: '编辑', + preview: '预览', + more: '更多', + sync: '同步', + save: '保存', + detail: '详情', + export: '导出', + import: '导入', + generate: '生成', + logout: '强制退出', + test: '测试', + typeCreate: '字典类型新增', + typeUpdate: '字典类型编辑', + dataCreate: '字典数据新增', + dataUpdate: '字典数据编辑', +} diff --git a/src/utils/auth.ts b/src/utils/auth.ts new file mode 100644 index 0000000..01fb0a3 --- /dev/null +++ b/src/utils/auth.ts @@ -0,0 +1,38 @@ +import Keys from "@/api/Keys"; +// @ts-ignore +import { useCache } from "@/hooks/useCache"; +const { wsCache } = useCache(); + +export const getToken = () => wsCache.get(Keys.STORAGE_TOKEN); + +export const setToken = (token: string) => { + wsCache.set(Keys.STORAGE_TOKEN, token); +}; + +export const setRefreshToken = (refreshToken: any) => { + wsCache.set(Keys.STORAGE_REFRESH_TOKEN, refreshToken); +}; + +export const getRefreshToken = () => wsCache.get(Keys.STORAGE_REFRESH_TOKEN); + +export const removeToken = () => { + wsCache.delete(Keys.STORAGE_TOKEN); + wsCache.delete(Keys.STORAGE_REFRESH_TOKEN); +}; + +export const getLocalUserInfo = () => wsCache.get(Keys.STORAGE_USER_INFO); + +export const setUserInfo = (userInfo: any) => + wsCache.set(Keys.STORAGE_USER_INFO, userInfo); + +// ========== 权限路由相关 ========== +export const getRoleRouters = () => wsCache.get(Keys.STORAGE_ROLE_ROUTERS); + +export const setRoleRouters = (roleRouters: any) => + wsCache.set(Keys.STORAGE_ROLE_ROUTERS, roleRouters); + +// ========== 租户相关 ========== +export const getTenantId = () => wsCache.get(Keys.STORAGE_TENANT_ID); + +export const setTenantId = (tenantId: number) => + wsCache.set(Keys.STORAGE_TENANT_ID, tenantId); diff --git a/src/utils/color.ts b/src/utils/color.ts new file mode 100644 index 0000000..c3cc945 --- /dev/null +++ b/src/utils/color.ts @@ -0,0 +1,200 @@ +/** + * 判断是否 十六进制颜色值. + * 输入形式可为 #fff000 #f00 + * + * @param String color 十六进制颜色值 + * @return Boolean + */ +export const isHexColor = (color: string) => { + const reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-f]{6})$/ + return reg.test(color) +} + +/** + * RGB 颜色值转换为 十六进制颜色值. + * r, g, 和 b 需要在 [0, 255] 范围内 + * + * @return String 类似#ff00ff + * @param r + * @param g + * @param b + */ +export const rgbToHex = (r: number, g: number, b: number) => { + // tslint:disable-next-line:no-bitwise + const hex = ((r << 16) | (g << 8) | b).toString(16) + return '#' + new Array(Math.abs(hex.length - 7)).join('0') + hex +} + +/** + * Transform a HEX color to its RGB representation + * @param {string} hex The color to transform + * @returns The RGB representation of the passed color + */ +export const hexToRGB = (hex: string, opacity?: number) => { + let sHex = hex.toLowerCase() + if (isHexColor(hex)) { + if (sHex.length === 4) { + let sColorNew = '#' + for (let i = 1; i < 4; i += 1) { + sColorNew += sHex.slice(i, i + 1).concat(sHex.slice(i, i + 1)) + } + sHex = sColorNew + } + const sColorChange: number[] = [] + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt('0x' + sHex.slice(i, i + 2))) + } + return opacity + ? 'RGBA(' + sColorChange.join(',') + ',' + opacity + ')' + : 'RGB(' + sColorChange.join(',') + ')' + } + return sHex +} + +export const colorIsDark = (color: string) => { + if (!isHexColor(color)) return + const [r, g, b] = hexToRGB(color) + .replace(/(?:\(|\)|rgb|RGB)*/g, '') + .split(',') + .map(item => Number(item)) + return r * 0.299 + g * 0.578 + b * 0.114 < 192 +} + +/** + * Darkens a HEX color given the passed percentage + * @param {string} color The color to process + * @param {number} amount The amount to change the color by + * @returns {string} The HEX representation of the processed color + */ +export const darken = (color: string, amount: number) => { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color + amount = Math.trunc((255 * amount) / 100) + return `#${subtractLight(color.substring(0, 2), amount)}${subtractLight( + color.substring(2, 4), + amount + )}${subtractLight(color.substring(4, 6), amount)}` +} + +/** + * Lightens a 6 char HEX color according to the passed percentage + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed color represented as HEX + */ +export const lighten = (color: string, amount: number) => { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color + amount = Math.trunc((255 * amount) / 100) + return `#${addLight(color.substring(0, 2), amount)}${addLight( + color.substring(2, 4), + amount + )}${addLight(color.substring(4, 6), amount)}` +} + +/* Suma el porcentaje indicado a un color (RR, GG o BB) hexadecimal para aclararlo */ +/** + * Sums the passed percentage to the R, G or B of a HEX color + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed part of the color + */ +const addLight = (color: string, amount: number) => { + const cc = parseInt(color, 16) + amount + const c = cc > 255 ? 255 : cc + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}` +} + +/** + * Calculates luminance of an rgb color + * @param {number} r red + * @param {number} g green + * @param {number} b blue + */ +const luminanace = (r: number, g: number, b: number) => { + const a = [r, g, b].map(v => { + v /= 255 + return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4) + }) + return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722 +} + +/** + * Calculates contrast between two rgb colors + * @param {string} rgb1 rgb color 1 + * @param {string} rgb2 rgb color 2 + */ +const contrast = (rgb1: string[], rgb2: number[]) => { + return ( + (luminanace(~~rgb1[0], ~~rgb1[1], ~~rgb1[2]) + 0.05) / + (luminanace(rgb2[0], rgb2[1], rgb2[2]) + 0.05) + ) +} + +/** + * Determines what the best text color is (black or white) based con the contrast with the background + * @param hexColor - Last selected color by the user + */ +export const calculateBestTextColor = (hexColor: string) => { + const rgbColor = hexToRGB(hexColor.substring(1)) + const contrastWithBlack = contrast(rgbColor.split(','), [0, 0, 0]) + + return contrastWithBlack >= 12 ? '#000000' : '#FFFFFF' +} + +/** + * Subtracts the indicated percentage to the R, G or B of a HEX color + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed part of the color + */ +const subtractLight = (color: string, amount: number) => { + const cc = parseInt(color, 16) - amount + const c = cc < 0 ? 0 : cc + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}` +} + +// 预设颜色 +export const PREDEFINE_COLORS = [ + '#ff4500', + '#ff8c00', + '#ffd700', + '#90ee90', + '#00ced1', + '#1e90ff', + '#c71585', + '#409EFF', + '#909399', + '#C0C4CC', + '#b7390b', + '#ff7800', + '#fad400', + '#5b8c5f', + '#00babd', + '#1f73c3', + '#711f57', +] + +// 获取渐变颜色 +export function generateGradientColors(gradualColors: Array, count: number) { + const [startColor, endColor] = gradualColors + const interpolateColor = (start: any, end: any, factor: number) => { + const result = start + .slice(1) + .match(/.{2}/g) + .map((value: string, index: number) => { + const startValue = parseInt(value, 16) + const endValue = parseInt(end.slice(1).match(/.{2}/g)[index], 16) + const interpolatedValue = Math.round( + startValue + factor * (endValue - startValue) + ) + return interpolatedValue.toString(16).padStart(2, '0') + }) + return `#${result.join('')}` + } + + const colors = [] + for (let i = 0; i < count; i++) { + const factor = i / (count - 1) + colors.push(interpolateColor(startColor, endColor, factor)) + } + return colors +} diff --git a/src/utils/constants.ts b/src/utils/constants.ts new file mode 100644 index 0000000..f4d67b4 --- /dev/null +++ b/src/utils/constants.ts @@ -0,0 +1,431 @@ +/** + * Created by 芋道源码 + * + * 枚举类 + */ + +// ========== COMMON 模块 ========== +// 全局通用状态枚举 +export const CommonStatusEnum = { + ENABLE: 0, // 开启 + DISABLE: 1 // 禁用 +} + +// 全局用户类型枚举 +export const UserTypeEnum = { + MEMBER: 1, // 会员 + ADMIN: 2 // 管理员 +} + +// ========== SYSTEM 模块 ========== +/** + * 菜单的类型枚举 + */ +export const SystemMenuTypeEnum = { + DIR: 1, // 目录 + MENU: 2, // 菜单 + BUTTON: 3 // 按钮 +} + +/** + * 角色的类型枚举 + */ +export const SystemRoleTypeEnum = { + SYSTEM: 1, // 内置角色 + CUSTOM: 2 // 自定义角色 +} + +/** + * 数据权限的范围枚举 + */ +export const SystemDataScopeEnum = { + ALL: 1, // 全部数据权限 + DEPT_CUSTOM: 2, // 指定部门数据权限 + DEPT_ONLY: 3, // 部门数据权限 + DEPT_AND_CHILD: 4, // 部门及以下数据权限 + DEPT_SELF: 5 // 仅本人数据权限 +} + +/** + * 用户的社交平台的类型枚举 + */ +export const SystemUserSocialTypeEnum = { + DINGTALK: { + title: '钉钉', + type: 20, + source: 'dingtalk', + img: 'https://s1.ax1x.com/2022/05/22/OzMDRs.png' + }, + WECHAT_ENTERPRISE: { + title: '企业微信', + type: 30, + source: 'wechat_enterprise', + img: 'https://s1.ax1x.com/2022/05/22/OzMrzn.png' + } +} + +// ========== INFRA 模块 ========== +/** + * 代码生成模板类型 + */ +export const InfraCodegenTemplateTypeEnum = { + CRUD: 1, // 基础 CRUD + TREE: 2, // 树形 CRUD + SUB: 3 // 主子表 CRUD +} + +/** + * 任务状态的枚举 + */ +export const InfraJobStatusEnum = { + INIT: 0, // 初始化中 + NORMAL: 1, // 运行中 + STOP: 2 // 暂停运行 +} + +/** + * API 异常数据的处理状态 + */ +export const InfraApiErrorLogProcessStatusEnum = { + INIT: 0, // 未处理 + DONE: 1, // 已处理 + IGNORE: 2 // 已忽略 +} + +// ========== PAY 模块 ========== +/** + * 支付渠道枚举 + */ +export const PayChannelEnum = { + WX_PUB: { + code: 'wx_pub', + name: '微信 JSAPI 支付' + }, + WX_LITE: { + code: 'wx_lite', + name: '微信小程序支付' + }, + WX_APP: { + code: 'wx_app', + name: '微信 APP 支付' + }, + WX_BAR: { + code: 'wx_bar', + name: '微信条码支付' + }, + ALIPAY_PC: { + code: 'alipay_pc', + name: '支付宝 PC 网站支付' + }, + ALIPAY_WAP: { + code: 'alipay_wap', + name: '支付宝 WAP 网站支付' + }, + ALIPAY_APP: { + code: 'alipay_app', + name: '支付宝 APP 支付' + }, + ALIPAY_QR: { + code: 'alipay_qr', + name: '支付宝扫码支付' + }, + ALIPAY_BAR: { + code: 'alipay_bar', + name: '支付宝条码支付' + }, + WALLET: { + code: 'wallet', + name: '钱包支付' + }, + MOCK: { + code: 'mock', + name: '模拟支付' + } +} + +/** + * 支付的展示模式每局 + */ +export const PayDisplayModeEnum = { + URL: { + mode: 'url' + }, + IFRAME: { + mode: 'iframe' + }, + FORM: { + mode: 'form' + }, + QR_CODE: { + mode: 'qr_code' + }, + APP: { + mode: 'app' + } +} + +/** + * 支付类型枚举 + */ +export const PayType = { + WECHAT: 'WECHAT', + ALIPAY: 'ALIPAY', + MOCK: 'MOCK' +} + +/** + * 支付订单状态枚举 + */ +export const PayOrderStatusEnum = { + WAITING: { + status: 0, + name: '未支付' + }, + SUCCESS: { + status: 10, + name: '已支付' + }, + CLOSED: { + status: 20, + name: '未支付' + } +} + +// ========== MALL - 商品模块 ========== +/** + * 商品 SPU 状态 + */ +export const ProductSpuStatusEnum = { + RECYCLE: { + status: -1, + name: '回收站' + }, + DISABLE: { + status: 0, + name: '下架' + }, + ENABLE: { + status: 1, + name: '上架' + } +} + +// ========== MALL - 营销模块 ========== +/** + * 优惠劵模板的有限期类型的枚举 + */ +export const CouponTemplateValidityTypeEnum = { + DATE: { + type: 1, + name: '固定日期可用' + }, + TERM: { + type: 2, + name: '领取之后可用' + } +} + +/** + * 优惠劵模板的领取方式的枚举 + */ +export const CouponTemplateTakeTypeEnum = { + USER: { + type: 1, + name: '直接领取' + }, + ADMIN: { + type: 2, + name: '指定发放' + }, + REGISTER: { + type: 3, + name: '新人券' + } +} + +/** + * 营销的商品范围枚举 + */ +export const PromotionProductScopeEnum = { + ALL: { + scope: 1, + name: '通用劵' + }, + SPU: { + scope: 2, + name: '商品劵' + }, + CATEGORY: { + scope: 3, + name: '品类劵' + } +} + +/** + * 营销的条件类型枚举 + */ +export const PromotionConditionTypeEnum = { + PRICE: { + type: 10, + name: '满 N 元' + }, + COUNT: { + type: 20, + name: '满 N 件' + } +} + +/** + * 优惠类型枚举 + */ +export const PromotionDiscountTypeEnum = { + PRICE: { + type: 1, + name: '满减' + }, + PERCENT: { + type: 2, + name: '折扣' + } +} + +// ========== MALL - 交易模块 ========== +/** + * 分销关系绑定模式枚举 + */ +export const BrokerageBindModeEnum = { + ANYTIME: { + mode: 1, + name: '首次绑定' + }, + REGISTER: { + mode: 2, + name: '注册绑定' + }, + OVERRIDE: { + mode: 3, + name: '覆盖绑定' + } +} +/** + * 分佣模式枚举 + */ +export const BrokerageEnabledConditionEnum = { + ALL: { + condition: 1, + name: '人人分销' + }, + ADMIN: { + condition: 2, + name: '指定分销' + } +} +/** + * 佣金记录业务类型枚举 + */ +export const BrokerageRecordBizTypeEnum = { + ORDER: { + type: 1, + name: '获得推广佣金' + }, + WITHDRAW: { + type: 2, + name: '提现申请' + } +} +/** + * 佣金提现状态枚举 + */ +export const BrokerageWithdrawStatusEnum = { + AUDITING: { + status: 0, + name: '审核中' + }, + AUDIT_SUCCESS: { + status: 10, + name: '审核通过' + }, + AUDIT_FAIL: { + status: 20, + name: '审核不通过' + }, + WITHDRAW_SUCCESS: { + status: 11, + name: '提现成功' + }, + WITHDRAW_FAIL: { + status: 21, + name: '提现失败' + } +} +/** + * 佣金提现类型枚举 + */ +export const BrokerageWithdrawTypeEnum = { + WALLET: { + type: 1, + name: '钱包' + }, + BANK: { + type: 2, + name: '银行卡' + }, + WECHAT: { + type: 3, + name: '微信' + }, + ALIPAY: { + type: 4, + name: '支付宝' + } +} + +/** + * 配送方式枚举 + */ +export const DeliveryTypeEnum = { + EXPRESS: { + type: 1, + name: '快递发货' + }, + PICK_UP: { + type: 2, + name: '到店自提' + } +} +/** + * 交易订单 - 状态 + */ +export const TradeOrderStatusEnum = { + UNPAID: { + status: 0, + name: '待支付' + }, + UNDELIVERED: { + status: 10, + name: '待发货' + }, + DELIVERED: { + status: 20, + name: '已发货' + }, + COMPLETED: { + status: 30, + name: '已完成' + }, + CANCELED: { + status: 40, + name: '已取消' + } +} + +// ========== ERP - 企业资源计划 ========== + +export const ErpBizType = { + PURCHASE_ORDER: 10, + PURCHASE_IN: 11, + PURCHASE_RETURN: 12, + SALE_ORDER: 20, + SALE_OUT: 21, + SALE_RETURN: 22 +} diff --git a/src/utils/dark.ts b/src/utils/dark.ts new file mode 100644 index 0000000..86c8c7b --- /dev/null +++ b/src/utils/dark.ts @@ -0,0 +1,746 @@ +export const customDark = { + color: [ + '#5470c6', + '#91cc75', + '#fac858', + '#ee6666', + '#73c0de', + '#3ba272', + '#fc8452', + '#9a60b4', + '#ea7ccc', + ], + backgroundColor: '#212327', + textStyle: {}, + title: { + textStyle: { + color: '#999999', + }, + subtextStyle: { + color: '#888888', + }, + }, + line: { + itemStyle: { + borderWidth: 1, + }, + lineStyle: { + width: 2, + }, + symbolSize: 4, + symbol: 'circle', + smooth: true, + }, + radar: { + itemStyle: { + borderWidth: 1, + }, + lineStyle: { + width: 2, + }, + symbolSize: 4, + symbol: 'circle', + smooth: true, + }, + bar: { + itemStyle: { + barBorderWidth: 0, + barBorderColor: 'rgba(255,255,255,0)', + }, + }, + pie: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(255,255,255,0)', + }, + }, + scatter: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(255,255,255,0)', + }, + }, + boxplot: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(255,255,255,0)', + }, + }, + parallel: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(255,255,255,0)', + }, + }, + sankey: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(255,255,255,0)', + }, + }, + funnel: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(255,255,255,0)', + }, + }, + gauge: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(255,255,255,0)', + }, + }, + candlestick: { + itemStyle: { + color: '#eb5454', + color0: '#47b262', + borderColor: '#eb5454', + borderColor0: '#47b262', + borderWidth: 1, + }, + }, + graph: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(255,255,255,0)', + }, + lineStyle: { + width: 1, + color: '#aaa', + }, + symbolSize: 4, + symbol: 'circle', + smooth: true, + color: [ + '#5470c6', + '#91cc75', + '#fac858', + '#ee6666', + '#73c0de', + '#3ba272', + '#fc8452', + '#9a60b4', + '#ea7ccc', + ], + label: { + color: '#ffffff', + }, + }, + map: { + itemStyle: { + areaColor: '#eee', + borderColor: '#444', + borderWidth: 0.5, + }, + label: { + color: '#000', + }, + emphasis: { + itemStyle: { + areaColor: 'rgba(255,215,0,0.8)', + borderColor: '#444', + borderWidth: 1, + }, + label: { + color: 'rgb(100,0,0)', + }, + }, + }, + geo: { + itemStyle: { + areaColor: '#eee', + borderColor: '#444', + borderWidth: 0.5, + }, + label: { + color: '#000', + }, + emphasis: { + itemStyle: { + areaColor: 'rgba(255,215,0,0.8)', + borderColor: '#444', + borderWidth: 1, + }, + label: { + color: 'rgb(100,0,0)', + }, + }, + }, + categoryAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#6e7079', + }, + }, + axisTick: { + show: false, + lineStyle: { + color: '#6E7079', + }, + }, + axisLabel: { + show: true, + color: '#6E7079', + }, + splitLine: { + show: false, + lineStyle: { + color: ['#E0E6F1'], + }, + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'], + }, + }, + }, + valueAxis: { + axisLine: { + show: false, + lineStyle: { + color: '#6E7079', + }, + }, + axisTick: { + show: false, + lineStyle: { + color: '#6E7079', + }, + }, + axisLabel: { + show: true, + color: '#6e7079', + }, + splitLine: { + show: true, + lineStyle: { + color: ['#6e7079'], + }, + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'], + }, + }, + }, + logAxis: { + axisLine: { + show: false, + lineStyle: { + color: '#6E7079', + }, + }, + axisTick: { + show: false, + lineStyle: { + color: '#6E7079', + }, + }, + axisLabel: { + show: true, + color: '#6e7079', + }, + splitLine: { + show: true, + lineStyle: { + color: ['#0059ff'], + }, + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'], + }, + }, + }, + timeAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#6E7079', + }, + }, + axisTick: { + show: true, + lineStyle: { + color: '#6e7079', + }, + }, + axisLabel: { + show: true, + color: '#6e7079', + }, + splitLine: { + show: false, + lineStyle: { + color: ['#E0E6F1'], + }, + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'], + }, + }, + }, + toolbox: { + iconStyle: { + borderColor: '#666666', + }, + emphasis: { + iconStyle: { + borderColor: '#bfbfbf', + }, + }, + }, + legend: { + textStyle: { + color: '#bfbfbf', + }, + }, + tooltip: { + backgroundColor: '#212327', + borderColor: '#212327', + textStyle: { + color: '#fff', + }, + + axisPointer: { + lineStyle: { + color: '#6e7079', + width: 1, + }, + crossStyle: { + color: '#6e7079', + width: 1, + }, + }, + }, + timeline: { + lineStyle: { + color: '#DAE1F5', + width: 2, + }, + itemStyle: { + color: '#A4B1D7', + borderWidth: 1, + }, + controlStyle: { + color: '#A4B1D7', + borderColor: '#A4B1D7', + borderWidth: 1, + }, + checkpointStyle: { + color: '#316bf3', + borderColor: 'fff', + }, + label: { + color: '#A4B1D7', + }, + emphasis: { + itemStyle: { + color: '#FFF', + }, + controlStyle: { + color: '#A4B1D7', + borderColor: '#A4B1D7', + borderWidth: 1, + }, + label: { + color: '#A4B1D7', + }, + }, + }, + visualMap: { + color: ['#bf444c', '#d88273', '#f6efa6'], + }, + dataZoom: { + handleSize: 'undefined%', + textStyle: {}, + }, + markPoint: { + label: { + color: '#ffffff', + }, + emphasis: { + label: { + color: '#ffffff', + }, + }, + }, +} + +export const customLight = { + color: [ + '#5470c6', + '#91cc75', + '#fac858', + '#ee6666', + '#73c0de', + '#3ba272', + '#fc8452', + '#9a60b4', + '#ea7ccc', + ], + backgroundColor: 'transparent', + textStyle: {}, + title: { + textStyle: { + color: '#464646', + }, + subtextStyle: { + color: '#6e7079', + }, + }, + line: { + itemStyle: { + borderWidth: 1, + }, + lineStyle: { + width: 2, + }, + symbolSize: 4, + symbol: 'circle', + smooth: true, + }, + radar: { + itemStyle: { + borderWidth: 1, + }, + lineStyle: { + width: 2, + }, + symbolSize: 4, + symbol: 'circle', + smooth: true, + }, + bar: { + itemStyle: { + barBorderWidth: 0, + barBorderColor: 'rgba(204,204,204,1)', + }, + }, + pie: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(204,204,204,1)', + }, + }, + scatter: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(204,204,204,1)', + }, + }, + boxplot: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(204,204,204,1)', + }, + }, + parallel: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(204,204,204,1)', + }, + }, + sankey: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(204,204,204,1)', + }, + }, + funnel: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(204,204,204,1)', + }, + }, + gauge: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(204,204,204,1)', + }, + }, + candlestick: { + itemStyle: { + color: '#eb5454', + color0: '#47b262', + borderColor: '#eb5454', + borderColor0: '#47b262', + borderWidth: 1, + }, + }, + graph: { + itemStyle: { + borderWidth: 0, + borderColor: 'rgba(204,204,204,1)', + }, + lineStyle: { + width: 1, + color: '#aaa', + }, + symbolSize: 4, + symbol: 'circle', + smooth: true, + color: [ + '#5470c6', + '#91cc75', + '#fac858', + '#ee6666', + '#73c0de', + '#3ba272', + '#fc8452', + '#9a60b4', + '#ea7ccc', + ], + label: { + color: '#eeeeee', + }, + }, + map: { + itemStyle: { + areaColor: '#eee', + borderColor: '#444', + borderWidth: 0.5, + }, + label: { + color: '#000', + }, + emphasis: { + itemStyle: { + areaColor: 'rgba(255,215,0,0.8)', + borderColor: '#444', + borderWidth: 1, + }, + label: { + color: 'rgb(100,0,0)', + }, + }, + }, + geo: { + itemStyle: { + areaColor: '#eee', + borderColor: '#444', + borderWidth: 0.5, + }, + label: { + color: '#000', + }, + emphasis: { + itemStyle: { + areaColor: 'rgba(255,215,0,0.8)', + borderColor: '#444', + borderWidth: 1, + }, + label: { + color: 'rgb(100,0,0)', + }, + }, + }, + categoryAxis: { + nameTextStyle: { + color: 'red', + }, + axisLine: { + show: true, + lineStyle: { + color: '#e5e5e5', + }, + }, + axisTick: { + show: false, + lineStyle: { + color: '#e5e5e5', + }, + }, + axisLabel: { + show: true, + color: '#999999', + }, + splitLine: { + show: false, + lineStyle: { + color: ['#E0E6F1'], + }, + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'], + }, + }, + }, + valueAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#e5e5e5', + }, + }, + axisTick: { + show: false, + lineStyle: { + color: '#6E7079', + }, + }, + axisLabel: { + show: true, + color: '#999999', + }, + splitLine: { + show: true, + lineStyle: { + color: ['#e5e5e5'], + }, + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'], + }, + }, + }, + logAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#e5e5e5', + }, + }, + axisTick: { + show: false, + lineStyle: { + color: '#6E7079', + }, + }, + axisLabel: { + show: true, + color: '#999999', + }, + splitLine: { + show: true, + lineStyle: { + color: ['#e5e5e5'], + }, + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'], + }, + }, + }, + timeAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#e5e5e5', + }, + }, + axisTick: { + show: false, + lineStyle: { + color: '#e01111', + }, + }, + axisLabel: { + show: true, + color: '#6E7079', + }, + splitLine: { + show: false, + lineStyle: { + color: ['#E0E6F1'], + }, + }, + splitArea: { + show: false, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'], + }, + }, + }, + toolbox: { + iconStyle: { + borderColor: '#999999', + }, + emphasis: { + iconStyle: { + borderColor: '#666666', + }, + }, + }, + legend: { + textStyle: { + color: '#737373', + }, + }, + tooltip: { + axisPointer: { + lineStyle: { + color: '#e5e5e5', + width: 1, + }, + crossStyle: { + color: '#e5e5e5', + width: 1, + }, + }, + }, + timeline: { + lineStyle: { + color: '#DAE1F5', + width: 2, + }, + itemStyle: { + color: '#A4B1D7', + borderWidth: 1, + }, + controlStyle: { + color: '#A4B1D7', + borderColor: '#A4B1D7', + borderWidth: 1, + }, + checkpointStyle: { + color: '#316bf3', + borderColor: 'fff', + }, + label: { + color: '#A4B1D7', + }, + emphasis: { + itemStyle: { + color: '#FFF', + }, + controlStyle: { + color: '#A4B1D7', + borderColor: '#A4B1D7', + borderWidth: 1, + }, + label: { + color: '#A4B1D7', + }, + }, + }, + visualMap: { + color: ['#bf444c', '#d88273', '#f6efa6'], + }, + dataZoom: { + handleSize: 'undefined%', + textStyle: {}, + }, + markPoint: { + label: { + color: '#eeeeee', + }, + emphasis: { + label: { + color: '#eeeeee', + }, + }, + }, +} diff --git a/src/utils/dict.ts b/src/utils/dict.ts new file mode 100644 index 0000000..354e8d7 --- /dev/null +++ b/src/utils/dict.ts @@ -0,0 +1,213 @@ +/** + * 数据字典工具类 + */ +import { useDictStore } from '@/stores/dict' +type ElementPlusInfoType = 'success' | 'info' | 'warning' | 'danger' + +const dictStore = useDictStore() + +/** + * 获取 dictType 对应的数据字典数组 + * + * @param dictType 数据类型 + * @returns {*|Array} 数据字典数组 + */ +export interface DictDataType { + dictType: string + label: string + value: string | number | boolean + colorType: ElementPlusInfoType | '' + cssClass: string +} + +export interface NumberDictDataType extends DictDataType { + value: number +} + +export const getDictOptions = (dictType: string) => { + return dictStore.getDictByType(dictType) || [] +} + +export const getIntDictOptions = (dictType: string): NumberDictDataType[] => { + // 获得通用的 DictDataType 列表 + const dictOptions: DictDataType[] = getDictOptions(dictType) + // 转换成 number 类型的 NumberDictDataType 类型 + // why 需要特殊转换:避免 IDEA 在 v-for="dict in getIntDictOptions(...)" 时,el-option 的 key 会告警 + const dictOption: NumberDictDataType[] = [] + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: parseInt(dict.value + ''), + }) + }) + return dictOption +} + +export const getStrDictOptions = (dictType: string) => { + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '', + }) + }) + return dictOption +} + +export const getBoolDictOptions = (dictType: string) => { + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' === 'true', + }) + }) + return dictOption +} + +/** + * 获取指定字典类型的指定值对应的字典对象 + * @param dictType 字典类型 + * @param value 字典值 + * @return DictDataType 字典对象 + */ +export const getDictObj = (dictType: string, value: any): DictDataType | undefined => { + const dictOptions: DictDataType[] = getDictOptions(dictType) + for (const dict of dictOptions) { + if (dict.value === value + '') { + return dict + } + } +} + +/** + * 获得字典数据的文本展示 + * + * @param dictType 字典类型 + * @param value 字典数据的值 + * @return 字典名称 + */ +export const getDictLabel = (dictType: string, value: any): string => { + const dictOptions: DictDataType[] = getDictOptions(dictType) + const dictLabel = ref('') + dictOptions.forEach((dict: DictDataType) => { + if (dict.value === value + '') { + dictLabel.value = dict.label + } + }) + return dictLabel.value +} + +export enum DICT_TYPE { + USER_TYPE = 'user_type', + COMMON_STATUS = 'common_status', + TERMINAL = 'terminal', // 终端 + DATE_INTERVAL = 'date_interval', // 数据间隔 + + // ========== SYSTEM 模块 ========== + SYSTEM_USER_SEX = 'system_user_sex', + SYSTEM_MENU_TYPE = 'system_menu_type', + SYSTEM_ROLE_TYPE = 'system_role_type', + SYSTEM_DATA_SCOPE = 'system_data_scope', + SYSTEM_NOTICE_TYPE = 'system_notice_type', + SYSTEM_LOGIN_TYPE = 'system_login_type', + SYSTEM_LOGIN_RESULT = 'system_login_result', + SYSTEM_SMS_CHANNEL_CODE = 'system_sms_channel_code', + SYSTEM_SMS_TEMPLATE_TYPE = 'system_sms_template_type', + SYSTEM_SMS_SEND_STATUS = 'system_sms_send_status', + SYSTEM_SMS_RECEIVE_STATUS = 'system_sms_receive_status', + SYSTEM_ERROR_CODE_TYPE = 'system_error_code_type', + SYSTEM_OAUTH2_GRANT_TYPE = 'system_oauth2_grant_type', + SYSTEM_MAIL_SEND_STATUS = 'system_mail_send_status', + SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type', + SYSTEM_SOCIAL_TYPE = 'system_social_type', + + // ========== INFRA 模块 ========== + INFRA_BOOLEAN_STRING = 'infra_boolean_string', + INFRA_JOB_STATUS = 'infra_job_status', + INFRA_JOB_LOG_STATUS = 'infra_job_log_status', + INFRA_API_ERROR_LOG_PROCESS_STATUS = 'infra_api_error_log_process_status', + INFRA_CONFIG_TYPE = 'infra_config_type', + INFRA_CODEGEN_TEMPLATE_TYPE = 'infra_codegen_template_type', + INFRA_CODEGEN_FRONT_TYPE = 'infra_codegen_front_type', + INFRA_CODEGEN_SCENE = 'infra_codegen_scene', + INFRA_FILE_STORAGE = 'infra_file_storage', + INFRA_OPERATE_TYPE = 'infra_operate_type', + + // ========== BPM 模块 ========== + BPM_MODEL_FORM_TYPE = 'bpm_model_form_type', + BPM_TASK_CANDIDATE_STRATEGY = 'bpm_task_candidate_strategy', + BPM_PROCESS_INSTANCE_STATUS = 'bpm_process_instance_status', + BPM_TASK_STATUS = 'bpm_task_status', + BPM_OA_LEAVE_TYPE = 'bpm_oa_leave_type', + BPM_PROCESS_LISTENER_TYPE = 'bpm_process_listener_type', + BPM_PROCESS_LISTENER_VALUE_TYPE = 'bpm_process_listener_value_type', + + // ========== PAY 模块 ========== + PAY_CHANNEL_CODE = 'pay_channel_code', // 支付渠道编码类型 + PAY_ORDER_STATUS = 'pay_order_status', // 商户支付订单状态 + PAY_REFUND_STATUS = 'pay_refund_status', // 退款订单状态 + PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态 + PAY_NOTIFY_TYPE = 'pay_notify_type', // 商户支付回调状态 + PAY_TRANSFER_STATUS = 'pay_transfer_status', // 转账订单状态 + PAY_TRANSFER_TYPE = 'pay_transfer_type', // 转账订单状态 + + // ========== MP 模块 ========== + MP_AUTO_REPLY_REQUEST_MATCH = 'mp_auto_reply_request_match', // 自动回复请求匹配类型 + MP_MESSAGE_TYPE = 'mp_message_type', // 消息类型 + + // ========== Member 会员模块 ========== + MEMBER_POINT_BIZ_TYPE = 'member_point_biz_type', // 积分的业务类型 + MEMBER_EXPERIENCE_BIZ_TYPE = 'member_experience_biz_type', // 会员经验业务类型 + + // ========== MALL - 商品模块 ========== + PRODUCT_SPU_STATUS = 'product_spu_status', //商品状态 + + // ========== MALL - 交易模块 ========== + EXPRESS_CHARGE_MODE = 'trade_delivery_express_charge_mode', //快递的计费方式 + TRADE_AFTER_SALE_STATUS = 'trade_after_sale_status', // 售后 - 状态 + TRADE_AFTER_SALE_WAY = 'trade_after_sale_way', // 售后 - 方式 + TRADE_AFTER_SALE_TYPE = 'trade_after_sale_type', // 售后 - 类型 + TRADE_ORDER_TYPE = 'trade_order_type', // 订单 - 类型 + TRADE_ORDER_STATUS = 'trade_order_status', // 订单 - 状态 + TRADE_ORDER_ITEM_AFTER_SALE_STATUS = 'trade_order_item_after_sale_status', // 订单项 - 售后状态 + TRADE_DELIVERY_TYPE = 'trade_delivery_type', // 配送方式 + BROKERAGE_ENABLED_CONDITION = 'brokerage_enabled_condition', // 分佣模式 + BROKERAGE_BIND_MODE = 'brokerage_bind_mode', // 分销关系绑定模式 + BROKERAGE_BANK_NAME = 'brokerage_bank_name', // 佣金提现银行 + BROKERAGE_WITHDRAW_TYPE = 'brokerage_withdraw_type', // 佣金提现类型 + BROKERAGE_RECORD_BIZ_TYPE = 'brokerage_record_biz_type', // 佣金业务类型 + BROKERAGE_RECORD_STATUS = 'brokerage_record_status', // 佣金状态 + BROKERAGE_WITHDRAW_STATUS = 'brokerage_withdraw_status', // 佣金提现状态 + + // ========== MALL - 营销模块 ========== + PROMOTION_DISCOUNT_TYPE = 'promotion_discount_type', // 优惠类型 + PROMOTION_PRODUCT_SCOPE = 'promotion_product_scope', // 营销的商品范围 + PROMOTION_COUPON_TEMPLATE_VALIDITY_TYPE = 'promotion_coupon_template_validity_type', // 优惠劵模板的有限期类型 + PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态 + PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式 + PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态 + PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举 + PROMOTION_BARGAIN_RECORD_STATUS = 'promotion_bargain_record_status', // 砍价记录的状态 + PROMOTION_COMBINATION_RECORD_STATUS = 'promotion_combination_record_status', // 拼团记录的状态 + PROMOTION_BANNER_POSITION = 'promotion_banner_position', // banner 定位 + + // ========== CRM - 客户管理模块 ========== + CRM_AUDIT_STATUS = 'crm_audit_status', // CRM 审批状态 + CRM_BIZ_TYPE = 'crm_biz_type', // CRM 业务类型 + CRM_BUSINESS_END_STATUS_TYPE = 'crm_business_end_status_type', // CRM 商机结束状态类型 + CRM_RECEIVABLE_RETURN_TYPE = 'crm_receivable_return_type', // CRM 回款的还款方式 + CRM_CUSTOMER_INDUSTRY = 'crm_customer_industry', // CRM 客户所属行业 + CRM_CUSTOMER_LEVEL = 'crm_customer_level', // CRM 客户级别 + CRM_CUSTOMER_SOURCE = 'crm_customer_source', // CRM 客户来源 + CRM_PRODUCT_STATUS = 'crm_product_status', // CRM 商品状态 + CRM_PERMISSION_LEVEL = 'crm_permission_level', // CRM 数据权限的级别 + CRM_PRODUCT_UNIT = 'crm_product_unit', // CRM 产品单位 + CRM_FOLLOW_UP_TYPE = 'crm_follow_up_type', // CRM 跟进方式 + + // ========== ERP - 企业资源计划模块 ========== + ERP_AUDIT_STATUS = 'erp_audit_status', // ERP 审批状态 + ERP_STOCK_RECORD_BIZ_TYPE = 'erp_stock_record_biz_type', // 库存明细的业务类型 +} diff --git a/src/utils/download.ts b/src/utils/download.ts new file mode 100644 index 0000000..ab20014 --- /dev/null +++ b/src/utils/download.ts @@ -0,0 +1,38 @@ +const download0 = (data: Blob, fileName: string, mineType: string) => { + // 创建 blob + const blob = new Blob([data], { type: mineType }) + // 创建 href 超链接,点击进行下载 + window.URL = window.URL || window.webkitURL + const href = URL.createObjectURL(blob) + const downA = document.createElement('a') + downA.href = href + downA.download = fileName + downA.click() + // 销毁超连接 + window.URL.revokeObjectURL(href) +} + +const download = { + // 下载 Excel 方法 + excel: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/vnd.ms-excel') + }, + // 下载 Word 方法 + word: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/msword') + }, + // 下载 Zip 方法 + zip: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/zip') + }, + // 下载 Html 方法 + html: (data: Blob, fileName: string) => { + download0(data, fileName, 'text/html') + }, + // 下载 Markdown 方法 + markdown: (data: Blob, fileName: string) => { + download0(data, fileName, 'text/markdown') + } +} + +export default download diff --git a/src/utils/echartsScale.ts b/src/utils/echartsScale.ts new file mode 100644 index 0000000..4848217 --- /dev/null +++ b/src/utils/echartsScale.ts @@ -0,0 +1,11 @@ +export function scaleSize(val: number) { + const initWidth = 1920 + const nowClientWidth = document.documentElement.clientWidth + return val * (nowClientWidth / initWidth) +} + +//主要用于echarts文字size设置 +export function scaleFont(val: number) { + const baseSize = document.documentElement.clientHeight / 10.8 + return baseSize * val +} \ No newline at end of file diff --git a/src/utils/eventBus.ts b/src/utils/eventBus.ts new file mode 100644 index 0000000..22e49f6 --- /dev/null +++ b/src/utils/eventBus.ts @@ -0,0 +1,12 @@ +import mitt from "mitt"; +const eventBus = mitt(); + +export function publish(eventName: string, obj: any) { + eventBus.emit(eventName, obj); +} +export function addListener(eventName: string, listener: Function) { + eventBus.on(eventName, listener); +} +export function removeListener(eventName: string, listener: Function) { + eventBus.off(eventName, listener); +} diff --git a/src/utils/filt.ts b/src/utils/filt.ts new file mode 100644 index 0000000..b1a7b2c --- /dev/null +++ b/src/utils/filt.ts @@ -0,0 +1,157 @@ +export const openWindow = ( + url: string, + opt?: { + target?: '_self' | '_blank' | string + noopener?: boolean + noreferrer?: boolean + } +) => { + const { target = '__blank', noopener = true, noreferrer = true } = opt || {} + const feature: string[] = [] + + noopener && feature.push('noopener=yes') + noreferrer && feature.push('noreferrer=yes') + + window.open(url, target, feature.join(',')) +} + +/** + * @description: base64 to blob + */ +export const dataURLtoBlob = (base64Buf: string): Blob => { + const arr = base64Buf.split(',') + const typeItem = arr[0] + const mime = typeItem.match(/:(.*?);/)![1] + const bstr = window.atob(arr[1]) + let n = bstr.length + const u8arr = new Uint8Array(n) + while (n--) { + u8arr[n] = bstr.charCodeAt(n) + } + return new Blob([u8arr], { type: mime }) +} + +/** + * img url to base64 + * @param url + */ +export const urlToBase64 = (url: string, mineType?: string): Promise => { + return new Promise((resolve, reject) => { + let canvas = document.createElement('CANVAS') as Nullable + const ctx = canvas!.getContext('2d') + + const img = new Image() + img.crossOrigin = '' + img.onload = function () { + if (!canvas || !ctx) { + return reject() + } + canvas.height = img.height + canvas.width = img.width + ctx.drawImage(img, 0, 0) + const dataURL = canvas.toDataURL(mineType || 'image/png') + canvas = null + resolve(dataURL) + } + img.src = url + }) +} + +/** + * Download online pictures + * @param url + * @param filename + * @param mime + * @param bom + */ +export const downloadByOnlineUrl = ( + url: string, + filename: string, + mime?: string, + bom?: BlobPart +) => { + urlToBase64(url).then((base64) => { + downloadByBase64(base64, filename, mime, bom) + }) +} + +/** + * Download pictures based on base64 + * @param buf + * @param filename + * @param mime + * @param bom + */ +export const downloadByBase64 = (buf: string, filename: string, mime?: string, bom?: BlobPart) => { + const base64Buf = dataURLtoBlob(buf) + downloadByData(base64Buf, filename, mime, bom) +} + +/** + * Download according to the background interface file stream + * @param {*} data + * @param {*} filename + * @param {*} mime + * @param {*} bom + */ +export const downloadByData = (data: BlobPart, filename: string, mime?: string, bom?: BlobPart) => { + const blobData = typeof bom !== 'undefined' ? [bom, data] : [data] + const blob = new Blob(blobData, { type: mime || 'application/octet-stream' }) + + const blobURL = window.URL.createObjectURL(blob) + const tempLink = document.createElement('a') + tempLink.style.display = 'none' + tempLink.href = blobURL + tempLink.setAttribute('download', filename) + if (typeof tempLink.download === 'undefined') { + tempLink.setAttribute('target', '_blank') + } + document.body.appendChild(tempLink) + tempLink.click() + document.body.removeChild(tempLink) + window.URL.revokeObjectURL(blobURL) +} + +/** + * Download file according to file address + * @param {*} sUrl + */ +export const downloadByUrl = ({ + url, + target = '_blank', + fileName +}: { + url: string + target?: '_self' | '_blank' + fileName?: string +}): boolean => { + const isChrome = window.navigator.userAgent.toLowerCase().indexOf('chrome') > -1 + const isSafari = window.navigator.userAgent.toLowerCase().indexOf('safari') > -1 + + if (/(iP)/g.test(window.navigator.userAgent)) { + console.error('Your browser does not support download!') + return false + } + if (isChrome || isSafari) { + const link = document.createElement('a') + link.href = url + link.target = target + + if (link.download !== undefined) { + link.download = fileName || url.substring(url.lastIndexOf('/') + 1, url.length) + } + + if (document.createEvent) { + const e = document.createEvent('MouseEvents') + e.initEvent('click', true, true) + link.dispatchEvent(e) + return true + } + } + if (url.indexOf('?') === -1) { + url += '?download' + } + + openWindow(url, { target }) + return true +} diff --git a/src/utils/formatTime.ts b/src/utils/formatTime.ts new file mode 100644 index 0000000..92d9561 --- /dev/null +++ b/src/utils/formatTime.ts @@ -0,0 +1,385 @@ +import type { TableColumnCtx } from 'element-plus' +import dayjs from 'dayjs' +import 'dayjs/locale/zh-cn'; +dayjs.locale('zh-cn') +/** + * 日期快捷选项适用于 el-date-picker + */ +export const defaultShortcuts = [ + { + text: '今天', + value: () => { + return new Date() + }, + }, + { + text: '昨天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24) + return [date, date] + }, + }, + { + text: '最近七天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7) + return [date, new Date()] + }, + }, + { + text: '最近 30 天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24 * 30) + return [date, new Date()] + }, + }, + { + text: '本月', + value: () => { + const date = new Date() + date.setDate(1) // 设置为当前月的第一天 + return [date, new Date()] + }, + }, + { + text: '今年', + value: () => { + const date = new Date() + return [new Date(`${date.getFullYear()}-01-01`), date] + }, + }, +] + +/** + * 时间日期转换 + * @param date 当前时间,new Date() 格式 + * @param format 需要转换的时间格式字符串 + * @description format 字符串随意,如 `YYYY-mm、YYYY-mm-dd` + * @description format 季度:"YYYY-mm-dd HH:MM:SS QQQQ" + * @description format 星期:"YYYY-mm-dd HH:MM:SS WWW" + * @description format 几周:"YYYY-mm-dd HH:MM:SS ZZZ" + * @description format 季度 + 星期 + 几周:"YYYY-mm-dd HH:MM:SS WWW QQQQ ZZZ" + * @returns 返回拼接后的时间字符串 + */ +export function formatDate(date: Date, format?: string): string { + // 日期不存在,则返回空 + if (!date) { + return '' + } + // 日期存在,则进行格式化 + return date ? dayjs(date).format(format ?? 'YYYY-MM-DD HH:mm:ss') : '' +} + +/** + * 获取当前的日期+时间 + */ +export function getNowDateTime() { + return dayjs() +} + +/** + * 获取当前日期是第几周 + * @param dateTime 当前传入的日期值 + * @returns 返回第几周数字值 + */ +export function getWeek(dateTime: Date): number { + const temptTime = new Date(dateTime.getTime()) + // 周几 + const weekday = temptTime.getDay() || 7 + // 周1+5天=周六 + temptTime.setDate(temptTime.getDate() - weekday + 1 + 5) + let firstDay = new Date(temptTime.getFullYear(), 0, 1) + const dayOfWeek = firstDay.getDay() + let spendDay = 1 + if (dayOfWeek != 0) spendDay = 7 - dayOfWeek + 1 + firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay) + const d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000) + return Math.ceil(d / 7) +} + +/** + * 将时间转换为 `几秒前`、`几分钟前`、`几小时前`、`几天前` + * @param param 当前时间,new Date() 格式或者字符串时间格式 + * @param format 需要转换的时间格式字符串 + * @description param 10秒: 10 * 1000 + * @description param 1分: 60 * 1000 + * @description param 1小时: 60 * 60 * 1000 + * @description param 24小时:60 * 60 * 24 * 1000 + * @description param 3天: 60 * 60* 24 * 1000 * 3 + * @returns 返回拼接后的时间字符串 + */ +export function formatPast(param: string | Date, format = 'YYYY-mm-dd HH:MM:SS'): string { + // 传入格式处理、存储转换值 + let t: any, s: number + // 获取js 时间戳 + let time: number = new Date().getTime() + // 是否是对象 + typeof param === 'string' || 'object' ? (t = new Date(param).getTime()) : (t = param) + // 当前时间戳 - 传入时间戳 + time = Number.parseInt(`${time - t}`) + if (time < 10000) { + // 10秒内 + return '刚刚' + } else if (time < 60000 && time >= 10000) { + // 超过10秒少于1分钟内 + s = Math.floor(time / 1000) + return `${s}秒前` + } else if (time < 3600000 && time >= 60000) { + // 超过1分钟少于1小时 + s = Math.floor(time / 60000) + return `${s}分钟前` + } else if (time < 86400000 && time >= 3600000) { + // 超过1小时少于24小时 + s = Math.floor(time / 3600000) + return `${s}小时前` + } else if (time < 259200000 && time >= 86400000) { + // 超过1天少于3天内 + s = Math.floor(time / 86400000) + return `${s}天前` + } else { + // 超过3天 + const date = typeof param === 'string' || 'object' ? new Date(param) : param + return formatDate(date, format) + } +} + +/** + * 时间问候语 + * @param param 当前时间,new Date() 格式 + * @description param 调用 `formatAxis(new Date())` 输出 `上午好` + * @returns 返回拼接后的时间字符串 + */ +export function formatAxis(param: Date): string { + const hour: number = new Date(param).getHours() + if (hour < 6) return '凌晨好' + else if (hour < 9) return '早上好' + else if (hour < 12) return '上午好' + else if (hour < 14) return '中午好' + else if (hour < 17) return '下午好' + else if (hour < 19) return '傍晚好' + else if (hour < 22) return '晚上好' + else return '夜里好' +} + +/** + * 将毫秒,转换成时间字符串。例如说,xx 分钟 + * + * @param ms 毫秒 + * @returns {string} 字符串 + */ +export function formatPast2(ms: number): string { + const day = Math.floor(ms / (24 * 60 * 60 * 1000)) + const hour = Math.floor(ms / (60 * 60 * 1000) - day * 24) + const minute = Math.floor(ms / (60 * 1000) - day * 24 * 60 - hour * 60) + const second = Math.floor(ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60) + if (day > 0) { + return day + ' 天' + hour + ' 小时 ' + minute + ' 分钟' + } + if (hour > 0) { + return hour + ' 小时 ' + minute + ' 分钟' + } + if (minute > 0) { + return minute + ' 分钟' + } + if (second > 0) { + return second + ' 秒' + } else { + return 0 + ' 秒' + } +} + +/** + * element plus 的时间 Formatter 实现,使用 YYYY-MM-DD HH:mm:ss 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter( + _row: any, + _column: TableColumnCtx, + cellValue: any +): string { + return cellValue ? formatDate(cellValue) : '' +} + +/** + * element plus 的时间 Formatter 实现,使用 YYYY-MM-DD 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter2( + _row: any, + _column: TableColumnCtx, + cellValue: any +): string { + return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : '' +} + +/** + * 设置起始日期,时间为00:00:00 + * @param param 传入日期 + * @returns 带时间00:00:00的日期 + */ +export function beginOfDay(param: Date): Date { + return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 0, 0, 0) +} + +/** + * 设置结束日期,时间为23:59:59 + * @param param 传入日期 + * @returns 带时间23:59:59的日期 + */ +export function endOfDay(param: Date): Date { + return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 23, 59, 59) +} + +/** + * 计算两个日期间隔天数 + * @param param1 日期1 + * @param param2 日期2 + */ +export function betweenDay(param1: Date, param2: Date): number { + param1 = convertDate(param1) + param2 = convertDate(param2) + // 计算差值 + return Math.floor((param2.getTime() - param1.getTime()) / (24 * 3600 * 1000)) +} + +/** + * 日期计算 + * @param param1 日期 + * @param param2 添加的时间 + */ +export function addTime(param1: Date, param2: number): Date { + param1 = convertDate(param1) + return new Date(param1.getTime() + param2) +} + +/** + * 日期转换 + * @param param 日期 + */ +export function convertDate(param: Date | string): Date { + if (typeof param === 'string') { + return new Date(param) + } + return param +} + +/** + * 指定的两个日期, 是否为同一天 + * @param a 日期 A + * @param b 日期 B + */ +export function isSameDay(a: dayjs.ConfigType, b: dayjs.ConfigType): boolean { + if (!a || !b) return false + + const aa = dayjs(a) + const bb = dayjs(b) + return aa.year() == bb.year() && aa.month() == bb.month() && aa.day() == bb.day() +} + +/** + * 获取一天的开始时间、截止时间 + * @param date 日期 + * @param days 天数 + */ +export function getDayRange( + date: dayjs.ConfigType, + days: number +): [dayjs.ConfigType, dayjs.ConfigType] { + const day = dayjs(date).add(days, 'd') + return getDateRange(day, day) +} + +/** + * 获取最近7天的开始时间、截止时间 + */ +export function getLast7Days(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastWeekDay = dayjs().subtract(7, 'd') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastWeekDay, yesterday) +} + +/** + * 获取最近30天的开始时间、截止时间 + */ +export function getLast30Days(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastMonthDay = dayjs().subtract(30, 'd') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastMonthDay, yesterday) +} + +/** + * 获取最近1年的开始时间、截止时间 + */ +export function getLast1Year(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastYearDay = dayjs().subtract(1, 'y') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastYearDay, yesterday) +} + +/** + * 获取指定日期的开始时间、截止时间 + * @param beginDate 开始日期 + * @param endDate 截止日期 + */ +export function getDateRange( + beginDate: dayjs.ConfigType, + endDate: dayjs.ConfigType +): [string, string] { + return [ + dayjs(beginDate).startOf('d').format('YYYY-MM-DD HH:mm:ss'), + dayjs(endDate).endOf('d').format('YYYY-MM-DD HH:mm:ss'), + ] +} + +// 获取时间戳 +export function getTimestamp(date: number | string): number { + let time = date + if (typeof date !== 'number') { + if (!isNaN(Number(date)) && date.trim() !== '') { + time = Number(date) + } else { + time = dayjs(date).valueOf() + } + } + + return time as number +} + +// 获取小时分钟 +export function getHourMinute(date: number | string): string { + let time = getTimestamp(date) + + return dayjs(time).format('HH:mm') +} + +const weekMap = { + Monday: '星期一', + Tuesday: '星期二', + Wednesday: '星期三', + Thursday: '星期四', + Friday: '星期五', + Saturday: '星期六', + Sunday: '星期日', +} +// 获取星期几 +export function getWeekDay(date: number | string): string { + let time = getTimestamp(date) + return dayjs(time).format('dddd') +} + +// 获取几号 +export function getDay(date: number | string): string { + let time = getTimestamp(date) + return `${dayjs(time).format('DD')}号` +} + + diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..63559a9 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,451 @@ +import { toNumber } from 'lodash' + +/** + * + * @param component 需要注册的组件 + * @param alias 组件别名 + * @returns any + */ +export const withInstall = (component: T, alias?: string) => { + const comp = component as any + comp.install = (app: any) => { + app.component(comp.name || comp.displayName, component) + if (alias) { + app.config.globalProperties[alias] = component + } + } + return component as T & Plugin +} + +/** + * @param str 需要转下划线的驼峰字符串 + * @returns 字符串下划线 + */ +export const humpToUnderline = (str: string): string => { + return str.replace(/([A-Z])/g, '-$1').toLowerCase() +} + +/** + * @param str 需要转驼峰的下划线字符串 + * @returns 字符串驼峰 + */ +export const underlineToHump = (str: string): string => { + if (!str) return '' + return str.replace(/\-(\w)/g, (_, letter: string) => { + return letter.toUpperCase() + }) +} + +/** + * 驼峰转横杠 + */ +export const humpToDash = (str: string): string => { + return str.replace(/([A-Z])/g, '-$1').toLowerCase() +} + +export const setCssVar = (prop: string, val: any, dom = document.documentElement) => { + dom.style.setProperty(prop, val) +} + +/** + * 查找数组对象的某个下标 + * @param {Array} ary 查找的数组 + * @param {Functon} fn 判断的方法 + */ +// eslint-disable-next-line +export const findIndex = (ary: Array, fn: Fn): number => { + if (ary.findIndex) { + return ary.findIndex(fn) + } + let index = -1 + ary.some((item: T, i: number, ary: Array) => { + const ret: T = fn(item, i, ary) + if (ret) { + index = i + return ret + } + }) + return index +} + +export const trim = (str: string) => { + return str.replace(/(^\s*)|(\s*$)/g, '') +} + +/** + * @param {Date | number | string} time 需要转换的时间 + * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss + */ +export function formatTime(time: Date | number | string, fmt: string) { + if (!time) return '' + else { + const date = new Date(time) + const o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'H+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds(), + 'q+': Math.floor((date.getMonth() + 3) / 3), + S: date.getMilliseconds() + } + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) + } + for (const k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + fmt = fmt.replace( + RegExp.$1, + RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length) + ) + } + } + return fmt + } +} + +/** + * 生成随机字符串 + */ +export function toAnyString() { + const str: string = 'xxxxx-xxxxx-4xxxx-yxxxx-xxxxx'.replace(/[xy]/g, (c: string) => { + const r: number = (Math.random() * 16) | 0 + const v: number = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString() + }) + return str +} + +/** + * 首字母大写 + */ +export function firstUpperCase(str: string) { + return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()) +} + +export const generateUUID = () => { + if (typeof crypto === 'object') { + if (typeof crypto.randomUUID === 'function') { + return crypto.randomUUID() + } + if (typeof crypto.getRandomValues === 'function' && typeof Uint8Array === 'function') { + const callback = (c: any) => { + const num = Number(c) + return (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString( + 16 + ) + } + return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, callback) + } + } + let timestamp = new Date().getTime() + let performanceNow = + (typeof performance !== 'undefined' && performance.now && performance.now() * 1000) || 0 + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + let random = Math.random() * 16 + if (timestamp > 0) { + random = (timestamp + random) % 16 | 0 + timestamp = Math.floor(timestamp / 16) + } else { + random = (performanceNow + random) % 16 | 0 + performanceNow = Math.floor(performanceNow / 16) + } + return (c === 'x' ? random : (random & 0x3) | 0x8).toString(16) + }) +} + +/** + * element plus 的文件大小 Formatter 实现 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +// @ts-ignore +export const fileSizeFormatter = (row, column, cellValue) => { + const fileSize = cellValue + const unitArr = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + const srcSize = parseFloat(fileSize) + const index = Math.floor(Math.log(srcSize) / Math.log(1024)) + const size = srcSize / Math.pow(1024, index) + const sizeStr = size.toFixed(2) //保留的小数位数 + return sizeStr + ' ' + unitArr[index] +} + +/** + * 将值复制到目标对象,且以目标对象属性为准,例:target: {a:1} source:{a:2,b:3} 结果为:{a:2} + * @param target 目标对象 + * @param source 源对象 + */ +export const copyValueToTarget = (target: any, source: any) => { + const newObj = Object.assign({}, target, source) + // 删除多余属性 + Object.keys(newObj).forEach((key) => { + // 如果不是target中的属性则删除 + if (Object.keys(target).indexOf(key) === -1) { + delete newObj[key] + } + }) + // 更新目标对象值 + Object.assign(target, newObj) +} + +/** + * 获取链接的参数值 + * @param key 参数键名 + * @param urlStr 链接地址,默认为当前浏览器的地址 + */ +export const getUrlValue = (key: string, urlStr: string = location.href): string => { + if (!urlStr || !key) return '' + const url = new URL(decodeURIComponent(urlStr)) + return url.searchParams.get(key) ?? '' +} + +/** + * 获取链接的参数值(值类型) + * @param key 参数键名 + * @param urlStr 链接地址,默认为当前浏览器的地址 + */ +export const getUrlNumberValue = (key: string, urlStr: string = location.href): number => { + return toNumber(getUrlValue(key, urlStr)) +} + +/** + * 构建排序字段 + * @param prop 字段名称 + * @param order 顺序 + */ +export const buildSortingField = ({ prop, order }) => { + return { field: prop, order: order === 'ascending' ? 'asc' : 'desc' } +} + +// ========== NumberUtils 数字方法 ========== + +/** + * 数组求和 + * + * @param values 数字数组 + * @return 求和结果,默认为 0 + */ +export const getSumValue = (values: number[]): number => { + return values.reduce((prev, curr) => { + const value = Number(curr) + if (!Number.isNaN(value)) { + return prev + curr + } else { + return prev + } + }, 0) +} + +// ========== 通用金额方法 ========== + +/** + * 将一个整数转换为分数保留两位小数 + * @param num + */ +export const formatToFraction = (num: number | string | undefined): string => { + if (typeof num === 'undefined') return '0.00' + const parsedNumber = typeof num === 'string' ? parseFloat(num) : num + return (parsedNumber / 100.0).toFixed(2) +} + +/** + * 将一个数转换为 1.00 这样 + * 数据呈现的时候使用 + * + * @param num 整数 + */ +// TODO @芋艿:看看怎么融合掉 +export const floatToFixed2 = (num: number | string | undefined): string => { + let str = '0.00' + if (typeof num === 'undefined') { + return str + } + const f = formatToFraction(num) + const decimalPart = f.toString().split('.')[1] + const len = decimalPart ? decimalPart.length : 0 + switch (len) { + case 0: + str = f.toString() + '.00' + break + case 1: + str = f.toString() + '0' + break + case 2: + str = f.toString() + break + } + return str +} + +/** + * 将一个分数转换为整数 + * @param num + */ +// TODO @芋艿:看看怎么融合掉 +export const convertToInteger = (num: number | string | undefined): number => { + if (typeof num === 'undefined') return 0 + const parsedNumber = typeof num === 'string' ? parseFloat(num) : num + // TODO 分转元后还有小数则四舍五入 + return Math.round(parsedNumber * 100) +} + +/** + * 元转分 + */ +export const yuanToFen = (amount: string | number): number => { + return convertToInteger(amount) +} + +/** + * 分转元 + */ +export const fenToYuan = (price: string | number): string => { + return formatToFraction(price) +} + +/** + * 计算环比 + * + * @param value 当前数值 + * @param reference 对比数值 + */ +export const calculateRelativeRate = (value?: number, reference?: number) => { + // 防止除0 + if (!reference) return 0 + + return ((100 * ((value || 0) - reference)) / reference).toFixed(0) +} + +// ========== ERP 专属方法 ========== + +const ERP_COUNT_DIGIT = 3 +const ERP_PRICE_DIGIT = 2 + +/** + * 【ERP】格式化 Input 数字 + * + * 例如说:库存数量 + * + * @param num 数量 + * @package digit 保留的小数位数 + * @return 格式化后的数量 + */ +export const erpNumberFormatter = (num: number | string | undefined, digit: number) => { + if (num == null) { + return '' + } + if (typeof num === 'string') { + num = parseFloat(num) + } + // 如果非 number,则直接返回空串 + if (isNaN(num)) { + return '' + } + return num.toFixed(digit) +} + +/** + * 【ERP】格式化数量,保留三位小数 + * + * 例如说:库存数量 + * + * @param num 数量 + * @return 格式化后的数量 + */ +export const erpCountInputFormatter = (num: number | string | undefined) => { + return erpNumberFormatter(num, ERP_COUNT_DIGIT) +} + +// noinspection JSCommentMatchesSignature +/** + * 【ERP】格式化数量,保留三位小数 + * + * @param cellValue 数量 + * @return 格式化后的数量 + */ +export const erpCountTableColumnFormatter = (_, __, cellValue: any, ___) => { + return erpNumberFormatter(cellValue, ERP_COUNT_DIGIT) +} + +/** + * 【ERP】格式化金额,保留二位小数 + * + * 例如说:库存数量 + * + * @param num 数量 + * @return 格式化后的数量 + */ +export const erpPriceInputFormatter = (num: number | string | undefined) => { + return erpNumberFormatter(num, ERP_PRICE_DIGIT) +} + +// noinspection JSCommentMatchesSignature +/** + * 【ERP】格式化金额,保留二位小数 + * + * @param cellValue 数量 + * @return 格式化后的数量 + */ +export const erpPriceTableColumnFormatter = (_, __, cellValue: any, ___) => { + return erpNumberFormatter(cellValue, ERP_PRICE_DIGIT) +} + +/** + * 【ERP】价格计算,四舍五入保留两位小数 + * + * @param price 价格 + * @param count 数量 + * @return 总价格。如果有任一为空,则返回 undefined + */ +export const erpPriceMultiply = (price: number, count: number) => { + if (price == null || count == null) { + return undefined + } + return parseFloat((price * count).toFixed(ERP_PRICE_DIGIT)) +} + +/** + * 【ERP】百分比计算,四舍五入保留两位小数 + * + * 如果 total 为 0,则返回 0 + * + * @param value 当前值 + * @param total 总值 + */ +export const erpCalculatePercentage = (value: number, total: number) => { + if (total === 0) return 0 + return ((value / total) * 100).toFixed(2) +} + +/** + * 适配 echarts map 的地名 + * + * @param areaName 地区名称 + */ +export const areaReplace = (areaName: string) => { + if (!areaName) { + return areaName + } + return areaName + .replace('维吾尔自治区', '') + .replace('壮族自治区', '') + .replace('回族自治区', '') + .replace('自治区', '') + .replace('省', '') +} + +/** + * 解析 JSON 字符串 + * + * @param str + */ +export function jsonParse(str: string) { + try { + return JSON.parse(str) + } catch (e) { + console.error(`str[${str}] 不是一个 JSON 字符串`) + return '' + } +} diff --git a/src/utils/is.ts b/src/utils/is.ts new file mode 100644 index 0000000..eec86a9 --- /dev/null +++ b/src/utils/is.ts @@ -0,0 +1,117 @@ +// copy to vben-admin + +const toString = Object.prototype.toString + +export const is = (val: unknown, type: string) => { + return toString.call(val) === `[object ${type}]` +} + +export const isDef = (val?: T): val is T => { + return typeof val !== 'undefined' +} + +export const isUnDef = (val?: T): val is T => { + return !isDef(val) +} + +export const isObject = (val: any): val is Record => { + return val !== null && is(val, 'Object') +} + +export const isEmpty = (val: T): val is T => { + if (val === null) { + return true + } + if (isArray(val) || isString(val)) { + return val.length === 0 + } + + if (val instanceof Map || val instanceof Set) { + return val.size === 0 + } + + if (isObject(val)) { + return Object.keys(val).length === 0 + } + + return false +} + +export const isDate = (val: unknown): val is Date => { + return is(val, 'Date') +} + +export const isNull = (val: unknown): val is null => { + return val === null +} + +export const isNullAndUnDef = (val: unknown): val is null | undefined => { + return isUnDef(val) && isNull(val) +} + +export const isNullOrUnDef = (val: unknown): val is null | undefined => { + return isUnDef(val) || isNull(val) +} + +export const isNumber = (val: unknown): val is number => { + return is(val, 'Number') +} + +export const isPromise = (val: unknown): val is Promise => { + return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch) +} + +export const isString = (val: unknown): val is string => { + return is(val, 'String') +} + +export const isFunction = (val: unknown): val is Function => { + return typeof val === 'function' +} + +export const isBoolean = (val: unknown): val is boolean => { + return is(val, 'Boolean') +} + +export const isRegExp = (val: unknown): val is RegExp => { + return is(val, 'RegExp') +} + +export const isArray = (val: any): val is Array => { + return val && Array.isArray(val) +} + +export const isWindow = (val: any): val is Window => { + return typeof window !== 'undefined' && is(val, 'Window') +} + +export const isElement = (val: unknown): val is Element => { + return isObject(val) && !!val.tagName +} + +export const isMap = (val: unknown): val is Map => { + return is(val, 'Map') +} + +export const isServer = typeof window === 'undefined' + +export const isClient = !isServer + +export const isUrl = (path: string): boolean => { + const reg = + /(((^https?:(?:\/\/)?)(?:[-:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&%@.\w_]*)#?(?:[\w]*))?)$/ + return reg.test(path) +} + +export const isDark = (): boolean => { + return window.matchMedia('(prefers-color-scheme: dark)').matches +} + +// 是否是图片链接 +export const isImgPath = (path: string): boolean => { + return /(https?:\/\/|data:image\/).*?\.(png|jpg|jpeg|gif|svg|webp|ico)/gi.test(path) +} + +export const isEmptyVal = (val: any): boolean => { + return val === '' || val === null || val === undefined +} diff --git a/src/utils/load.js b/src/utils/load.js new file mode 100644 index 0000000..8be77d0 --- /dev/null +++ b/src/utils/load.js @@ -0,0 +1,26 @@ +export function loadScript(url) { + return new Promise(function (resolve, reject) { + let script = document.createElement('script'); + script.setAttribute("type", "text/javascript") + script.setAttribute("src", url) + + script.onload = () => resolve(); + script.onerror = () => reject(new Error(`Script load error for ${src}`)); + + document.head.append(script); + }); +} + +export function loadStyle(url) { + return new Promise(function (resolve, reject) { + let style = document.createElement('link'); + style.setAttribute("rel", "stylesheet") + style.setAttribute("type", "text/css") + style.setAttribute("href", url) + + style.onload = () => resolve(); + style.onerror = () => reject(new Error(`Style load error for ${src}`)); + + document.head.append(style); + }); +} \ No newline at end of file diff --git a/src/utils/numericalUnit.ts b/src/utils/numericalUnit.ts new file mode 100644 index 0000000..28b5459 --- /dev/null +++ b/src/utils/numericalUnit.ts @@ -0,0 +1,89 @@ +export function numericalUnit(num: number): string { + if (num === '') return '--' + // 获取数值的绝对值 + const absNum = Math.abs(num) + + let result = '' + if (absNum < 1000) { + result = String(absNum) + } else if (absNum < 10000) { + result = `${parseFloat((absNum / 1000).toFixed(1))}k` + } else if (absNum < 100000) { + result = `${parseFloat((absNum / 1000).toFixed(1))}k` + } else if (absNum < 1000000) { + result = `${parseFloat((absNum / 1000).toFixed(1))}k` + } else { + result = `${parseFloat((absNum / 1000000).toFixed(1))}m` // m 代表百万 + } + + if (num < 0) { + result = `-${result}` + } + + return result +} + +const currencyMap = { + CNY: '¥', + USD: '$', + EUR: '€', +} +type Currency = keyof typeof currencyMap + +export function moneyUnit( + num: number, + currency: Currency = 'CNY' +): { value: number | string; unit: string } { + const absNum = Math.abs(num) + + let value: number | string = absNum + let unit: string = '元' + if (absNum < 1000) { + value = parseFloat(absNum.toFixed(2)) + } else if (absNum < 10000) { + value = parseFloat((absNum / 1000).toFixed(2)) + unit = '千' + } else if (absNum < 100000) { + value = parseFloat((absNum / 10000).toFixed(2)) + unit = '万' + } else if (absNum < 1000000) { + value = parseFloat((absNum / 100000).toFixed(2)) + unit = '十万' + } else if (absNum < 10000000) { + value = parseFloat((absNum / 1000000).toFixed(2)) + unit = '百万' + } else if (absNum < 100000000) { + value = parseFloat((absNum / 10000000).toFixed(2)) + unit = '千万' + } else { + value = parseFloat((absNum / 100000000).toFixed(2)) + unit = '亿' + } + + // 如果原始数值是负数,添加负号 + if (num < 0) { + value = `-${value}` + } + + return { + value, + unit: `${unit}`, + } +} + +export function formatPower(valueInKW: number): string { + let value = valueInKW + let unit = 'KW' + + const absValue = Math.abs(value) + + if (absValue >= 1e9) { + value = value / 1e9 + unit = 'GW' + } else if (absValue >= 1e6) { + value = value / 1e6 + unit = 'MW' + } + + return `${parseFloat(value.toFixed(2))} ${unit}` +} diff --git a/src/utils/permission.ts b/src/utils/permission.ts new file mode 100644 index 0000000..7688f92 --- /dev/null +++ b/src/utils/permission.ts @@ -0,0 +1,51 @@ +// import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +import Keys from '@/api/Keys' +import { useCache } from '@/hooks/useCache' +import { useI18n } from 'vue-i18n' + +/** + * 字符权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkPermi(value: string[]) { + const { t } = useI18n() // 国际化 + + if (value && value instanceof Array && value.length > 0) { + const { wsCache } = useCache() + const permissionDatas = value + const all_permission = '*:*:*' + const permissions = wsCache.get(Keys.STORAGE_USER_INFO).permissions + const hasPermission = permissions.some((permission: string) => { + return all_permission === permission || permissionDatas.includes(permission) + }) + return !!hasPermission + } else { + console.error(t('permission.hasPermission')) + return false + } +} + +/** + * 角色权限校验 + * @param {string[]} value 校验值 + * @returns {Boolean} + */ +export function checkRole(value: string[]) { + const { t } = useI18n() // 国际化 + + if (value && value instanceof Array && value.length > 0) { + const { wsCache } = useCache() + const permissionRoles = value + const super_admin = 'admin' + const roles = wsCache.get(Keys.STORAGE_USER_INFO).roles + const hasRole = roles.some((role: string) => { + return super_admin === role || permissionRoles.includes(role) + }) + return !!hasRole + } else { + console.error(t('permission.hasRole')) + return false + } +} diff --git a/src/utils/propTypes.ts b/src/utils/propTypes.ts new file mode 100644 index 0000000..a5b90b4 --- /dev/null +++ b/src/utils/propTypes.ts @@ -0,0 +1,29 @@ +import { + type VueTypesInterface, + createTypes, + toValidableType, + type VueTypeValidableDef, +} from 'vue-types' +import type { CSSProperties } from 'vue' + +type PropTypes = VueTypesInterface & { + readonly style: VueTypeValidableDef +} +const newPropTypes = createTypes({ + func: undefined, + bool: undefined, + string: undefined, + number: undefined, + object: undefined, + integer: undefined, +}) as PropTypes + +class propTypes extends newPropTypes { + static get style() { + return toValidableType('style', { + type: [String, Object], + }) + } +} + +export { propTypes } diff --git a/src/utils/resize.ts b/src/utils/resize.ts new file mode 100644 index 0000000..6c0858b --- /dev/null +++ b/src/utils/resize.ts @@ -0,0 +1,53 @@ +import { Debounce } from "@/utils/Debounce"; + +const debounce = new Debounce(1000, () => { + for (let item of objMap.values()) { + item.callback(); + } + // for (const id of args[0][0]) { + // const obj = objMap.get(id); + // // console.log(obj); + // if (obj) { + // obj.callback(); + // } + + // if (entry.target.id === 'lineChart') { + // if (lineChart.value) { + // chartResize(); + // } + // } + // robserver.observe(lineChart.value); + // robserver.unobserve(lineChart.value); + // } +}); +const objMap: Map = new Map(); +const robserver = new ResizeObserver((entries) => { + // console.log(JSON.stringify(entries)); + // const ids: string[] = []; + // for (const entry of entries) { + // ids.push(entry.target.id); + // } + // console.log("ids:" + ids + "--" + entries.length); + // debounce.exec(ids, objMap); + debounce.exec(); +}); + +export interface ObserveObj { + id: string; + element: HTMLElement; + callback(): void; +} + +export function addObserveObj(obj: ObserveObj) { + objMap.set(obj.id, obj); + robserver.observe(obj.element); +} + +export function removeObserveObj(id: string) { + // console.log("remove:" + id); + const obj = objMap.get(id); + if (obj) { + robserver.unobserve(obj.element); + objMap.delete(id); + } +} diff --git a/src/utils/routerHelper.ts b/src/utils/routerHelper.ts new file mode 100644 index 0000000..a47b0c6 --- /dev/null +++ b/src/utils/routerHelper.ts @@ -0,0 +1,256 @@ +import type { RouteLocationNormalized, RouteMeta, Router, RouteRecordNormalized } from 'vue-router' +import { createRouter, createWebHashHistory, type RouteRecordRaw } from 'vue-router' +import { cloneDeep, omit } from 'lodash' +import qs from 'qs' +import { isUrl } from './is' + +type AppRouteRecordRaw = any +type AppCustomRouteRecordRaw = any + +const modules = import.meta.glob('../pages/**/*.{vue,tsx}') +/** + * 注册一个异步组件 + * @param componentPath 例:/bpm/oa/leave/detail + */ +export const registerComponent = (componentPath: string) => { + for (const item in modules) { + if (item.includes(componentPath)) { + // 使用异步组件的方式来动态加载组件 + // @ts-ignore + return defineAsyncComponent(modules[item]) + } + } +} +/* Layout */ +export const Layout = () => import('@/pages/layout.vue') + +export const getParentLayout = () => { + return () => + new Promise(resolve => { + resolve({ + name: 'ParentLayout', + }) + }) +} + +// 按照路由中meta下的rank等级升序来排序路由 +export const ascending = (arr: any[]) => { + arr.forEach(v => { + if (v?.meta?.rank === null) v.meta.rank = undefined + if (v?.meta?.rank === 0) { + if (v.name !== 'home' && v.path !== '/') { + console.warn('rank only the home page can be 0') + } + } + }) + return arr.sort((a: { meta: { rank: number } }, b: { meta: { rank: number } }) => { + return a?.meta?.rank - b?.meta?.rank + }) +} + +export const getRawRoute = (route: RouteLocationNormalized): RouteLocationNormalized => { + if (!route) return route + const { matched, ...opt } = route + return { + ...opt, + matched: (matched + ? matched.map(item => ({ + meta: item.meta, + name: item.name, + path: item.path, + })) + : undefined) as RouteRecordNormalized[], + } +} + +// 后端控制路由生成 +export const generateRoute = (routes: AppCustomRouteRecordRaw[]): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + const modulesRoutesKeys = Object.keys(modules) + for (const route of routes) { + // 1. 生成 meta 菜单元数据 + const meta = { + title: route.name, + icon: route.icon, + hidden: !route.visible, + noCache: !route.keepAlive, + alwaysShow: + route.children && + route.children.length === 1 && + (route.alwaysShow !== undefined ? route.alwaysShow : true) + } as any + // 特殊逻辑:如果后端配置的 MenuDO.component 包含 ?,则表示需要传递参数 + // 此时,我们需要解析参数,并且将参数放到 meta.query 中 + // 这样,后续在 Vue 文件中,可以通过 const { currentRoute } = useRouter() 中,通过 meta.query 获取到参数 + if (route.component && route.component.indexOf('?') > -1) { + const query = route.component.split('?')[1] + route.component = route.component.split('?')[0] + meta.query = qs.parse(query) + } + + // 2. 生成 data(AppRouteRecordRaw) + // 路由地址转首字母大写驼峰,作为路由名称,适配keepAlive + let data: AppRouteRecordRaw = { + path: route.path.indexOf('?') > -1 ? route.path.split('?')[0] : route.path, + name: + route.componentName && route.componentName.length > 0 + ? route.componentName + : toCamelCase(route.path, true), + redirect: route.redirect, + meta: meta + } + //处理顶级非目录路由 + if (!route.children && route.parentId == 0 && route.component) { + data.component = Layout + data.meta = {} + data.name = toCamelCase(route.path, true) + 'Parent' + data.redirect = '' + meta.alwaysShow = true + const childrenData: AppRouteRecordRaw = { + path: '', + name: + route.componentName && route.componentName.length > 0 + ? route.componentName + : toCamelCase(route.path, true), + redirect: route.redirect, + meta: meta + } + const index = route?.component + ? modulesRoutesKeys.findIndex((ev) => ev.includes(route.component)) + : modulesRoutesKeys.findIndex((ev) => ev.includes(route.path)) + childrenData.component = modules[modulesRoutesKeys[index]] + data.children = [childrenData] + } else { + // 目录 + if (route.children) { + data.component = Layout + data.redirect = getRedirect(route.path, route.children) + // 外链 + } else if (isUrl(route.path)) { + data = { + path: '/external-link', + component: Layout, + meta: { + name: route.name + }, + children: [data] + } as AppRouteRecordRaw + // 菜单 + } else { + // 对后端传component组件路径和不传做兼容(如果后端传component组件路径,那么path可以随便写,如果不传,component组件路径会根path保持一致) + const index = route?.component + ? modulesRoutesKeys.findIndex((ev) => ev.includes(route.component)) + : modulesRoutesKeys.findIndex((ev) => ev.includes(route.path)) + data.component = modules[modulesRoutesKeys[index]] + } + if (route.children) { + data.children = generateRoute(route.children) + } + } + res.push(data as AppRouteRecordRaw) + } + return res +} +export const getRedirect = (parentPath: string, children: AppCustomRouteRecordRaw[]) => { + if (!children || children.length == 0) { + return parentPath + } + const path = generateRoutePath(parentPath, children[0].path) + // 递归子节点 + if (children[0].children) return getRedirect(path, children[0].children) +} +const generateRoutePath = (parentPath: string, path: string) => { + if (parentPath.endsWith('/')) { + parentPath = parentPath.slice(0, -1) // 移除默认的 / + } + if (!path.startsWith('/')) { + path = '/' + path + } + return parentPath + path +} +export const pathResolve = (parentPath: string, path: string) => { + if (isUrl(path)) return path + const childPath = path.startsWith('/') || !path ? path : `/${path}` + return `${parentPath}${childPath}`.replace(/\/\//g, '/') +} + +// 路由降级 +export const flatMultiLevelRoutes = (routes: AppRouteRecordRaw[]) => { + const modules: AppRouteRecordRaw[] = cloneDeep(routes) + for (let index = 0; index < modules.length; index++) { + const route = modules[index] + if (!isMultipleRoute(route)) { + continue + } + promoteRouteLevel(route) + } + return modules +} + +// 层级是否大于2 +const isMultipleRoute = (route: AppRouteRecordRaw) => { + if (!route || !Reflect.has(route, 'children') || !route.children?.length) { + return false + } + + const children = route.children + + let flag = false + for (let index = 0; index < children.length; index++) { + const child = children[index] + if (child.children?.length) { + flag = true + break + } + } + return flag +} + +// 生成二级路由 +const promoteRouteLevel = (route: AppRouteRecordRaw) => { + let router: Router | null = createRouter({ + routes: [route as RouteRecordRaw], + history: createWebHashHistory(), + }) + + const routes = router.getRoutes() + addToChildren(routes, route.children || [], route) + router = null + + route.children = route.children?.map(item => omit(item, 'children')) +} + +// 添加所有子菜单 +const addToChildren = ( + routes: RouteRecordNormalized[], + children: AppRouteRecordRaw[], + routeModule: AppRouteRecordRaw +) => { + for (let index = 0; index < children.length; index++) { + const child = children[index] + const route = routes.find(item => item.name === child.name) + if (!route) { + continue + } + routeModule.children = routeModule.children || [] + if (!routeModule.children.find(item => item.name === route.name)) { + routeModule.children?.push(route as unknown as AppRouteRecordRaw) + } + if (child.children?.length) { + addToChildren(routes, child.children, routeModule) + } + } +} +const toCamelCase = (str: string, upperCaseFirst: boolean) => { + str = (str || '') + .replace(/-(.)/g, function (group1: string) { + return group1.toUpperCase() + }) + .replaceAll('-', '') + + if (upperCaseFirst && str) { + str = str.charAt(0).toUpperCase() + str.slice(1) + } + + return str +} diff --git a/src/utils/string.ts b/src/utils/string.ts new file mode 100644 index 0000000..aabdff6 --- /dev/null +++ b/src/utils/string.ts @@ -0,0 +1,14 @@ +export function trim(str: string): string { + const regex = /[\u200b\uFEFF\u2060]/g + return str.replace(regex, '') +} + +/** + * 获取给定值的小数位数 + * @param num + * @returns + */ +export function getDecimalLength(num: number | string): number { + const match = num.toString().match(/\.(\d+)/) + return match ? match[1].length : 0 +} diff --git a/src/utils/tree.ts b/src/utils/tree.ts new file mode 100644 index 0000000..91059ef --- /dev/null +++ b/src/utils/tree.ts @@ -0,0 +1,400 @@ +interface TreeHelperConfig { + id: string + children: string + pid: string +} + +const DEFAULT_CONFIG: TreeHelperConfig = { + id: 'id', + children: 'children', + pid: 'pid' +} +export const defaultProps = { + children: 'children', + label: 'name', + value: 'id', + isLeaf: 'leaf', + emitPath: false // 用于 cascader 组件:在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值 +} + +const getConfig = (config: Partial) => Object.assign({}, DEFAULT_CONFIG, config) + +// tree from list +export const listToTree = (list: any[], config: Partial = {}): T[] => { + const conf = getConfig(config) as TreeHelperConfig + const nodeMap = new Map() + const result: T[] = [] + const { id, children, pid } = conf + + for (const node of list) { + node[children] = node[children] || [] + nodeMap.set(node[id], node) + } + for (const node of list) { + const parent = nodeMap.get(node[pid]) + ;(parent ? parent.children : result).push(node) + } + return result +} + +export const treeToList = (tree: any, config: Partial = {}): T => { + config = getConfig(config) + const { children } = config + const result: any = [...tree] + for (let i = 0; i < result.length; i++) { + if (!result[i][children!]) continue + result.splice(i + 1, 0, ...result[i][children!]) + } + return result +} + +export const findNode = ( + tree: any, + func: Fn, + config: Partial = {} +): T | null => { + config = getConfig(config) + const { children } = config + const list = [...tree] + for (const node of list) { + if (func(node)) return node + node[children!] && list.push(...node[children!]) + } + return null +} + +export const findNodeAll = ( + tree: any, + func: Fn, + config: Partial = {} +): T[] => { + config = getConfig(config) + const { children } = config + const list = [...tree] + const result: T[] = [] + for (const node of list) { + func(node) && result.push(node) + node[children!] && list.push(...node[children!]) + } + return result +} + +export const findPath = ( + tree: any, + func: Fn, + config: Partial = {} +): T | T[] | null => { + config = getConfig(config) + const path: T[] = [] + const list = [...tree] + const visitedSet = new Set() + const { children } = config + while (list.length) { + const node = list[0] + if (visitedSet.has(node)) { + path.pop() + list.shift() + } else { + visitedSet.add(node) + node[children!] && list.unshift(...node[children!]) + path.push(node) + if (func(node)) { + return path + } + } + } + return null +} + +export const findPathAll = (tree: any, func: Fn, config: Partial = {}) => { + config = getConfig(config) + const path: any[] = [] + const list = [...tree] + const result: any[] = [] + const visitedSet = new Set(), + { children } = config + while (list.length) { + const node = list[0] + if (visitedSet.has(node)) { + path.pop() + list.shift() + } else { + visitedSet.add(node) + node[children!] && list.unshift(...node[children!]) + path.push(node) + func(node) && result.push([...path]) + } + } + return result +} + +export const filter = ( + tree: T[], + func: (n: T) => boolean, + config: Partial = {} +): T[] => { + config = getConfig(config) + const children = config.children as string + + function listFilter(list: T[]) { + return list + .map((node: any) => ({ ...node })) + .filter((node) => { + node[children] = node[children] && listFilter(node[children]) + return func(node) || (node[children] && node[children].length) + }) + } + + return listFilter(tree) +} + +export const forEach = ( + tree: T[], + func: (n: T) => any, + config: Partial = {} +): void => { + config = getConfig(config) + const list: any[] = [...tree] + const { children } = config + for (let i = 0; i < list.length; i++) { + // func 返回true就终止遍历,避免大量节点场景下无意义循环,引起浏览器卡顿 + if (func(list[i])) { + return + } + children && list[i][children] && list.splice(i + 1, 0, ...list[i][children]) + } +} + +/** + * @description: Extract tree specified structure + */ +export const treeMap = ( + treeData: T[], + opt: { children?: string; conversion: Fn } +): T[] => { + return treeData.map((item) => treeMapEach(item, opt)) +} + +/** + * @description: Extract tree specified structure + */ +export const treeMapEach = ( + data: any, + { children = 'children', conversion }: { children?: string; conversion: Fn } +) => { + const haveChildren = Array.isArray(data[children]) && data[children].length > 0 + const conversionData = conversion(data) || {} + if (haveChildren) { + return { + ...conversionData, + [children]: data[children].map((i: number) => + treeMapEach(i, { + children, + conversion + }) + ) + } + } else { + return { + ...conversionData + } + } +} + +/** + * 递归遍历树结构 + * @param treeDatas 树 + * @param callBack 回调 + * @param parentNode 父节点 + */ +export const eachTree = (treeDatas: any[], callBack: Fn, parentNode = {}) => { + treeDatas.forEach((element) => { + const newNode = callBack(element, parentNode) || element + if (element.children) { + eachTree(element.children, callBack, newNode) + } + }) +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + */ +export const handleTree = (data: any[], id?: string, parentId?: string, children?: string) => { + if (!Array.isArray(data)) { + console.warn('data must be an array') + return [] + } + const config = { + id: id || 'id', + parentId: parentId || 'parentId', + childrenList: children || 'children' + } + + const childrenListMap = {} + const nodeIds = {} + const tree: any[] = [] + + for (const d of data) { + const parentId = d[config.parentId] + if (childrenListMap[parentId] == null) { + childrenListMap[parentId] = [] + } + nodeIds[d[config.id]] = d + childrenListMap[parentId].push(d) + } + + for (const d of data) { + const parentId = d[config.parentId] + if (nodeIds[parentId] == null) { + tree.push(d) + } + } + + for (const t of tree) { + adaptToChildrenList(t) + } + + function adaptToChildrenList(o) { + if (childrenListMap[o[config.id]] !== null) { + o[config.childrenList] = childrenListMap[o[config.id]] + } + if (o[config.childrenList]) { + for (const c of o[config.childrenList]) { + adaptToChildrenList(c) + } + } + } + + return tree +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + * @param {*} rootId 根Id 默认 0 + */ +// @ts-ignore +export const handleTree2 = (data, id, parentId, children, rootId) => { + id = id || 'id' + parentId = parentId || 'parentId' + // children = children || 'children' + rootId = + rootId || + Math.min( + ...data.map((item) => { + return item[parentId] + }) + ) || + 0 + // 对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + // 循环所有项 + const treeData = cloneData.filter((father) => { + const branchArr = cloneData.filter((child) => { + // 返回每一项的子级数组 + return father[id] === child[parentId] + }) + branchArr.length > 0 ? (father.children = branchArr) : '' + // 返回第一层 + return father[parentId] === rootId + }) + return treeData !== '' ? treeData : data +} + +/** + * 校验选中的节点,是否为指定 level + * + * @param tree 要操作的树结构数据 + * @param nodeId 需要判断在什么层级的数据 + * @param level 检查的级别, 默认检查到二级 + * @return true 是;false 否 + */ +export const checkSelectedNode = (tree: any[], nodeId: any, level = 2): boolean => { + if (typeof tree === 'undefined' || !Array.isArray(tree) || tree.length === 0) { + console.warn('tree must be an array') + return false + } + + // 校验是否是一级节点 + if (tree.some((item) => item.id === nodeId)) { + return false + } + + // 递归计数 + let count = 1 + + // 深层次校验 + function performAThoroughValidation(arr: any[]): boolean { + count += 1 + for (const item of arr) { + if (item.id === nodeId) { + return true + } else if (typeof item.children !== 'undefined' && item.children.length !== 0) { + if (performAThoroughValidation(item.children)) { + return true + } + } + } + return false + } + + for (const item of tree) { + count = 1 + if (performAThoroughValidation(item.children)) { + // 找到后对比是否是期望的层级 + if (count >= level) { + return true + } + } + } + + return false +} + +/** + * 获取节点的完整结构 + * @param tree 树数据 + * @param nodeId 节点 id + */ +export const treeToString = (tree: any[], nodeId) => { + if (typeof tree === 'undefined' || !Array.isArray(tree) || tree.length === 0) { + console.warn('tree must be an array') + return '' + } + // 校验是否是一级节点 + const node = tree.find((item) => item.id === nodeId) + if (typeof node !== 'undefined') { + return node.name + } + let str = '' + + function performAThoroughValidation(arr) { + for (const item of arr) { + if (item.id === nodeId) { + str += ` / ${item.name}` + return true + } else if (typeof item.children !== 'undefined' && item.children.length !== 0) { + str += ` / ${item.name}` + if (performAThoroughValidation(item.children)) { + return true + } + } + } + return false + } + + for (const item of tree) { + str = `${item.name}` + if (performAThoroughValidation(item.children)) { + break + } + } + return str +} diff --git a/src/utils/tsxHelper.ts b/src/utils/tsxHelper.ts new file mode 100644 index 0000000..72a9691 --- /dev/null +++ b/src/utils/tsxHelper.ts @@ -0,0 +1,16 @@ +import type { Slots } from 'vue' +import { isFunction } from '@/utils/is' + +export const getSlot = (slots: Slots, slot = 'default', data?: Recordable) => { + // Reflect.has 判断一个对象是否存在某个属性 + if (!slots || !Reflect.has(slots, slot)) { + return null + } + if (!isFunction(slots[slot])) { + console.error(`${slot} is not a function!`) + return null + } + const slotFn = slots[slot] + if (!slotFn) return null + return slotFn(data) +} diff --git a/src/utils/useIcon.ts b/src/utils/useIcon.ts new file mode 100644 index 0000000..91df7a4 --- /dev/null +++ b/src/utils/useIcon.ts @@ -0,0 +1,12 @@ +import { h } from 'vue' +import type { VNode } from 'vue' +import { Icon } from '@/components/dashboard/Icon' + +interface IconTypes { + size?: number + color?: string + icon: string +} +export const useIcon = (props: IconTypes): VNode => { + return h(Icon, props) +} diff --git a/src/utils/useTheme.ts b/src/utils/useTheme.ts new file mode 100644 index 0000000..4271b17 --- /dev/null +++ b/src/utils/useTheme.ts @@ -0,0 +1,35 @@ +import Keys from '@/api/Keys' + +const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches +const localTheme = + localStorage.getItem(Keys.STORAGE_THEME) || (prefersDark ? 'dark' : 'light') + + const theme = ref<'light' | 'dark'>(localTheme as 'light' | 'dark'); + +const chartGraphicTextColor = computed(() => + theme.value === 'dark' ? '#ccc' : '#4d4d4d' +) + +watchEffect(() => { + const html = document.querySelector('html') + if (theme.value === 'dark') { + html?.classList.add('dark') + } else { + html?.classList.remove('dark') + html?.classList.add('light') + } + document.documentElement.setAttribute('data-theme', theme.value) + localStorage.setItem(Keys.STORAGE_THEME, theme.value) +}) + +function toggle() { + theme.value = theme.value === 'light' ? 'dark' : 'light' +} + +export function useTheme() { + return { + theme, + toggle, + chartGraphicTextColor, + } +} diff --git a/src/utils/validate.ts b/src/utils/validate.ts new file mode 100644 index 0000000..05b67eb --- /dev/null +++ b/src/utils/validate.ts @@ -0,0 +1,5 @@ +export function isSecureByteLength(input: string, length = 24): boolean { + const encoder = new TextEncoder() + const byteLength = encoder.encode(input).length + return byteLength <= length +} \ No newline at end of file diff --git a/src/vue-shims.d.ts b/src/vue-shims.d.ts new file mode 100644 index 0000000..8fe3528 --- /dev/null +++ b/src/vue-shims.d.ts @@ -0,0 +1,9 @@ +declare module '*.vue' { + import { defineComponent } from 'vue' + const Component: ReturnType + export default Component +} +declare module "element-plus/dist/locale/zh-cn.mjs"; +declare module "big.js"; +declare module "mapvgl"; +declare module '@wangeditor/editor-for-vue' diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..c280d4a --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,23 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": [ + "env.d.ts", + "src/**/*", + "src/**/*.ts", + "src/**/*.vue", + "./auto-import.d.ts", + ], + "exclude": [ + "src/**/__tests__/*" + ], + "compilerOptions": { + "composite": true, + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ] + }, + "jsx": "preserve" + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..8f5fb56 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} \ No newline at end of file diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..dee96be --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,16 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/tsconfig.node.tsbuildinfo b/tsconfig.node.tsbuildinfo new file mode 100644 index 0000000..f2047d2 --- /dev/null +++ b/tsconfig.node.tsbuildinfo @@ -0,0 +1 @@ +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/rollup/dist/rollup.d.ts","./node_modules/rollup/dist/parseast.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/dist/node/types.d-agj9qkwt.d.ts","./node_modules/esbuild/lib/main.d.ts","./node_modules/source-map-js/source-map.d.ts","./node_modules/postcss/lib/previous-map.d.ts","./node_modules/postcss/lib/input.d.ts","./node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/postcss/lib/declaration.d.ts","./node_modules/postcss/lib/root.d.ts","./node_modules/postcss/lib/warning.d.ts","./node_modules/postcss/lib/lazy-result.d.ts","./node_modules/postcss/lib/no-work-result.d.ts","./node_modules/postcss/lib/processor.d.ts","./node_modules/postcss/lib/result.d.ts","./node_modules/postcss/lib/document.d.ts","./node_modules/postcss/lib/rule.d.ts","./node_modules/postcss/lib/node.d.ts","./node_modules/postcss/lib/comment.d.ts","./node_modules/postcss/lib/container.d.ts","./node_modules/postcss/lib/at-rule.d.ts","./node_modules/postcss/lib/list.d.ts","./node_modules/postcss/lib/postcss.d.ts","./node_modules/postcss/lib/postcss.d.mts","./node_modules/vite/dist/node/runtime.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/metadata.d.ts","./node_modules/vite/dist/node/index.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@vue/shared/dist/shared.d.ts","./node_modules/@vue/compiler-core/dist/compiler-core.d.ts","./node_modules/magic-string/dist/magic-string.es.d.mts","./node_modules/typescript/lib/typescript.d.ts","./node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts","./node_modules/vue/compiler-sfc/index.d.mts","./node_modules/@vitejs/plugin-vue/dist/index.d.mts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@vue/babel-plugin-resolve-type/dist/index.d.mts","./node_modules/@vue/babel-plugin-jsx/dist/index.d.ts","./node_modules/@vitejs/plugin-vue-jsx/dist/index.d.mts","./node_modules/@antfu/utils/dist/index.d.mts","./node_modules/@rollup/pluginutils/types/index.d.ts","./node_modules/mlly/dist/index.d.ts","./node_modules/unimport/dist/shared/unimport.1478c48d.d.ts","./node_modules/strip-literal/node_modules/js-tokens/index.d.ts","./node_modules/strip-literal/dist/index.d.ts","./node_modules/unimport/dist/addons.d.ts","./node_modules/unimport/dist/index.d.ts","./node_modules/unplugin-auto-import/dist/types.d.ts","./node_modules/unplugin-auto-import/dist/vite.d.ts","./node_modules/webpack-virtual-modules/lib/index.d.ts","./node_modules/unplugin/dist/index.d.mts","./node_modules/unplugin-vue-components/dist/types.d.ts","./node_modules/unplugin-vue-components/dist/vite.d.ts","./node_modules/unplugin-vue-components/dist/resolvers.d.ts","./node_modules/unplugin-icons/dist/resolver.d.ts","./node_modules/unplugin-icons/dist/types.d.ts","./node_modules/unplugin-icons/dist/vite.d.ts","./node_modules/dotenv/lib/main.d.ts","./vite.config.ts"],"fileInfos":[{"version":"6a6b471e7e43e15ef6f8fe617a22ce4ecb0e34efa6c3dfcfe7cebd392bcca9d2","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","f4e736d6c8d69ae5b3ab0ddfcaa3dc365c3e76909d6660af5b4e979b3934ac20",{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"5114a95689b63f96b957e00216bc04baf9e1a1782aa4d8ee7e5e9acbf768e301","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"b7feb7967c6c6003e11f49efa8f5de989484e0a6ba2e5a6c41b55f8b8bd85dba","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"25de46552b782d43cb7284df22fe2a265de387cf0248b747a7a1b647d81861f6","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"0b4bc32128fda7bb0752cf284730dd3a817aae04a3d7f92e3b2d54bd61362fe1","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"5f290ea7efbe9d8431e10df12c0d5672b67988e7c171c2d356749fac70347a55","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"49c89f8fa09d21c161e6a367448639e032f42d77cc2ec8ab54ecb8fa9a3ad59f","affectsGlobalScope":true},"e4b50850c2a62c7750428e452ee24b167180104d514d5e5c0ca691753365f610","304504c854c47a55ab4a89111a27a2daf8a3614740bd787cc1f2c51e5574239c",{"version":"95f9129a37dcace36e17b061a8484952586ecfe928c9c8ce526de1a2f4aaefa7","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","0f9061846236850a872cb44097d071631e93c8749a8b16c191fe3c2a48faede4","e46fa644658c2d6e5c85e954ea76b92c97d63f0851d3ccdab8c2a80d5962aaa9","1c611ff373ce1958aafc40b328048ac2540ba5c7f373cf2897e0d9aeaabe90a0","a307d22a0130ac94c1a17fffa6d57ac272deb5838cb966a9420911d259cdf1be","d2e415abf6cb81ac9e2700b4db5ea7be76b997e812285b8e5e1e414eb2750b6e","09d6cebdced6aa1181ac1523c8f22a133f5ed80589678b64051f0602f0518374",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"7c35691dc3972ff1507d8dd279d833f540973d0917bde22e191cf7a8feaac29f","affectsGlobalScope":true},"62662d7a886e5cfa870685720fd27b763743ca4d2cf29326f75d76606a64eadd","b8c670688bd228d3cc9c169690b09b687188c50ff263a94df63b207701105ad9","d8e16905907111390d5a943816306ae997dfe56476f14142166f8b13ee322eea","8068c911a1c40bc6c5ffc58c625b21d807778f6aa6d63a73e6f04f88bcac5b79","a1dbce56ad5f3a37caafb9033c9d190a199217d673f5fa099c8968d471a2fdaa","c6f77efcc19f51c8759779b6b6ee0d88046c15c15dadac8ffed729a6620daf39",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"269d0ea3202820c29a32c1f2a357837a4f1918426844f7e7c90af15ec40d1dc1","66432f885e30cf471573de22a5af5eca9ab46b37b122aec98beadf77e9b7df24","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"034e635df3c014df1d6b1110b724ca0c4d2d324b45a84974c7d6931f9cf95ea7","affectsGlobalScope":true},{"version":"87f9456115554cb0f78f098ddbd585096871c19d2d05274c1b1b4ade3151da78","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","da618f0ea09d95c3b51514de43bf97dab008c85bede58aa57cf95e4984c7c957","48a35b181ecf47dbbc0a7ab4b5ba778d91eaa838ba42bf4aaaead42be77ef39a","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","5195aeb0de306d1c5ca8033457fbcab5987657112fa6d4971cfeb7644493a369","c5dbf0003bc9f0f643e54cd00a3868d1afe85497fecb56be6f2373dc85102924",{"version":"ce73eb199c4bf96c015f069aac161488ed73ebeaea3d87b6d5aa9a968a7b38d4","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","962f105729d5b888c8b70e193f6020ee92c6c8144c827de40f80d65dd188ad7f","ac74e2b754fba690036f8221d978f6debb867462b87af254f24e924b677395d0","80858f6de9af22e53aff221fe3590215ea544c2aeb2cc60cf8e08a9c785c8fef",{"version":"068b8ee5c2cd90d7a50f2efadbbe353cb10196a41189a48bf4b2a867363012b4","affectsGlobalScope":true},{"version":"340659b96782f5813aad6c1f89ea1b83b2f3fa993115c7b30366375d9bae5a4e","affectsGlobalScope":true},"6f44a190351ab5e1811abebe007cf60518044772ccc08244f9f241706afa767f","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","cf45d0510b661f1da461479851ff902f188edb111777c37055eff12fa986a23a",{"version":"895ca532c15c77cbb6a871af1870b57bcd0ca4f38a1bd69669dd0e95bb58565a","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea",{"version":"574de9322239fc2f136769dd4726fdeea6f379a44691759ffe3a941f9022e5b9","affectsGlobalScope":true},"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","282f98006ed7fa9bb2cd9bdbe2524595cfc4bcd58a0bb3232e4519f2138df811","6222e987b58abfe92597e1273ad7233626285bc2d78409d4a7b113d81a83496b","cbe726263ae9a7bf32352380f7e8ab66ee25b3457137e316929269c19e18a2be","8b96046bf5fb0a815cba6b0880d9f97b7f3a93cf187e8dcfe8e2792e97f38f87",{"version":"bacf2c84cf448b2cd02c717ad46c3d7fd530e0c91282888c923ad64810a4d511","affectsGlobalScope":true},"858d0d831826c6eb563df02f7db71c90e26deadd0938652096bea3cc14899700","8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","18c04c22baee54d13b505fa6e8bcd4223f8ba32beee80ec70e6cac972d1cc9a6","e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","44fe135be91bc8edc495350f79cd7a2e5a8b7a7108b10b2599a321b9248657dc","1d51250438f2071d2803053d9aec7973ef22dfffd80685a9ec5fb3fa082f4347","7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","b9261ac3e9944d3d72c5ee4cf888ad35d9743a5563405c6963c4e43ee3708ca4","c84fd54e8400def0d1ef1569cafd02e9f39a622df9fa69b57ccc82128856b916","c7a38c1ef8d6ae4bf252be67bd9a8b012b2cdea65bd6225a3d1a726c4f0d52b6","e773630f8772a06e82d97046fc92da59ada8414c61689894fff0155dd08f102c","edf7cf322a3f3e6ebca77217a96ed4480f5a7d8d0084f8b82f1c281c92780f3a","e97321edbef59b6f68839bcdfd5ae1949fe80d554d2546e35484a8d044a04444","96aed8ec4d342ec6ac69f0dcdfb064fd17b10cb13825580451c2cebbd556e965","106e607866d6c3e9a497a696ac949c3e2ec46b6e7dda35aabe76100bf740833b","28ffc4e76ad54f4b34933d78ff3f95b763accf074e8630a6d926f3fd5bbd8908","304af95fcace2300674c969700b39bc0ee05be536880daa844c64dc8f90ef482","3d65182eff7bbb16de1a69e17651c51083f740af11a1a92359be6dab939e8bcf","670ddaf1f1b881abaa1cc28236430d86b691affbeaefd66b3ee1db31fdfb8dba","77926a706478940016e826b162f95f8e4077b1ad3184b2592dc03bd8b33e0384","82e687ebd99518bc63ea04b0c3810fb6e50aa6942decd0ca6f7a56d9b9a212a6","7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","c98746b56b1a6fa699944ce94df1060627a49ee90bddb3c50389ba34c1a1e89b","55584873eae27c5607725f0a9b2123cdea9100fd47cd4bfd582b567a7c363877","5f02abbb1b17e3d1e68c5eea14adf4705696e6255e2982b010c0dc2a5417b606","6dcb89623cc070c3b2a29218f99a3501041b3ac3fc4c80ee7083b99ba320a694","e3caf5349fb79f088d1d83a1de0433f3b72f5c2a876a05e5eeeb4c0aab0c9e74","aa9556edc011a3cd32acf420a6b48860465af09c4c3b77e1e1e6672720ca9706","21c0786dddf52537611499340166278507eb9784628d321c2cb6acc696cba0f6","0e044eae3d27608dcf21eefbb960238c7d5f5ec4f3304e43deccedf8424cbd27","3feec212c0aeb91e5a6e62caaf9f128954590210f8c302910ea377c088f6b61a","38c0ab20a63c96b1f462837eccf46b21814162d62ab497d71684e7217f78431a","2c8e55457aaf4902941dfdba4061935922e8ee6e120539c9801cd7b400fae050","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","9e0cf651e8e2c5b9bebbabdff2f7c6f8cedd91b1d9afcc0a854cdff053a88f1b","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","2a003e24da976ca911c438e77b1c3a6105d2bd754a2ae3ccfa06aab4ead25c52","76a8a1816d5d2e84871285e962506d34c7728a6bff1130726e56804a78e222f5","dc3ecc4ea31f22ce585cc5aae145b4ede70a836e234e1f1f964da5ec1bc6b279","b9ba8aa67fb572718564ab01bac8683f5f444cfab277fe1cfa9de7a38a78faf9","77b55f8bfab90aa408704132d98b72f8762e2fe955eeda093ace44120d6adc1a","8697faa527dd799c5bbe64723aa2593fdd47c609864aa4c49689997cd06cebac","c81161998777a6ef5030315a83ba082997a2afeffa5f6ead6536561d2b4ed091","a92eecc2dc8f5945bbeafa63ad18ea533f575d456e6008ceda7a0cdcb34ffd29","834b0bcb86dca41cbbaadecffd80fe5a7fa52157da6015d7755fd79d3d9e2351","1c1181c68a85eb4afdb858c6da3e15521b6996e74032e2bda6701860f7f5b3f6","1b7c04a121c75ee3332445412f3cf5e40c20a428fa573061aae8103a658a020f","d5281e67dd94a2be4296af562cedb1c1c44d2f1ee4c96a0f7e9c4cb3b96a091b","e2a220f20315757cc8f2f9faabc28b01a86804765dd1320b56ed35f9723600eb","768fd34f23de8dc5f5df6cd45f044bb4193105b5964e4ef734dbfc1a1f8e6223","d9ebb49a01413d3f6d622f1617f0dac40a525958a0b783624a516ac62e26a0c8","b4f8eab293bfc139c5b143bf8dd6a83ccd6d7752859613b12573cb5fbcd5541d","de7bcfd21379f7b75718cb9c5d9d8288adbab83d622562707b19e29c008d3bae","8d28506cc66f13a750370bf19f0a618fe7c8053ec40f8f7032193b269a63d99f","f269acff6d83daf4bebf8e2e48f89361e12154df3e896f427f9fbf92530792bb","a6406db53c92c4acd0b94bcdd184dcb8660a337f303d62c6cc5a61135fc7a7dc","405bb5c10ad1a249315474afad633bd1118c36f4654cb6adae471eaec287293c","f634e4c7d5cdba8e092d98098033b311c8ef304038d815c63ffdb9f78f3f7bb7",{"version":"e339232851c50e6da9232ce44696fdb65b9c0a3caea0cf9cf8e4ca3fb81a2d11","signature":"f1a1b21a223c18a29308ebff0b002317e4bb8aa5e350164f8c8c3b8bde33a535"}],"root":[213],"options":{"composite":true,"esModuleInterop":true,"module":99,"skipLibCheck":true,"strict":true,"target":9},"fileIdsList":[[178],[146],[178,179,187,188,189],[178,179],[59],[95],[96,101,129],[97,108,109,116,126,137],[97,98,108,116],[99,138],[100,101,109,117],[101,126,134],[102,104,108,116],[95,103],[104,105],[108],[106,108],[95,108],[108,109,110,126,137],[108,109,110,123,126,129],[93,142],[104,108,111,116,126,137],[108,109,111,112,116,126,134,137],[111,113,126,134,137],[59,60,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144],[108,114],[115,137,142],[104,108,116,126],[117],[118],[95,119],[120,136,142],[121],[122],[108,123,124],[123,125,138,140],[96,108,126,127,128,129],[96,126,128],[126,127],[129],[130],[95,126],[108,132,133],[132,133],[101,116,126,134],[135],[116,136],[96,111,122,137],[101,138],[126,139],[115,140],[141],[96,101,108,110,119,126,137,140,142],[126,143],[177,192],[177,185],[190,191],[184,190],[178,179,180],[173,178,179,181,182,183],[137,145],[169],[167,169],[158,166,167,168,170],[156],[159,164,169,172],[155,172],[159,160,163,164,165,172],[159,160,161,163,164,172],[156,157,158,159,160,164,165,166,168,169,170,172],[172],[154,156,157,158,159,160,161,163,164,165,166,167,168,169,170,171],[154,172],[159,161,162,164,165,172],[163,172],[164,165,169,172],[157,167],[147,176],[154],[198],[70,74,137],[70,126,137],[65],[67,70,134,137],[116,134],[145],[65,145],[67,70,116,137],[62,63,66,69,96,108,126,137],[62,68],[66,70,96,129,137,145],[96,145],[86,96,145],[64,65,145],[70],[64,65,66,67,68,69,70,71,72,74,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92],[70,77,78],[68,70,78,79],[69],[62,65,70],[70,74,78,79],[74],[68,70,73,137],[62,67,68,70,74,77],[96,126],[65,70,86,96,142,145],[182,196,197],[182,196,197,199,200],[182,196],[194,195,201],[194,195,201,202],[194],[177,194,210],[194,195,205,206],[194,195,205],[177,194,195,205,206],[147,153,176,177,204],[108,109,111,112,113,116,126,134,137,143,145,147,148,149,150,151,152,153,173,174,175,176],[149,150,151,152],[149,150,151],[149],[150],[147],[184],[118,137,177,186,193,203,207,208,209,211,212],[177]],"referencedMap":[[179,1],[195,2],[190,3],[187,1],[188,4],[189,1],[59,5],[60,5],[95,6],[96,7],[97,8],[98,9],[99,10],[100,11],[101,12],[102,13],[103,14],[104,15],[105,15],[107,16],[106,17],[108,18],[109,19],[110,20],[94,21],[111,22],[112,23],[113,24],[145,25],[114,26],[115,27],[116,28],[117,29],[118,30],[119,31],[120,32],[121,33],[122,34],[123,35],[124,35],[125,36],[126,37],[128,38],[127,39],[129,40],[130,41],[131,42],[132,43],[133,44],[134,45],[135,46],[136,47],[137,48],[138,49],[139,50],[140,51],[141,52],[142,53],[143,54],[193,55],[186,56],[192,57],[191,58],[181,59],[184,60],[212,61],[170,62],[168,63],[169,64],[157,65],[158,63],[165,66],[156,67],[161,68],[162,69],[167,70],[173,71],[172,72],[155,73],[163,74],[164,75],[159,76],[166,62],[160,77],[148,78],[147,2],[154,79],[199,80],[77,81],[84,82],[76,81],[91,83],[68,84],[67,85],[90,86],[85,87],[88,88],[70,89],[69,90],[65,91],[64,92],[87,93],[66,94],[71,95],[75,95],[93,96],[92,95],[79,97],[80,98],[82,99],[78,100],[81,101],[86,86],[73,102],[74,103],[83,104],[63,105],[89,106],[200,107],[201,108],[197,109],[202,110],[203,111],[210,112],[211,113],[208,114],[206,115],[207,116],[205,117],[177,118],[174,119],[152,120],[150,121],[151,122],[176,123],[185,124],[213,125]],"exportedModulesMap":[[179,1],[195,2],[190,3],[187,1],[188,4],[189,1],[59,5],[60,5],[95,6],[96,7],[97,8],[98,9],[99,10],[100,11],[101,12],[102,13],[103,14],[104,15],[105,15],[107,16],[106,17],[108,18],[109,19],[110,20],[94,21],[111,22],[112,23],[113,24],[145,25],[114,26],[115,27],[116,28],[117,29],[118,30],[119,31],[120,32],[121,33],[122,34],[123,35],[124,35],[125,36],[126,37],[128,38],[127,39],[129,40],[130,41],[131,42],[132,43],[133,44],[134,45],[135,46],[136,47],[137,48],[138,49],[139,50],[140,51],[141,52],[142,53],[143,54],[193,55],[186,56],[192,57],[191,58],[181,59],[184,60],[212,61],[170,62],[168,63],[169,64],[157,65],[158,63],[165,66],[156,67],[161,68],[162,69],[167,70],[173,71],[172,72],[155,73],[163,74],[164,75],[159,76],[166,62],[160,77],[148,78],[147,2],[154,79],[199,80],[77,81],[84,82],[76,81],[91,83],[68,84],[67,85],[90,86],[85,87],[88,88],[70,89],[69,90],[65,91],[64,92],[87,93],[66,94],[71,95],[75,95],[93,96],[92,95],[79,97],[80,98],[82,99],[78,100],[81,101],[86,86],[73,102],[74,103],[83,104],[63,105],[89,106],[200,107],[201,108],[197,109],[202,110],[203,111],[210,112],[211,113],[208,114],[206,115],[207,116],[205,117],[177,118],[174,119],[152,120],[150,121],[151,122],[176,123],[185,124],[213,126]],"semanticDiagnosticsPerFile":[194,179,178,195,190,187,188,189,146,59,60,95,96,97,98,99,100,101,102,103,104,105,107,106,108,109,110,94,144,111,112,113,145,114,115,116,117,118,119,120,121,122,123,124,125,126,128,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,193,186,192,191,181,184,180,61,212,153,182,196,170,168,169,157,158,165,156,161,171,162,167,173,172,155,163,164,159,166,160,148,147,154,199,198,57,58,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,35,32,33,34,36,7,37,42,43,38,39,40,41,8,47,44,45,46,48,9,49,50,51,54,52,53,55,10,1,56,183,77,84,76,91,68,67,90,85,88,70,69,65,64,87,66,71,72,75,62,93,92,79,80,82,78,81,86,73,74,83,63,89,200,201,197,202,203,209,210,211,208,206,207,205,177,174,152,150,149,151,175,176,185,204,213],"latestChangedDtsFile":"./vite.config.d.ts"},"version":"5.0.4"} \ No newline at end of file diff --git a/vite.config.d.ts b/vite.config.d.ts new file mode 100644 index 0000000..089eeef --- /dev/null +++ b/vite.config.d.ts @@ -0,0 +1,2 @@ +declare const _default: import("vite").UserConfigFnObject; +export default _default; diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..77adabb --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,81 @@ +import { fileURLToPath, URL } from 'node:url' +import { resolve } from 'path' +import { defineConfig, loadEnv } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' +import IconsResolver from 'unplugin-icons/resolver' +import Icons from 'unplugin-icons/vite' +import { config } from 'dotenv' + +export default defineConfig(({ mode }) => { + const env = loadEnv(mode, process.cwd()) + const envFile = mode === 'production' ? '.env.production' : '.env.development' + config({ path: resolve(__dirname, envFile) }) + config({ path: resolve(__dirname, '.env') }) + + return { + plugins: [ + vue(), + vueJsx(), + AutoImport({ + imports: ['vue'], + resolvers: [ + ElementPlusResolver(), + // 自动导入图标组件 + IconsResolver({ + prefix: 'Icon', + }), + ], + }), + Components({ + resolvers: [ + ElementPlusResolver(), + // 自动注册图标组件 + IconsResolver({ + enabledCollections: ['ep'], + }), + ], + }), + Icons({ + autoInstall: true, + }), + ], + publicDir: resolve(__dirname, './public'), + css: { + preprocessorOptions: { + scss: { + additionalData: `@use "./src/styles/variables.scss" as *;`, + javascriptEnabled: true, + silenceDeprecations: ["legacy-js-api"], + }, + }, + }, + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + public: fileURLToPath(new URL('./public', import.meta.url)), + utils: fileURLToPath(new URL('./src/utils', import.meta.url)), + }, + }, + + optimizeDeps: { + exclude: ['lua.vm.js'], + include: ['@vueuse/core'], + }, + server: { + port: 3001, + host: '0.0.0.0', + proxy: { + '/remote': { + target: env.VITE_BASE_URL, + changeOrigin: true, + ws: true, + rewrite: path => path.replace(/^\/remote/, ''), + }, + }, + }, + } +})